diff options
author | Edward Hervey <bilboed@bilboed.com> | 2014-11-05 13:45:29 +0100 |
---|---|---|
committer | Edward Hervey <bilboed@bilboed.com> | 2014-11-05 13:45:29 +0100 |
commit | ec19c9b6e45e857a54092cac939675e9faabf592 (patch) | |
tree | ba834066f19289c222f22cbd87b9e799bac4bd33 /gst | |
parent | ccb4ae449a087637284cb2f666f7dbfcd9db5d5d (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
Diffstat (limited to 'gst')
-rw-r--r-- | gst/asfdemux/gstasfdemux.c | 25 |
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; } |