From 8af70561a419c5a4a9926f9e60381dc4282a3fd9 Mon Sep 17 00:00:00 2001 From: wm4 Date: Fri, 5 Feb 2016 21:50:37 +0100 Subject: player: move audio and video decoder init to separate functions Preparation. --- player/audio.c | 42 +++++++++++++++++++++++++++++++----------- 1 file changed, 31 insertions(+), 11 deletions(-) (limited to 'player/audio.c') diff --git a/player/audio.c b/player/audio.c index 1a67cdca63..5ecbab5ad1 100644 --- a/player/audio.c +++ b/player/audio.c @@ -358,6 +358,33 @@ init_error: error_on_track(mpctx, track); } +int init_audio_decoder(struct MPContext *mpctx, struct track *track) +{ + assert(!track->d_audio); + if (!track->stream) + goto init_error; + + track->d_audio = talloc_zero(NULL, struct dec_audio); + struct dec_audio *d_audio = track->d_audio; + d_audio->log = mp_log_new(d_audio, mpctx->log, "!ad"); + d_audio->global = mpctx->global; + d_audio->opts = mpctx->opts; + d_audio->header = track->stream; + + d_audio->try_spdif = true; + + if (!audio_init_best_codec(d_audio)) + goto init_error; + + return 1; + +init_error: + audio_uninit(track->d_audio); + track->d_audio = NULL; + error_on_track(mpctx, track); + return 0; +} + void reinit_audio_chain(struct MPContext *mpctx) { assert(!mpctx->ao_chain); @@ -378,21 +405,14 @@ void reinit_audio_chain(struct MPContext *mpctx) ao_c->af->replaygain_data = sh->codec->replaygain_data; ao_c->spdif_passthrough = true; ao_c->pts = MP_NOPTS_VALUE; + ao_c->ao_buffer = mp_audio_buffer_create(NULL); ao_c->ao = mpctx->ao; - struct dec_audio *d_audio = talloc_zero(NULL, struct dec_audio); - d_audio->log = mp_log_new(d_audio, mpctx->log, "!ad"); - d_audio->global = mpctx->global; - d_audio->opts = mpctx->opts; - d_audio->header = sh; + if (!init_audio_decoder(mpctx, track)) + goto init_error; - track->d_audio = d_audio; - ao_c->audio_src = d_audio; + ao_c->audio_src = track->d_audio; - d_audio->try_spdif = ao_c->spdif_passthrough; - ao_c->ao_buffer = mp_audio_buffer_create(NULL); - if (!audio_init_best_codec(d_audio)) - goto init_error; reset_audio_state(mpctx); if (mpctx->ao) { -- cgit v1.2.3