diff options
Diffstat (limited to 'player')
-rw-r--r-- | player/audio.c | 18 | ||||
-rw-r--r-- | player/main.c | 5 |
2 files changed, 15 insertions, 8 deletions
diff --git a/player/audio.c b/player/audio.c index bcaeb13e9f..2f2bc07f0f 100644 --- a/player/audio.c +++ b/player/audio.c @@ -353,7 +353,10 @@ static void reinit_audio_filters_and_output(struct MPContext *mpctx) } else if (af_fmt_is_pcm(in_format.format)) { afs->output.rate = opts->force_srate; mp_audio_set_format(&afs->output, opts->audio_output_format); - mp_audio_set_channels(&afs->output, &opts->audio_output_channels); + if (opts->audio_output_channels.num_chmaps == 1) { + mp_audio_set_channels(&afs->output, + &opts->audio_output_channels.chmaps[0]); + } } // filter input format: same as codec's output format: @@ -368,13 +371,22 @@ static void reinit_audio_filters_and_output(struct MPContext *mpctx) } if (!mpctx->ao) { + int ao_flags = 0; bool spdif_fallback = af_fmt_is_spdif(afs->output.format) && ao_c->spdif_passthrough; - bool ao_null_fallback = opts->ao_null_fallback && !spdif_fallback; + + if (opts->ao_null_fallback && !spdif_fallback) + ao_flags |= AO_INIT_NULL_FALLBACK; + + if (!opts->audio_output_channels.set || opts->audio_output_channels.auto_safe) + ao_flags |= AO_INIT_SAFE_MULTICHANNEL_ONLY; + + mp_chmap_sel_list(&afs->output.channels, opts->audio_output_channels.chmaps, + opts->audio_output_channels.num_chmaps); mp_audio_set_channels(&afs->output, &afs->output.channels); - mpctx->ao = ao_init_best(mpctx->global, ao_null_fallback, mpctx->input, + mpctx->ao = ao_init_best(mpctx->global, ao_flags, mpctx->input, mpctx->encode_lavc_ctx, afs->output.rate, afs->output.format, afs->output.channels); ao_c->ao = mpctx->ao; diff --git a/player/main.c b/player/main.c index 78652fe562..67dde3449f 100644 --- a/player/main.c +++ b/player/main.c @@ -451,11 +451,6 @@ int mp_initialize(struct MPContext *mpctx, char **options) return -1; } m_config_set_profile(mpctx->mconfig, "encoding", 0); - // never use auto - if (!opts->audio_output_channels.num) { - m_config_set_option_ext(mpctx->mconfig, bstr0("audio-channels"), - bstr0("stereo"), M_SETOPT_PRESERVE_CMDLINE); - } mp_input_enable_section(mpctx->input, "encode", MP_INPUT_EXCLUSIVE); } #endif |