mirror of
https://github.com/mpv-player/mpv
synced 2025-04-08 10:32:51 +00:00
player: fix framestep over timeline segment boundaries
This was subtly broken by commit a937ba20
. Instead of framestepping over
the timeline segment boundary, it would just unpause playback, because
seeking now resets mpctx->step_frames. This was especially apparent when
doing something like "mpv *.jpg --merge-files".
Fix by restoring the step_frames field specifically if the seek is done
for switching segment boundaries. Hopefully the number fields which need
such an exception on seeking won't grow and turn this code into a mess.
This commit is contained in:
parent
751830da32
commit
792db4eee3
@ -169,6 +169,7 @@ static int mp_seek(MPContext *mpctx, struct seek_params seek,
|
|||||||
{
|
{
|
||||||
struct MPOpts *opts = mpctx->opts;
|
struct MPOpts *opts = mpctx->opts;
|
||||||
uint64_t prev_seek_ts = mpctx->vo_pts_history_seek_ts;
|
uint64_t prev_seek_ts = mpctx->vo_pts_history_seek_ts;
|
||||||
|
int prev_step = mpctx->step_frames;
|
||||||
|
|
||||||
if (!mpctx->demuxer)
|
if (!mpctx->demuxer)
|
||||||
return -1;
|
return -1;
|
||||||
@ -267,6 +268,7 @@ static int mp_seek(MPContext *mpctx, struct seek_params seek,
|
|||||||
if (timeline_fallthrough) {
|
if (timeline_fallthrough) {
|
||||||
// Important if video reinit happens.
|
// Important if video reinit happens.
|
||||||
mpctx->vo_pts_history_seek_ts = prev_seek_ts;
|
mpctx->vo_pts_history_seek_ts = prev_seek_ts;
|
||||||
|
mpctx->step_frames = prev_step;
|
||||||
} else {
|
} else {
|
||||||
mpctx->vo_pts_history_seek_ts++;
|
mpctx->vo_pts_history_seek_ts++;
|
||||||
mpctx->backstep_active = false;
|
mpctx->backstep_active = false;
|
||||||
|
Loading…
Reference in New Issue
Block a user