omxvideodec: Improve EOS handling

If downstream return UNEXPECTED we should still signal the
drain cond because nothing will trigger this again later.
This commit is contained in:
Sebastian Dröge 2011-11-09 15:44:11 +01:00
parent c026bee8c6
commit 92c26f684a

View file

@ -763,15 +763,20 @@ gst_omx_video_dec_loop (GstOMXVideoDec * self)
}
GST_BASE_VIDEO_CODEC_STREAM_UNLOCK (self);
if (flow_ret == GST_FLOW_OK && (buf->omx_buf->nFlags & OMX_BUFFERFLAG_EOS)) {
if ((flow_ret == GST_FLOW_OK && (buf->omx_buf->nFlags & OMX_BUFFERFLAG_EOS))
|| flow_ret == GST_FLOW_UNEXPECTED) {
g_mutex_lock (self->drain_lock);
if (self->draining) {
GST_DEBUG_OBJECT (self, "Drained");
self->draining = FALSE;
g_cond_broadcast (self->drain_cond);
} else {
} else if (flow_ret == GST_FLOW_OK) {
GST_DEBUG_OBJECT (self, "Component signalled EOS");
flow_ret = GST_FLOW_UNEXPECTED;
}
g_mutex_unlock (self->drain_lock);
} else {
GST_DEBUG_OBJECT (self, "Finished frame: %s", gst_flow_get_name (flow_ret));
}
gst_omx_port_release_buffer (port, buf);