From 4395c058d261a6b23fbfaff9f55d0cafc329d3b6 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Reimar=20D=C3=B6ffinger?= Date: Sat, 7 Apr 2012 12:01:50 +0200 Subject: [PATCH] dcaenc: Allow encoding without specifying a channel_layout. MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit It will print a warning, making the behaviour consistent with the AC3 encoder. Signed-off-by: Reimar Döffinger --- libavcodec/dcaenc.c | 9 ++++++++- tests/codec-regression.sh | 2 +- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/libavcodec/dcaenc.c b/libavcodec/dcaenc.c index 71106d7e36..d6efd250d5 100644 --- a/libavcodec/dcaenc.c +++ b/libavcodec/dcaenc.c @@ -534,11 +534,18 @@ static int encode_init(AVCodecContext *avctx) { DCAContext *c = avctx->priv_data; int i; + uint64_t layout = avctx->channel_layout; c->prim_channels = avctx->channels; c->lfe_channel = (avctx->channels == 3 || avctx->channels == 6); - switch (avctx->channel_layout) { + if (!layout) { + av_log(avctx, AV_LOG_WARNING, "No channel layout specified. The " + "encoder will guess the layout, but it " + "might be incorrect.\n"); + layout = av_get_default_channel_layout(avctx->channels); + } + switch (layout) { case AV_CH_LAYOUT_STEREO: c->a_mode = 2; c->num_channel = 2; break; case AV_CH_LAYOUT_5POINT0: c->a_mode = 9; c->num_channel = 9; break; case AV_CH_LAYOUT_5POINT1: c->a_mode = 9; c->num_channel = 9; break; diff --git a/tests/codec-regression.sh b/tests/codec-regression.sh index 2f63b69cc8..0a84f0feec 100755 --- a/tests/codec-regression.sh +++ b/tests/codec-regression.sh @@ -440,7 +440,7 @@ do_audio_decoding fi if [ -n "$do_dca" ] ; then -do_audio_encoding dca.dts "-strict -2 -channel_layout 3 -acodec dca" +do_audio_encoding dca.dts "-strict -2 -acodec dca" # decoding is not bit-exact, so skip md5 of decoded file do_audio_decoding_nomd5 $tiny_psnr $pcm_dst $pcm_ref 2 1920 -- 2.20.1