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

Andrzej K. Haczewski ahaczewski at gmail.com
Fri Jul 23 13:55:05 CEST 2010


2010/7/23 Tim-Philipp Müller <t.i.m at zen.co.uk>:
> 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.
>
> Cheers
>  -Tim

One great Thank You, Tim. That solved huge problem for me.

Cheers,
Andrzej




More information about the gstreamer-devel mailing list