Getting out of Blocked situation - AppSink

classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|

Getting out of Blocked situation - AppSink

ak.ashwini
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!
 
-Ashwini
 
PS: I hope I have not confused you with my explanation of the problem.


_______________________________________________
gstreamer-devel mailing list
[hidden email]
http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel