diff options
author | Sebastian Dröge <sebastian@centricular.com> | 2017-06-27 15:41:48 +0300 |
---|---|---|
committer | Sebastian Dröge <sebastian@centricular.com> | 2017-06-27 15:41:48 +0300 |
commit | af6db6861e85cf937cffce312dc5d775e52b4b8d (patch) | |
tree | cf84026d21cf074f98478ec5148d9edf5f2148a9 /gst/mxf | |
parent | 1069330f766f2e9a12d9dd8689352de0f4d03c7f (diff) | |
download | gstreamer-plugins-bad-af6db6861e85cf937cffce312dc5d775e52b4b8d.tar.gz |
mxfdemux: Include duration in response to SEEKING query
Diffstat (limited to 'gst/mxf')
-rw-r--r-- | gst/mxf/mxfdemux.c | 10 |
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); |