From b7915f8a149aaa3cdd72a5f126a30bf2e0bf1738 Mon Sep 17 00:00:00 2001 From: Aurelien Jacobs Date: Sat, 6 Jan 2018 00:23:43 +0100 Subject: [PATCH] aptx: simplify by pre-calculating factor_max --- libavcodec/aptx.c | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) diff --git a/libavcodec/aptx.c b/libavcodec/aptx.c index a35d2861c1..7b9556ce42 100644 --- a/libavcodec/aptx.c +++ b/libavcodec/aptx.c @@ -188,7 +188,7 @@ typedef const struct { const int32_t *quantize_dither_factors; const int16_t *quantize_factor_select_offset; int tables_size; - int32_t quantized_bits; + int32_t factor_max; int32_t prediction_order; } ConstTables; @@ -198,25 +198,25 @@ static ConstTables tables[NB_SUBBANDS] = { quantize_dither_factors_LF, quantize_factor_select_offset_LF, FF_ARRAY_ELEMS(quantize_intervals_LF), - 7, 24 }, + 0x11FF, 24 }, [MLF] = { quantize_intervals_MLF, invert_quantize_dither_factors_MLF, quantize_dither_factors_MLF, quantize_factor_select_offset_MLF, FF_ARRAY_ELEMS(quantize_intervals_MLF), - 4, 12 }, + 0x14FF, 12 }, [MHF] = { quantize_intervals_MHF, invert_quantize_dither_factors_MHF, quantize_dither_factors_MHF, quantize_factor_select_offset_MHF, FF_ARRAY_ELEMS(quantize_intervals_MHF), - 2, 6 }, + 0x16FF, 6 }, [HF] = { quantize_intervals_HF, invert_quantize_dither_factors_HF, quantize_dither_factors_HF, quantize_factor_select_offset_HF, FF_ARRAY_ELEMS(quantize_intervals_HF), - 3, 12 }, + 0x15FF, 12 }, }; static const int16_t quantization_factors[32] = { @@ -530,16 +530,14 @@ static void aptx_invert_quantization(InvertQuantize *invert_quantize, qr = rshift64_clip24(((int64_t)qr<<32) + MUL64(dither, tables->invert_quantize_dither_factors[idx]), 32); invert_quantize->reconstructed_difference = MUL64(invert_quantize->quantization_factor, qr) >> 19; - shift = 24 - tables->quantized_bits; - /* update factor_select */ factor_select = 32620 * invert_quantize->factor_select; factor_select = rshift32(factor_select + (tables->quantize_factor_select_offset[idx] << 15), 15); - invert_quantize->factor_select = av_clip(factor_select, 0, (shift << 8) | 0xFF); + invert_quantize->factor_select = av_clip(factor_select, 0, tables->factor_max); /* update quantization factor */ idx = (invert_quantize->factor_select & 0xFF) >> 3; - shift -= invert_quantize->factor_select >> 8; + shift = (tables->factor_max - invert_quantize->factor_select) >> 8; invert_quantize->quantization_factor = (quantization_factors[idx] << 11) >> shift; }