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 | |
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
-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; } |