Browse code

Define POW_SF2_ZERO in aac.h and use for ff_aac_pow2sf_tabp[] offsets instead of hardcoding 200 everywhere.

Alex Converse authored on 2011/04/27 03:45:48
Showing 4 changed files
... ...
@@ -130,6 +130,7 @@ typedef struct {
130 130
 #define SCALE_MAX_POS   255    ///< scalefactor index maximum value
131 131
 #define SCALE_MAX_DIFF   60    ///< maximum scalefactor difference allowed by standard
132 132
 #define SCALE_DIFF_ZERO  60    ///< codebook index corresponding to zero scalefactor indices difference
133
+#define POW_SF2_ZERO    200    ///< ff_aac_pow2sf_tab index corresponding to pow(2, 0);
133 134
 
134 135
 /**
135 136
  * Long Term Prediction
... ...
@@ -29,13 +29,14 @@
29 29
 #include "libavcodec/aac_tables.h"
30 30
 #else
31 31
 #include "libavutil/mathematics.h"
32
+#include "libavcodec/aac.h"
32 33
 float ff_aac_pow2sf_tab[428];
33 34
 
34 35
 void ff_aac_tableinit(void)
35 36
 {
36 37
     int i;
37 38
     for (i = 0; i < 428; i++)
38
-        ff_aac_pow2sf_tab[i] = pow(2, (i - 200) / 4.);
39
+        ff_aac_pow2sf_tab[i] = pow(2, (i - POW_SF2_ZERO) / 4.);
39 40
 }
40 41
 #endif /* CONFIG_HARDCODED_TABLES */
41 42
 
... ...
@@ -108,8 +108,8 @@ static av_always_inline float quantize_and_encode_band_cost_template(
108 108
                                 int *bits, int BT_ZERO, int BT_UNSIGNED,
109 109
                                 int BT_PAIR, int BT_ESC)
110 110
 {
111
-    const float IQ = ff_aac_pow2sf_tab[200 + scale_idx - SCALE_ONE_POS + SCALE_DIV_512];
112
-    const float  Q = ff_aac_pow2sf_tab[200 - scale_idx + SCALE_ONE_POS - SCALE_DIV_512];
111
+    const float IQ = ff_aac_pow2sf_tab[POW_SF2_ZERO + scale_idx - SCALE_ONE_POS + SCALE_DIV_512];
112
+    const float  Q = ff_aac_pow2sf_tab[POW_SF2_ZERO - scale_idx + SCALE_ONE_POS - SCALE_DIV_512];
113 113
     const float CLIPPED_ESCAPE = 165140.0f*IQ;
114 114
     int i, j;
115 115
     float cost = 0;
... ...
@@ -280,7 +280,7 @@ static float find_max_val(int group_len, int swb_size, const float *scaled) {
280 280
 }
281 281
 
282 282
 static int find_min_book(float maxval, int sf) {
283
-    float Q = ff_aac_pow2sf_tab[200 - sf + SCALE_ONE_POS - SCALE_DIV_512];
283
+    float Q = ff_aac_pow2sf_tab[POW_SF2_ZERO - sf + SCALE_ONE_POS - SCALE_DIV_512];
284 284
     float Q34 = sqrtf(Q * sqrtf(Q));
285 285
     int qmaxval, cb;
286 286
     qmaxval = maxval * Q34 + 0.4054f;
... ...
@@ -955,7 +955,7 @@ static void search_for_quantizers_faac(AVCodecContext *avctx, AACEncContext *s,
955 955
                     dist -= b;
956 956
                 }
957 957
                 dist *= 1.0f / 512.0f / lambda;
958
-                quant_max = quant(maxq[w*16+g], ff_aac_pow2sf_tab[200 - scf + SCALE_ONE_POS - SCALE_DIV_512]);
958
+                quant_max = quant(maxq[w*16+g], ff_aac_pow2sf_tab[POW_SF2_ZERO - scf + SCALE_ONE_POS - SCALE_DIV_512]);
959 959
                 if (quant_max >= 8191) { // too much, return to the previous quantizer
960 960
                     sce->sf_idx[w*16+g] = prev_scf;
961 961
                     break;
... ...
@@ -811,7 +811,7 @@ static int decode_scalefactors(AACContext *ac, float sf[120], GetBitContext *gb,
811 811
                                 "audible artifact, there may be a bug in the "
812 812
                                 "decoder. ", offset[2], clipped_offset);
813 813
                     }
814
-                    sf[idx] = ff_aac_pow2sf_tab[-clipped_offset + 200];
814
+                    sf[idx] = ff_aac_pow2sf_tab[-clipped_offset + POW_SF2_ZERO];
815 815
                 }
816 816
             } else if (band_type[idx] == NOISE_BT) {
817 817
                 for (; i < run_end; i++, idx++) {
... ...
@@ -826,7 +826,7 @@ static int decode_scalefactors(AACContext *ac, float sf[120], GetBitContext *gb,
826 826
                                 "artifact, there may be a bug in the decoder. ",
827 827
                                 offset[1], clipped_offset);
828 828
                     }
829
-                    sf[idx] = -ff_aac_pow2sf_tab[clipped_offset + sf_offset + 100];
829
+                    sf[idx] = -ff_aac_pow2sf_tab[clipped_offset + sf_offset - 100 + POW_SF2_ZERO];
830 830
                 }
831 831
             } else {
832 832
                 for (; i < run_end; i++, idx++) {
... ...
@@ -836,7 +836,7 @@ static int decode_scalefactors(AACContext *ac, float sf[120], GetBitContext *gb,
836 836
                                "%s (%d) out of range.\n", sf_str[0], offset[0]);
837 837
                         return -1;
838 838
                     }
839
-                    sf[idx] = -ff_aac_pow2sf_tab[ offset[0] + sf_offset];
839
+                    sf[idx] = -ff_aac_pow2sf_tab[offset[0] + sf_offset - 200 + POW_SF2_ZERO];
840 840
                 }
841 841
             }
842 842
         }