From 7cec64499d85f60465c4590b1241d8701afcbe92 Mon Sep 17 00:00:00 2001 From: Seungha Yang Date: Wed, 11 Nov 2020 18:21:25 +0900 Subject: [PATCH] mpegdemux: Set duration on seeking query if possible Set duration on seeking query in the same way as duration query handler. Otherwise application might get confused as if the duration is unknown. Part-of: --- gst/mpegdemux/gstmpegdemux.c | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/gst/mpegdemux/gstmpegdemux.c b/gst/mpegdemux/gstmpegdemux.c index e900377..fbf7b6e 100644 --- a/gst/mpegdemux/gstmpegdemux.c +++ b/gst/mpegdemux/gstmpegdemux.c @@ -1557,10 +1557,14 @@ gst_ps_demux_src_query (GstPad * pad, GstObject * parent, GstQuery * query) if (demux->random_access) { /* In pull mode we can seek in TIME format if we have the SCR */ if (fmt != GST_FORMAT_TIME || demux->scr_rate_n == G_MAXUINT64 - || demux->scr_rate_d == G_MAXUINT64) + || demux->scr_rate_d == G_MAXUINT64) { gst_query_set_seeking (query, fmt, FALSE, -1, -1); - else - gst_query_set_seeking (query, fmt, TRUE, 0, -1); + } else { + gint64 dur = -1; + if (GST_CLOCK_TIME_IS_VALID (demux->src_segment.duration)) + dur = demux->src_segment.duration; + gst_query_set_seeking (query, fmt, TRUE, 0, dur); + } } else { if (fmt == GST_FORMAT_BYTES) { /* Seeking in BYTES format not supported at all */ -- 2.7.4