summaryrefslogtreecommitdiff
path: root/gst/mpegdemux/gstmpegdemux.c
diff options
context:
space:
mode:
Diffstat (limited to 'gst/mpegdemux/gstmpegdemux.c')
-rw-r--r--gst/mpegdemux/gstmpegdemux.c10
1 files changed, 7 insertions, 3 deletions
diff --git a/gst/mpegdemux/gstmpegdemux.c b/gst/mpegdemux/gstmpegdemux.c
index e9003773f..fbf7b6e34 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 */