qtdemux: also set segment stop at startup rather than only post seek
authorMark Nauwelaerts <mark.nauwelaerts@collabora.co.uk>
Tue, 8 Nov 2011 13:31:34 +0000 (14:31 +0100)
committerMark Nauwelaerts <mark.nauwelaerts@collabora.co.uk>
Tue, 8 Nov 2011 13:58:09 +0000 (14:58 +0100)
... so as to ensure consistent playback with or without seek, especially
in presence of some bogus edit list entries.

gst/isomp4/qtdemux.c

index 4a9463a..1b7caf3 100644 (file)
@@ -8867,8 +8867,13 @@ qtdemux_parse_tree (GstQTDemux * qtdemux)
 
   /* set duration in the segment info */
   gst_qtdemux_get_duration (qtdemux, &duration);
-  if (duration)
+  if (duration) {
     gst_segment_set_duration (&qtdemux->segment, GST_FORMAT_TIME, duration);
+    /* also do not exceed duration; stop is set that way post seek anyway,
+     * and segment activation falls back to duration,
+     * whereas loop only checks stop, so let's align this here as well */
+    qtdemux->segment.stop = duration;
+  }
 
   /* parse all traks */
   trak = qtdemux_tree_get_child_by_type (qtdemux->moov_node, FOURCC_trak);