[0.11] gst-plugins-good: flvmux, matroskamux, qtmux: if in doubt about downstream seekability default to streaming=true

Tim Müller tpm at kemper.freedesktop.org
Sun Feb 26 17:12:46 PST 2012


Module: gst-plugins-good
Branch: 0.11
Commit: cc0511f5d80ef418c26d89ff3121f3375cc5ef69
URL:    http://cgit.freedesktop.org/gstreamer/gst-plugins-good/commit/?id=cc0511f5d80ef418c26d89ff3121f3375cc5ef69

Author: Tim-Philipp Müller <tim.muller at collabora.co.uk>
Date:   Mon Feb 27 01:09:11 2012 +0000

flvmux, matroskamux, qtmux: if in doubt about downstream seekability default to streaming=true

If downstream didn't answer our SEEKING query and told us
it's seekable, default to streaming=true. We couldn't do
this in 0.10 for backwards compatibility reasons, but we
can in 0.11. Play it safe.

---

 gst/flv/gstflvmux.c         |   16 ++++++++--------
 gst/isomp4/gstqtmux.c       |   16 ++++++++--------
 gst/matroska/matroska-mux.c |   16 ++++++++--------
 3 files changed, 24 insertions(+), 24 deletions(-)

diff --git a/gst/flv/gstflvmux.c b/gst/flv/gstflvmux.c
index 554cae9..8119e9d 100644
--- a/gst/flv/gstflvmux.c
+++ b/gst/flv/gstflvmux.c
@@ -1153,17 +1153,17 @@ gst_flv_mux_write_header (GstFlvMux * mux)
     if (gst_pad_peer_query (mux->srcpad, query)) {
       gst_query_parse_seeking (query, NULL, &seekable, NULL, NULL);
       GST_INFO_OBJECT (mux, "downstream is %sseekable", seekable ? "" : "not ");
-      if (!seekable) {
-        mux->streamable = TRUE;
-        g_object_notify (G_OBJECT (mux), "streamable");
-        GST_WARNING_OBJECT (mux, "downstream is not seekable, but "
-            "streamable=false. Will ignore that and create streamable output "
-            "instead");
-      }
     } else {
       /* have to assume seeking is supported if query not handled downstream */
-      /* FIXME 0.11: change to query not handled => seeking not supported */
       GST_WARNING_OBJECT (mux, "downstream did not handle seeking query");
+      seekable = FALSE;
+    }
+    if (!seekable) {
+      mux->streamable = TRUE;
+      g_object_notify (G_OBJECT (mux), "streamable");
+      GST_WARNING_OBJECT (mux, "downstream is not seekable, but "
+          "streamable=false. Will ignore that and create streamable output "
+          "instead");
     }
   }
 
diff --git a/gst/isomp4/gstqtmux.c b/gst/isomp4/gstqtmux.c
index e51f48c..9e56763 100644
--- a/gst/isomp4/gstqtmux.c
+++ b/gst/isomp4/gstqtmux.c
@@ -1639,17 +1639,17 @@ gst_qt_mux_start_file (GstQTMux * qtmux)
       gst_query_parse_seeking (query, NULL, &seekable, NULL, NULL);
       GST_INFO_OBJECT (qtmux, "downstream is %sseekable",
           seekable ? "" : "not ");
-      if (!seekable) {
-        qtmux->streamable = TRUE;
-        g_object_notify (G_OBJECT (qtmux), "streamable");
-        GST_WARNING_OBJECT (qtmux, "downstream is not seekable, but "
-            "streamable=false. Will ignore that and create streamable output "
-            "instead");
-      }
     } else {
       /* have to assume seeking is supported if query not handled downstream */
-      /* FIXME 0.11: change to query not handled => seeking not supported */
       GST_WARNING_OBJECT (qtmux, "downstream did not handle seeking query");
+      seekable = FALSE;
+    }
+    if (!seekable) {
+      qtmux->streamable = TRUE;
+      g_object_notify (G_OBJECT (qtmux), "streamable");
+      GST_WARNING_OBJECT (qtmux, "downstream is not seekable, but "
+          "streamable=false. Will ignore that and create streamable output "
+          "instead");
     }
   }
 
diff --git a/gst/matroska/matroska-mux.c b/gst/matroska/matroska-mux.c
index e7c42f3..4b5c8f6 100644
--- a/gst/matroska/matroska-mux.c
+++ b/gst/matroska/matroska-mux.c
@@ -2349,17 +2349,17 @@ gst_matroska_mux_start (GstMatroskaMux * mux)
     if (gst_pad_peer_query (mux->srcpad, query)) {
       gst_query_parse_seeking (query, NULL, &seekable, NULL, NULL);
       GST_INFO_OBJECT (mux, "downstream is %sseekable", seekable ? "" : "not ");
-      if (!seekable) {
-        mux->streamable = TRUE;
-        g_object_notify (G_OBJECT (mux), "streamable");
-        GST_WARNING_OBJECT (mux, "downstream is not seekable, but "
-            "streamable=false. Will ignore that and create streamable output "
-            "instead");
-      }
     } else {
       /* have to assume seeking is supported if query not handled downstream */
-      /* FIXME 0.11: change to query not handled => seeking not supported */
       GST_WARNING_OBJECT (mux, "downstream did not handle seeking query");
+      seekable = FALSE;
+    }
+    if (!seekable) {
+      mux->streamable = TRUE;
+      g_object_notify (G_OBJECT (mux), "streamable");
+      GST_WARNING_OBJECT (mux, "downstream is not seekable, but "
+          "streamable=false. Will ignore that and create streamable output "
+          "instead");
     }
   }
 



More information about the gstreamer-commits mailing list