From c04dda7f3a15e8df73ddabd5e3cf46a2d951bcb6 Mon Sep 17 00:00:00 2001 From: Lynne Date: Wed, 13 Mar 2024 07:16:57 +0100 Subject: [PATCH 13/38] aacdec: switch-ify scalefactor decoding Brings it in line with dequantization. --- libavcodec/aacdec_template.c | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/libavcodec/aacdec_template.c b/libavcodec/aacdec_template.c index b7eaa7216a..a204069361 100644 --- a/libavcodec/aacdec_template.c +++ b/libavcodec/aacdec_template.c @@ -1459,11 +1459,13 @@ static int decode_scalefactors(AACDecContext *ac, int sfo[120], for (g = 0; g < ics->num_window_groups; g++) { for (i = 0; i < ics->max_sfb;) { int run_end = band_type_run_end[idx]; - if (band_type[idx] == ZERO_BT) { + switch (band_type[idx]) { + case ZERO_BT: for (; i < run_end; i++, idx++) sfo[idx] = 0; - } else if ((band_type[idx] == INTENSITY_BT) || - (band_type[idx] == INTENSITY_BT2)) { + break; + case INTENSITY_BT: /* fallthrough */ + case INTENSITY_BT2: for (; i < run_end; i++, idx++) { offset[2] += get_vlc2(gb, ff_vlc_scalefactors, 7, 3) - SCALE_DIFF_ZERO; clipped_offset = av_clip(offset[2], -155, 100); @@ -1475,7 +1477,8 @@ static int decode_scalefactors(AACDecContext *ac, int sfo[120], } sfo[idx] = clipped_offset; } - } else if (band_type[idx] == NOISE_BT) { + break; + case NOISE_BT: for (; i < run_end; i++, idx++) { if (noise_flag-- > 0) offset[1] += get_bits(gb, NOISE_PRE_BITS) - NOISE_PRE; @@ -1490,7 +1493,8 @@ static int decode_scalefactors(AACDecContext *ac, int sfo[120], } sfo[idx] = clipped_offset; } - } else { + break; + default: for (; i < run_end; i++, idx++) { offset[0] += get_vlc2(gb, ff_vlc_scalefactors, 7, 3) - SCALE_DIFF_ZERO; if (offset[0] > 255U) { @@ -1500,6 +1504,7 @@ static int decode_scalefactors(AACDecContext *ac, int sfo[120], } sfo[idx] = offset[0]; } + break; } } } -- 2.43.0.381.gb435a96ce8