From 7ac154065f3acbb38afba7fc0eccd3adf8208ced Mon Sep 17 00:00:00 2001 From: Uoti Urpala Date: Tue, 6 Dec 2011 02:46:37 +0200 Subject: commands: playback speed: better responsiveness without audio Adjust the scheduled time until next frame when changing playback speed (only affects behavior without audio). The main case where this makes a difference is when it would take a noticeably long time to switch frames with the previous speed and you switch to a faster speed. --- command.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) (limited to 'command.c') diff --git a/command.c b/command.c index 45f778a96c..be1d688f8f 100644 --- a/command.c +++ b/command.c @@ -287,19 +287,21 @@ static int mp_property_playback_speed(m_option_t *prop, int action, void *arg, MPContext *mpctx) { struct MPOpts *opts = &mpctx->opts; + double orig_speed = opts->playback_speed; switch (action) { case M_PROPERTY_SET: if (!arg) return M_PROPERTY_ERROR; - M_PROPERTY_CLAMP(prop, *(float *) arg); opts->playback_speed = *(float *) arg; - reinit_audio_chain(mpctx); - return M_PROPERTY_OK; + goto set; case M_PROPERTY_STEP_UP: case M_PROPERTY_STEP_DOWN: opts->playback_speed += (arg ? *(float *) arg : 0.1) * (action == M_PROPERTY_STEP_DOWN ? -1 : 1); + set: M_PROPERTY_CLAMP(prop, opts->playback_speed); + // Adjust time until next frame flip for nosound mode + mpctx->time_frame *= orig_speed / opts->playback_speed; reinit_audio_chain(mpctx); return M_PROPERTY_OK; } -- cgit v1.2.3