mpegtsdemux: resurrect actual and efficient seeking of all kinds
authorMark Nauwelaerts <mnauw@users.sourceforge.net>
Mon, 30 Dec 2019 18:50:29 +0000 (19:50 +0100)
committerMark Nauwelaerts <mnauw@users.sourceforge.net>
Tue, 31 Dec 2019 09:44:35 +0000 (10:44 +0100)
... by seeking to target offset determined by new seek segment,
rather than that of the previous segment.  The latter would typically
seek back to start for a non-accurate seek, and lead to a lot
of skipping in case of an accurate seek.

gst/mpegtsdemux/tsdemux.c

index c50f811..822100b 100644 (file)
@@ -897,7 +897,7 @@ gst_ts_demux_do_seek (MpegTSBase * base, GstEvent * event)
 
   /* If the position actually changed, update == TRUE */
   if (update) {
-    GstClockTime target = base->out_segment.start;
+    GstClockTime target = seeksegment.start;
     if (target >= SEEK_TIMESTAMP_OFFSET)
       target -= SEEK_TIMESTAMP_OFFSET;
     else