From 2667d4bb828e62109f66dd813f5ff20cf731c226 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebastian=20Dr=C3=B6ge?= Date: Mon, 4 Jun 2012 10:01:42 +0200 Subject: [PATCH] Revert "audiodecoder: Error out earlier in a few places if something goes wrong" This reverts commit eb68a2d5a7e4e9598df6eb812589c092fe2cc89a. This sometimes errors out too early now, needs some more thoughts. --- gst-libs/gst/audio/gstaudiodecoder.c | 20 +++++--------------- 1 file changed, 5 insertions(+), 15 deletions(-) diff --git a/gst-libs/gst/audio/gstaudiodecoder.c b/gst-libs/gst/audio/gstaudiodecoder.c index 3b1284e611..e036356472 100644 --- a/gst-libs/gst/audio/gstaudiodecoder.c +++ b/gst-libs/gst/audio/gstaudiodecoder.c @@ -772,11 +772,8 @@ again: } if (inbuf) { - if (ret == GST_FLOW_OK) { - buf = inbuf; - goto again; - } - gst_buffer_unref (inbuf); + buf = inbuf; + goto again; } } @@ -1053,6 +1050,7 @@ gst_audio_decoder_push_buffers (GstAudioDecoder * dec, gboolean force) GST_DEBUG_OBJECT (dec, "available: %d", av); while (ret == GST_FLOW_OK) { + flush = 0; ctx->eos = force; @@ -1152,21 +1150,15 @@ gst_audio_decoder_drain (GstAudioDecoder * dec) if (dec->priv->drained && !dec->priv->gather) return GST_FLOW_OK; else { - GstFlowReturn ret2; - /* dispatch reverse pending buffers */ /* chain eventually calls upon drain as well, but by that time * gather list should be clear, so ok ... */ if (dec->output_segment.rate < 0.0 && dec->priv->gather) gst_audio_decoder_chain_reverse (dec, NULL); - /* have subclass give all it can, if this fails we - * still want the subclass to output everything it - * can but we will return the error from here */ - ret2 = gst_audio_decoder_push_buffers (dec, TRUE); + /* have subclass give all it can */ + ret = gst_audio_decoder_push_buffers (dec, TRUE); /* ensure all output sent */ ret = gst_audio_decoder_output (dec, NULL); - if (ret2 != GST_FLOW_OK) - ret = ret2; /* everything should be away now */ if (dec->priv->frames.length) { /* not fatal/impossible though if subclass/codec eats stuff */ @@ -1342,8 +1334,6 @@ gst_audio_decoder_flush_decode (GstAudioDecoder * dec) /* decode buffer, resulting data prepended to output queue */ gst_buffer_ref (buf); res = gst_audio_decoder_chain_forward (dec, buf); - if (res != GST_FLOW_OK) - return res; /* if we generated output, we can discard the buffer, else we * keep it in the queue */