aboutsummaryrefslogtreecommitdiffstats
path: root/libavcodec/dcaenc.c
diff options
context:
space:
mode:
authorAndreas Rheinhardt <andreas.rheinhardt@outlook.com>2022-09-18 00:14:51 +0200
committerAndreas Rheinhardt <andreas.rheinhardt@outlook.com>2022-09-22 01:20:16 +0200
commitce16d18307559213b20b24c4c824c7014a564590 (patch)
tree5098e0696ebe785faf001faf087bf6fcab2e31c7 /libavcodec/dcaenc.c
parent66e297fc848a6ec90143b4ace005b4503665e909 (diff)
downloadffmpeg-ce16d18307559213b20b24c4c824c7014a564590.tar.gz
avcodec/dcaenc: Simplify channel layout check
ff_encode_preinit() ensures that the channel layout is equivalent to one of the channel layouts in AVCodec.ch_layout; given that all of these channel layouts have distinct numbers of channels, one can therefore uniquely determine the channel layout by the number of channels. Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
Diffstat (limited to 'libavcodec/dcaenc.c')
-rw-r--r--libavcodec/dcaenc.c19
1 files changed, 14 insertions, 5 deletions
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--;