mirror of https://github.com/mpv-player/mpv
command: move setting playback speed to a separate function
This commit is contained in:
parent
7dd3822d09
commit
c3e2a1febc
|
@ -88,6 +88,19 @@ int reinit_audio_filters(struct MPContext *mpctx)
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void set_playback_speed(struct MPContext *mpctx, double new_speed)
|
||||||
|
{
|
||||||
|
struct MPOpts *opts = mpctx->opts;
|
||||||
|
|
||||||
|
// Adjust time until next frame flip for nosound mode
|
||||||
|
mpctx->time_frame *= opts->playback_speed / new_speed;
|
||||||
|
|
||||||
|
opts->playback_speed = new_speed;
|
||||||
|
|
||||||
|
if (mpctx->d_audio)
|
||||||
|
recreate_audio_filters(mpctx);
|
||||||
|
}
|
||||||
|
|
||||||
void reset_audio_state(struct MPContext *mpctx)
|
void reset_audio_state(struct MPContext *mpctx)
|
||||||
{
|
{
|
||||||
if (mpctx->d_audio)
|
if (mpctx->d_audio)
|
||||||
|
|
|
@ -165,21 +165,16 @@ static int mp_property_playback_speed(void *ctx, struct m_property *prop,
|
||||||
int action, void *arg)
|
int action, void *arg)
|
||||||
{
|
{
|
||||||
MPContext *mpctx = ctx;
|
MPContext *mpctx = ctx;
|
||||||
struct MPOpts *opts = mpctx->opts;
|
double speed = mpctx->opts->playback_speed;
|
||||||
double orig_speed = opts->playback_speed;
|
|
||||||
switch (action) {
|
switch (action) {
|
||||||
case M_PROPERTY_SET: {
|
case M_PROPERTY_SET: {
|
||||||
opts->playback_speed = *(double *) arg;
|
double new_speed = *(double *)arg;
|
||||||
if (opts->playback_speed == orig_speed)
|
if (speed != new_speed)
|
||||||
return M_PROPERTY_OK;
|
set_playback_speed(mpctx, new_speed);
|
||||||
// Adjust time until next frame flip for nosound mode
|
|
||||||
mpctx->time_frame *= orig_speed / opts->playback_speed;
|
|
||||||
if (mpctx->d_audio)
|
|
||||||
reinit_audio_chain(mpctx);
|
|
||||||
return M_PROPERTY_OK;
|
return M_PROPERTY_OK;
|
||||||
}
|
}
|
||||||
case M_PROPERTY_PRINT:
|
case M_PROPERTY_PRINT:
|
||||||
*(char **)arg = talloc_asprintf(NULL, "%.2f", orig_speed);
|
*(char **)arg = talloc_asprintf(NULL, "%.2f", speed);
|
||||||
return M_PROPERTY_OK;
|
return M_PROPERTY_OK;
|
||||||
}
|
}
|
||||||
return mp_property_generic_option(mpctx, prop, action, arg);
|
return mp_property_generic_option(mpctx, prop, action, arg);
|
||||||
|
|
|
@ -367,6 +367,7 @@ double playing_audio_pts(struct MPContext *mpctx);
|
||||||
void fill_audio_out_buffers(struct MPContext *mpctx, double endpts);
|
void fill_audio_out_buffers(struct MPContext *mpctx, double endpts);
|
||||||
double written_audio_pts(struct MPContext *mpctx);
|
double written_audio_pts(struct MPContext *mpctx);
|
||||||
void clear_audio_output_buffers(struct MPContext *mpctx);
|
void clear_audio_output_buffers(struct MPContext *mpctx);
|
||||||
|
void set_playback_speed(struct MPContext *mpctx, double new_speed);
|
||||||
|
|
||||||
// configfiles.c
|
// configfiles.c
|
||||||
void mp_parse_cfgfiles(struct MPContext *mpctx);
|
void mp_parse_cfgfiles(struct MPContext *mpctx);
|
||||||
|
|
Loading…
Reference in New Issue