diff options
author | Jan Ekström <jeebjp@gmail.com> | 2022-05-24 22:52:54 +0300 |
---|---|---|
committer | Jan Ekström <jeebjp@gmail.com> | 2022-06-15 21:19:10 +0300 |
commit | edfd17ab1863ffdc512df4427f3203aeabe4dd0f (patch) | |
tree | f82a155ddfe19408e6e68af8855350510139c7cc /audio/decode/ad_lavc.c | |
parent | e7483ced5de71359223292c07bd177e3c5cb8d20 (diff) | |
download | mpv-edfd17ab1863ffdc512df4427f3203aeabe4dd0f.tar.bz2 mpv-edfd17ab1863ffdc512df4427f3203aeabe4dd0f.tar.xz |
ad_lavc: switch to AVChannelLayout when available
Diffstat (limited to 'audio/decode/ad_lavc.c')
-rw-r--r-- | audio/decode/ad_lavc.c | 19 |
1 files changed, 18 insertions, 1 deletions
diff --git a/audio/decode/ad_lavc.c b/audio/decode/ad_lavc.c index 228054e8d6..34c3a183eb 100644 --- a/audio/decode/ad_lavc.c +++ b/audio/decode/ad_lavc.c @@ -26,8 +26,11 @@ #include <libavutil/common.h> #include <libavutil/intreadwrite.h> +#include "config.h" + #include "mpv_talloc.h" #include "audio/aframe.h" +#include "audio/chmap_avchannel.h" #include "audio/fmt-conversion.h" #include "common/av_common.h" #include "common/codecs.h" @@ -106,8 +109,22 @@ static bool init(struct mp_filter *da, struct mp_codec_params *codec, lavc_context->pkt_timebase = ctx->codec_timebase; if (opts->downmix && mpopts->audio_output_channels.num_chmaps == 1) { + const struct mp_chmap *requested_layout = + &mpopts->audio_output_channels.chmaps[0]; +#if !HAVE_AV_CHANNEL_LAYOUT lavc_context->request_channel_layout = - mp_chmap_to_lavc(&mpopts->audio_output_channels.chmaps[0]); + mp_chmap_to_lavc(requested_layout); +#else + AVChannelLayout av_layout = { 0 }; + mp_chmap_to_av_layout(&av_layout, requested_layout); + + // Always try to set requested output layout - currently only something + // supported by AC3, MLP/TrueHD, DTS and the fdk-aac wrapper. + av_opt_set_chlayout(lavc_context, "downmix", &av_layout, + AV_OPT_SEARCH_CHILDREN); + + av_channel_layout_uninit(&av_layout); +#endif } // Always try to set - option only exists for AC3 at the moment |