PR #23255 opened by James Almer (jamrial) URL: https://code.ffmpeg.org/FFmpeg/FFmpeg/pulls/23255 Patch URL: https://code.ffmpeg.org/FFmpeg/FFmpeg/pulls/23255.patch
We can combine some cases in these switches as they set the same flags. >From d614b164fb19739f132788813a93c1b0f7049519 Mon Sep 17 00:00:00 2001 From: James Almer <[email protected]> Date: Wed, 27 May 2026 22:06:07 -0300 Subject: [PATCH] avcodec/libfdk_aac: simplify setting the layout mask We can combine some cases in these switches as they set the same flags. Signed-off-by: James Almer <[email protected]> --- libavcodec/libfdk-aacdec.c | 34 ++++++++++++++-------------------- 1 file changed, 14 insertions(+), 20 deletions(-) diff --git a/libavcodec/libfdk-aacdec.c b/libavcodec/libfdk-aacdec.c index a25beff523..d1008e2a36 100644 --- a/libavcodec/libfdk-aacdec.c +++ b/libavcodec/libfdk-aacdec.c @@ -160,21 +160,17 @@ static int get_stream_info(AVCodecContext *avctx, AVFrame *frame) switch (channel_counts[ACT_FRONT]) { case 5: - ch_layout |= AV_CH_LAYOUT_STEREO | AV_CH_FRONT_CENTER | - AV_CH_FRONT_LEFT_OF_CENTER | AV_CH_FRONT_RIGHT_OF_CENTER; - break; case 4: - ch_layout |= AV_CH_LAYOUT_STEREO | AV_CH_FRONT_LEFT_OF_CENTER | + ch_layout |= AV_CH_FRONT_LEFT_OF_CENTER | AV_CH_FRONT_RIGHT_OF_CENTER; - break; + av_fallthrough; case 3: - ch_layout |= AV_CH_LAYOUT_STEREO | AV_CH_FRONT_CENTER; - break; case 2: ch_layout |= AV_CH_LAYOUT_STEREO; - break; + av_fallthrough; case 1: - ch_layout |= AV_CH_FRONT_CENTER; + if (channel_counts[ACT_FRONT] & 1) + ch_layout |= AV_CH_FRONT_CENTER; break; default: av_log(avctx, AV_LOG_WARNING, @@ -183,6 +179,7 @@ static int get_stream_info(AVCodecContext *avctx, AVFrame *frame) ch_error = 1; break; } + if (channel_counts[ACT_SIDE] > 0) { if (channel_counts[ACT_SIDE] == 2) { ch_layout |= AV_CH_SIDE_LEFT | AV_CH_SIDE_RIGHT; @@ -196,16 +193,15 @@ static int get_stream_info(AVCodecContext *avctx, AVFrame *frame) if (channel_counts[ACT_BACK] > 0) { switch (channel_counts[ACT_BACK]) { case 4: - ch_layout |= AV_CH_BACK_LEFT | AV_CH_BACK_RIGHT | AV_CH_SIDE_LEFT | AV_CH_SIDE_RIGHT; - break; + ch_layout |= AV_CH_SIDE_LEFT | AV_CH_SIDE_RIGHT; + av_fallthrough; case 3: - ch_layout |= AV_CH_BACK_LEFT | AV_CH_BACK_RIGHT | AV_CH_BACK_CENTER; - break; case 2: ch_layout |= AV_CH_BACK_LEFT | AV_CH_BACK_RIGHT; - break; + av_fallthrough; case 1: - ch_layout |= AV_CH_BACK_CENTER; + if (channel_counts[ACT_BACK] & 1) + ch_layout |= AV_CH_BACK_CENTER; break; default: av_log(avctx, AV_LOG_WARNING, @@ -228,14 +224,12 @@ static int get_stream_info(AVCodecContext *avctx, AVFrame *frame) if (channel_counts[ACT_FRONT_TOP] > 0) { switch (channel_counts[ACT_FRONT_TOP]) { case 3: - ch_layout |= AV_CH_TOP_FRONT_LEFT | AV_CH_TOP_FRONT_RIGHT | - AV_CH_TOP_FRONT_CENTER; - break; case 2: ch_layout |= AV_CH_TOP_FRONT_LEFT | AV_CH_TOP_FRONT_RIGHT; - break; + av_fallthrough; case 1: - ch_layout |= AV_CH_TOP_FRONT_CENTER; + if (channel_counts[ACT_FRONT_TOP] & 1) + ch_layout |= AV_CH_TOP_FRONT_CENTER; break; default: av_log(avctx, AV_LOG_WARNING, -- 2.52.0 _______________________________________________ ffmpeg-devel mailing list -- [email protected] To unsubscribe send an email to [email protected]
