[FFmpeg-devel,1/5] aptx: simplify by pre-calculating factor_max

Submitted by Aurelien Jacobs on Jan. 6, 2018, 4:48 p.m.

Details

Message ID 20180106164808.26162-2-aurel@gnuage.org
State Accepted
Commit b7915f8a149aaa3cdd72a5f126a30bf2e0bf1738
Headers show

Commit Message

Aurelien Jacobs Jan. 6, 2018, 4:48 p.m.
---
 libavcodec/aptx.c | 16 +++++++---------
 1 file changed, 7 insertions(+), 9 deletions(-)

Comments

Michael Niedermayer Jan. 7, 2018, 12:24 a.m.
On Sat, Jan 06, 2018 at 05:48:04PM +0100, Aurelien Jacobs wrote:
> ---
>  libavcodec/aptx.c | 16 +++++++---------
>  1 file changed, 7 insertions(+), 9 deletions(-)

LGTM

btw MAINTAINERS has no entry for aptx.c, you might want to post a patch that
adds you to it

[...]

Patch hide | download patch | download mbox

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;
 }