From 8a5fbb876c4394256879aca7c6f60b36d39a9a71 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebastian=20Dr=C3=B6ge?= Date: Thu, 17 Nov 2011 11:26:33 -0800 Subject: [PATCH] omxaudioenc: Signal the drain GCond even if downstream returned an error --- omx/gstomxaudioenc.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/omx/gstomxaudioenc.c b/omx/gstomxaudioenc.c index 940774dcb6..1a4de2599a 100644 --- a/omx/gstomxaudioenc.c +++ b/omx/gstomxaudioenc.c @@ -416,6 +416,7 @@ gst_omx_audio_enc_loop (GstOMXAudioEnc * self) GstOMXBuffer *buf = NULL; GstFlowReturn flow_ret = GST_FLOW_OK; GstOMXAcquireBufferReturn acq_return; + gboolean is_eos; klass = GST_OMX_AUDIO_ENC_GET_CLASS (self); @@ -468,6 +469,8 @@ gst_omx_audio_enc_loop (GstOMXAudioEnc * self) buf->omx_buf->nTimeStamp); GST_BASE_AUDIO_ENCODER_STREAM_LOCK (self); + is_eos = ! !(buf->omx_buf->nFlags & OMX_BUFFERFLAG_EOS); + if ((buf->omx_buf->nFlags & OMX_BUFFERFLAG_CODECCONFIG) && buf->omx_buf->nFilledLen > 0) { GstCaps *caps; @@ -523,8 +526,7 @@ gst_omx_audio_enc_loop (GstOMXAudioEnc * self) outbuf, n_samples); } - if ((flow_ret == GST_FLOW_OK && (buf->omx_buf->nFlags & OMX_BUFFERFLAG_EOS)) - || flow_ret == GST_FLOW_UNEXPECTED) { + if (is_eos || flow_ret == GST_FLOW_UNEXPECTED) { g_mutex_lock (self->drain_lock); if (self->draining) { GST_DEBUG_OBJECT (self, "Drained");