[gst-devel] Fwd: Why exactly we need "queue" element while connecting multiple srcpads ?

Tim Müller t.i.m at zen.co.uk
Wed Feb 7 11:34:53 CET 2007

On Wed, 2007-02-07 at 15:02 +0530, Vinayak wrote:

> Push mode src pad should work with both loop and chain based. But when
> I push something to such srcpad nothing gets pushed and the function
> just hangs up. Is it waiting for some event/criteria which "queue"
> element only can satisfy? 

The problem here is that the sinks will block when they are prerolled
(ie. have obtained a first buffer usually). So your first sink gets its
first buffer, changes to PAUSED state and blocks. Now the tee/demuxer is
stuck in gst_pad_push() and never gets to push a buffer to the second
sink, so the second sink will never preroll and the pipeline can't
change from READY into PAUSED state. Adding a queue works around this
because it's only the queue's new streaming thread that is blocked by
the sink, so the tee/demuxer can continue to push further buffers to the
other sinks.


More information about the gstreamer-devel mailing list