[gst-devel] Proper usage of fdsink and fdsrc (out-of-process processing)

Tim-Philipp Müller t.i.m at zen.co.uk
Fri Jul 23 13:44:56 CEST 2010

On Fri, 2010-07-23 at 13:22 +0200, Andrzej K. Haczewski wrote:

> > Can anyone explain why there is a deadlock?

As I said on IRC, I think the problem is this:

 - the pipeline waits for all sinks to preroll
 - fdsink receives a buffer
 - fdsink prerolls and blocks (now in PAUSED state)
 - fdsink will only actually write data in PLAYING state

 - fakesink needs a buffer to preroll
 - fdsrc needs to receive a buffer first
 - fdsrc will only receive data once fdsink
   writes data
 - fdsink will only write data in PLAYING state
 - fdsink will only go into PLAYING state once
   the whole pipeline has prerolled
 - for the whole pipeline to preroll, fakesink
   needs to preroll

You can use fakesink async=false to make it preroll even without data.


More information about the gstreamer-devel mailing list