summaryrefslogtreecommitdiff
path: root/gst/mxf
diff options
context:
space:
mode:
authorSebastian Dröge <sebastian@centricular.com>2017-06-27 15:41:48 +0300
committerSebastian Dröge <sebastian@centricular.com>2017-06-27 15:41:48 +0300
commitaf6db6861e85cf937cffce312dc5d775e52b4b8d (patch)
treecf84026d21cf074f98478ec5148d9edf5f2148a9 /gst/mxf
parent1069330f766f2e9a12d9dd8689352de0f4d03c7f (diff)
downloadgstreamer-plugins-bad-af6db6861e85cf937cffce312dc5d775e52b4b8d.tar.gz
mxfdemux: Include duration in response to SEEKING query
Diffstat (limited to 'gst/mxf')
-rw-r--r--gst/mxf/mxfdemux.c10
1 files changed, 8 insertions, 2 deletions
diff --git a/gst/mxf/mxfdemux.c b/gst/mxf/mxfdemux.c
index f9cd62875..9bfb6ec59 100644
--- a/gst/mxf/mxfdemux.c
+++ b/gst/mxf/mxfdemux.c
@@ -4011,6 +4011,7 @@ gst_mxf_demux_src_query (GstPad * pad, GstObject * parent, GstQuery * query)
}
case GST_QUERY_SEEKING:{
GstFormat fmt;
+ gint64 duration;
ret = TRUE;
gst_query_parse_seeking (query, &fmt, NULL, NULL, NULL);
@@ -4019,8 +4020,13 @@ gst_mxf_demux_src_query (GstPad * pad, GstObject * parent, GstQuery * query)
goto done;
}
+ if (!gst_pad_query_duration (pad, GST_FORMAT_TIME, &duration)) {
+ gst_query_set_seeking (query, fmt, FALSE, -1, -1);
+ goto done;
+ }
+
if (demux->random_access) {
- gst_query_set_seeking (query, GST_FORMAT_TIME, TRUE, 0, -1);
+ gst_query_set_seeking (query, GST_FORMAT_TIME, TRUE, 0, duration);
} else {
GstQuery *peerquery = gst_query_new_seeking (GST_FORMAT_BYTES);
gboolean seekable;
@@ -4029,7 +4035,7 @@ gst_mxf_demux_src_query (GstPad * pad, GstObject * parent, GstQuery * query)
if (seekable)
gst_query_parse_seeking (peerquery, NULL, &seekable, NULL, NULL);
if (seekable)
- gst_query_set_seeking (query, GST_FORMAT_TIME, TRUE, 0, -1);
+ gst_query_set_seeking (query, GST_FORMAT_TIME, TRUE, 0, duration);
else
gst_query_set_seeking (query, GST_FORMAT_TIME, FALSE, -1, -1);