[Gstreamer-openmax] [PATCH] Fix for problem flushing the outport buffers
felipe.contreras at gmail.com
Sat Nov 14 04:52:12 PST 2009
On Wed, Nov 4, 2009 at 4:27 AM, Rob Clark <rob at ti.com> wrote:
> Not properly flushing output port buffers was causing a problem with seek. We would get a buffer from before the flush-start/flush-stop/newsegment sequence, which had an old timestamp, throwing off the AV sync logic in gst base sink classes.
This would only happen if the omx component returns an output buffer
*after* the gst flush has finished, which means the flush of the input
port has finished too, which means there are no input buffers in the
component queue. How can the component still generate output buffers
if there's no input.
I think I added that logic because bellagio was misbehaving (probably
a race condition), but I realized that we actually wanted this in the
general case, because we are not going to do anything with the flushed
output buffers, just send them back to the component.
In any case, if you want to do this properly, then you need to remove
the check for input vs output, and just send OMX_CommandFlush all the
time, and not touch the async queue.
More information about the Gstreamer-openmax