xref: /aosp_15_r20/external/libxaac/decoder/ixheaacd_aac_rom.h (revision 15dc779a375ca8b5125643b829a8aa4b70d7f451)
1*15dc779aSAndroid Build Coastguard Worker /******************************************************************************
2*15dc779aSAndroid Build Coastguard Worker  *                                                                            *
3*15dc779aSAndroid Build Coastguard Worker  * Copyright (C) 2018 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 #ifndef IXHEAACD_AAC_ROM_H
21*15dc779aSAndroid Build Coastguard Worker #define IXHEAACD_AAC_ROM_H
22*15dc779aSAndroid Build Coastguard Worker 
23*15dc779aSAndroid Build Coastguard Worker #define MAX_CB_SIZE 13
24*15dc779aSAndroid Build Coastguard Worker 
25*15dc779aSAndroid Build Coastguard Worker typedef struct {
26*15dc779aSAndroid Build Coastguard Worker   WORD32 ixheaacd_pow_table_Q13[129];
27*15dc779aSAndroid Build Coastguard Worker   WORD32 scale_table[4];
28*15dc779aSAndroid Build Coastguard Worker   WORD8 tns_max_bands_tbl[12][2];
29*15dc779aSAndroid Build Coastguard Worker   WORD16 tns_coeff3_16[8];
30*15dc779aSAndroid Build Coastguard Worker   WORD16 tns_coeff4_16[16];
31*15dc779aSAndroid Build Coastguard Worker   WORD32 scale_mant_tab[4];
32*15dc779aSAndroid Build Coastguard Worker 
33*15dc779aSAndroid Build Coastguard Worker   WORD32 tns_coeff3[8];
34*15dc779aSAndroid Build Coastguard Worker   WORD32 tns_coeff4[16];
35*15dc779aSAndroid Build Coastguard Worker 
36*15dc779aSAndroid Build Coastguard Worker   WORD32 tns_coeff3_32[8];
37*15dc779aSAndroid Build Coastguard Worker   WORD32 tns_coeff4_32[16];
38*15dc779aSAndroid Build Coastguard Worker   WORD32 tns_max_bands_tbl_usac[16][2];
39*15dc779aSAndroid Build Coastguard Worker 
40*15dc779aSAndroid Build Coastguard Worker   WORD8 tns_max_bands_tbl_ld[12];
41*15dc779aSAndroid Build Coastguard Worker   WORD8 tns_max_bands_tbl_480[12];
42*15dc779aSAndroid Build Coastguard Worker   WORD32 scale_table_960[4];
43*15dc779aSAndroid Build Coastguard Worker } ia_aac_dec_block_tables_struct;
44*15dc779aSAndroid Build Coastguard Worker 
45*15dc779aSAndroid Build Coastguard Worker extern const ia_aac_dec_block_tables_struct ixheaacd_aac_block_tables;
46*15dc779aSAndroid Build Coastguard Worker 
47*15dc779aSAndroid Build Coastguard Worker typedef struct {
48*15dc779aSAndroid Build Coastguard Worker   WORD8 ixheaacd_sfb_96_1024[43];
49*15dc779aSAndroid Build Coastguard Worker   WORD8 ixheaacd_sfb_96_128[14];
50*15dc779aSAndroid Build Coastguard Worker   WORD8 ixheaacd_sfb_64_1024[49];
51*15dc779aSAndroid Build Coastguard Worker   WORD8 ixheaacd_sfb_48_1024[51];
52*15dc779aSAndroid Build Coastguard Worker   WORD8 ixheaacd_sfb_48_128[16];
53*15dc779aSAndroid Build Coastguard Worker   WORD8 ixheaacd_sfb_32_1024[53];
54*15dc779aSAndroid Build Coastguard Worker   WORD8 ixheaacd_sfb_24_1024[49];
55*15dc779aSAndroid Build Coastguard Worker   WORD8 ixheaacd_sfb_24_128[17];
56*15dc779aSAndroid Build Coastguard Worker   WORD8 ixheaacd_sfb_16_1024[45];
57*15dc779aSAndroid Build Coastguard Worker   WORD8 ixheaacd_sfb_16_128[17];
58*15dc779aSAndroid Build Coastguard Worker   WORD8 ixheaacd_sfb_8_1024[42];
59*15dc779aSAndroid Build Coastguard Worker   WORD8 ixheaacd_sfb_8_128[17];
60*15dc779aSAndroid Build Coastguard Worker 
61*15dc779aSAndroid Build Coastguard Worker   ia_sampling_rate_info_struct str_sample_rate_info[13];
62*15dc779aSAndroid Build Coastguard Worker 
63*15dc779aSAndroid Build Coastguard Worker   UWORD32 idx_table_hf11[21];
64*15dc779aSAndroid Build Coastguard Worker   UWORD32 idx_table_hf10[20];
65*15dc779aSAndroid Build Coastguard Worker   UWORD32 idx_table_hf9[23];
66*15dc779aSAndroid Build Coastguard Worker   UWORD32 idx_table_hf8[17];
67*15dc779aSAndroid Build Coastguard Worker   UWORD32 idx_table_hf7[18];
68*15dc779aSAndroid Build Coastguard Worker   UWORD32 idx_table_hf6[17];
69*15dc779aSAndroid Build Coastguard Worker   UWORD32 idx_table_hf5[19];
70*15dc779aSAndroid Build Coastguard Worker   UWORD32 idx_table_hf4[19];
71*15dc779aSAndroid Build Coastguard Worker   UWORD32 idx_table_hf3[27];
72*15dc779aSAndroid Build Coastguard Worker   UWORD32 idx_table_hf2[16];
73*15dc779aSAndroid Build Coastguard Worker   UWORD32 idx_table_hf1[12];
74*15dc779aSAndroid Build Coastguard Worker 
75*15dc779aSAndroid Build Coastguard Worker   UWORD16 input_table_cb11[290];
76*15dc779aSAndroid Build Coastguard Worker   UWORD16 input_table_cb10[170];
77*15dc779aSAndroid Build Coastguard Worker   UWORD16 input_table_cb9[170];
78*15dc779aSAndroid Build Coastguard Worker   UWORD16 input_table_cb8[65];
79*15dc779aSAndroid Build Coastguard Worker   UWORD16 input_table_cb7[65];
80*15dc779aSAndroid Build Coastguard Worker   UWORD16 input_table_cb6[82];
81*15dc779aSAndroid Build Coastguard Worker   UWORD16 input_table_cb5[82];
82*15dc779aSAndroid Build Coastguard Worker   UWORD16 input_table_cb4[82];
83*15dc779aSAndroid Build Coastguard Worker   UWORD16 input_table_cb3[82];
84*15dc779aSAndroid Build Coastguard Worker   UWORD16 input_table_cb2[82];
85*15dc779aSAndroid Build Coastguard Worker   UWORD16 input_table_cb1[82];
86*15dc779aSAndroid Build Coastguard Worker   UWORD16 huffman_code_book_scl[122];
87*15dc779aSAndroid Build Coastguard Worker   UWORD32 huffman_code_book_scl_index[33];
88*15dc779aSAndroid Build Coastguard Worker 
89*15dc779aSAndroid Build Coastguard Worker   WORD8 ixheaacd_sfb_48_512[37];
90*15dc779aSAndroid Build Coastguard Worker   WORD8 ixheaacd_sfb_32_512[38];
91*15dc779aSAndroid Build Coastguard Worker   WORD8 ixheaacd_sfb_24_512[32];
92*15dc779aSAndroid Build Coastguard Worker 
93*15dc779aSAndroid Build Coastguard Worker   WORD8 ixheaacd_sfb_48_480[36];
94*15dc779aSAndroid Build Coastguard Worker   WORD8 ixheaacd_sfb_32_480[38];
95*15dc779aSAndroid Build Coastguard Worker   WORD8 ixheaacd_sfb_24_480[31];
96*15dc779aSAndroid Build Coastguard Worker 
97*15dc779aSAndroid Build Coastguard Worker   WORD8 ixheaacd_sfb_96_960[41];
98*15dc779aSAndroid Build Coastguard Worker   WORD8 ixheaacd_sfb_96_120[13];
99*15dc779aSAndroid Build Coastguard Worker   WORD8 ixheaacd_sfb_64_960[47];
100*15dc779aSAndroid Build Coastguard Worker   WORD8 ixheaacd_sfb_48_960[50];
101*15dc779aSAndroid Build Coastguard Worker   WORD8 ixheaacd_sfb_48_120[15];
102*15dc779aSAndroid Build Coastguard Worker   WORD8 ixheaacd_sfb_24_960[47];
103*15dc779aSAndroid Build Coastguard Worker   WORD8 ixheaacd_sfb_24_120[16];
104*15dc779aSAndroid Build Coastguard Worker   WORD8 ixheaacd_sfb_16_960[43];
105*15dc779aSAndroid Build Coastguard Worker   WORD8 ixheaacd_sfb_16_120[16];
106*15dc779aSAndroid Build Coastguard Worker   WORD8 ixheaacd_sfb_8_960[41];
107*15dc779aSAndroid Build Coastguard Worker   WORD8 ixheaacd_sfb_8_120[16];
108*15dc779aSAndroid Build Coastguard Worker } ia_aac_dec_huffman_tables_struct;
109*15dc779aSAndroid Build Coastguard Worker 
110*15dc779aSAndroid Build Coastguard Worker extern const ia_aac_dec_huffman_tables_struct ixheaacd_aac_huffmann_tables;
111*15dc779aSAndroid Build Coastguard Worker 
112*15dc779aSAndroid Build Coastguard Worker typedef struct {
113*15dc779aSAndroid Build Coastguard Worker   WORD16 cosine_array_2048_256[514];
114*15dc779aSAndroid Build Coastguard Worker   WORD8 dig_rev_table8_long[64];
115*15dc779aSAndroid Build Coastguard Worker   WORD8 dig_rev_table8_short[8];
116*15dc779aSAndroid Build Coastguard Worker   WORD32 fft_twiddle[64 * 7];
117*15dc779aSAndroid Build Coastguard Worker 
118*15dc779aSAndroid Build Coastguard Worker   WORD16 only_long_window_sine[1024];
119*15dc779aSAndroid Build Coastguard Worker   WORD16 only_long_window_kbd[1024];
120*15dc779aSAndroid Build Coastguard Worker   WORD16 only_short_window_sine[128];
121*15dc779aSAndroid Build Coastguard Worker   WORD16 only_short_window_kbd[128];
122*15dc779aSAndroid Build Coastguard Worker 
123*15dc779aSAndroid Build Coastguard Worker   WORD16 cosine_array_2048_256p[514];
124*15dc779aSAndroid Build Coastguard Worker   WORD32 w1024[768];
125*15dc779aSAndroid Build Coastguard Worker   UWORD8 bit_rev_1024[256];
126*15dc779aSAndroid Build Coastguard Worker   UWORD8 bit_rev_512[64];
127*15dc779aSAndroid Build Coastguard Worker   UWORD8 bit_rev_128[16];
128*15dc779aSAndroid Build Coastguard Worker   UWORD8 bit_rev_32[4];
129*15dc779aSAndroid Build Coastguard Worker   WORD32 w_256[504];
130*15dc779aSAndroid Build Coastguard Worker   WORD32 low_overlap_win[512];
131*15dc779aSAndroid Build Coastguard Worker   WORD32 window_sine_512[512];
132*15dc779aSAndroid Build Coastguard Worker   WORD32 cosine_array_1024[512];
133*15dc779aSAndroid Build Coastguard Worker 
134*15dc779aSAndroid Build Coastguard Worker   WORD32 low_overlap_win_480[480];
135*15dc779aSAndroid Build Coastguard Worker   WORD32 window_sine_480[480];
136*15dc779aSAndroid Build Coastguard Worker 
137*15dc779aSAndroid Build Coastguard Worker   UWORD8 re_arr_tab_16[240];
138*15dc779aSAndroid Build Coastguard Worker   UWORD8 re_arr_tab_sml_240[240];
139*15dc779aSAndroid Build Coastguard Worker 
140*15dc779aSAndroid Build Coastguard Worker   WORD32 cosine_array_960[480];
141*15dc779aSAndroid Build Coastguard Worker   WORD32 w_16[24];
142*15dc779aSAndroid Build Coastguard Worker 
143*15dc779aSAndroid Build Coastguard Worker   WORD16 window_sine_480_eld[1920];
144*15dc779aSAndroid Build Coastguard Worker   WORD16 window_sine_512_eld[2048];
145*15dc779aSAndroid Build Coastguard Worker 
146*15dc779aSAndroid Build Coastguard Worker   WORD16 only_long_window_sine_960[960];
147*15dc779aSAndroid Build Coastguard Worker   WORD16 only_long_window_kbd_960[960];
148*15dc779aSAndroid Build Coastguard Worker   WORD16 only_short_window_sine_120[120];
149*15dc779aSAndroid Build Coastguard Worker   WORD16 only_short_window_kbd_120[120];
150*15dc779aSAndroid Build Coastguard Worker 
151*15dc779aSAndroid Build Coastguard Worker   WORD16 re_arr_tab_32[480];
152*15dc779aSAndroid Build Coastguard Worker   WORD16 re_arr_tab_sml[16];
153*15dc779aSAndroid Build Coastguard Worker   WORD16 re_arr_tab_4[60];
154*15dc779aSAndroid Build Coastguard Worker   WORD16 re_arr_tab_15_4[60];
155*15dc779aSAndroid Build Coastguard Worker   WORD16 re_arr_tab_120[60];
156*15dc779aSAndroid Build Coastguard Worker   WORD16 re_arr_tab_5[16];
157*15dc779aSAndroid Build Coastguard Worker   WORD16 re_arr_tab_3[16];
158*15dc779aSAndroid Build Coastguard Worker 
159*15dc779aSAndroid Build Coastguard Worker   WORD16 re_arr_tab_sml_480[480];
160*15dc779aSAndroid Build Coastguard Worker 
161*15dc779aSAndroid Build Coastguard Worker   WORD32 cosine_array_1920[960];
162*15dc779aSAndroid Build Coastguard Worker 
163*15dc779aSAndroid Build Coastguard Worker   WORD16 w_512[2 * 510];
164*15dc779aSAndroid Build Coastguard Worker   WORD16 w_32[60];
165*15dc779aSAndroid Build Coastguard Worker   WORD16 cosine_array_240[120];
166*15dc779aSAndroid Build Coastguard Worker } ia_aac_dec_imdct_tables_struct;
167*15dc779aSAndroid Build Coastguard Worker 
168*15dc779aSAndroid Build Coastguard Worker extern const ia_aac_dec_imdct_tables_struct ixheaacd_imdct_tables;
169*15dc779aSAndroid Build Coastguard Worker 
170*15dc779aSAndroid Build Coastguard Worker typedef struct {
171*15dc779aSAndroid Build Coastguard Worker   WORD16 *sfb_index;
172*15dc779aSAndroid Build Coastguard Worker   WORD8 *sfb_width;
173*15dc779aSAndroid Build Coastguard Worker 
174*15dc779aSAndroid Build Coastguard Worker } ia_aac_sfb_info;
175*15dc779aSAndroid Build Coastguard Worker 
176*15dc779aSAndroid Build Coastguard Worker typedef struct {
177*15dc779aSAndroid Build Coastguard Worker   ia_aac_dec_block_tables_struct *pstr_block_tables;
178*15dc779aSAndroid Build Coastguard Worker   ia_aac_dec_huffman_tables_struct *pstr_huffmann_tables;
179*15dc779aSAndroid Build Coastguard Worker   ia_aac_dec_imdct_tables_struct *pstr_imdct_tables;
180*15dc779aSAndroid Build Coastguard Worker 
181*15dc779aSAndroid Build Coastguard Worker   ia_aac_sfb_info str_aac_sfb_info[4];
182*15dc779aSAndroid Build Coastguard Worker   WORD8 *scale_factor_bands_long[24];
183*15dc779aSAndroid Build Coastguard Worker   WORD8 *scale_factor_bands_short[24];
184*15dc779aSAndroid Build Coastguard Worker   WORD16 sfb_long_table[52];
185*15dc779aSAndroid Build Coastguard Worker   WORD16 sfb_short_table[16];
186*15dc779aSAndroid Build Coastguard Worker 
187*15dc779aSAndroid Build Coastguard Worker   UWORD16 *code_book[MAX_CB_SIZE];
188*15dc779aSAndroid Build Coastguard Worker   UWORD32 *index_table[MAX_CB_SIZE];
189*15dc779aSAndroid Build Coastguard Worker 
190*15dc779aSAndroid Build Coastguard Worker   WORD8 *scale_fac_bands_512[16];
191*15dc779aSAndroid Build Coastguard Worker   WORD8 *scale_fac_bands_480[16];
192*15dc779aSAndroid Build Coastguard Worker 
193*15dc779aSAndroid Build Coastguard Worker } ia_aac_dec_tables_struct;
194*15dc779aSAndroid Build Coastguard Worker 
195*15dc779aSAndroid Build Coastguard Worker #define ixheaacd_huff_cb_0 0
196*15dc779aSAndroid Build Coastguard Worker #define ixheaacd_huff_cb_1 1
197*15dc779aSAndroid Build Coastguard Worker #define ixheaacd_huff_cb_2 2
198*15dc779aSAndroid Build Coastguard Worker #define ixheaacd_huff_cb_3 3
199*15dc779aSAndroid Build Coastguard Worker #define ixheaacd_huff_cb_4 4
200*15dc779aSAndroid Build Coastguard Worker #define ixheaacd_huff_cb_5 5
201*15dc779aSAndroid Build Coastguard Worker #define ixheaacd_huff_cb_6 6
202*15dc779aSAndroid Build Coastguard Worker #define ixheaacd_huff_cb_7 7
203*15dc779aSAndroid Build Coastguard Worker 
204*15dc779aSAndroid Build Coastguard Worker #endif /* #ifndef IXHEAACD_AAC_ROM_H */
205