1 /****************************************************************************** 2 * * 3 * Copyright (C) 2018 The Android Open Source Project 4 * 5 * Licensed under the Apache License, Version 2.0 (the "License"); 6 * you may not use this file except in compliance with the License. 7 * You may obtain a copy of the License at: 8 * 9 * http://www.apache.org/licenses/LICENSE-2.0 10 * 11 * Unless required by applicable law or agreed to in writing, software 12 * distributed under the License is distributed on an "AS IS" BASIS, 13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 * See the License for the specific language governing permissions and 15 * limitations under the License. 16 * 17 ***************************************************************************** 18 * Originally developed and contributed by Ittiam Systems Pvt. Ltd, Bangalore 19 */ 20 #ifndef IXHEAACD_AAC_ROM_H 21 #define IXHEAACD_AAC_ROM_H 22 23 #define AAC_NF_NO_RANDOM_VAL 512 24 #define MAX_CB_SIZE 13 25 26 typedef struct { 27 WORD32 ixheaacd_pow_table_Q13[129]; 28 WORD32 scale_table[4]; 29 WORD8 tns_max_bands_tbl[12][2]; 30 WORD16 tns_coeff3_16[8]; 31 WORD16 tns_coeff4_16[16]; 32 WORD32 scale_mant_tab[4]; 33 34 WORD32 tns_coeff3[8]; 35 WORD32 tns_coeff4[16]; 36 37 WORD32 tns_coeff3_32[8]; 38 WORD32 tns_coeff4_32[16]; 39 WORD32 tns_max_bands_tbl_usac[16][2]; 40 41 WORD8 tns_max_bands_tbl_ld[12]; 42 WORD8 tns_max_bands_tbl_480[12]; 43 44 } ia_aac_dec_block_tables_struct; 45 46 extern const ia_aac_dec_block_tables_struct ixheaacd_aac_block_tables; 47 48 typedef struct { 49 WORD8 ixheaacd_sfb_96_1024[43]; 50 WORD8 ixheaacd_sfb_96_128[14]; 51 WORD8 ixheaacd_sfb_64_1024[49]; 52 WORD8 ixheaacd_sfb_48_1024[51]; 53 WORD8 ixheaacd_sfb_48_128[16]; 54 WORD8 ixheaacd_sfb_32_1024[53]; 55 WORD8 ixheaacd_sfb_24_1024[49]; 56 WORD8 ixheaacd_sfb_24_128[17]; 57 WORD8 ixheaacd_sfb_16_1024[45]; 58 WORD8 ixheaacd_sfb_16_128[17]; 59 WORD8 ixheaacd_sfb_8_1024[42]; 60 WORD8 ixheaacd_sfb_8_128[17]; 61 62 ia_sampling_rate_info_struct str_sample_rate_info[13]; 63 64 UWORD32 idx_table_hf11[21]; 65 UWORD32 idx_table_hf10[20]; 66 UWORD32 idx_table_hf9[23]; 67 UWORD32 idx_table_hf8[17]; 68 UWORD32 idx_table_hf7[18]; 69 UWORD32 idx_table_hf6[17]; 70 UWORD32 idx_table_hf5[19]; 71 UWORD32 idx_table_hf4[19]; 72 UWORD32 idx_table_hf3[27]; 73 UWORD32 idx_table_hf2[16]; 74 UWORD32 idx_table_hf1[12]; 75 76 UWORD16 input_table_cb11[290]; 77 UWORD16 input_table_cb10[170]; 78 UWORD16 input_table_cb9[170]; 79 UWORD16 input_table_cb8[65]; 80 UWORD16 input_table_cb7[65]; 81 UWORD16 input_table_cb6[82]; 82 UWORD16 input_table_cb5[82]; 83 UWORD16 input_table_cb4[82]; 84 UWORD16 input_table_cb3[82]; 85 UWORD16 input_table_cb2[82]; 86 UWORD16 input_table_cb1[82]; 87 UWORD16 huffman_code_book_scl[122]; 88 UWORD32 huffman_code_book_scl_index[33]; 89 90 WORD8 ixheaacd_sfb_48_512[37]; 91 WORD8 ixheaacd_sfb_32_512[38]; 92 WORD8 ixheaacd_sfb_24_512[32]; 93 94 WORD8 ixheaacd_sfb_48_480[36]; 95 WORD8 ixheaacd_sfb_32_480[38]; 96 WORD8 ixheaacd_sfb_24_480[31]; 97 98 } ia_aac_dec_huffman_tables_struct; 99 100 extern const ia_aac_dec_huffman_tables_struct ixheaacd_aac_huffmann_tables; 101 102 typedef struct { 103 WORD16 cosine_array_2048_256[514]; 104 WORD8 dig_rev_table8_long[64]; 105 WORD8 dig_rev_table8_short[8]; 106 WORD32 fft_twiddle[64 * 7]; 107 108 WORD16 only_long_window_sine[1024]; 109 WORD16 only_long_window_kbd[1024]; 110 WORD16 only_short_window_sine[128]; 111 WORD16 only_short_window_kbd[128]; 112 113 WORD16 cosine_array_2048_256p[514]; 114 WORD32 w1024[768]; 115 UWORD8 bit_rev_1024[256]; 116 UWORD8 bit_rev_512[64]; 117 UWORD8 bit_rev_128[16]; 118 UWORD8 bit_rev_32[4]; 119 WORD32 w_256[504]; 120 WORD32 low_overlap_win[512]; 121 WORD32 window_sine_512[512]; 122 WORD32 cosine_array_1024[512]; 123 124 WORD32 low_overlap_win_480[480]; 125 WORD32 window_sine_480[480]; 126 127 UWORD8 re_arr_tab_16[240]; 128 UWORD8 re_arr_tab_sml_240[240]; 129 130 WORD32 cosine_array_960[480]; 131 WORD32 w_16[24]; 132 133 WORD16 window_sine_480_eld[1920]; 134 WORD16 window_sine_512_eld[2048]; 135 136 } ia_aac_dec_imdct_tables_struct; 137 138 extern const ia_aac_dec_imdct_tables_struct ixheaacd_imdct_tables; 139 140 typedef struct { 141 WORD16 *sfb_index; 142 WORD8 *sfb_width; 143 144 } ia_aac_sfb_info; 145 146 typedef struct { 147 ia_aac_dec_block_tables_struct *pstr_block_tables; 148 ia_aac_dec_huffman_tables_struct *pstr_huffmann_tables; 149 ia_aac_dec_imdct_tables_struct *pstr_imdct_tables; 150 151 ia_aac_sfb_info str_aac_sfb_info[4]; 152 WORD8 *scale_factor_bands_long[12]; 153 WORD8 *scale_factor_bands_short[12]; 154 WORD16 sfb_long_table[52]; 155 WORD16 sfb_short_table[16]; 156 157 UWORD16 *code_book[MAX_CB_SIZE]; 158 UWORD32 *index_table[MAX_CB_SIZE]; 159 160 WORD8 *scale_fac_bands_512[16]; 161 WORD8 *scale_fac_bands_480[16]; 162 163 } ia_aac_dec_tables_struct; 164 165 #define ixheaacd_huff_cb_0 0 166 #define ixheaacd_huff_cb_1 1 167 #define ixheaacd_huff_cb_2 2 168 #define ixheaacd_huff_cb_3 3 169 #define ixheaacd_huff_cb_4 4 170 #define ixheaacd_huff_cb_5 5 171 #define ixheaacd_huff_cb_6 6 172 #define ixheaacd_huff_cb_7 7 173 174 #endif /* #ifndef IXHEAACD_AAC_ROM_H */ 175