diff --git a/player/command.c b/player/command.c index a680c1707160f..0d33c9c80453f 100644 --- a/player/command.c +++ b/player/command.c @@ -8027,7 +8027,8 @@ void mp_option_run_callback(struct MPContext *mpctx, struct mp_option_callback * run_command_opts(mpctx); } - if (opt_ptr == &opts->playback_speed || opt_ptr == &opts->playback_pitch) { + if (opt_ptr == &opts->playback_speed || opt_ptr == &opts->playback_pitch || + opt_ptr == &opts->pitch_correction) { update_playback_speed(mpctx); mp_wakeup_core(mpctx); } diff --git a/player/video.c b/player/video.c index 048c3ca6ea85e..8187cb1f44688 100644 --- a/player/video.c +++ b/player/video.c @@ -955,9 +955,11 @@ static void schedule_frame(struct MPContext *mpctx, struct vo_frame *frame) } if (!mpctx->display_sync_active) { - mpctx->speed_factor_a = 1.0; - mpctx->speed_factor_v = 1.0; - update_playback_speed(mpctx); + if (mpctx->past_frames[1].num_vsyncs >= 0) { + mpctx->speed_factor_a = 1.0; + mpctx->speed_factor_v = 1.0; + update_playback_speed(mpctx); + } update_av_diff(mpctx, mpctx->time_frame > 0 ? mpctx->time_frame * mpctx->video_speed : 0);