00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00017 #define SQRT2 1.41421356237309514547
00018
00019 static const int costab32[30] = {
00020 FIX(0.54119610014619701222),
00021 FIX(1.3065629648763763537),
00022
00023 FIX(0.50979557910415917998),
00024 FIX(2.5629154477415054814),
00025 FIX(0.89997622313641556513),
00026 FIX(0.60134488693504528634),
00027
00028 FIX(0.5024192861881556782),
00029 FIX(5.1011486186891552563),
00030 FIX(0.78815462345125020249),
00031 FIX(0.64682178335999007679),
00032 FIX(0.56694403481635768927),
00033 FIX(1.0606776859903470633),
00034 FIX(1.7224470982383341955),
00035 FIX(0.52249861493968885462),
00036
00037 FIX(10.19000812354803287),
00038 FIX(0.674808341455005678),
00039 FIX(1.1694399334328846596),
00040 FIX(0.53104259108978413284),
00041 FIX(2.0577810099534108446),
00042 FIX(0.58293496820613388554),
00043 FIX(0.83934964541552681272),
00044 FIX(0.50547095989754364798),
00045 FIX(3.4076084184687189804),
00046 FIX(0.62250412303566482475),
00047 FIX(0.97256823786196078263),
00048 FIX(0.51544730992262455249),
00049 FIX(1.4841646163141661852),
00050 FIX(0.5531038960344445421),
00051 FIX(0.74453627100229857749),
00052 FIX(0.5006029982351962726),
00053 };
00054
00055 static const int bitinv32[32] = {
00056 0, 16, 8, 24, 4, 20, 12, 28,
00057 2, 18, 10, 26, 6, 22, 14, 30,
00058 1, 17, 9, 25, 5, 21, 13, 29,
00059 3, 19, 11, 27, 7, 23, 15, 31
00060 };
00061
00062
00063 static int16_t filter_bank[512];
00064
00065 static int scale_factor_table[64];
00066 #ifdef USE_FLOATS
00067 static float scale_factor_inv_table[64];
00068 #else
00069 static int8_t scale_factor_shift[64];
00070 static unsigned short scale_factor_mult[64];
00071 #endif
00072 static unsigned char scale_diff_table[128];
00073
00074
00075 static unsigned short total_quant_bits[17];
00076
00077
00078
00079
00080 static const unsigned short quant_snr[17] = {
00081 70, 110, 160, 208,
00082 253, 316, 378, 439,
00083 499, 559, 620, 680,
00084 740, 800, 861, 920,
00085 980
00086 };
00087
00088
00089
00090 static const float fixed_smr[SBLIMIT] = {
00091 30, 17, 16, 10, 3, 12, 8, 2.5,
00092 5, 5, 6, 6, 5, 6, 10, 6,
00093 -4, -10, -21, -30, -42, -55, -68, -75,
00094 -75, -75, -75, -75, -91, -107, -110, -108
00095 };
00096
00097 static const unsigned char nb_scale_factors[4] = { 3, 2, 1, 2 };
00098