RidgeRun / gst-interpipe

GStreamer plug-in for interpipeline communication
Other
143 stars 64 forks source link

2 interpipesrc to videomixer not working #67

Open infantilo opened 3 years ago

infantilo commented 3 years ago

pipe player1: filesrc name=src location=/home/rpi/Downloads/t1.mov ! decodebin3 name=dmux ! queue ! video/x-raw,width=640,height=360,format=I420,framerate=25/1 ! videoconvert ! videorate ! queue max-size-buffers=3 leaky=downstream ! interpipesink name=player1 sync=true async=true forward-events=false forward-eos=false

pipe black: videotestsrc name=videotestsrc pattern=ball is-live=true ! video/x-raw,width=640,height=360,format=I420,framerate=25/1 ! queue max-size-buffers=3 leaky=downstream ! interpipesink name=black caps=video/x-raw,width=640,height=360,format=I420,framerate=25/1 sync=true async=true forward-events=false forward-eos=true

pipe colorbar: videotestsrc name=videotestsrc is-live=true ! video/x-raw,width=640,height=360,format=I420,framerate=25/1 ! queue max-size-buffers=3 leaky=downstream ! interpipesink name=colorbar caps=video/x-raw,width=640,height=360,format=I420,framerate=25/1 sync=true async=true forward-events=false forward-eos=true

receiver pipe: videomixer name=mixer ! \ queue max-size-buffers=3 leaky=downstream ! \ videoconvert ! \ ximagesink sync=false async=true \ interpipesrc name=input0 listen-to=black is-live=false format=time caps=video/x-raw,width=640,height=360,format=I420,framerate=25/1 accept-events=false accept-eos-event=false allow-renegotiation=true !\ queue max-size-buffers=3 leaky=downstream ! \ videoconvert ! videorate ! queue ! mixer. \ interpipesrc name=input1 listen-to=black is-live=false format=time caps=video/x-raw,width=640,height=360,format=I420,framerate=25/1 accept-events=false accept-eos-event=false allow-renegotiation=true !\ queue max-size-buffers=3 leaky=downstream ! \ videoconvert ! videorate ! queue ! mixer.

I can switch input1 from black to colorbar and vice versa without problem. BUT: switching to player1 makes the video mixer output freeze for about 7-9 seconds, then the video from player1 runs rather smooth, but the video from input0 (ball) is at a framerate about 1 per second. I've tried for a week now, searched forums but did not find any solution.

By the way: interpipesrc does not have the option enable-sync (getting bad pipeline description if i use it). Interpipe version shows: gst-inspect-1.0 interpipe Plugin Details: Name interpipe Description Elements to communicate buffers across pipelines Filename /usr/lib/x86_64-linux-gnu/gstreamer-1.0/libgstinterpipe.so Version 1.1.3 License LGPL Source module gst-interpipe Binary package GstInterpipe Origin URL http://www.ridgerun.com Could anyone give me advice with that? Many thanks for any answer!

michaelgruner commented 3 years ago

Let me reproduce this and get back to you.

jcaballeros commented 3 years ago

Hi,

A note here is that the interpipesrc property enable-sync was replaced by stream-sync from the version v1.0.7. To obtain the same behaviour as with enable-sync=true, you can use stream-sync=compensate-ts.

Tamme commented 3 years ago

Has this issue been resolved or analysed/reproduced? I'm having some issues with other muxer plugins, so they might be related.