qtdemux: set need_segment after a second moov
authorAlicia Boya García <aboya@igalia.com>
Fri, 30 Nov 2018 18:29:30 +0000 (19:29 +0100)
committerSebastian Dröge <slomo@coaxion.net>
Fri, 30 Nov 2018 20:44:57 +0000 (20:44 +0000)
stream.segment should be updated with the values of the current edit
list, also when a new `moov` is received. Unfortunately this was not
being the case because of an early return.

As a consequence of this bugs, no end of movie clipping was being
performed on the new moov and no segment event was being emitted.

When performing stream switching (e.g. in MSE) the new moov may have a
different edit list. This is often the case when switching between
baseline H.264 (which lacks B-frames) and more demanding profiles. For
this reason it's important to emit a new segment in order to be able
to get matching stream times.

gst/isomp4/qtdemux.c

index 79604ba..a58557a 100644 (file)
@@ -12665,6 +12665,8 @@ qtdemux_expose_streams (GstQTDemux * qtdemux)
     g_ptr_array_remove_range (qtdemux->old_streams,
         0, qtdemux->old_streams->len);
 
+    qtdemux->need_segment = TRUE;
+
     return GST_FLOW_OK;
   }