summaryrefslogtreecommitdiffstats
path: root/player/audio.c
diff options
context:
space:
mode:
Diffstat (limited to 'player/audio.c')
-rw-r--r--player/audio.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/player/audio.c b/player/audio.c
index 1f0fe9d0a0..5b52eceb11 100644
--- a/player/audio.c
+++ b/player/audio.c
@@ -441,6 +441,9 @@ static void reinit_audio_filters_and_output(struct MPContext *mpctx)
mp_audio_config_to_str(&fmt));
MP_VERBOSE(mpctx, "AO: Description: %s\n", ao_get_description(mpctx->ao));
update_window_title(mpctx, true);
+
+ ao_c->ao_resume_time =
+ opts->audio_wait_open > 0 ? mp_time_sec() + opts->audio_wait_open : 0;
}
if (recreate_audio_filters(mpctx) < 0)
@@ -862,6 +865,12 @@ void fill_audio_out_buffers(struct MPContext *mpctx)
return; // try again next iteration
}
+ if (ao_c->ao_resume_time > mp_time_sec()) {
+ double remaining = ao_c->ao_resume_time - mp_time_sec();
+ mpctx->sleeptime = MPMIN(mpctx->sleeptime, remaining);
+ return;
+ }
+
if (mpctx->vo_chain && ao_c->pts_reset) {
MP_VERBOSE(mpctx, "Reset playback due to audio timestamp reset.\n");
reset_playback_state(mpctx);