summaryrefslogtreecommitdiff
path: root/libavcodec/aptx.c
diff options
context:
space:
mode:
authorAurelien Jacobs <aurel@gnuage.org>2018-01-06 00:23:43 +0100
committerAurelien Jacobs <aurel@gnuage.org>2018-02-09 22:10:55 +0100
commitb7915f8a149aaa3cdd72a5f126a30bf2e0bf1738 (patch)
treefdaa5a14d5d921a98adcaebbb27e8336659c4f6b /libavcodec/aptx.c
parent81d6501be77b273053a66eeced94d78e2021f1d1 (diff)
aptx: simplify by pre-calculating factor_max
Diffstat (limited to 'libavcodec/aptx.c')
-rw-r--r--libavcodec/aptx.c16
1 files 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;
}