[gst-devel] Going to PAUSE for a task-based source element: dead lock

Fabrice Triboix gstdbg at yahoo.com
Mon Feb 5 17:55:09 CET 2007


I am writing a source element reading network
packets. It spawns a GstTask to create
buffers and push them to source pads.

A problem arise when I try to go to the PAUSE
state. In the change_state() function, I ask
the task to stop processing packets, and then
wait for its acknowledgement. The task
continues its work but is blocked when
calling gst_pad_push().

I guess that gst_pad_push() blocks as soon as
the parent element goes to PAUSE state... But
this does not work for me as I have to handle
an asynchronous control stream to request to
actual network source to stop sending
packets. Even then, there may be a few
pending packets that I need to process before
actually going to PAUSE.

I would like to know if gstreamer is able to
handle such a situation, or if I am just try
to do something that is not allowed by

Thank very much you for your help!


The fish are biting. 
Get more visitors on your site using Yahoo! Search Marketing.

More information about the gstreamer-devel mailing list