summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJosep Torra <n770galaxy@gmail.com>2009-09-04 12:53:36 +0200
committerJosep Torra <n770galaxy@gmail.com>2009-09-04 12:56:03 +0200
commit7fa795a725cb15859b19e4fd8e1529d902c2a0e2 (patch)
tree9ec3273c0a12febee70591d55b774401119b6f58
parentd557572e66ea9de7b74e409074d0d048ffd49cea (diff)
mpegpsdemux: in seeking use a factor for SCR interpolation
Fixes seeking on clips where PTS are unalignded with SCR.
-rw-r--r--gst/mpegdemux/gstmpegdemux.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/gst/mpegdemux/gstmpegdemux.c b/gst/mpegdemux/gstmpegdemux.c
index 5fe277118..e4be2054f 100644
--- a/gst/mpegdemux/gstmpegdemux.c
+++ b/gst/mpegdemux/gstmpegdemux.c
@@ -1037,6 +1037,12 @@ gst_flups_demux_do_seek (GstFluPSDemux * demux, GstSegment * seeksegment)
guint64 scr_rate_n = demux->last_scr_offset - demux->first_scr_offset;
guint64 scr_rate_d = demux->last_scr - demux->first_scr;
+ /* In some clips the PTS values are completely unaligned with SCR values.
+ * To improve the seek in that situation we apply a factor considering the
+ * relationship between last PTS and last SCR */
+ if (demux->last_scr > demux->last_pts)
+ scr = gst_util_uint64_scale (scr, demux->last_scr, demux->last_pts);
+
scr = MIN (demux->last_scr, scr);
scr = MAX (demux->first_scr, scr);
fscr = scr;