mxfdemux: Don't go into pull mode when the sequential flag is set
authorSjoerd Simons <sjoerd@luon.net>
Fri, 24 Jan 2014 20:41:25 +0000 (21:41 +0100)
committerSjoerd Simons <sjoerd@luon.net>
Fri, 24 Jan 2014 21:14:47 +0000 (22:14 +0100)
When the scheduling query results has GST_SCHEDULING_FLAG_SEQUENTIAL set
in its flags don't go into pull mode to prevent over-eager seeking.

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

gst/mxf/mxfdemux.c

index c5d2beb..7702349 100644 (file)
@@ -3687,8 +3687,12 @@ gst_mxf_demux_sink_activate (GstPad * sinkpad, GstObject * parent)
 
   if (gst_pad_peer_query (sinkpad, query)) {
     if (gst_query_has_scheduling_mode_with_flags (query,
-            GST_PAD_MODE_PULL, GST_SCHEDULING_FLAG_SEEKABLE))
-      mode = GST_PAD_MODE_PULL;
+            GST_PAD_MODE_PULL, GST_SCHEDULING_FLAG_SEEKABLE)) {
+      GstSchedulingFlags flags;
+      gst_query_parse_scheduling (query, &flags, NULL, NULL, NULL);
+      if (!(flags & GST_SCHEDULING_FLAG_SEQUENTIAL))
+        mode = GST_PAD_MODE_PULL;
+    }
   }
   gst_query_unref (query);