Getting out of Blocked situation - AppSink

Ashwini Sharma ak.ashwini at
Mon Jul 11 22:07:42 PDT 2011

Hi All,

   I have a pipeline, which looks like this *"appsrc ! ffdec_mpeg4 !
appsink". *I am using this pipe to get the decoded frames out.

I do a gst_app_sink_pull_buffer() to get the decoded frame, just after I
push the buffer into appsrc. The suedo code looks like

*app_buff = gst_app_buffer_new();*
*g_signal_emit_by_name( appsrc, "push-buffer", app_buff, ret);*
*decBuff = gst_app_sink_pull_buffer(appsink);*
Now the situation is, that there can be a case when the input buffer is not
decoded for some error *OR *the data in input buff is not enough to form a
decoded frame. In such a case gst_app_sink_pull_buffer() waits endlessly.
Since its waiting (BLOCKED) here, i dont get the chance to push another
buffer in, which can complete the frame.

The limitation is because I want to return the decoding status as a result
of these actions to my app.

Is there some way I can come out of the BLOCKED state, without flushing the
buffers/data in the pipeline (so as not to miss a frame)?
OR can the decoder give me some kind of hint that, the decoding is not
complete and needs to push more data?

Any help is greatly appreciated!


PS: I hope I have not confused you with my explanation of the problem.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <>

More information about the gstreamer-devel mailing list