isomp4/qtmux: make sure to switch to next chunk on new caps
authorMathieu Duponchelle <mathieu@centricular.com>
Fri, 6 Aug 2021 20:59:23 +0000 (22:59 +0200)
committerGStreamer Marge Bot <gitlab-merge-bot@gstreamer-foundation.org>
Fri, 20 Aug 2021 00:16:43 +0000 (00:16 +0000)
For example, with single video sink pad, and new codec_data is
received, current_chunk_offset must be reset to -1 for the
aggregate loop to open a new chunk.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/1047>

gst/isomp4/gstqtmux.c

index dc30d71..d93d066 100644 (file)
@@ -6872,6 +6872,14 @@ gst_qt_mux_sink_event (GstAggregator * agg, GstAggregatorPad * agg_pad,
             caps);
       } else {
         ret = qtmux_pad->set_caps (qtmux_pad, caps);
+
+        GST_OBJECT_LOCK (qtmux);
+        if (qtmux->current_pad == qtmux_pad) {
+          qtmux->current_chunk_offset = -1;
+          qtmux->current_chunk_size = 0;
+          qtmux->current_chunk_duration = 0;
+        }
+        GST_OBJECT_UNLOCK (qtmux);
       }
 
       if (ret)