mirror of
https://github.com/mpv-player/mpv.git
synced 2024-09-20 03:52:22 +02:00
player: allow seeking audio between video frames
This allows seeking audio between two video frames that are relatively far away. The implementation of this is a bit subtle. It pretend the audio position is different, and the actual PTS adjustment happens in audio.c with this line: sync_pts -= mpctx->audio_delay - mpctx->delay; Effectively this is the same as setting sync_pts to hrseek_pts after this line, though. (I'm actually not sure if this could be written in a more straightforward way; probably yes.)
This commit is contained in:
parent
7f7340ce76
commit
7b3feecbc2
@ -588,8 +588,16 @@ static int video_output_image(struct MPContext *mpctx, double endpts)
|
||||
frame_time = 0;
|
||||
}
|
||||
mpctx->video_next_pts = pts;
|
||||
if (mpctx->d_audio)
|
||||
if (mpctx->d_audio) {
|
||||
mpctx->delay -= frame_time;
|
||||
// When resuming after a hr-seek, let audio advance the position to
|
||||
// the actual seek target.
|
||||
if (mpctx->video_status == STATUS_SYNCING && mpctx->hrseek_active &&
|
||||
pts != MP_NOPTS_VALUE)
|
||||
{
|
||||
mpctx->delay -= mpctx->hrseek_pts - pts;
|
||||
}
|
||||
}
|
||||
if (mpctx->video_status >= STATUS_READY) {
|
||||
mpctx->time_frame += frame_time / mpctx->opts->playback_speed;
|
||||
adjust_sync(mpctx, pts, frame_time);
|
||||
|
Loading…
Reference in New Issue
Block a user