flacdec: don't send second newsegment event in framed mode, fixes long playback delay
authorTim-Philipp Müller <tim.muller@collabora.co.uk>
Mon, 8 Mar 2010 16:47:04 +0000 (16:47 +0000)
committerTim-Philipp Müller <tim.muller@collabora.co.uk>
Mon, 8 Mar 2010 17:10:31 +0000 (17:10 +0000)
Don't send another newsegment event if the upstream muxer/parser has already
sent one (otherwise the sink will wait for $duration before starting playback).
Fixes long delay until playback starts with flac-in-ogg files.

Fixes #610959.

ext/flac/gstflacdec.c

index 8d4805d..3fc99b9 100644 (file)
@@ -578,7 +578,9 @@ gst_flac_dec_metadata_cb (const FLAC__StreamDecoder * decoder,
 
       GST_DEBUG_OBJECT (flacdec, "total samples = %" G_GINT64_FORMAT, samples);
 
-      if (samples > 0) {
+      /* in framed mode the demuxer/parser upstream has already pushed a
+       * newsegment event in TIME format which we've passed on */
+      if (samples > 0 && !flacdec->framed) {
         gint64 duration;
 
         gst_segment_set_duration (&flacdec->segment, GST_FORMAT_DEFAULT,