diff options
Diffstat (limited to 'ext/flac')
-rw-r--r-- | ext/flac/gstflacdec.c | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/ext/flac/gstflacdec.c b/ext/flac/gstflacdec.c index adc4f355..408301f5 100644 --- a/ext/flac/gstflacdec.c +++ b/ext/flac/gstflacdec.c @@ -1410,7 +1410,7 @@ gst_flac_dec_sink_event (GstPad * pad, GstEvent * event) switch (GST_EVENT_TYPE (event)) { case GST_EVENT_FLUSH_STOP:{ - if (dec->stream_decoder) { + if (dec->init == FALSE) { FLAC__stream_decoder_flush (dec->stream_decoder); gst_adapter_clear (dec->adapter); } @@ -1459,10 +1459,13 @@ gst_flac_dec_sink_event (GstPad * pad, GstEvent * event) case GST_EVENT_EOS:{ GST_LOG_OBJECT (dec, "EOS, with %u bytes available in adapter", gst_adapter_available (dec->adapter)); - if (gst_adapter_available (dec->adapter) > 0) { - FLAC__stream_decoder_process_until_end_of_stream (dec->stream_decoder); + if (dec->init == FALSE) { + if (gst_adapter_available (dec->adapter) > 0) { + FLAC__stream_decoder_process_until_end_of_stream (dec-> + stream_decoder); + } + FLAC__stream_decoder_flush (dec->stream_decoder); } - FLAC__stream_decoder_flush (dec->stream_decoder); gst_adapter_clear (dec->adapter); res = gst_pad_push_event (dec->srcpad, event); break; |