diff --git a/libavcodec/dcaenc.c b/libavcodec/dcaenc.c index 0996296d8c..46618c13f9 100644 --- a/libavcodec/dcaenc.c +++ b/libavcodec/dcaenc.c @@ -222,16 +222,25 @@ static int encode_init(AVCodecContext *avctx) if (ff_dcaadpcm_init(&c->adpcm_ctx)) return AVERROR(ENOMEM); - if (!av_channel_layout_compare(&layout, &(AVChannelLayout)AV_CHANNEL_LAYOUT_MONO)) + switch (layout.nb_channels) { + case 1: /* mono */ c->channel_config = 0; - else if (!av_channel_layout_compare(&layout, &(AVChannelLayout)AV_CHANNEL_LAYOUT_STEREO)) + break; + case 2: /* stereo */ c->channel_config = 2; - else if (!av_channel_layout_compare(&layout, &(AVChannelLayout)AV_CHANNEL_LAYOUT_2_2)) + break; + case 4: /* 2.2 */ c->channel_config = 8; - else if (!av_channel_layout_compare(&layout, &(AVChannelLayout)AV_CHANNEL_LAYOUT_5POINT0)) + break; + case 5: /* 5.0 */ c->channel_config = 9; - else if (!av_channel_layout_compare(&layout, &(AVChannelLayout)AV_CHANNEL_LAYOUT_5POINT1)) + break; + case 6: /* 5.1 */ c->channel_config = 9; + break; + default: + av_assert1(!"impossible channel layout"); + } if (c->lfe_channel) { c->fullband_channels--;