asfdemux: Send duration query upstream first
authorEdward Hervey <bilboed@bilboed.com>
Wed, 5 Nov 2014 12:45:29 +0000 (13:45 +0100)
committerEdward Hervey <bilboed@bilboed.com>
Wed, 5 Nov 2014 12:45:29 +0000 (13:45 +0100)
An upstream element (like mms or some dlna source) might be able to
answer the query. Try that first, else fallback to standard logic

gst/asfdemux/gstasfdemux.c

index 7eb3f2d..1a4c26d 100644 (file)
@@ -4218,21 +4218,24 @@ gst_asf_demux_handle_src_query (GstPad * pad, GstObject * parent,
         break;
       }
 
-      GST_OBJECT_LOCK (demux);
+      res = gst_pad_query_default (pad, parent, query);
+      if (!res) {
+        GST_OBJECT_LOCK (demux);
 
-      if (demux->segment.duration != GST_CLOCK_TIME_NONE) {
-        GST_LOG ("returning duration: %" GST_TIME_FORMAT,
-            GST_TIME_ARGS (demux->segment.duration));
+        if (demux->segment.duration != GST_CLOCK_TIME_NONE) {
+          GST_LOG ("returning duration: %" GST_TIME_FORMAT,
+              GST_TIME_ARGS (demux->segment.duration));
 
-        gst_query_set_duration (query, GST_FORMAT_TIME,
-            demux->segment.duration);
+          gst_query_set_duration (query, GST_FORMAT_TIME,
+              demux->segment.duration);
 
-        res = TRUE;
-      } else {
-        GST_LOG ("duration not known yet");
-      }
+          res = TRUE;
+        } else {
+          GST_LOG ("duration not known yet");
+        }
 
-      GST_OBJECT_UNLOCK (demux);
+        GST_OBJECT_UNLOCK (demux);
+      }
       break;
     }