From d226d45d2f1203a3f033e8270447d3726e5130b7 Mon Sep 17 00:00:00 2001 From: Sanjay NM Date: Wed, 10 Dec 2014 16:10:58 +0530 Subject: [PATCH] audio: Add error handling to gst_audio_decoder_drain() https://bugzilla.gnome.org/show_bug.cgi?id=740686 --- gst-libs/gst/audio/gstaudiodecoder.c | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/gst-libs/gst/audio/gstaudiodecoder.c b/gst-libs/gst/audio/gstaudiodecoder.c index 9212723..a5d10ad 100644 --- a/gst-libs/gst/audio/gstaudiodecoder.c +++ b/gst-libs/gst/audio/gstaudiodecoder.c @@ -1448,8 +1448,16 @@ gst_audio_decoder_drain (GstAudioDecoder * dec) gst_audio_decoder_chain_reverse (dec, NULL); /* have subclass give all it can */ ret = gst_audio_decoder_push_buffers (dec, TRUE); + if (ret != GST_FLOW_OK) { + GST_WARNING_OBJECT (dec, "audio decoder push buffers failed"); + goto drain_failed; + } /* ensure all output sent */ ret = gst_audio_decoder_output (dec, NULL); + if (ret != GST_FLOW_OK) + GST_WARNING_OBJECT (dec, "audio decoder output failed"); + + drain_failed: /* everything should be away now */ if (dec->priv->frames.length) { /* not fatal/impossible though if subclass/codec eats stuff */ @@ -1458,9 +1466,9 @@ gst_audio_decoder_drain (GstAudioDecoder * dec) g_queue_foreach (&dec->priv->frames, (GFunc) gst_buffer_unref, NULL); g_queue_clear (&dec->priv->frames); } + /* discard (unparsed) leftover */ gst_adapter_clear (dec->priv->adapter); - return ret; } } -- 2.7.4