diff options
author | Sebastian Dröge <sebastian@centricular.com> | 2017-06-27 15:41:48 +0300 |
---|---|---|
committer | Sebastian Dröge <sebastian@centricular.com> | 2017-07-04 09:16:13 +0300 |
commit | 0c2c587109709dc6c004f8ac22683d00bd4d59d8 (patch) | |
tree | 73f282821d2d013b72533a02c1707ee90fcc916c | |
parent | 6dcc5c96c5abc018728d92d90e147bb7e544f63c (diff) | |
download | gstreamer-plugins-bad-0c2c587109709dc6c004f8ac22683d00bd4d59d8.tar.gz |
mxfdemux: Include duration in response to SEEKING query
-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 b75852415..677c0677b 100644 --- a/gst/mxf/mxfdemux.c +++ b/gst/mxf/mxfdemux.c @@ -3955,6 +3955,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); @@ -3963,8 +3964,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; @@ -3973,7 +3979,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); |