audiodecoder: drain current segment upon new one to ensure correct flow return
authorMark Nauwelaerts <mnauw@users.sourceforge.net>
Sat, 21 Feb 2015 16:41:50 +0000 (17:41 +0100)
committerMark Nauwelaerts <mnauw@users.sourceforge.net>
Sun, 22 Feb 2015 12:23:44 +0000 (13:23 +0100)
See also https://bugzilla.gnome.org/show_bug.cgi?id=709224

gst-libs/gst/audio/gstaudiodecoder.c

index cb9c2ab..0aaf1a6 100644 (file)
@@ -2040,6 +2040,11 @@ gst_audio_decoder_sink_eventfunc (GstAudioDecoder * dec, GstEvent * event)
       GstFormat format;
 
       GST_AUDIO_DECODER_STREAM_LOCK (dec);
+      /* finish data in current segment because upstream now thinks in terms
+       * of a new segment so it will get confused if remaining data of the old
+       * segment is delay decoded and dropped with EOS return due to clipping */
+      gst_audio_decoder_flush (dec, FALSE);
+
       gst_event_copy_segment (event, &seg);
 
       format = seg.format;