From db0b8755e00bbdeed3882ad0e891462ff8b3f9b6 Mon Sep 17 00:00:00 2001 From: Michael Smith Date: Thu, 5 Feb 2009 15:51:42 -0800 Subject: flacdec: if we aborted reading, don't do into an infinite loop. If our read callback ran out of data, so had to abort reading, we return GST_FLOW_ERROR instead of going into an infinite loop. --- ext/flac/gstflacdec.c | 7 +++++++ 1 file changed, 7 insertions(+) (limited to 'ext/flac') diff --git a/ext/flac/gstflacdec.c b/ext/flac/gstflacdec.c index abfabb2c..405a6b73 100644 --- a/ext/flac/gstflacdec.c +++ b/ext/flac/gstflacdec.c @@ -1530,6 +1530,13 @@ gst_flac_dec_chain (GstPad * pad, GstBuffer * buf) GST_DEBUG_OBJECT (dec, "process_single failed"); break; } + + if (FLAC__stream_decoder_get_state (dec->stream_decoder) == + FLAC__STREAM_DECODER_ABORTED) { + GST_WARNING_OBJECT (dec, "Read callback caused internal abort"); + dec->last_flow = GST_FLOW_ERROR; + break; + } } } else if (dec->framed && got_audio_frame) { /* framed - there should always be enough data to decode something */ -- cgit