From f9f436a49093bed07e9a14ad2c7b974bb7e32f36 Mon Sep 17 00:00:00 2001 From: wm4 Date: Thu, 28 Aug 2014 14:22:16 +0200 Subject: audio: restore old speed change behavior Don't attempt to resync after speed changes. Note that most other cases of audio reinit (like switching tracks etc.) still resync, but other code paths take care of setting the audio_status accordingly. This restores the old behavior of not trying to fix audio desync, which was probably changed with commit 261506e3. Note that the code as of now wasn't even entirely correct, since the A/V sync values are slightly shifted. The dsync depends on the audio buffer size, so a larger buffer size will show more extreme desync. Also see mplayer2 commit 213a224e, which should fixed this - it was not merged into mpv, because it disabled audio for too long, resulting in a worse user experience. This is similar to the issue this commit attempts to fix. Fixes: #1042 (probably) CC: @mpv-player-stable --- player/audio.c | 2 -- player/command.c | 2 ++ 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/player/audio.c b/player/audio.c index cc5629a6e6..ebc9416202 100644 --- a/player/audio.c +++ b/player/audio.c @@ -111,8 +111,6 @@ void reinit_audio_chain(struct MPContext *mpctx) mp_notify(mpctx, MPV_EVENT_AUDIO_RECONFIG, NULL); - mpctx->audio_status = STATUS_SYNCING; - if (!(mpctx->initialized_flags & INITIALIZED_ACODEC)) { mpctx->initialized_flags |= INITIALIZED_ACODEC; assert(!mpctx->d_audio); diff --git a/player/command.c b/player/command.c index 9705d7882b..e624003ce9 100644 --- a/player/command.c +++ b/player/command.c @@ -166,6 +166,8 @@ static int mp_property_playback_speed(void *ctx, struct m_property *prop, switch (action) { case M_PROPERTY_SET: { opts->playback_speed = *(double *) arg; + if (opts->playback_speed == orig_speed) + return M_PROPERTY_OK; // Adjust time until next frame flip for nosound mode mpctx->time_frame *= orig_speed / opts->playback_speed; if (mpctx->d_audio) -- cgit v1.2.3