Deadlock on setting queue to NULL state in PAUSED pipeline

Andrey Utkin andrey.krieger.utkin at gmail.com
Sat Dec 21 02:03:13 PST 2013


2013/12/21 Sebastian Dröge <sebastian at centricular.com>:
> No, this deadlocks because the queue is still doing data-flow and when
> setting it to READY/NULL this has to stop first. Because the pipeline is
> PAUSED this will never happen though.

But how the flow should be stopped except setting pipeline to PAUSED
state? Is that special for queues, or some (or all?) other elements
need some special treating in such case?

> What exactly are you trying to do there?

In my real scenario, i add or remove consuming elements at random time
after pipeline init. I set pipeline to PAUSED state before any such
operation.
Let's say i have a producing bin, which provides request sourcepads.
Inside this bin, for each request pad we request a srcpad from a tee,
link a queue after this tee srcpad, and return queue srcpad to
consumer (proxied with bin ghostpad, of course).
And this trouble happens when i remove the consumer: request pad gets
released, and in request pad releasing callback i need to free the
queue element.

-- 
Andrey Utkin


More information about the gstreamer-devel mailing list