diff options
author | Sebastian Dröge <sebastian.droege@collabora.co.uk> | 2011-11-10 14:56:19 +0100 |
---|---|---|
committer | Sebastian Dröge <sebastian.droege@collabora.co.uk> | 2011-11-10 14:56:19 +0100 |
commit | 05e4b4885522ef42c63c70f9c2f3452d195df80c (patch) | |
tree | e0924422c9e9e5197855e93e1a9a84077dcfd115 /omx/gstomxaudioenc.c | |
parent | 56bcfc0397c52c1d1e1745599542fd81dfaed59a (diff) | |
download | gst-omx-05e4b4885522ef42c63c70f9c2f3452d195df80c.tar.gz |
omxaudioenc: Improve EOS handling
If downstream return UNEXPECTED we should still signal the
drain cond because nothing will trigger this again later.
Diffstat (limited to 'omx/gstomxaudioenc.c')
-rw-r--r-- | omx/gstomxaudioenc.c | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/omx/gstomxaudioenc.c b/omx/gstomxaudioenc.c index f62930f..ca045a8 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); |