diff options
Diffstat (limited to 'demux/demux_disc.c')
-rw-r--r-- | demux/demux_disc.c | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/demux/demux_disc.c b/demux/demux_disc.c index 69643a0053..37b189861f 100644 --- a/demux/demux_disc.c +++ b/demux/demux_disc.c @@ -169,6 +169,7 @@ static void d_seek(demuxer_t *demuxer, double rel_seek_secs, int flags) double pts = p->seek_pts; if (flags & SEEK_ABSOLUTE) pts = 0.0f; + double base_pts = pts; // to what pts is relative if (flags & SEEK_FACTOR) { double tmp = 0; @@ -180,7 +181,8 @@ static void d_seek(demuxer_t *demuxer, double rel_seek_secs, int flags) MP_VERBOSE(demuxer, "seek to: %f\n", pts); - stream_control(demuxer->stream, STREAM_CTRL_SEEK_TO_TIME, &pts); + double seek_arg[] = {pts, base_pts, flags}; + stream_control(demuxer->stream, STREAM_CTRL_SEEK_TO_TIME, seek_arg); demux_control(p->slave, DEMUXER_CTRL_RESYNC, NULL); p->seek_pts = pts; @@ -312,6 +314,8 @@ static int d_open(demuxer_t *demuxer, enum demux_check check) // Can be seekable even if the stream isn't. demuxer->seekable = true; + demuxer->rel_seeks = true; + // With cache enabled, the stream can be seekable. This causes demux_lavf.c // (actually libavformat/mpegts.c) to seek sometimes when reading a packet. // It does this to seek back a bit in case the current file position points |