From 062349ff5b9b062aff581e96f3770e6cbd419491 Mon Sep 17 00:00:00 2001 From: wm4 Date: Tue, 9 Aug 2016 16:26:44 +0200 Subject: player: add --audio-wait-open options Complements the option added in the previous commit. --- player/audio.c | 9 +++++++++ player/core.h | 1 + 2 files changed, 10 insertions(+) (limited to 'player') 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); diff --git a/player/core.h b/player/core.h index 70570fccb3..8f90a1903f 100644 --- a/player/core.h +++ b/player/core.h @@ -185,6 +185,7 @@ struct ao_chain { struct af_stream *af; struct ao *ao; struct mp_audio_buffer *ao_buffer; + double ao_resume_time; // 1-element input frame queue. struct mp_audio *input_frame; -- cgit v1.2.3