Home | History | Annotate | Download | only in decoder
      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 
     25 typedef struct {
     26   WORD32 ixheaacd_pow_table_Q13[129];
     27   WORD32 scale_table[4];
     28   WORD8 tns_max_bands_tbl[12][2];
     29   WORD16 tns_coeff3_16[8];
     30   WORD16 tns_coeff4_16[16];
     31   WORD32 scale_mant_tab[4];
     32 
     33   WORD32 tns_coeff3[8];
     34   WORD32 tns_coeff4[16];
     35 
     36   WORD32 tns_coeff3_32[8];
     37   WORD32 tns_coeff4_32[16];
     38   WORD32 tns_max_bands_tbl_usac[16][2];
     39 
     40   WORD8 tns_max_bands_tbl_ld[12];
     41   WORD8 tns_max_bands_tbl_480[12];
     42 
     43 } ia_aac_dec_block_tables_struct;
     44 
     45 extern const ia_aac_dec_block_tables_struct ixheaacd_aac_block_tables;
     46 
     47 typedef struct {
     48   WORD8 ixheaacd_sfb_96_1024[43];
     49   WORD8 ixheaacd_sfb_96_128[14];
     50   WORD8 ixheaacd_sfb_64_1024[49];
     51   WORD8 ixheaacd_sfb_48_1024[51];
     52   WORD8 ixheaacd_sfb_48_128[16];
     53   WORD8 ixheaacd_sfb_32_1024[53];
     54   WORD8 ixheaacd_sfb_24_1024[49];
     55   WORD8 ixheaacd_sfb_24_128[17];
     56   WORD8 ixheaacd_sfb_16_1024[45];
     57   WORD8 ixheaacd_sfb_16_128[17];
     58   WORD8 ixheaacd_sfb_8_1024[42];
     59   WORD8 ixheaacd_sfb_8_128[17];
     60 
     61   ia_sampling_rate_info_struct str_sample_rate_info[13];
     62 
     63   UWORD32 idx_table_hf11[21];
     64   UWORD32 idx_table_hf10[20];
     65   UWORD32 idx_table_hf9[23];
     66   UWORD32 idx_table_hf8[17];
     67   UWORD32 idx_table_hf7[18];
     68   UWORD32 idx_table_hf6[17];
     69   UWORD32 idx_table_hf5[19];
     70   UWORD32 idx_table_hf4[19];
     71   UWORD32 idx_table_hf3[27];
     72   UWORD32 idx_table_hf2[16];
     73   UWORD32 idx_table_hf1[12];
     74 
     75   UWORD16 input_table_cb11[290];
     76   UWORD16 input_table_cb10[170];
     77   UWORD16 input_table_cb9[170];
     78   UWORD16 input_table_cb8[65];
     79   UWORD16 input_table_cb7[65];
     80   UWORD16 input_table_cb6[82];
     81   UWORD16 input_table_cb5[82];
     82   UWORD16 input_table_cb4[82];
     83   UWORD16 input_table_cb3[82];
     84   UWORD16 input_table_cb2[82];
     85   UWORD16 input_table_cb1[82];
     86   UWORD16 huffman_code_book_scl[122];
     87   UWORD32 huffman_code_book_scl_index[33];
     88 
     89   WORD8 ixheaacd_sfb_48_512[37];
     90   WORD8 ixheaacd_sfb_32_512[38];
     91   WORD8 ixheaacd_sfb_24_512[32];
     92 
     93   WORD8 ixheaacd_sfb_48_480[36];
     94   WORD8 ixheaacd_sfb_32_480[38];
     95   WORD8 ixheaacd_sfb_24_480[31];
     96 
     97 } ia_aac_dec_huffman_tables_struct;
     98 
     99 extern const ia_aac_dec_huffman_tables_struct ixheaacd_aac_huffmann_tables;
    100 
    101 typedef struct {
    102   WORD16 cosine_array_2048_256[514];
    103   WORD8 dig_rev_table8_long[64];
    104   WORD8 dig_rev_table8_short[8];
    105   WORD32 fft_twiddle[64 * 7];
    106 
    107   WORD16 only_long_window_sine[1024];
    108   WORD16 only_long_window_kbd[1024];
    109   WORD16 only_short_window_sine[128];
    110   WORD16 only_short_window_kbd[128];
    111 
    112   WORD16 cosine_array_2048_256p[514];
    113   WORD32 w1024[768];
    114   UWORD8 bit_rev_1024[256];
    115   UWORD8 bit_rev_512[64];
    116   UWORD8 bit_rev_128[16];
    117   UWORD8 bit_rev_32[4];
    118   WORD32 w_256[504];
    119   WORD32 low_overlap_win[512];
    120   WORD32 window_sine_512[512];
    121   WORD32 cosine_array_1024[512];
    122 
    123   WORD32 low_overlap_win_480[480];
    124   WORD32 window_sine_480[480];
    125 
    126   UWORD8 re_arr_tab_16[240];
    127   UWORD8 re_arr_tab_sml_240[240];
    128 
    129   WORD32 cosine_array_960[480];
    130   WORD32 w_16[24];
    131 
    132   WORD16 window_sine_480_eld[1920];
    133   WORD16 window_sine_512_eld[2048];
    134 
    135 } ia_aac_dec_imdct_tables_struct;
    136 
    137 extern const ia_aac_dec_imdct_tables_struct ixheaacd_imdct_tables;
    138 
    139 typedef struct {
    140   WORD16 *sfb_index;
    141   WORD8 *sfb_width;
    142 
    143 } ia_aac_sfb_info;
    144 
    145 typedef struct {
    146   ia_aac_dec_block_tables_struct *pstr_block_tables;
    147   ia_aac_dec_huffman_tables_struct *pstr_huffmann_tables;
    148   ia_aac_dec_imdct_tables_struct *pstr_imdct_tables;
    149 
    150   ia_aac_sfb_info str_aac_sfb_info[4];
    151   WORD8 *scale_factor_bands_long[12];
    152   WORD8 *scale_factor_bands_short[12];
    153   WORD16 sfb_long_table[52];
    154   WORD16 sfb_short_table[16];
    155 
    156   UWORD16 *code_book[13];
    157   UWORD32 *index_table[13];
    158 
    159   WORD8 *scale_fac_bands_512[16];
    160   WORD8 *scale_fac_bands_480[16];
    161 
    162 } ia_aac_dec_tables_struct;
    163 
    164 #define ixheaacd_huff_cb_0 0
    165 #define ixheaacd_huff_cb_1 1
    166 #define ixheaacd_huff_cb_2 2
    167 #define ixheaacd_huff_cb_3 3
    168 #define ixheaacd_huff_cb_4 4
    169 #define ixheaacd_huff_cb_5 5
    170 #define ixheaacd_huff_cb_6 6
    171 #define ixheaacd_huff_cb_7 7
    172 
    173 #endif /* #ifndef IXHEAACD_AAC_ROM_H */
    174