From 05e4b4885522ef42c63c70f9c2f3452d195df80c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebastian=20Dr=C3=B6ge?= Date: Thu, 10 Nov 2011 14:56:19 +0100 Subject: [PATCH] omxaudioenc: Improve EOS handling If downstream return UNEXPECTED we should still signal the drain cond because nothing will trigger this again later. --- omx/gstomxaudioenc.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/omx/gstomxaudioenc.c b/omx/gstomxaudioenc.c index f62930fbe0..ca045a8ed6 100644 --- a/omx/gstomxaudioenc.c +++ b/omx/gstomxaudioenc.c @@ -500,15 +500,20 @@ gst_omx_audio_enc_loop (GstOMXAudioEnc * self) outbuf, n_samples); } - 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);