diff --git a/player/command.c b/player/command.c index 67ad87c6e3841..a636297b7435e 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..0e1ac290d2fe5 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->num_past_frames > 1 && 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);