qtdemux: Don't override TIME segments from upstream that we just saw
authorSebastian Dröge <sebastian@centricular.com>
Tue, 31 May 2016 13:38:34 +0000 (16:38 +0300)
committerSebastian Dröge <sebastian@centricular.com>
Wed, 1 Jun 2016 06:32:03 +0000 (09:32 +0300)
The point of d8fb7a9c96b108814beeaa0e63f818d4648c7fe9 was to not have any
spurious segments stored for later if we do BYTES->TIME conversion, but
overriding any TIME segments from upstream does not make any sense.

See https://bugzilla.gnome.org/show_bug.cgi?id=763165

https://bugzilla.gnome.org/show_bug.cgi?id=767071

gst/isomp4/qtdemux.c

index d4f4c99..719efe9 100644 (file)
@@ -2087,6 +2087,9 @@ gst_qtdemux_handle_sink_event (GstPad * sinkpad, GstObject * parent,
       GST_DEBUG_OBJECT (demux, "received newsegment %" GST_SEGMENT_FORMAT,
           &segment);
 
+      /* erase any previously set segment */
+      gst_event_replace (&demux->pending_newsegment, NULL);
+
       if (segment.format == GST_FORMAT_TIME) {
         GST_DEBUG_OBJECT (demux, "new pending_newsegment");
         gst_event_replace (&demux->pending_newsegment, event);
@@ -2159,8 +2162,6 @@ gst_qtdemux_handle_sink_event (GstPad * sinkpad, GstObject * parent,
 
       gst_segment_copy_into (&segment, &demux->segment);
       GST_DEBUG_OBJECT (demux, "Pushing newseg %" GST_SEGMENT_FORMAT, &segment);
-      /* erase any previously set segment */
-      gst_event_replace (&demux->pending_newsegment, NULL);
 
       /* For pull mode, segment activation will be handled in the looping task
        * For push mode, need to do it here */