isomp4: actually make streamable fallback work
authorMatthew Waters <matthew@centricular.com>
Fri, 15 Jan 2021 09:53:27 +0000 (20:53 +1100)
committerGStreamer Marge Bot <gitlab-merge-bot@gstreamer-foundation.org>
Mon, 23 Aug 2021 04:17:36 +0000 (04:17 +0000)
We weren't setting the fragment_mode field anymore now that the
implementation doesn't change based on the value of the streamable
property.  This lead to invalid files.

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

gst/isomp4/gstqtmux.c

index 01e5101..1130071 100644 (file)
@@ -3077,11 +3077,14 @@ gst_qt_mux_start_file (GstQTMux * qtmux)
       if (qtmux->fragment_mode == GST_QT_MUX_FRAGMENT_STREAMABLE)
         break;
       if (!qtmux->downstream_seekable) {
-        GST_WARNING_OBJECT (qtmux, "downstream is not seekable, but "
-            "streamable=false. Will ignore that and create streamable output "
-            "instead");
-        qtmux->streamable = TRUE;
-        g_object_notify (G_OBJECT (qtmux), "streamable");
+        if (qtmux->fragment_mode == GST_QT_MUX_FRAGMENT_DASH_OR_MSS) {
+          GST_WARNING_OBJECT (qtmux, "downstream is not seekable, but "
+              "streamable=false. Will ignore that and create streamable output "
+              "instead");
+          qtmux->streamable = TRUE;
+          g_object_notify (G_OBJECT (qtmux), "streamable");
+          qtmux->fragment_mode = GST_QT_MUX_FRAGMENT_STREAMABLE;
+        }
       }
       break;
     case GST_QT_MUX_MODE_ROBUST_RECORDING_PREFILL: