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_CHANNELINFO_H 21*15dc779aSAndroid Build Coastguard Worker #define IXHEAACD_CHANNELINFO_H 22*15dc779aSAndroid Build Coastguard Worker 23*15dc779aSAndroid Build Coastguard Worker #include "ixheaacd_lt_predict.h" 24*15dc779aSAndroid Build Coastguard Worker 25*15dc779aSAndroid Build Coastguard Worker #define MAX_SFB_SHORT 16 26*15dc779aSAndroid Build Coastguard Worker #define MAX_QUANTIZED_VALUE 8191 27*15dc779aSAndroid Build Coastguard Worker 28*15dc779aSAndroid Build Coastguard Worker #define OVERLAP_BUFFER_SIZE 512 29*15dc779aSAndroid Build Coastguard Worker 30*15dc779aSAndroid Build Coastguard Worker #define JOINT_STEREO_MAX_GROUPS 8 31*15dc779aSAndroid Build Coastguard Worker #define JOINT_STEREO_MAX_BANDS 64 32*15dc779aSAndroid Build Coastguard Worker 33*15dc779aSAndroid Build Coastguard Worker typedef struct { 34*15dc779aSAndroid Build Coastguard Worker WORD16 window_shape; 35*15dc779aSAndroid Build Coastguard Worker WORD16 window_sequence; 36*15dc779aSAndroid Build Coastguard Worker WORD16 max_sfb; 37*15dc779aSAndroid Build Coastguard Worker WORD16 num_swb_window; 38*15dc779aSAndroid Build Coastguard Worker WORD16 sampling_rate_index; 39*15dc779aSAndroid Build Coastguard Worker WORD16 num_window_groups; 40*15dc779aSAndroid Build Coastguard Worker WORD8 window_group_length[8]; 41*15dc779aSAndroid Build Coastguard Worker WORD16 frame_length; 42*15dc779aSAndroid Build Coastguard Worker WORD32 frame_size; 43*15dc779aSAndroid Build Coastguard Worker WORD16 predictor_data_present; 44*15dc779aSAndroid Build Coastguard Worker ltp_info ltp; 45*15dc779aSAndroid Build Coastguard Worker ltp_info ltp2; 46*15dc779aSAndroid Build Coastguard Worker WORD8 qshift_adj; 47*15dc779aSAndroid Build Coastguard Worker } ia_ics_info_struct; 48*15dc779aSAndroid Build Coastguard Worker 49*15dc779aSAndroid Build Coastguard Worker typedef struct { 50*15dc779aSAndroid Build Coastguard Worker WORD32 aac_sect_data_resil_flag; 51*15dc779aSAndroid Build Coastguard Worker WORD32 aac_sf_data_resil_flag; 52*15dc779aSAndroid Build Coastguard Worker WORD32 aac_spect_data_resil_flag; 53*15dc779aSAndroid Build Coastguard Worker WORD32 ep_config; 54*15dc779aSAndroid Build Coastguard Worker } ia_aac_err_config_struct; 55*15dc779aSAndroid Build Coastguard Worker 56*15dc779aSAndroid Build Coastguard Worker typedef struct { 57*15dc779aSAndroid Build Coastguard Worker WORD32 ld_sbr_flag_present; 58*15dc779aSAndroid Build Coastguard Worker WORD32 ld_sbr_samp_rate; 59*15dc779aSAndroid Build Coastguard Worker WORD32 ld_sbr_crc_flag; 60*15dc779aSAndroid Build Coastguard Worker WORD32 ldSbrHeaderPresent; 61*15dc779aSAndroid Build Coastguard Worker 62*15dc779aSAndroid Build Coastguard Worker WORD32 aac_sect_data_resil_flag; 63*15dc779aSAndroid Build Coastguard Worker WORD32 aac_sf_data_resil_flag; 64*15dc779aSAndroid Build Coastguard Worker WORD32 aac_spect_data_resil_flag; 65*15dc779aSAndroid Build Coastguard Worker WORD32 ep_config; 66*15dc779aSAndroid Build Coastguard Worker 67*15dc779aSAndroid Build Coastguard Worker } ia_eld_specific_config_struct; 68*15dc779aSAndroid Build Coastguard Worker 69*15dc779aSAndroid Build Coastguard Worker typedef struct { 70*15dc779aSAndroid Build Coastguard Worker UWORD8 ms_used[JOINT_STEREO_MAX_GROUPS][JOINT_STEREO_MAX_BANDS]; 71*15dc779aSAndroid Build Coastguard Worker } ia_stereo_info_struct; 72*15dc779aSAndroid Build Coastguard Worker 73*15dc779aSAndroid Build Coastguard Worker typedef struct { 74*15dc779aSAndroid Build Coastguard Worker WORD16 start_band; 75*15dc779aSAndroid Build Coastguard Worker WORD16 stop_band; 76*15dc779aSAndroid Build Coastguard Worker WORD8 direction; 77*15dc779aSAndroid Build Coastguard Worker WORD8 resolution; 78*15dc779aSAndroid Build Coastguard Worker WORD8 order; 79*15dc779aSAndroid Build Coastguard Worker WORD8 coef[MAX_ORDER]; 80*15dc779aSAndroid Build Coastguard Worker } ia_filter_info_struct; 81*15dc779aSAndroid Build Coastguard Worker 82*15dc779aSAndroid Build Coastguard Worker typedef struct { 83*15dc779aSAndroid Build Coastguard Worker FLAG tns_data_present; 84*15dc779aSAndroid Build Coastguard Worker WORD8 n_filt[MAX_WINDOWS]; 85*15dc779aSAndroid Build Coastguard Worker ia_filter_info_struct str_filter[MAX_WINDOWS][MAX_FILTERS]; 86*15dc779aSAndroid Build Coastguard Worker } ia_tns_info_aac_struct; 87*15dc779aSAndroid Build Coastguard Worker 88*15dc779aSAndroid Build Coastguard Worker typedef struct { 89*15dc779aSAndroid Build Coastguard Worker const WORD16 *ptr_long_window[2]; 90*15dc779aSAndroid Build Coastguard Worker const WORD16 *ptr_short_window[2]; 91*15dc779aSAndroid Build Coastguard Worker WORD16 window_shape; 92*15dc779aSAndroid Build Coastguard Worker WORD16 window_sequence; 93*15dc779aSAndroid Build Coastguard Worker WORD32 *ptr_overlap_buf; 94*15dc779aSAndroid Build Coastguard Worker 95*15dc779aSAndroid Build Coastguard Worker WORD16 rvlc_prev_sf[128]; 96*15dc779aSAndroid Build Coastguard Worker WORD16 rvlc_prev_cb[128]; 97*15dc779aSAndroid Build Coastguard Worker WORD8 rvlc_prev_blk_type; 98*15dc779aSAndroid Build Coastguard Worker WORD8 rvlc_prev_sf_ok; 99*15dc779aSAndroid Build Coastguard Worker 100*15dc779aSAndroid Build Coastguard Worker } ia_aac_dec_overlap_info; 101*15dc779aSAndroid Build Coastguard Worker 102*15dc779aSAndroid Build Coastguard Worker typedef struct { 103*15dc779aSAndroid Build Coastguard Worker WORD32 sf_concealment; 104*15dc779aSAndroid Build Coastguard Worker WORD32 rev_global_gain; 105*15dc779aSAndroid Build Coastguard Worker WORD16 rvlc_sf_len; 106*15dc779aSAndroid Build Coastguard Worker WORD32 dpcm_noise_nrg; 107*15dc779aSAndroid Build Coastguard Worker WORD32 sf_esc_present; 108*15dc779aSAndroid Build Coastguard Worker WORD16 rvlc_esc_len; 109*15dc779aSAndroid Build Coastguard Worker WORD32 dpcm_noise_last_pos; 110*15dc779aSAndroid Build Coastguard Worker 111*15dc779aSAndroid Build Coastguard Worker WORD32 dpcm_is_last_pos; 112*15dc779aSAndroid Build Coastguard Worker 113*15dc779aSAndroid Build Coastguard Worker WORD16 rvlc_sf_fwd_len; 114*15dc779aSAndroid Build Coastguard Worker WORD16 rvlc_sf_bwd_len; 115*15dc779aSAndroid Build Coastguard Worker 116*15dc779aSAndroid Build Coastguard Worker WORD16 *ptr_rvl_bit_cnt; 117*15dc779aSAndroid Build Coastguard Worker UWORD16 *ptr_rvl_bit_str_idx; 118*15dc779aSAndroid Build Coastguard Worker 119*15dc779aSAndroid Build Coastguard Worker WORD16 num_wind_grps; 120*15dc779aSAndroid Build Coastguard Worker WORD16 max_sfb_transmitted; 121*15dc779aSAndroid Build Coastguard Worker UWORD8 first_noise_group; 122*15dc779aSAndroid Build Coastguard Worker UWORD8 first_noise_band; 123*15dc779aSAndroid Build Coastguard Worker UWORD8 direction; 124*15dc779aSAndroid Build Coastguard Worker 125*15dc779aSAndroid Build Coastguard Worker UWORD16 rvl_fwd_bit_str_idx; 126*15dc779aSAndroid Build Coastguard Worker UWORD16 rvl_bwd_bit_str_idx; 127*15dc779aSAndroid Build Coastguard Worker UWORD16 esc_bit_str_idx; 128*15dc779aSAndroid Build Coastguard Worker 129*15dc779aSAndroid Build Coastguard Worker const UWORD32 *ptr_huff_tree_rvl_cw; 130*15dc779aSAndroid Build Coastguard Worker const UWORD32 *ptr_huff_tree_rvl_esc; 131*15dc779aSAndroid Build Coastguard Worker 132*15dc779aSAndroid Build Coastguard Worker UWORD8 num_fwd_esc_words_decoded; 133*15dc779aSAndroid Build Coastguard Worker UWORD8 num_bwd_esc_words_decoded; 134*15dc779aSAndroid Build Coastguard Worker UWORD8 num_esc_words_decoded; 135*15dc779aSAndroid Build Coastguard Worker 136*15dc779aSAndroid Build Coastguard Worker WORD8 noise_used; 137*15dc779aSAndroid Build Coastguard Worker WORD8 intensity_used; 138*15dc779aSAndroid Build Coastguard Worker WORD8 sf_used; 139*15dc779aSAndroid Build Coastguard Worker 140*15dc779aSAndroid Build Coastguard Worker WORD16 firt_scale_fac; 141*15dc779aSAndroid Build Coastguard Worker WORD16 last_scale_fac; 142*15dc779aSAndroid Build Coastguard Worker WORD16 first_nrg; 143*15dc779aSAndroid Build Coastguard Worker WORD16 last_nrg; 144*15dc779aSAndroid Build Coastguard Worker WORD16 is_first; 145*15dc779aSAndroid Build Coastguard Worker WORD16 is_last; 146*15dc779aSAndroid Build Coastguard Worker 147*15dc779aSAndroid Build Coastguard Worker UWORD32 rvlc_err_log; 148*15dc779aSAndroid Build Coastguard Worker WORD16 conceal_min; 149*15dc779aSAndroid Build Coastguard Worker WORD16 conceal_max; 150*15dc779aSAndroid Build Coastguard Worker WORD16 conceal_min_esc; 151*15dc779aSAndroid Build Coastguard Worker WORD16 conceal_max_esc; 152*15dc779aSAndroid Build Coastguard Worker } ia_rvlc_info_struct; 153*15dc779aSAndroid Build Coastguard Worker 154*15dc779aSAndroid Build Coastguard Worker #define LINES_PER_UNIT 4 155*15dc779aSAndroid Build Coastguard Worker 156*15dc779aSAndroid Build Coastguard Worker #define MAX_SFB_HCR (((1024 / 8) / LINES_PER_UNIT) * 8) 157*15dc779aSAndroid Build Coastguard Worker #define NUMBER_OF_UNIT_GROUPS (LINES_PER_UNIT * 8) 158*15dc779aSAndroid Build Coastguard Worker #define LINES_PER_UNIT_GROUP (1024 / NUMBER_OF_UNIT_GROUPS) 159*15dc779aSAndroid Build Coastguard Worker 160*15dc779aSAndroid Build Coastguard Worker #define FROM_LEFT_TO_RIGHT 0 161*15dc779aSAndroid Build Coastguard Worker #define FROM_RIGHT_TO_LEFT 1 162*15dc779aSAndroid Build Coastguard Worker 163*15dc779aSAndroid Build Coastguard Worker #define MAX_CB_PAIRS 23 164*15dc779aSAndroid Build Coastguard Worker #define MAX_HCR_SETS 14 165*15dc779aSAndroid Build Coastguard Worker 166*15dc779aSAndroid Build Coastguard Worker #define ESCAPE_VALUE 16 167*15dc779aSAndroid Build Coastguard Worker #define POSITION_OF_FLAG_A 21 168*15dc779aSAndroid Build Coastguard Worker #define POSITION_OF_FLAG_B 20 169*15dc779aSAndroid Build Coastguard Worker 170*15dc779aSAndroid Build Coastguard Worker #define MAX_CB 32 171*15dc779aSAndroid Build Coastguard Worker 172*15dc779aSAndroid Build Coastguard Worker #define MAX_CB_CHECK 32 173*15dc779aSAndroid Build Coastguard Worker #define WORD_BITS 32 174*15dc779aSAndroid Build Coastguard Worker 175*15dc779aSAndroid Build Coastguard Worker #define THIRTYTWO_LOG_DIV_TWO_LOG 5 176*15dc779aSAndroid Build Coastguard Worker #define EIGHT_LOG_DIV_TWO_LOG 3 177*15dc779aSAndroid Build Coastguard Worker #define FOUR_LOG_DIV_TWO_LOG 2 178*15dc779aSAndroid Build Coastguard Worker 179*15dc779aSAndroid Build Coastguard Worker #define CPE_TOP_LENGTH 12288 180*15dc779aSAndroid Build Coastguard Worker #define SCE_TOP_LENGTH 6144 181*15dc779aSAndroid Build Coastguard Worker #define LEN_OF_LONGEST_CW_TOP_LENGTH 49 182*15dc779aSAndroid Build Coastguard Worker #define Q_VALUE_INVALID 8192 183*15dc779aSAndroid Build Coastguard Worker #define NODE_MASK 0x400 184*15dc779aSAndroid Build Coastguard Worker 185*15dc779aSAndroid Build Coastguard Worker #define ERROR_POS 0x00000001 186*15dc779aSAndroid Build Coastguard Worker #define HCR_FATAL_PCW_ERROR_MASK 0x100E01FC 187*15dc779aSAndroid Build Coastguard Worker 188*15dc779aSAndroid Build Coastguard Worker typedef enum { PCW, PCW_SIGN, PCW_ESC_SIGN } ia_pcw_type_struct; 189*15dc779aSAndroid Build Coastguard Worker 190*15dc779aSAndroid Build Coastguard Worker typedef struct { 191*15dc779aSAndroid Build Coastguard Worker UWORD32 err_log; 192*15dc779aSAndroid Build Coastguard Worker WORD32 *ptr_quant_spec_coeff_base; 193*15dc779aSAndroid Build Coastguard Worker WORD32 quant_spec_coeff_idx; 194*15dc779aSAndroid Build Coastguard Worker WORD16 reordered_spec_data_len; 195*15dc779aSAndroid Build Coastguard Worker WORD16 num_sect; 196*15dc779aSAndroid Build Coastguard Worker WORD16 *ptr_num_line_in_sect; 197*15dc779aSAndroid Build Coastguard Worker UWORD16 bit_str_idx; 198*15dc779aSAndroid Build Coastguard Worker WORD8 longest_cw_len; 199*15dc779aSAndroid Build Coastguard Worker UWORD8 *ptr_cb; 200*15dc779aSAndroid Build Coastguard Worker } ia_huff_code_reorder_io_struct; 201*15dc779aSAndroid Build Coastguard Worker 202*15dc779aSAndroid Build Coastguard Worker typedef struct { 203*15dc779aSAndroid Build Coastguard Worker const UWORD8 *ptr_min_cb_pair_tbl; 204*15dc779aSAndroid Build Coastguard Worker const UWORD8 *ptr_max_cb_pair_tbl; 205*15dc779aSAndroid Build Coastguard Worker } ia_huff_code_reorder_cb_pairs_struct; 206*15dc779aSAndroid Build Coastguard Worker 207*15dc779aSAndroid Build Coastguard Worker typedef struct { 208*15dc779aSAndroid Build Coastguard Worker const UWORD16 *ptr_lav_tbl; 209*15dc779aSAndroid Build Coastguard Worker const UWORD8 *ptr_max_cw_len_tbl; 210*15dc779aSAndroid Build Coastguard Worker const UWORD8 *ptr_cb_dimension_tbl; 211*15dc779aSAndroid Build Coastguard Worker const UWORD8 *ptr_cb_dim_shift_tbl; 212*15dc779aSAndroid Build Coastguard Worker const UWORD8 *ptr_cb_sign_tbl; 213*15dc779aSAndroid Build Coastguard Worker const UWORD8 *ptr_cb_priority; 214*15dc779aSAndroid Build Coastguard Worker } ia_huff_code_reorder_tbl_struct; 215*15dc779aSAndroid Build Coastguard Worker 216*15dc779aSAndroid Build Coastguard Worker typedef struct { 217*15dc779aSAndroid Build Coastguard Worker WORD32 num_segment; 218*15dc779aSAndroid Build Coastguard Worker UWORD32 segment_offset; 219*15dc779aSAndroid Build Coastguard Worker WORD32 arr_temp_values[1024]; 220*15dc779aSAndroid Build Coastguard Worker UWORD16 arr_seg_start_l[1024 >> 1]; 221*15dc779aSAndroid Build Coastguard Worker UWORD16 arr_seg_start_r[1024 >> 1]; 222*15dc779aSAndroid Build Coastguard Worker WORD8 p_remaining_bits_in_seg[1024 >> 1]; 223*15dc779aSAndroid Build Coastguard Worker WORD32 code[512]; 224*15dc779aSAndroid Build Coastguard Worker WORD32 code_extra[512]; 225*15dc779aSAndroid Build Coastguard Worker WORD8 p_num_bits[512]; 226*15dc779aSAndroid Build Coastguard Worker UWORD8 read_direction; 227*15dc779aSAndroid Build Coastguard Worker WORD32 is_decoded[512]; 228*15dc779aSAndroid Build Coastguard Worker } ia_huff_code_reord_seg_info_struct; 229*15dc779aSAndroid Build Coastguard Worker 230*15dc779aSAndroid Build Coastguard Worker typedef struct { 231*15dc779aSAndroid Build Coastguard Worker UWORD32 num_code_word; 232*15dc779aSAndroid Build Coastguard Worker UWORD32 current_codeword; 233*15dc779aSAndroid Build Coastguard Worker UWORD32 num_sorted_section; 234*15dc779aSAndroid Build Coastguard Worker UWORD16 ptr_num_cw_in_sect[MAX_SFB_HCR]; 235*15dc779aSAndroid Build Coastguard Worker UWORD16 ptr_num_sorted_cw_in_sect[MAX_SFB_HCR]; 236*15dc779aSAndroid Build Coastguard Worker UWORD16 ptr_num_ext_sorted_cw_in_sect[MAX_SFB_HCR + MAX_HCR_SETS]; 237*15dc779aSAndroid Build Coastguard Worker WORD32 num_ext_sorted_cw_in_sect_idx; 238*15dc779aSAndroid Build Coastguard Worker UWORD16 ptr_num_ext_sorted_sect_in_sets[MAX_HCR_SETS]; 239*15dc779aSAndroid Build Coastguard Worker WORD32 num_ext_sorted_sect_in_sets_idx; 240*15dc779aSAndroid Build Coastguard Worker UWORD16 ptr_reorder_offset[MAX_SFB_HCR]; 241*15dc779aSAndroid Build Coastguard Worker UWORD8 ptr_sorted_cb[MAX_SFB_HCR]; 242*15dc779aSAndroid Build Coastguard Worker 243*15dc779aSAndroid Build Coastguard Worker UWORD8 ptr_ext_sorted_cw[MAX_SFB_HCR + MAX_HCR_SETS]; 244*15dc779aSAndroid Build Coastguard Worker WORD32 ext_sorted_cw_idx; 245*15dc779aSAndroid Build Coastguard Worker UWORD8 ptr_ext_sorted_sect_max_cb_len[MAX_SFB_HCR + MAX_HCR_SETS]; 246*15dc779aSAndroid Build Coastguard Worker WORD32 ext_sorted_sect_max_cb_len_idx; 247*15dc779aSAndroid Build Coastguard Worker UWORD8 ptr_cb_switch[MAX_SFB_HCR]; 248*15dc779aSAndroid Build Coastguard Worker } ia_huff_code_reord_sect_info_struct; 249*15dc779aSAndroid Build Coastguard Worker 250*15dc779aSAndroid Build Coastguard Worker typedef UWORD32 (*ixheaacd_ptr_state_func)(ia_bit_buf_struct *, pVOID); 251*15dc779aSAndroid Build Coastguard Worker 252*15dc779aSAndroid Build Coastguard Worker typedef struct { 253*15dc779aSAndroid Build Coastguard Worker WORD32 *ptr_result_base; 254*15dc779aSAndroid Build Coastguard Worker UWORD16 res_ptr_idx[1024 >> 2]; 255*15dc779aSAndroid Build Coastguard Worker UWORD32 cw_offset; 256*15dc779aSAndroid Build Coastguard Worker UWORD8 ptr_cb[1024 >> 2]; 257*15dc779aSAndroid Build Coastguard Worker } ia_hcr_non_pcw_sideinfo_struct; 258*15dc779aSAndroid Build Coastguard Worker 259*15dc779aSAndroid Build Coastguard Worker typedef struct { 260*15dc779aSAndroid Build Coastguard Worker ia_huff_code_reorder_io_struct str_dec_io; 261*15dc779aSAndroid Build Coastguard Worker ia_huff_code_reorder_cb_pairs_struct codebook_pairs; 262*15dc779aSAndroid Build Coastguard Worker ia_huff_code_reorder_tbl_struct table_info; 263*15dc779aSAndroid Build Coastguard Worker ia_huff_code_reord_seg_info_struct str_segment_info; 264*15dc779aSAndroid Build Coastguard Worker ia_huff_code_reord_sect_info_struct sect_info; 265*15dc779aSAndroid Build Coastguard Worker ia_hcr_non_pcw_sideinfo_struct str_non_pcw_side_info; 266*15dc779aSAndroid Build Coastguard Worker 267*15dc779aSAndroid Build Coastguard Worker WORD32 global_hcr_type; 268*15dc779aSAndroid Build Coastguard Worker } ia_hcr_info_struct; 269*15dc779aSAndroid Build Coastguard Worker 270*15dc779aSAndroid Build Coastguard Worker typedef struct { 271*15dc779aSAndroid Build Coastguard Worker WORD16 scale_factor[MAX_WINDOWS * MAX_SFB_SHORT]; 272*15dc779aSAndroid Build Coastguard Worker WORD8 code_book[MAX_WINDOWS * MAX_SFB_SHORT]; 273*15dc779aSAndroid Build Coastguard Worker } ia_aac_sfb_code_book_struct; 274*15dc779aSAndroid Build Coastguard Worker 275*15dc779aSAndroid Build Coastguard Worker typedef struct { 276*15dc779aSAndroid Build Coastguard Worker ia_stereo_info_struct str_stereo_info; 277*15dc779aSAndroid Build Coastguard Worker ia_pns_correlation_info_struct str_pns_corr_info; 278*15dc779aSAndroid Build Coastguard Worker } ia_pns_stereo_data_struct; 279*15dc779aSAndroid Build Coastguard Worker 280*15dc779aSAndroid Build Coastguard Worker typedef struct { 281*15dc779aSAndroid Build Coastguard Worker WORD16 win_shape; 282*15dc779aSAndroid Build Coastguard Worker WORD16 win_seq; 283*15dc779aSAndroid Build Coastguard Worker 284*15dc779aSAndroid Build Coastguard Worker WORD32 *ptr_overlap_buf; 285*15dc779aSAndroid Build Coastguard Worker 286*15dc779aSAndroid Build Coastguard Worker } ia_aac_dec_ola_data; 287*15dc779aSAndroid Build Coastguard Worker 288*15dc779aSAndroid Build Coastguard Worker typedef struct { 289*15dc779aSAndroid Build Coastguard Worker const WORD16 *ptr_long_window[2]; 290*15dc779aSAndroid Build Coastguard Worker const WORD16 *ptr_short_window[2]; 291*15dc779aSAndroid Build Coastguard Worker 292*15dc779aSAndroid Build Coastguard Worker ia_aac_dec_ola_data overlap_add_data; 293*15dc779aSAndroid Build Coastguard Worker 294*15dc779aSAndroid Build Coastguard Worker WORD16 *ltp_buf; 295*15dc779aSAndroid Build Coastguard Worker UWORD16 ltp_lag_1; 296*15dc779aSAndroid Build Coastguard Worker UWORD16 ltp_lag_2; 297*15dc779aSAndroid Build Coastguard Worker ia_ec_state_str str_ec_state; 298*15dc779aSAndroid Build Coastguard Worker } ia_aac_dec_channel_info; 299*15dc779aSAndroid Build Coastguard Worker 300*15dc779aSAndroid Build Coastguard Worker typedef struct { 301*15dc779aSAndroid Build Coastguard Worker WORD16 *ptr_scale_factor; 302*15dc779aSAndroid Build Coastguard Worker WORD8 *ptr_code_book; 303*15dc779aSAndroid Build Coastguard Worker WORD32 *ptr_spec_coeff; 304*15dc779aSAndroid Build Coastguard Worker ia_stereo_info_struct *pstr_stereo_info; 305*15dc779aSAndroid Build Coastguard Worker ia_pns_correlation_info_struct *pstr_pns_corr_info; 306*15dc779aSAndroid Build Coastguard Worker ia_pns_rand_vec_struct *pstr_pns_rand_vec_data; 307*15dc779aSAndroid Build Coastguard Worker ia_ics_info_struct str_ics_info; 308*15dc779aSAndroid Build Coastguard Worker ia_tns_info_aac_struct str_tns_info; 309*15dc779aSAndroid Build Coastguard Worker ia_pulse_info_struct str_pulse_info; 310*15dc779aSAndroid Build Coastguard Worker ia_pns_info_struct str_pns_info; 311*15dc779aSAndroid Build Coastguard Worker WORD16 common_window; 312*15dc779aSAndroid Build Coastguard Worker WORD16 element_instance_tag; 313*15dc779aSAndroid Build Coastguard Worker WORD16 global_gain; 314*15dc779aSAndroid Build Coastguard Worker WORD32 *scratch_buf_ptr; 315*15dc779aSAndroid Build Coastguard Worker WORD32 *pulse_scratch; 316*15dc779aSAndroid Build Coastguard Worker ia_rvlc_info_struct ptr_rvlc_info; 317*15dc779aSAndroid Build Coastguard Worker ia_hcr_info_struct str_hcr_info; 318*15dc779aSAndroid Build Coastguard Worker WORD16 reorder_spect_data_len; 319*15dc779aSAndroid Build Coastguard Worker WORD8 longest_cw_len; 320*15dc779aSAndroid Build Coastguard Worker WORD16 rvlc_scf_esc_arr[128]; 321*15dc779aSAndroid Build Coastguard Worker WORD16 rvlc_scf_fwd_arr[128]; 322*15dc779aSAndroid Build Coastguard Worker WORD16 rvlc_scf_bwd_arr[128]; 323*15dc779aSAndroid Build Coastguard Worker WORD8 rvlc_intensity_used; 324*15dc779aSAndroid Build Coastguard Worker WORD16 num_line_in_sec4_hcr_arr[32 * 8]; 325*15dc779aSAndroid Build Coastguard Worker UWORD8 cb4_hcr_arr[32 * 8]; 326*15dc779aSAndroid Build Coastguard Worker WORD32 number_sect; 327*15dc779aSAndroid Build Coastguard Worker WORD32 granule_len; 328*15dc779aSAndroid Build Coastguard Worker WORD16 rvlc_curr_sf_flag; 329*15dc779aSAndroid Build Coastguard Worker WORD16 *ltp_buf; 330*15dc779aSAndroid Build Coastguard Worker UWORD16 ltp_lag; 331*15dc779aSAndroid Build Coastguard Worker } ia_aac_dec_channel_info_struct; 332*15dc779aSAndroid Build Coastguard Worker WORD16 ixheaacd_ics_read(ia_bit_buf_struct *it_bit_buff, 333*15dc779aSAndroid Build Coastguard Worker ia_ics_info_struct *ptr_ics_info, 334*15dc779aSAndroid Build Coastguard Worker WORD8 num_swb_window[2], WORD32 object_type, 335*15dc779aSAndroid Build Coastguard Worker WORD32 common_window, WORD32 frame_size); 336*15dc779aSAndroid Build Coastguard Worker 337*15dc779aSAndroid Build Coastguard Worker IA_ERRORCODE ixheaacd_ltp_decode(ia_bit_buf_struct *it_bit_buff, 338*15dc779aSAndroid Build Coastguard Worker ia_ics_info_struct *ptr_ics_info, 339*15dc779aSAndroid Build Coastguard Worker WORD32 object_type, WORD32 frame_size, 340*15dc779aSAndroid Build Coastguard Worker WORD32 ch); 341*15dc779aSAndroid Build Coastguard Worker 342*15dc779aSAndroid Build Coastguard Worker #endif /* #ifndef IXHEAACD_CHANNELINFO_H */ 343