1
0
mirror of https://github.com/mpv-player/mpv synced 2025-01-13 02:16:40 +00:00

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.
This commit is contained in:
Uoti Urpala 2011-12-06 02:46:37 +02:00
parent 253f62c564
commit 7ac154065f

View File

@ -287,19 +287,21 @@ static int mp_property_playback_speed(m_option_t *prop, int action,
void *arg, MPContext *mpctx) void *arg, MPContext *mpctx)
{ {
struct MPOpts *opts = &mpctx->opts; struct MPOpts *opts = &mpctx->opts;
double orig_speed = opts->playback_speed;
switch (action) { switch (action) {
case M_PROPERTY_SET: case M_PROPERTY_SET:
if (!arg) if (!arg)
return M_PROPERTY_ERROR; return M_PROPERTY_ERROR;
M_PROPERTY_CLAMP(prop, *(float *) arg);
opts->playback_speed = *(float *) arg; opts->playback_speed = *(float *) arg;
reinit_audio_chain(mpctx); goto set;
return M_PROPERTY_OK;
case M_PROPERTY_STEP_UP: case M_PROPERTY_STEP_UP:
case M_PROPERTY_STEP_DOWN: case M_PROPERTY_STEP_DOWN:
opts->playback_speed += (arg ? *(float *) arg : 0.1) * opts->playback_speed += (arg ? *(float *) arg : 0.1) *
(action == M_PROPERTY_STEP_DOWN ? -1 : 1); (action == M_PROPERTY_STEP_DOWN ? -1 : 1);
set:
M_PROPERTY_CLAMP(prop, opts->playback_speed); 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); reinit_audio_chain(mpctx);
return M_PROPERTY_OK; return M_PROPERTY_OK;
} }