diff --git a/libmpdemux/demux_lavf.c b/libmpdemux/demux_lavf.c index 11a0d2afb8..8af971fa84 100644 --- a/libmpdemux/demux_lavf.c +++ b/libmpdemux/demux_lavf.c @@ -611,15 +611,16 @@ static void demux_seek_lavf(demuxer_t *demuxer, float rel_seek_secs, float audio int avsflags = 0; mp_msg(MSGT_DEMUX,MSGL_DBG2,"demux_seek_lavf(%p, %f, %f, %d)\n", demuxer, rel_seek_secs, audio_delay, flags); - if (flags & 1) // absolute seek + if (flags & 1) { // absolute seek priv->last_pts = priv->avfc->start_time; + if (rel_seek_secs < 0) avsflags = AVSEEK_FLAG_BACKWARD; + } if (flags & 2) { // percent seek if (priv->avfc->duration == 0 || priv->avfc->duration == AV_NOPTS_VALUE) return; priv->last_pts += rel_seek_secs * priv->avfc->duration; } else { priv->last_pts += rel_seek_secs * AV_TIME_BASE; - if (rel_seek_secs < 0) avsflags = AVSEEK_FLAG_BACKWARD; } av_seek_frame(priv->avfc, -1, priv->last_pts, avsflags); }