summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEdward Hervey <edward@centricular.com>2016-03-08 11:41:49 +0100
committerTim-Philipp Müller <tim@centricular.com>2016-04-06 14:24:10 +0100
commit59ddf0845eee0eb8c8c715e073ccce35b2aec7df (patch)
tree7c9f28521400b6a73c93333efed61a00fbc0bc1d
parentb4453835109a5d50dc34aac0c851c1fb75049459 (diff)
downloadgstreamer-plugins-bad-59ddf0845eee0eb8c8c715e073ccce35b2aec7df.tar.gz
tsdemux: Don't reset/recalculate segments with accurate seeks
When dealing with accurate seeks, we must send out a segment which is exactly what is requested. https://bugzilla.gnome.org/show_bug.cgi?id=763262
-rw-r--r--gst/mpegtsdemux/tsdemux.c7
1 files changed, 4 insertions, 3 deletions
diff --git a/gst/mpegtsdemux/tsdemux.c b/gst/mpegtsdemux/tsdemux.c
index 5231c05d2..ad1afefd8 100644
--- a/gst/mpegtsdemux/tsdemux.c
+++ b/gst/mpegtsdemux/tsdemux.c
@@ -851,8 +851,8 @@ gst_ts_demux_do_seek (MpegTSBase * base, GstEvent * event)
gst_segment_do_seek (&demux->segment, rate, format, flags, start_type,
start, stop_type, stop, NULL);
- if (!(flags & GST_SEEK_FLAG_ACCURATE))
- demux->reset_segment = TRUE;
+ /* Reset segment if we're not doing an accurate seek */
+ demux->reset_segment = (!(flags & GST_SEEK_FLAG_ACCURATE));
if (demux->segment_event) {
gst_event_unref (demux->segment_event);
@@ -1436,7 +1436,8 @@ gst_ts_demux_stream_added (MpegTSBase * base, MpegTSBaseStream * bstream,
stream->active = FALSE;
stream->need_newsegment = TRUE;
- demux->reset_segment = TRUE;
+ /* Reset segment if we're not doing an accurate seek */
+ demux->reset_segment = (!(demux->segment.flags & GST_SEEK_FLAG_ACCURATE));
stream->needs_keyframe = FALSE;
stream->discont = TRUE;
stream->pts = GST_CLOCK_TIME_NONE;