summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEdward Hervey <bilboed@bilboed.com>2014-11-05 13:45:29 +0100
committerTim-Philipp Müller <tim@centricular.com>2014-11-15 22:18:45 +0000
commit117177339e6c8a6211cb36dfd57d5f9d98f0c1ee (patch)
tree4d90e236d385e30066fd50506dd7707e9cdb82c5
parent1a2ce9a291a8be5cddc6ca85c3bc557ac4b6ad50 (diff)
asfdemux: Send duration query upstream first
An upstream element (like mms or some dlna source) might be able to answer the query. Try that first, else fallback to standard logic
-rw-r--r--gst/asfdemux/gstasfdemux.c25
1 files changed, 14 insertions, 11 deletions
diff --git a/gst/asfdemux/gstasfdemux.c b/gst/asfdemux/gstasfdemux.c
index 11fa8971..17943802 100644
--- a/gst/asfdemux/gstasfdemux.c
+++ b/gst/asfdemux/gstasfdemux.c
@@ -4166,21 +4166,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;
}