xref: /aosp_15_r20/external/libxaac/encoder/ixheaace_mps_rom.c (revision 15dc779a375ca8b5125643b829a8aa4b70d7f451)
1*15dc779aSAndroid Build Coastguard Worker /******************************************************************************
2*15dc779aSAndroid Build Coastguard Worker  *                                                                            *
3*15dc779aSAndroid Build Coastguard Worker  * Copyright (C) 2023 The Android Open Source Project
4*15dc779aSAndroid Build Coastguard Worker  *
5*15dc779aSAndroid Build Coastguard Worker  * Licensed under the Apache License, Version 2.0 (the "License");
6*15dc779aSAndroid Build Coastguard Worker  * you may not use this file except in compliance with the License.
7*15dc779aSAndroid Build Coastguard Worker  * You may obtain a copy of the License at:
8*15dc779aSAndroid Build Coastguard Worker  *
9*15dc779aSAndroid Build Coastguard Worker  * http://www.apache.org/licenses/LICENSE-2.0
10*15dc779aSAndroid Build Coastguard Worker  *
11*15dc779aSAndroid Build Coastguard Worker  * Unless required by applicable law or agreed to in writing, software
12*15dc779aSAndroid Build Coastguard Worker  * distributed under the License is distributed on an "AS IS" BASIS,
13*15dc779aSAndroid Build Coastguard Worker  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14*15dc779aSAndroid Build Coastguard Worker  * See the License for the specific language governing permissions and
15*15dc779aSAndroid Build Coastguard Worker  * limitations under the License.
16*15dc779aSAndroid Build Coastguard Worker  *
17*15dc779aSAndroid Build Coastguard Worker  *****************************************************************************
18*15dc779aSAndroid Build Coastguard Worker  * Originally developed and contributed by Ittiam Systems Pvt. Ltd, Bangalore
19*15dc779aSAndroid Build Coastguard Worker  */
20*15dc779aSAndroid Build Coastguard Worker 
21*15dc779aSAndroid Build Coastguard Worker #include "ixheaac_type_def.h"
22*15dc779aSAndroid Build Coastguard Worker #include "ixheaace_mps_common_fix.h"
23*15dc779aSAndroid Build Coastguard Worker #include "ixheaace_mps_defines.h"
24*15dc779aSAndroid Build Coastguard Worker #include "ixheaace_mps_common_define.h"
25*15dc779aSAndroid Build Coastguard Worker #include "ixheaace_bitbuffer.h"
26*15dc779aSAndroid Build Coastguard Worker 
27*15dc779aSAndroid Build Coastguard Worker #include "ixheaace_mps_struct_def.h"
28*15dc779aSAndroid Build Coastguard Worker #include "ixheaace_mps_sac_polyphase.h"
29*15dc779aSAndroid Build Coastguard Worker #include "ixheaace_mps_sac_hybfilter.h"
30*15dc779aSAndroid Build Coastguard Worker #include "ixheaace_mps_spatial_bitstream.h"
31*15dc779aSAndroid Build Coastguard Worker #include "ixheaace_mps_param_extract.h"
32*15dc779aSAndroid Build Coastguard Worker #include "ixheaace_mps_bitstream.h"
33*15dc779aSAndroid Build Coastguard Worker #include "ixheaace_mps_tree.h"
34*15dc779aSAndroid Build Coastguard Worker 
35*15dc779aSAndroid Build Coastguard Worker const UWORD8 freq_res_bin_table_ld[MAX_FREQ_RES_INDEX] = {0, 23, 15, 12, 9, 7, 5, 4};
36*15dc779aSAndroid Build Coastguard Worker 
37*15dc779aSAndroid Build Coastguard Worker const UWORD8 freq_res_bin_table_usac[8] = {0, 28, 20, 14, 10, 7, 5, 4};
38*15dc779aSAndroid Build Coastguard Worker 
39*15dc779aSAndroid Build Coastguard Worker const UWORD8 freq_res_stride_table_212[4] = {1, 2, 5, 23};
40*15dc779aSAndroid Build Coastguard Worker 
41*15dc779aSAndroid Build Coastguard Worker const ixheaace_mps_sac_tree_description tree_config_table[] = {{5, {0, 0, 0, 0, 1}, 0, 1, 6, 0},
42*15dc779aSAndroid Build Coastguard Worker                                                                {5, {0, 0, 1, 0, 0}, 0, 1, 6, 0},
43*15dc779aSAndroid Build Coastguard Worker                                                                {3, {1, 0, 0, 0, 0}, 1, 2, 6, 0}};
44*15dc779aSAndroid Build Coastguard Worker const ixheaace_mps_tree_setup tree_setup_table = {
45*15dc779aSAndroid Build Coastguard Worker     2, 1, 1, {{0, 0, 1, 0, 1, WIN_ACTIV, WIN_ACTIV}}};
46*15dc779aSAndroid Build Coastguard Worker 
47*15dc779aSAndroid Build Coastguard Worker const WORD32 freq_res_bin_table[] = {0, 28, 20, 14, 10, 7, 5, 4};
48*15dc779aSAndroid Build Coastguard Worker const UWORD8 valid_bands_ld[10] = {4, 5, 7, 9, 12, 15, 20, 23, 28, 40};
49*15dc779aSAndroid Build Coastguard Worker const WORD32 freq_res_stride_table[] = {1, 2, 5, 23, 28};
50*15dc779aSAndroid Build Coastguard Worker const UWORD8 lav_huff_val[4] = {0, 2, 6, 7};
51*15dc779aSAndroid Build Coastguard Worker const UWORD8 lav_huff_len[4] = {1, 2, 3, 3};
52*15dc779aSAndroid Build Coastguard Worker 
53*15dc779aSAndroid Build Coastguard Worker const UWORD8 lav_step_cld[] = {0, 0, 0, 0, 1, 1, 2, 2, 3, 3};
54*15dc779aSAndroid Build Coastguard Worker const UWORD8 lav_step_icc[] = {0, 0, 1, 1, 2, 2, 3, 3};
55*15dc779aSAndroid Build Coastguard Worker 
56*15dc779aSAndroid Build Coastguard Worker const WORD32 temp_shape_chan_table[][7] = {{5, 5, 4, 6, 6, 4, 4}, {5, 5, 5, 7, 7, 4, 4}};
57*15dc779aSAndroid Build Coastguard Worker 
58*15dc779aSAndroid Build Coastguard Worker const UWORD8 subband_2_parameter_ld[NUM_QMF_BANDS] = {
59*15dc779aSAndroid Build Coastguard Worker     14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
60*15dc779aSAndroid Build Coastguard Worker     14, 14, 14, 14, 14, 14, 14, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 12, 12, 12,
61*15dc779aSAndroid Build Coastguard Worker     12, 12, 11, 11, 11, 11, 10, 10, 10, 9,  9,  8,  7,  6,  5,  4,  3,  2,  1,  0};
62*15dc779aSAndroid Build Coastguard Worker 
63*15dc779aSAndroid Build Coastguard Worker const UWORD8 subband_2_parameter_usac[MAX_QMF_BANDS] = {
64*15dc779aSAndroid Build Coastguard Worker     27, 27, 27, 27, 27, 27, 27, 27, 27, 26, 26, 26, 26, 26, 26, 26, 25, 25, 25, 25, 25, 25,
65*15dc779aSAndroid Build Coastguard Worker     24, 24, 24, 24, 24, 23, 23, 23, 23, 22, 22, 22, 21, 21, 21, 20, 20, 19, 19, 18, 18, 17,
66*15dc779aSAndroid Build Coastguard Worker     17, 16, 15, 14, 13, 12, 11, 10, 9,  8,  7,  6,  5,  4,  3,  2,  1,  0,  0,  1};
67*15dc779aSAndroid Build Coastguard Worker 
68*15dc779aSAndroid Build Coastguard Worker const FLOAT32 cld_quant_table_fine_enc[IXHEAACE_MPS_MAX_CLD_QUANT_FINE] = {
69*15dc779aSAndroid Build Coastguard Worker     -50.0f, -45.0f, -40.0f, -35.0f, -30.0f, -25.0f, -22.0f, -19.0f, -16.0f, -13.0f, -10.0f,
70*15dc779aSAndroid Build Coastguard Worker     -8.0f,  -6.0f,  -4.0f,  -2.0f,  0.0f,   2.0f,   4.0f,   6.0f,   8.0f,   10.0f,  13.0f,
71*15dc779aSAndroid Build Coastguard Worker     16.0f,  19.0f,  22.0f,  25.0f,  30.0f,  35.0f,  40.0f,  45.0f,  50.0f};
72*15dc779aSAndroid Build Coastguard Worker 
73*15dc779aSAndroid Build Coastguard Worker const FLOAT32 cld_quant_table_coarse_enc[IXHEAACE_MPS_MAX_CLD_QUANT_COARSE] = {
74*15dc779aSAndroid Build Coastguard Worker     -50.0f, -35.0f, -25.0f, -19.0f, -13.0f, -8.0f, -4.0f, 0.0f,
75*15dc779aSAndroid Build Coastguard Worker     4.0f,   8.0f,   13.0f,  19.0f,  25.0f,  35.0f, 50.0f};
76*15dc779aSAndroid Build Coastguard Worker 
77*15dc779aSAndroid Build Coastguard Worker const FLOAT32 icc_quant_table_fine[IXHEAACE_MPS_MAX_ICC_QUANT_FINE] = {
78*15dc779aSAndroid Build Coastguard Worker     0.9995f, 0.937f, 0.84118f, 0.60092f, 0.36764f, 0.0f, -0.589f, -0.99f};
79*15dc779aSAndroid Build Coastguard Worker 
80*15dc779aSAndroid Build Coastguard Worker const FLOAT32 icc_quant_table_coarse[IXHEAACE_MPS_MAX_ICC_QUANT_COARSE] = {0.99f, 0.84118f,
81*15dc779aSAndroid Build Coastguard Worker                                                                            0.36764f, -0.5890f};
82*15dc779aSAndroid Build Coastguard Worker 
83*15dc779aSAndroid Build Coastguard Worker const FLOAT32 pre_gain_factor_table_flt_new[41] = {
84*15dc779aSAndroid Build Coastguard Worker     0.800000012f, 0.897614777f, 0.503570139f, 0.565015018f, 0.633957267f, 0.711311758f,
85*15dc779aSAndroid Build Coastguard Worker     0.798104942f, 0.895488441f, 0.502377272f, 0.563676596f, 0.632455528f, 0.709626794f,
86*15dc779aSAndroid Build Coastguard Worker     0.796214342f, 0.893367171f, 0.501187205f, 0.562341332f, 0.630957365f, 0.707945764f,
87*15dc779aSAndroid Build Coastguard Worker     0.794328213f, 0.891250908f, 0.5f,         0.561009228f, 0.629462719f, 0.706268787f,
88*15dc779aSAndroid Build Coastguard Worker     0.792446613f, 0.889139712f, 0.997631133f, 0.559680283f, 0.62797159f,  0.704595745f,
89*15dc779aSAndroid Build Coastguard Worker     0.790569425f, 0.887033463f, 0.995267928f, 0.558354497f, 0.626484036f, 0.702926636f,
90*15dc779aSAndroid Build Coastguard Worker     0.788696706f, 0.88493222f,  0.992910266f, 0.55703181f,  0.625f};
91*15dc779aSAndroid Build Coastguard Worker 
92*15dc779aSAndroid Build Coastguard Worker const FLOAT32 dmx_gain_table_flt[] = {0.84089650f, 0.70710706f, 0.59460385f, 0.50000000f,
93*15dc779aSAndroid Build Coastguard Worker                                       0.42044825f, 0.35355341f, 0.25000000f};
94*15dc779aSAndroid Build Coastguard Worker 
95*15dc779aSAndroid Build Coastguard Worker const FLOAT32 ia_mps_enc_qmf_64_640[325] = {
96*15dc779aSAndroid Build Coastguard Worker     -0.0005525286f, 0.0143904666f,  0.3723795546f, -0.3499914122f, -0.0121849995f,
97*15dc779aSAndroid Build Coastguard Worker     -0.0005617692f, 0.0155405553f,  0.3836350013f, -0.3388722693f, -0.0111315548f,
98*15dc779aSAndroid Build Coastguard Worker     -0.0004947518f, 0.0167324712f,  0.3949211761f, -0.3278113727f, -0.0101150215f,
99*15dc779aSAndroid Build Coastguard Worker     -0.0004875227f, 0.0179433381f,  0.4062317676f, -0.3168278913f, -0.0091325329f,
100*15dc779aSAndroid Build Coastguard Worker     -0.0004893791f, 0.0191872431f,  0.4175696896f, -0.3059098575f, -0.0081798233f,
101*15dc779aSAndroid Build Coastguard Worker     -0.0005040714f, 0.0204531793f,  0.4289119920f, -0.2950716717f, -0.0072615816f,
102*15dc779aSAndroid Build Coastguard Worker     -0.0005226564f, 0.0217467550f,  0.4402553754f, -0.2843214189f, -0.0063792293f,
103*15dc779aSAndroid Build Coastguard Worker     -0.0005466565f, 0.0230680169f,  0.4515996535f, -0.2736634040f, -0.0055337211f,
104*15dc779aSAndroid Build Coastguard Worker     -0.0005677802f, 0.0244160992f,  0.4629308085f, -0.2631053299f, -0.0047222596f,
105*15dc779aSAndroid Build Coastguard Worker     -0.0005870930f, 0.0257875847f,  0.4742453214f, -0.2526480309f, -0.0039401124f,
106*15dc779aSAndroid Build Coastguard Worker     -0.0006132747f, 0.0271859429f,  0.4855253091f, -0.2423016884f, -0.0031933778f,
107*15dc779aSAndroid Build Coastguard Worker     -0.0006312493f, 0.0286072173f,  0.4967708254f, -0.2320690870f, -0.0024826723f,
108*15dc779aSAndroid Build Coastguard Worker     -0.0006540333f, 0.0300502657f,  0.5079817500f, -0.2219652696f, -0.0018039472f,
109*15dc779aSAndroid Build Coastguard Worker     -0.0006777690f, 0.0315017608f,  0.5191234970f, -0.2119735853f, -0.0011568135f,
110*15dc779aSAndroid Build Coastguard Worker     -0.0006941614f, 0.0329754081f,  0.5302240895f, -0.2021250176f, -0.0005464280f,
111*15dc779aSAndroid Build Coastguard Worker     -0.0007157736f, 0.0344620948f,  0.5412553448f, -0.1923966745f, 0.0000276045f,
112*15dc779aSAndroid Build Coastguard Worker     -0.0007255043f, 0.0359697560f,  0.5522051258f, -0.1828172548f, 0.0005832264f,
113*15dc779aSAndroid Build Coastguard Worker     -0.0007440941f, 0.0374812850f,  0.5630789140f, -0.1733808172f, 0.0010902329f,
114*15dc779aSAndroid Build Coastguard Worker     -0.0007490598f, 0.0390053679f,  0.5738524131f, -0.1640958855f, 0.0015784682f,
115*15dc779aSAndroid Build Coastguard Worker     -0.0007681371f, 0.0405349170f,  0.5845403235f, -0.1549607071f, 0.0020274176f,
116*15dc779aSAndroid Build Coastguard Worker     -0.0007724848f, 0.0420649094f,  0.5951123086f, -0.1459766491f, 0.0024508540f,
117*15dc779aSAndroid Build Coastguard Worker     -0.0007834332f, 0.0436097542f,  0.6055783538f, -0.1371551761f, 0.0028446757f,
118*15dc779aSAndroid Build Coastguard Worker     -0.0007779869f, 0.0451488405f,  0.6159109932f, -0.1285002850f, 0.0032091885f,
119*15dc779aSAndroid Build Coastguard Worker     -0.0007803664f, 0.0466843027f,  0.6261242695f, -0.1200077984f, 0.0035401246f,
120*15dc779aSAndroid Build Coastguard Worker     -0.0007801449f, 0.0482165720f,  0.6361980107f, -0.1116826931f, 0.0038456408f,
121*15dc779aSAndroid Build Coastguard Worker     -0.0007757977f, 0.0497385755f,  0.6461269695f, -0.1035329531f, 0.0041251642f,
122*15dc779aSAndroid Build Coastguard Worker     -0.0007630793f, 0.0512556155f,  0.6559016302f, -0.0955533352f, 0.0043801861f,
123*15dc779aSAndroid Build Coastguard Worker     -0.0007530001f, 0.0527630746f,  0.6655139880f, -0.0877547536f, 0.0046039530f,
124*15dc779aSAndroid Build Coastguard Worker     -0.0007319357f, 0.0542452768f,  0.6749663190f, -0.0801372934f, 0.0048109469f,
125*15dc779aSAndroid Build Coastguard Worker     -0.0007215391f, 0.0557173648f,  0.6842353293f, -0.0726943300f, 0.0049839687f,
126*15dc779aSAndroid Build Coastguard Worker     -0.0006917937f, 0.0571616450f,  0.6933282376f, -0.0654409853f, 0.0051382275f,
127*15dc779aSAndroid Build Coastguard Worker     -0.0006650415f, 0.0585915683f,  0.7022388719f, -0.0583705326f, 0.0052715758f,
128*15dc779aSAndroid Build Coastguard Worker     -0.0006341594f, 0.0599837480f,  0.7109410426f, -0.0514804176f, 0.0053838975f,
129*15dc779aSAndroid Build Coastguard Worker     -0.0005946118f, 0.0613455171f,  0.7194462634f, -0.0447806821f, 0.0054753783f,
130*15dc779aSAndroid Build Coastguard Worker     -0.0005564576f, 0.0626857808f,  0.7277448900f, -0.0382776572f, 0.0055404363f,
131*15dc779aSAndroid Build Coastguard Worker     -0.0005145572f, 0.0639715898f,  0.7358211758f, -0.0319531274f, 0.0055917128f,
132*15dc779aSAndroid Build Coastguard Worker     -0.0004606325f, 0.0652247106f,  0.7436827863f, -0.0258227288f, 0.0056266114f,
133*15dc779aSAndroid Build Coastguard Worker     -0.0004095121f, 0.0664367512f,  0.7513137456f, -0.0198834129f, 0.0056389199f,
134*15dc779aSAndroid Build Coastguard Worker     -0.0003501175f, 0.0676075985f,  0.7587080760f, -0.0141288827f, 0.0056455196f,
135*15dc779aSAndroid Build Coastguard Worker     -0.0002896981f, 0.0687043828f,  0.7658674865f, -0.0085711749f, 0.0056220643f,
136*15dc779aSAndroid Build Coastguard Worker     -0.0002098337f, 0.0697630244f,  0.7727780881f, -0.0032086896f, 0.0055938023f,
137*15dc779aSAndroid Build Coastguard Worker     -0.0001446380f, 0.0707628710f,  0.7794287519f, 0.0019765601f,  0.0055475714f,
138*15dc779aSAndroid Build Coastguard Worker     -0.0000617334f, 0.0717002673f,  0.7858353120f, 0.0069636862f,  0.0054876040f,
139*15dc779aSAndroid Build Coastguard Worker     0.0000134949f,  0.0725682583f,  0.7919735841f, 0.0117623832f,  0.0054196775f,
140*15dc779aSAndroid Build Coastguard Worker     0.0001094383f,  0.0733620255f,  0.7978466413f, 0.0163701258f,  0.0053471681f,
141*15dc779aSAndroid Build Coastguard Worker     0.0002043017f,  0.0741003642f,  0.8034485751f, 0.0207997072f,  0.0052461166f,
142*15dc779aSAndroid Build Coastguard Worker     0.0002949531f,  0.0747452558f,  0.8087695004f, 0.0250307561f,  0.0051407353f,
143*15dc779aSAndroid Build Coastguard Worker     0.0004026540f,  0.0753137336f,  0.8138191270f, 0.0290824006f,  0.0050393022f,
144*15dc779aSAndroid Build Coastguard Worker     0.0005107388f,  0.0758008358f,  0.8185776004f, 0.0329583930f,  0.0049137603f,
145*15dc779aSAndroid Build Coastguard Worker     0.0006239376f,  0.0761992479f,  0.8230419890f, 0.0366418116f,  0.0047932560f,
146*15dc779aSAndroid Build Coastguard Worker     0.0007458025f,  0.0764992170f,  0.8272275347f, 0.0401458278f,  0.0046606460f,
147*15dc779aSAndroid Build Coastguard Worker     0.0008608443f,  0.0767093490f,  0.8311038457f, 0.0434768782f,  0.0045209852f,
148*15dc779aSAndroid Build Coastguard Worker     0.0009885988f,  0.0768173975f,  0.8346937361f, 0.0466303305f,  0.0043730719f,
149*15dc779aSAndroid Build Coastguard Worker     0.0011250155f,  0.0768230011f,  0.8379717337f, 0.0495978676f,  0.0042264269f,
150*15dc779aSAndroid Build Coastguard Worker     0.0012577884f,  0.0767204924f,  0.8409541392f, 0.0524093821f,  0.0040819753f,
151*15dc779aSAndroid Build Coastguard Worker     0.0013902494f,  0.0765050718f,  0.8436238281f, 0.0550460034f,  0.0039207432f,
152*15dc779aSAndroid Build Coastguard Worker     0.0015443219f,  0.0761748321f,  0.8459818469f, 0.0575152691f,  0.0037603922f,
153*15dc779aSAndroid Build Coastguard Worker     0.0016868083f,  0.0757305756f,  0.8480315777f, 0.0598166570f,  0.0036008268f,
154*15dc779aSAndroid Build Coastguard Worker     0.0018348265f,  0.0751576255f,  0.8497805198f, 0.0619602779f,  0.0034418874f,
155*15dc779aSAndroid Build Coastguard Worker     0.0019841140f,  0.0744664394f,  0.8511971524f, 0.0639444805f,  0.0032739613f,
156*15dc779aSAndroid Build Coastguard Worker     0.0021461583f,  0.0736406005f,  0.8523047035f, 0.0657690668f,  0.0031125420f,
157*15dc779aSAndroid Build Coastguard Worker     0.0023017254f,  0.0726774642f,  0.8531020949f, 0.0674525021f,  0.0029469447f,
158*15dc779aSAndroid Build Coastguard Worker     0.0024625616f,  0.0715826364f,  0.8535720573f, 0.0689664013f,  0.0027870464f,
159*15dc779aSAndroid Build Coastguard Worker     0.0026201758f,  0.0703533073f,  0.8537385600f, 0.0703533073f,  0.0026201758f,
160*15dc779aSAndroid Build Coastguard Worker     -0.0132718220f, -0.3611589903f, 0.3611589903f, 0.0132718220f,  0.0000000000f,
161*15dc779aSAndroid Build Coastguard Worker };
162*15dc779aSAndroid Build Coastguard Worker 
163*15dc779aSAndroid Build Coastguard Worker const FLOAT32 trig_data_fct4_8[8] = {0.995184726672197f, 0.098017140329561f, 0.956940335732209f,
164*15dc779aSAndroid Build Coastguard Worker                                      0.290284677254462f, 0.881921264348355f, 0.471396736825998f,
165*15dc779aSAndroid Build Coastguard Worker                                      0.773010453362737f, 0.634393284163645f};
166*15dc779aSAndroid Build Coastguard Worker 
167*15dc779aSAndroid Build Coastguard Worker const FLOAT32 trig_data_fct4_16[16] = {
168*15dc779aSAndroid Build Coastguard Worker     0.998795456205172f, 0.049067674327418f, 0.989176509964781f, 0.146730474455362f,
169*15dc779aSAndroid Build Coastguard Worker     0.970031253194544f, 0.242980179903264f, 0.941544065183021f, 0.336889853392220f,
170*15dc779aSAndroid Build Coastguard Worker     0.903989293123443f, 0.427555093430282f, 0.857728610000272f, 0.514102744193222f,
171*15dc779aSAndroid Build Coastguard Worker     0.803207531480645f, 0.595699304492433f, 0.740951125354959f, 0.671558954847018f};
172*15dc779aSAndroid Build Coastguard Worker const FLOAT32 trig_data_fct4_32[32] = {
173*15dc779aSAndroid Build Coastguard Worker     0.999698818696204f, 0.024541228522912f, 0.997290456678690f, 0.073564563599667f,
174*15dc779aSAndroid Build Coastguard Worker     0.992479534598710f, 0.122410675199216f, 0.985277642388941f, 0.170961888760301f,
175*15dc779aSAndroid Build Coastguard Worker     0.975702130038529f, 0.219101240156870f, 0.963776065795440f, 0.266712757474898f,
176*15dc779aSAndroid Build Coastguard Worker     0.949528180593037f, 0.313681740398892f, 0.932992798834739f, 0.359895036534988f,
177*15dc779aSAndroid Build Coastguard Worker     0.914209755703531f, 0.405241314004990f, 0.893224301195515f, 0.449611329654607f,
178*15dc779aSAndroid Build Coastguard Worker     0.870086991108711f, 0.492898192229784f, 0.844853565249707f, 0.534997619887097f,
179*15dc779aSAndroid Build Coastguard Worker     0.817584813151584f, 0.575808191417845f, 0.788346427626606f, 0.615231590580627f,
180*15dc779aSAndroid Build Coastguard Worker     0.757208846506485f, 0.653172842953777f, 0.724247082951467f, 0.689540544737067f};
181*15dc779aSAndroid Build Coastguard Worker 
182*15dc779aSAndroid Build Coastguard Worker /*  sin (PI / L * n) */
183*15dc779aSAndroid Build Coastguard Worker const FLOAT32 sbr_alt_sin_twiddle[] = {
184*15dc779aSAndroid Build Coastguard Worker     0.00000000000000f, 0.04906767432742f, 0.09801714032956f, 0.14673047445536f, 0.19509032201613f,
185*15dc779aSAndroid Build Coastguard Worker     0.24298017990326f, 0.29028467725446f, 0.33688985339222f, 0.38268343236509f, 0.42755509343028f,
186*15dc779aSAndroid Build Coastguard Worker     0.47139673682600f, 0.51410274419322f, 0.55557023301960f, 0.59569930449243f, 0.63439328416365f,
187*15dc779aSAndroid Build Coastguard Worker     0.67155895484702f, 0.70710678118655f, 0.74095112535496f, 0.77301045336274f, 0.80320753148064f,
188*15dc779aSAndroid Build Coastguard Worker     0.83146961230255f, 0.85772861000027f, 0.88192126434835f, 0.90398929312344f, 0.92387953251129f,
189*15dc779aSAndroid Build Coastguard Worker     0.94154406518302f, 0.95694033573221f, 0.97003125319454f, 0.98078528040323f, 0.98917650996478f,
190*15dc779aSAndroid Build Coastguard Worker     0.99518472667220f, 0.99879545620517f, 1.00000000000000f};
191*15dc779aSAndroid Build Coastguard Worker 
192*15dc779aSAndroid Build Coastguard Worker const FLOAT32 sbr_cos_twiddle[] = {
193*15dc779aSAndroid Build Coastguard Worker     0.99992470183914f, 0.99811811290015f, 0.99390697000236f, 0.98730141815786f, 0.97831737071963f,
194*15dc779aSAndroid Build Coastguard Worker     0.96697647104485f, 0.95330604035419f, 0.93733901191257f, 0.91911385169006f, 0.89867446569395f,
195*15dc779aSAndroid Build Coastguard Worker     0.87607009419541f, 0.85135519310527f, 0.82458930278503f, 0.79583690460888f, 0.76516726562246f,
196*15dc779aSAndroid Build Coastguard Worker     0.73265427167241f, 0.69837624940897f, 0.66241577759017f, 0.62485948814239f, 0.58579785745644f,
197*15dc779aSAndroid Build Coastguard Worker     0.54532498842205f, 0.50353838372572f, 0.46053871095824f, 0.41642956009764f, 0.37131719395184f,
198*15dc779aSAndroid Build Coastguard Worker     0.32531029216226f, 0.27851968938505f, 0.23105810828067f, 0.18303988795514f, 0.13458070850713f,
199*15dc779aSAndroid Build Coastguard Worker     0.08579731234444f, 0.03680722294136f};
200*15dc779aSAndroid Build Coastguard Worker /*  sin (PI / L * (n + 0.25)); */
201*15dc779aSAndroid Build Coastguard Worker const FLOAT32 sbr_sin_twiddle[] = {
202*15dc779aSAndroid Build Coastguard Worker     0.01227153828572f, 0.06132073630221f, 0.11022220729388f, 0.15885814333386f, 0.20711137619222f,
203*15dc779aSAndroid Build Coastguard Worker     0.25486565960451f, 0.30200594931923f, 0.34841868024943f, 0.39399204006105f, 0.43861623853853f,
204*15dc779aSAndroid Build Coastguard Worker     0.48218377207912f, 0.52458968267847f, 0.56573181078361f, 0.60551104140433f, 0.64383154288979f,
205*15dc779aSAndroid Build Coastguard Worker     0.68060099779545f, 0.71573082528382f, 0.74913639452346f, 0.78073722857209f, 0.81045719825259f,
206*15dc779aSAndroid Build Coastguard Worker     0.83822470555484f, 0.86397285612159f, 0.88763962040285f, 0.90916798309052f, 0.92850608047322f,
207*15dc779aSAndroid Build Coastguard Worker     0.94560732538052f, 0.96043051941557f, 0.97293995220556f, 0.98310548743122f, 0.99090263542778f,
208*15dc779aSAndroid Build Coastguard Worker     0.99631261218278f, 0.99932238458835f,
209*15dc779aSAndroid Build Coastguard Worker };
210*15dc779aSAndroid Build Coastguard Worker 
211*15dc779aSAndroid Build Coastguard Worker const FLOAT32 fft_c[4] = {9.807852804032304e-1f, 8.314696123025452e-1f, 5.555702330196023e-1f,
212*15dc779aSAndroid Build Coastguard Worker                           1.950903220161283e-1f};
213*15dc779aSAndroid Build Coastguard Worker 
214*15dc779aSAndroid Build Coastguard Worker const FLOAT32 p8_13[13] = {-0.00746082949812f,
215*15dc779aSAndroid Build Coastguard Worker                            -0.02270420949825f,
216*15dc779aSAndroid Build Coastguard Worker                            -0.04546865930473f,
217*15dc779aSAndroid Build Coastguard Worker                            -0.07266113929591f,
218*15dc779aSAndroid Build Coastguard Worker                            -0.09885108575264f,
219*15dc779aSAndroid Build Coastguard Worker                            0.11793710567217f,
220*15dc779aSAndroid Build Coastguard Worker                            0.125f,
221*15dc779aSAndroid Build Coastguard Worker                            0.11793710567217f,
222*15dc779aSAndroid Build Coastguard Worker                            0.09885108575264f,
223*15dc779aSAndroid Build Coastguard Worker                            0.07266113929591f,
224*15dc779aSAndroid Build Coastguard Worker                            0.04546865930473f,
225*15dc779aSAndroid Build Coastguard Worker                            0.02270420949825f,
226*15dc779aSAndroid Build Coastguard Worker                            0.00746082949812f};
227*15dc779aSAndroid Build Coastguard Worker 
228*15dc779aSAndroid Build Coastguard Worker const FLOAT32 p2_6[6] = {0.01899487526049f, -0.07293139167538f, 0.30596630545168f,
229*15dc779aSAndroid Build Coastguard Worker                          0.30596630545168f, -0.07293139167538f, 0.01899487526049f};
230*15dc779aSAndroid Build Coastguard Worker 
231*15dc779aSAndroid Build Coastguard Worker const WORD32 kernels_20[MAX_HYBRID_BANDS] = {
232*15dc779aSAndroid Build Coastguard Worker     1,  0,  0,  1,  2,  3,  4,  5,  6,  7,  8,  9,  10, 11, 12, 13, 14, 14,
233*15dc779aSAndroid Build Coastguard Worker     15, 15, 15, 16, 16, 16, 16, 17, 17, 17, 17, 17, 18, 18, 18, 18, 18, 18,
234*15dc779aSAndroid Build Coastguard Worker     18, 18, 18, 18, 18, 18, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
235*15dc779aSAndroid Build Coastguard Worker     19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19};
236*15dc779aSAndroid Build Coastguard Worker 
237*15dc779aSAndroid Build Coastguard Worker const FLOAT32 ia_qmf_anl_addt_cos[32] = {
238*15dc779aSAndroid Build Coastguard Worker     0.99969881869620f, 0.99729045667869f, 0.99247953459871f, 0.98527764238894f, 0.97570213003853f,
239*15dc779aSAndroid Build Coastguard Worker     0.96377606579544f, 0.94952818059304f, 0.93299279883474f, 0.91420975570353f, 0.89322430119552f,
240*15dc779aSAndroid Build Coastguard Worker     0.87008699110871f, 0.84485356524971f, 0.81758481315158f, 0.78834642762661f, 0.75720884650649f,
241*15dc779aSAndroid Build Coastguard Worker     0.72424708295147f, 0.68954054473707f, 0.65317284295378f, 0.61523159058063f, 0.57580819141785f,
242*15dc779aSAndroid Build Coastguard Worker     0.53499761988710f, 0.49289819222979f, 0.44961132965461f, 0.40524131400499f, 0.35989503653499f,
243*15dc779aSAndroid Build Coastguard Worker     0.31368174039889f, 0.26671275747490f, 0.21910124015687f, 0.17096188876030f, 0.12241067519922f,
244*15dc779aSAndroid Build Coastguard Worker     0.07356456359967f, 0.02454122852291f};
245*15dc779aSAndroid Build Coastguard Worker 
246*15dc779aSAndroid Build Coastguard Worker const FLOAT32 ia_qmf_anl_addt_sin[32] = {
247*15dc779aSAndroid Build Coastguard Worker     -0.02454122852291f, -0.07356456359967f, -0.12241067519922f, -0.17096188876030f,
248*15dc779aSAndroid Build Coastguard Worker     -0.21910124015687f, -0.26671275747490f, -0.31368174039889f, -0.35989503653499f,
249*15dc779aSAndroid Build Coastguard Worker     -0.40524131400499f, -0.44961132965461f, -0.49289819222978f, -0.53499761988710f,
250*15dc779aSAndroid Build Coastguard Worker     -0.57580819141785f, -0.61523159058063f, -0.65317284295378f, -0.68954054473707f,
251*15dc779aSAndroid Build Coastguard Worker     -0.72424708295147f, -0.75720884650648f, -0.78834642762661f, -0.81758481315158f,
252*15dc779aSAndroid Build Coastguard Worker     -0.84485356524971f, -0.87008699110871f, -0.89322430119552f, -0.91420975570353f,
253*15dc779aSAndroid Build Coastguard Worker     -0.93299279883474f, -0.94952818059304f, -0.96377606579544f, -0.97570213003853f,
254*15dc779aSAndroid Build Coastguard Worker     -0.98527764238894f, -0.99247953459871f, -0.99729045667869f, -0.99969881869620f};
255