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:
parent
253f62c564
commit
7ac154065f
@ -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;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user