summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEdward Hervey <bilboed@bilboed.com>2014-11-05 13:45:29 +0100
committerEdward Hervey <bilboed@bilboed.com>2014-11-05 13:45:29 +0100
commitec19c9b6e45e857a54092cac939675e9faabf592 (patch)
treeba834066f19289c222f22cbd87b9e799bac4bd33
parentccb4ae449a087637284cb2f666f7dbfcd9db5d5d (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 7eb3f2dc..1a4c26dc 100644
--- a/gst/asfdemux/gstasfdemux.c
+++ b/gst/asfdemux/gstasfdemux.c
@@ -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;
}