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 #pragma once 22*15dc779aSAndroid Build Coastguard Worker #define BS_MAX_NUM_OUT_CHANNELS (255) 23*15dc779aSAndroid Build Coastguard Worker #define MINIMUM_BITRATE 8000 24*15dc779aSAndroid Build Coastguard Worker 25*15dc779aSAndroid Build Coastguard Worker typedef struct { 26*15dc779aSAndroid Build Coastguard Worker FLOAT64 *p_fd_mdct_windowed_long_buf; 27*15dc779aSAndroid Build Coastguard Worker FLOAT64 *p_fd_mdct_windowed_short_buf; 28*15dc779aSAndroid Build Coastguard Worker FLOAT32 *p_fft_mdct_buf; 29*15dc779aSAndroid Build Coastguard Worker FLOAT64 *p_sort_grouping_scratch; 30*15dc779aSAndroid Build Coastguard Worker WORD32 *p_degroup_scratch; 31*15dc779aSAndroid Build Coastguard Worker WORD32 *p_arith_map_prev_scratch; 32*15dc779aSAndroid Build Coastguard Worker WORD32 *p_arith_map_pres_scratch; 33*15dc779aSAndroid Build Coastguard Worker FLOAT64 *p_noise_filling_highest_tone; 34*15dc779aSAndroid Build Coastguard Worker FLOAT32 *p_lpd_frm_enc_scratch; 35*15dc779aSAndroid Build Coastguard Worker FLOAT64 *p_quant_spectrum_spec_scratch; 36*15dc779aSAndroid Build Coastguard Worker UWORD8 *ptr_scratch_buf; 37*15dc779aSAndroid Build Coastguard Worker FLOAT32 *p_synth_tcx_buf; 38*15dc779aSAndroid Build Coastguard Worker FLOAT32 *p_synth_buf; 39*15dc779aSAndroid Build Coastguard Worker FLOAT32 *p_wsig_buf; 40*15dc779aSAndroid Build Coastguard Worker FLOAT32 *p_wsyn_buf; 41*15dc779aSAndroid Build Coastguard Worker FLOAT32 *p_wsyn_tcx_buf; 42*15dc779aSAndroid Build Coastguard Worker FLOAT32 *p_temp_wsyn_buf; 43*15dc779aSAndroid Build Coastguard Worker FLOAT32 *p_buf_aut_corr; 44*15dc779aSAndroid Build Coastguard Worker FLOAT32 *p_buf_synthesis_tool; 45*15dc779aSAndroid Build Coastguard Worker FLOAT32 *p_buf_speech; 46*15dc779aSAndroid Build Coastguard Worker FLOAT32 *p_buf_res; 47*15dc779aSAndroid Build Coastguard Worker FLOAT32 *p_buf_signal; 48*15dc779aSAndroid Build Coastguard Worker FLOAT32 *p_lp_filter_coeff; 49*15dc779aSAndroid Build Coastguard Worker FLOAT32 *p_lp_filter_coeff_q; 50*15dc779aSAndroid Build Coastguard Worker WORD32 *p_prm_tcx; 51*15dc779aSAndroid Build Coastguard Worker FLOAT32 *p_wsp_prev_buf; 52*15dc779aSAndroid Build Coastguard Worker FLOAT32 *p_xn2; 53*15dc779aSAndroid Build Coastguard Worker FLOAT32 *p_fac_dec; 54*15dc779aSAndroid Build Coastguard Worker FLOAT32 *p_right_fac_spec; 55*15dc779aSAndroid Build Coastguard Worker FLOAT32 *p_x2; 56*15dc779aSAndroid Build Coastguard Worker WORD32 *p_param; 57*15dc779aSAndroid Build Coastguard Worker FLOAT32 *p_x; 58*15dc779aSAndroid Build Coastguard Worker FLOAT32 *p_xn_2; 59*15dc779aSAndroid Build Coastguard Worker FLOAT32 *p_fac_window; 60*15dc779aSAndroid Build Coastguard Worker FLOAT32 *p_temp_mdct; 61*15dc779aSAndroid Build Coastguard Worker WORD16 *p_fac_bits_word; 62*15dc779aSAndroid Build Coastguard Worker FLOAT64 *p_left_fac_time_data; 63*15dc779aSAndroid Build Coastguard Worker FLOAT32 *p_left_fac_timedata_flt; 64*15dc779aSAndroid Build Coastguard Worker FLOAT32 *p_left_fac_spec; 65*15dc779aSAndroid Build Coastguard Worker FLOAT64 *p_fac_win; 66*15dc779aSAndroid Build Coastguard Worker WORD32 *p_fac_prm; 67*15dc779aSAndroid Build Coastguard Worker FLOAT32 *p_acelp_folded_scratch; 68*15dc779aSAndroid Build Coastguard Worker FLOAT32 *p_xn1_tcx; 69*15dc779aSAndroid Build Coastguard Worker FLOAT32 *p_xn_buf_tcx; 70*15dc779aSAndroid Build Coastguard Worker FLOAT32 *p_x_tcx; 71*15dc779aSAndroid Build Coastguard Worker FLOAT32 *p_x_tmp_tcx; 72*15dc779aSAndroid Build Coastguard Worker FLOAT32 *p_en_tcx; 73*15dc779aSAndroid Build Coastguard Worker FLOAT32 *p_alfd_gains_tcx; 74*15dc779aSAndroid Build Coastguard Worker FLOAT32 *p_sq_enc_tcx; 75*15dc779aSAndroid Build Coastguard Worker WORD32 *p_sq_quant_tcx; 76*15dc779aSAndroid Build Coastguard Worker FLOAT32 *p_gain1_tcx; 77*15dc779aSAndroid Build Coastguard Worker FLOAT32 *p_gain2_tcx; 78*15dc779aSAndroid Build Coastguard Worker FLOAT32 *p_facelp_tcx; 79*15dc779aSAndroid Build Coastguard Worker FLOAT32 *p_xn2_tcx; 80*15dc779aSAndroid Build Coastguard Worker FLOAT32 *p_fac_window_tcx; 81*15dc779aSAndroid Build Coastguard Worker FLOAT32 *p_x1_tcx; 82*15dc779aSAndroid Build Coastguard Worker FLOAT32 *p_x2_tcx; 83*15dc779aSAndroid Build Coastguard Worker WORD32 *p_y_tcx; 84*15dc779aSAndroid Build Coastguard Worker FLOAT32 *p_in_out_tcx; 85*15dc779aSAndroid Build Coastguard Worker FLOAT32 *p_time_signal; 86*15dc779aSAndroid Build Coastguard Worker FLOAT32 *p_complex_fft; 87*15dc779aSAndroid Build Coastguard Worker WORD32 *p_tonal_flag; 88*15dc779aSAndroid Build Coastguard Worker FLOAT32 *p_pow_spec; 89*15dc779aSAndroid Build Coastguard Worker FLOAT64 *p_tns_scratch; 90*15dc779aSAndroid Build Coastguard Worker FLOAT64 *p_tns_filter; 91*15dc779aSAndroid Build Coastguard Worker FLOAT32 *p_exp_spec; 92*15dc779aSAndroid Build Coastguard Worker FLOAT32 *p_mdct_spec_float; 93*15dc779aSAndroid Build Coastguard Worker FLOAT32 *p_fir_sig_buf; 94*15dc779aSAndroid Build Coastguard Worker FLOAT32 *p_sq_gain_en; 95*15dc779aSAndroid Build Coastguard Worker FLOAT32 *p_acelp_ir_buf; 96*15dc779aSAndroid Build Coastguard Worker FLOAT32 *p_acelp_exc_buf; 97*15dc779aSAndroid Build Coastguard Worker FLOAT32 *p_adjthr_ptr_exp_spec; 98*15dc779aSAndroid Build Coastguard Worker FLOAT32 *p_adjthr_mdct_spec_float; 99*15dc779aSAndroid Build Coastguard Worker WORD16 *p_adjthr_quant_spec_temp; 100*15dc779aSAndroid Build Coastguard Worker FLOAT64 *p_cmpx_mdct_temp_buf; 101*15dc779aSAndroid Build Coastguard Worker FLOAT32 *p_fft_p2_y; 102*15dc779aSAndroid Build Coastguard Worker FLOAT32 *p_fft_p3_data_3; 103*15dc779aSAndroid Build Coastguard Worker FLOAT32 *p_fft_p3_y; 104*15dc779aSAndroid Build Coastguard Worker FLOAT32 *p_tcx_input; 105*15dc779aSAndroid Build Coastguard Worker FLOAT32 *p_tcx_output; 106*15dc779aSAndroid Build Coastguard Worker FLOAT64 *p_reconstructed_time_signal[MAX_TIME_CHANNELS]; 107*15dc779aSAndroid Build Coastguard Worker FLOAT32 *p_ol_pitch_buf_tmp; 108*15dc779aSAndroid Build Coastguard Worker FLOAT32 *p_ol_pitch_speech_buf; 109*15dc779aSAndroid Build Coastguard Worker FLOAT32 *p_ol_pitch_w_table; 110*15dc779aSAndroid Build Coastguard Worker FLOAT32 *p_ol_pitch_R; 111*15dc779aSAndroid Build Coastguard Worker FLOAT32 *p_ol_pitch_R0; 112*15dc779aSAndroid Build Coastguard Worker WORD32 *ptr_num_fac_bits; 113*15dc779aSAndroid Build Coastguard Worker WORD32 *ptr_tns_data_present; 114*15dc779aSAndroid Build Coastguard Worker FLOAT32 *ptr_tmp_lp_res; 115*15dc779aSAndroid Build Coastguard Worker 116*15dc779aSAndroid Build Coastguard Worker FLOAT32 *ptr_sfb_form_fac[MAX_TIME_CHANNELS]; 117*15dc779aSAndroid Build Coastguard Worker FLOAT32 *ptr_sfb_num_relevant_lines[MAX_TIME_CHANNELS]; 118*15dc779aSAndroid Build Coastguard Worker FLOAT32 *ptr_sfb_ld_energy[MAX_TIME_CHANNELS]; 119*15dc779aSAndroid Build Coastguard Worker WORD32 *ptr_num_scfs; 120*15dc779aSAndroid Build Coastguard Worker WORD32 *ptr_max_ch_dyn_bits; 121*15dc779aSAndroid Build Coastguard Worker FLOAT32 *ptr_ch_bit_dist; 122*15dc779aSAndroid Build Coastguard Worker pUWORD8 ptr_fd_scratch; 123*15dc779aSAndroid Build Coastguard Worker pUWORD8 ptr_lpd_scratch; 124*15dc779aSAndroid Build Coastguard Worker FLOAT32 *ptr_tcx_scratch; 125*15dc779aSAndroid Build Coastguard Worker FLOAT64 *ptr_tns_scratch; 126*15dc779aSAndroid Build Coastguard Worker WORD32 *ptr_next_win_scratch; 127*15dc779aSAndroid Build Coastguard Worker FLOAT32 *ptr_acelp_scratch; 128*15dc779aSAndroid Build Coastguard Worker FLOAT32 mixed_rad_fft[2 * LEN_SUPERFRAME]; 129*15dc779aSAndroid Build Coastguard Worker pVOID drc_scratch; 130*15dc779aSAndroid Build Coastguard Worker VOID *ptr_drc_scratch_buf; 131*15dc779aSAndroid Build Coastguard Worker VOID *ptr_stack_mem; 132*15dc779aSAndroid Build Coastguard Worker } iusace_scratch_mem; 133*15dc779aSAndroid Build Coastguard Worker 134*15dc779aSAndroid Build Coastguard Worker #define USAC_MAX_ELEMENTS (32) 135*15dc779aSAndroid Build Coastguard Worker #define USAC_MAX_CONFIG_EXTENSIONS (16) 136*15dc779aSAndroid Build Coastguard Worker 137*15dc779aSAndroid Build Coastguard Worker #define ID_USAC_SCE 0 138*15dc779aSAndroid Build Coastguard Worker #define ID_USAC_CPE 1 139*15dc779aSAndroid Build Coastguard Worker #define ID_USAC_EXT 3 140*15dc779aSAndroid Build Coastguard Worker 141*15dc779aSAndroid Build Coastguard Worker #define AOT_SBR (5) 142*15dc779aSAndroid Build Coastguard Worker #define AOT_USAC (42) 143*15dc779aSAndroid Build Coastguard Worker 144*15dc779aSAndroid Build Coastguard Worker #define ID_EXT_ELE_FILL 0 145*15dc779aSAndroid Build Coastguard Worker #define ID_EXT_ELE_UNI_DRC 4 146*15dc779aSAndroid Build Coastguard Worker #define ID_EXT_ELE_AUDIOPREROLL (3) 147*15dc779aSAndroid Build Coastguard Worker 148*15dc779aSAndroid Build Coastguard Worker #define ID_CONFIG_EXT_FILL 0 149*15dc779aSAndroid Build Coastguard Worker #define ID_CONFIG_EXT_DOWNMIX (1) 150*15dc779aSAndroid Build Coastguard Worker #define ID_CONFIG_EXT_LOUDNESS_INFO (2) 151*15dc779aSAndroid Build Coastguard Worker #define ID_CONFIG_EXT_STREAM_ID (7) 152*15dc779aSAndroid Build Coastguard Worker #define CONFIG_EXT_LEN_STREAM_ID (2) 153*15dc779aSAndroid Build Coastguard Worker #define NUM_COEFF (1024) 154*15dc779aSAndroid Build Coastguard Worker 155*15dc779aSAndroid Build Coastguard Worker typedef enum { 156*15dc779aSAndroid Build Coastguard Worker 157*15dc779aSAndroid Build Coastguard Worker USAC_ELEMENT_TYPE_INVALID = -1, 158*15dc779aSAndroid Build Coastguard Worker USAC_ELEMENT_TYPE_SCE = 0, 159*15dc779aSAndroid Build Coastguard Worker USAC_ELEMENT_TYPE_CPE = 1, 160*15dc779aSAndroid Build Coastguard Worker USAC_ELEMENT_TYPE_EXT = 3 161*15dc779aSAndroid Build Coastguard Worker 162*15dc779aSAndroid Build Coastguard Worker } ia_usac_ele_type; 163*15dc779aSAndroid Build Coastguard Worker 164*15dc779aSAndroid Build Coastguard Worker typedef struct { 165*15dc779aSAndroid Build Coastguard Worker UWORD32 harmonic_sbr; 166*15dc779aSAndroid Build Coastguard Worker UWORD32 bs_inter_tes; 167*15dc779aSAndroid Build Coastguard Worker UWORD32 bs_pvc; 168*15dc779aSAndroid Build Coastguard Worker UWORD32 dflt_start_freq; 169*15dc779aSAndroid Build Coastguard Worker UWORD32 dflt_stop_freq; 170*15dc779aSAndroid Build Coastguard Worker UWORD32 dflt_header_extra1; 171*15dc779aSAndroid Build Coastguard Worker UWORD32 dflt_header_extra2; 172*15dc779aSAndroid Build Coastguard Worker UWORD32 dflt_freq_scale; 173*15dc779aSAndroid Build Coastguard Worker UWORD32 dflt_alter_scale; 174*15dc779aSAndroid Build Coastguard Worker UWORD32 dflt_noise_bands; 175*15dc779aSAndroid Build Coastguard Worker UWORD32 dflt_limiter_bands; 176*15dc779aSAndroid Build Coastguard Worker UWORD32 dflt_limiter_gains; 177*15dc779aSAndroid Build Coastguard Worker UWORD32 dflt_interpol_freq; 178*15dc779aSAndroid Build Coastguard Worker UWORD32 dflt_smoothing_mode; 179*15dc779aSAndroid Build Coastguard Worker } ia_usac_enc_sbr_config_struct; 180*15dc779aSAndroid Build Coastguard Worker 181*15dc779aSAndroid Build Coastguard Worker typedef struct { 182*15dc779aSAndroid Build Coastguard Worker WORD32 bs_tree_config; 183*15dc779aSAndroid Build Coastguard Worker WORD32 bs_freq_res; 184*15dc779aSAndroid Build Coastguard Worker WORD32 bs_fixed_gain_dmx; 185*15dc779aSAndroid Build Coastguard Worker WORD32 bs_temp_shape_config; 186*15dc779aSAndroid Build Coastguard Worker WORD32 bs_decorr_config; 187*15dc779aSAndroid Build Coastguard Worker WORD32 bs_residual_coding; 188*15dc779aSAndroid Build Coastguard Worker WORD32 bs_residual_bands; 189*15dc779aSAndroid Build Coastguard Worker WORD32 bs_low_rate_mode; 190*15dc779aSAndroid Build Coastguard Worker WORD32 bs_phase_coding; 191*15dc779aSAndroid Build Coastguard Worker WORD32 bs_quant_coarse_xxx; 192*15dc779aSAndroid Build Coastguard Worker WORD32 bs_ott_bands_phase; 193*15dc779aSAndroid Build Coastguard Worker WORD32 bs_ott_bands_phase_present; 194*15dc779aSAndroid Build Coastguard Worker WORD32 bs_pseudo_lr; 195*15dc779aSAndroid Build Coastguard Worker WORD32 bs_env_quant_mode; 196*15dc779aSAndroid Build Coastguard Worker WORD32 bs_high_rate_mode; 197*15dc779aSAndroid Build Coastguard Worker } ia_usac_enc_mps_config_struct; 198*15dc779aSAndroid Build Coastguard Worker 199*15dc779aSAndroid Build Coastguard Worker typedef struct { 200*15dc779aSAndroid Build Coastguard Worker UWORD32 usac_ext_ele_type; 201*15dc779aSAndroid Build Coastguard Worker UWORD32 usac_ext_ele_cfg_len; 202*15dc779aSAndroid Build Coastguard Worker UWORD32 usac_ext_ele_dflt_len_present; 203*15dc779aSAndroid Build Coastguard Worker UWORD32 usac_ext_ele_dflt_len; 204*15dc779aSAndroid Build Coastguard Worker UWORD32 usac_ext_ele_payload_present; 205*15dc779aSAndroid Build Coastguard Worker UWORD32 stereo_config_index; 206*15dc779aSAndroid Build Coastguard Worker UWORD32 tw_mdct; 207*15dc779aSAndroid Build Coastguard Worker UWORD32 noise_filling; 208*15dc779aSAndroid Build Coastguard Worker UWORD8 usac_ext_ele_cfg_payload[6144 / 8]; 209*15dc779aSAndroid Build Coastguard Worker ia_usac_enc_sbr_config_struct str_usac_sbr_config; 210*15dc779aSAndroid Build Coastguard Worker ia_usac_enc_mps_config_struct str_usac_mps212_config; 211*15dc779aSAndroid Build Coastguard Worker UWORD8 *drc_config_data; 212*15dc779aSAndroid Build Coastguard Worker } ia_usac_enc_element_config_struct; 213*15dc779aSAndroid Build Coastguard Worker 214*15dc779aSAndroid Build Coastguard Worker typedef struct { 215*15dc779aSAndroid Build Coastguard Worker UWORD32 num_elements; 216*15dc779aSAndroid Build Coastguard Worker UWORD32 num_ext_elements; 217*15dc779aSAndroid Build Coastguard Worker UWORD32 usac_element_type[USAC_MAX_ELEMENTS]; 218*15dc779aSAndroid Build Coastguard Worker UWORD32 usac_cfg_ext_present; 219*15dc779aSAndroid Build Coastguard Worker UWORD32 num_config_extensions; 220*15dc779aSAndroid Build Coastguard Worker UWORD32 usac_config_ext_type[USAC_MAX_CONFIG_EXTENSIONS]; 221*15dc779aSAndroid Build Coastguard Worker UWORD32 usac_config_ext_len[USAC_MAX_CONFIG_EXTENSIONS]; 222*15dc779aSAndroid Build Coastguard Worker UWORD8 *usac_config_ext_buf[USAC_MAX_CONFIG_EXTENSIONS]; 223*15dc779aSAndroid Build Coastguard Worker UWORD8 usac_cfg_ext_info_buf[USAC_MAX_CONFIG_EXTENSIONS][6144 / 8]; 224*15dc779aSAndroid Build Coastguard Worker WORD32 num_out_channels; 225*15dc779aSAndroid Build Coastguard Worker WORD32 num_signal_grp; 226*15dc779aSAndroid Build Coastguard Worker WORD32 output_channel_pos[BS_MAX_NUM_OUT_CHANNELS]; 227*15dc779aSAndroid Build Coastguard Worker WORD32 ccfl; 228*15dc779aSAndroid Build Coastguard Worker ia_usac_enc_element_config_struct str_usac_element_config[USAC_MAX_ELEMENTS]; 229*15dc779aSAndroid Build Coastguard Worker UWORD16 stream_identifier; 230*15dc779aSAndroid Build Coastguard Worker } ia_usac_config_struct; 231*15dc779aSAndroid Build Coastguard Worker 232*15dc779aSAndroid Build Coastguard Worker typedef struct { 233*15dc779aSAndroid Build Coastguard Worker WORD32 aac_allow_scalefacs; 234*15dc779aSAndroid Build Coastguard Worker WORD32 aac_scale_facs; 235*15dc779aSAndroid Build Coastguard Worker WORD32 bit_rate; 236*15dc779aSAndroid Build Coastguard Worker WORD32 basic_bitrate; 237*15dc779aSAndroid Build Coastguard Worker WORD32 bw_limit[USAC_MAX_ELEMENTS]; 238*15dc779aSAndroid Build Coastguard Worker WORD32 ccfl; 239*15dc779aSAndroid Build Coastguard Worker WORD32 ccfl_idx; 240*15dc779aSAndroid Build Coastguard Worker WORD32 channels; 241*15dc779aSAndroid Build Coastguard Worker WORD32 codec_mode; 242*15dc779aSAndroid Build Coastguard Worker WORD32 flag_noiseFilling; 243*15dc779aSAndroid Build Coastguard Worker WORD32 iframes_interval; 244*15dc779aSAndroid Build Coastguard Worker UWORD32 num_elements; 245*15dc779aSAndroid Build Coastguard Worker UWORD32 num_ext_elements; 246*15dc779aSAndroid Build Coastguard Worker 247*15dc779aSAndroid Build Coastguard Worker WORD32 sample_rate; 248*15dc779aSAndroid Build Coastguard Worker WORD32 native_sample_rate; 249*15dc779aSAndroid Build Coastguard Worker WORD32 core_sample_rate; 250*15dc779aSAndroid Build Coastguard Worker 251*15dc779aSAndroid Build Coastguard Worker WORD32 tns_select; 252*15dc779aSAndroid Build Coastguard Worker WORD32 ui_pcm_wd_sz; 253*15dc779aSAndroid Build Coastguard Worker WORD32 use_fill_element; 254*15dc779aSAndroid Build Coastguard Worker WORD32 window_shape_prev[MAX_TIME_CHANNELS]; 255*15dc779aSAndroid Build Coastguard Worker WORD32 window_shape_prev_copy[MAX_TIME_CHANNELS]; 256*15dc779aSAndroid Build Coastguard Worker WORD32 window_sequence[MAX_TIME_CHANNELS]; 257*15dc779aSAndroid Build Coastguard Worker WORD32 window_sequence_prev[MAX_TIME_CHANNELS]; 258*15dc779aSAndroid Build Coastguard Worker WORD32 window_sequence_prev_copy[MAX_TIME_CHANNELS]; 259*15dc779aSAndroid Build Coastguard Worker WORD32 cmplx_pred_flag; 260*15dc779aSAndroid Build Coastguard Worker WORD32 wshape_flag; 261*15dc779aSAndroid Build Coastguard Worker WORD32 delay_total; 262*15dc779aSAndroid Build Coastguard Worker WORD32 in_frame_length; 263*15dc779aSAndroid Build Coastguard Worker // eSBR Parameters 264*15dc779aSAndroid Build Coastguard Worker WORD32 sbr_enable; 265*15dc779aSAndroid Build Coastguard Worker WORD32 sbr_ratio_idx; 266*15dc779aSAndroid Build Coastguard Worker WORD32 up_sample_ratio; 267*15dc779aSAndroid Build Coastguard Worker WORD32 sbr_pvc_active; 268*15dc779aSAndroid Build Coastguard Worker WORD32 sbr_harmonic; 269*15dc779aSAndroid Build Coastguard Worker WORD32 hq_esbr; 270*15dc779aSAndroid Build Coastguard Worker WORD32 sbr_inter_tes_active; 271*15dc779aSAndroid Build Coastguard Worker // MPS Parameters 272*15dc779aSAndroid Build Coastguard Worker WORD32 usac212enable; 273*15dc779aSAndroid Build Coastguard Worker ia_sfb_params_struct str_sfb_prms; 274*15dc779aSAndroid Build Coastguard Worker // DRC Params 275*15dc779aSAndroid Build Coastguard Worker FLAG use_drc_element; 276*15dc779aSAndroid Build Coastguard Worker WORD32 drc_frame_size; 277*15dc779aSAndroid Build Coastguard Worker ia_drc_input_config str_drc_cfg; 278*15dc779aSAndroid Build Coastguard Worker WORD32 use_acelp_only; 279*15dc779aSAndroid Build Coastguard Worker WORD32 random_access_interval; 280*15dc779aSAndroid Build Coastguard Worker WORD32 preroll_flag; 281*15dc779aSAndroid Build Coastguard Worker WORD32 num_preroll_frames; 282*15dc779aSAndroid Build Coastguard Worker WORD32 preroll_idx; 283*15dc779aSAndroid Build Coastguard Worker WORD32 is_ipf; 284*15dc779aSAndroid Build Coastguard Worker WORD32 preroll_frame; 285*15dc779aSAndroid Build Coastguard Worker WORD32 is_first_frame; 286*15dc779aSAndroid Build Coastguard Worker ia_drc_internal_config str_internal_drc_cfg; 287*15dc779aSAndroid Build Coastguard Worker WORD32 use_measured_loudness; 288*15dc779aSAndroid Build Coastguard Worker UWORD16 stream_id; 289*15dc779aSAndroid Build Coastguard Worker } ia_usac_encoder_config_struct; 290*15dc779aSAndroid Build Coastguard Worker 291*15dc779aSAndroid Build Coastguard Worker typedef struct { 292*15dc779aSAndroid Build Coastguard Worker WORD32 mode; 293*15dc779aSAndroid Build Coastguard Worker WORD32 num_bits; 294*15dc779aSAndroid Build Coastguard Worker FLOAT32 lpc_coeffs_quant[2 * (ORDER + 1)]; 295*15dc779aSAndroid Build Coastguard Worker FLOAT32 lpc_coeffs[2 * (ORDER + 1)]; 296*15dc779aSAndroid Build Coastguard Worker FLOAT32 synth[ORDER + 128]; 297*15dc779aSAndroid Build Coastguard Worker FLOAT32 wsynth[1 + 128]; 298*15dc779aSAndroid Build Coastguard Worker FLOAT32 acelp_exc[2 * LEN_FRAME]; 299*15dc779aSAndroid Build Coastguard Worker WORD32 avq_params[FAC_LENGTH]; 300*15dc779aSAndroid Build Coastguard Worker FLOAT32 tcx_mem[128]; 301*15dc779aSAndroid Build Coastguard Worker FLOAT32 tcx_quant[1 + (2 * 128)]; 302*15dc779aSAndroid Build Coastguard Worker FLOAT32 tcx_fac; 303*15dc779aSAndroid Build Coastguard Worker FLOAT32 mem_wsyn; 304*15dc779aSAndroid Build Coastguard Worker } ia_usac_lpd_state_struct; 305*15dc779aSAndroid Build Coastguard Worker 306*15dc779aSAndroid Build Coastguard Worker typedef struct { 307*15dc779aSAndroid Build Coastguard Worker WORD32 len_frame; 308*15dc779aSAndroid Build Coastguard Worker WORD32 len_subfrm; 309*15dc779aSAndroid Build Coastguard Worker WORD32 num_subfrm; 310*15dc779aSAndroid Build Coastguard Worker WORD16 acelp_core_mode; 311*15dc779aSAndroid Build Coastguard Worker WORD32 fscale; 312*15dc779aSAndroid Build Coastguard Worker FLOAT32 mem_lp_decim2[3]; 313*15dc779aSAndroid Build Coastguard Worker WORD32 decim_frac; 314*15dc779aSAndroid Build Coastguard Worker FLOAT32 mem_sig_in[4]; 315*15dc779aSAndroid Build Coastguard Worker FLOAT32 mem_preemph; 316*15dc779aSAndroid Build Coastguard Worker FLOAT32 old_speech_pe[L_OLD_SPEECH_HIGH_RATE + LEN_LPC0]; 317*15dc779aSAndroid Build Coastguard Worker FLOAT32 weighted_sig[128]; 318*15dc779aSAndroid Build Coastguard Worker ia_usac_lpd_state_struct lpd_state; 319*15dc779aSAndroid Build Coastguard Worker FLOAT32 prev_wsp[MAX_PITCH / OPL_DECIM]; 320*15dc779aSAndroid Build Coastguard Worker FLOAT32 prev_exc[MAX_PITCH + LEN_INTERPOL]; 321*15dc779aSAndroid Build Coastguard Worker FLOAT32 prev_wsyn_mem; 322*15dc779aSAndroid Build Coastguard Worker FLOAT32 prev_wsp_mem; 323*15dc779aSAndroid Build Coastguard Worker FLOAT32 prev_xnq_mem; 324*15dc779aSAndroid Build Coastguard Worker WORD32 prev_ovlp_size; 325*15dc779aSAndroid Build Coastguard Worker FLOAT32 isf_old[ORDER]; 326*15dc779aSAndroid Build Coastguard Worker FLOAT32 isp_old[ORDER]; 327*15dc779aSAndroid Build Coastguard Worker FLOAT32 isp_old_q[ORDER]; 328*15dc779aSAndroid Build Coastguard Worker FLOAT32 mem_wsp; 329*15dc779aSAndroid Build Coastguard Worker FLOAT32 ada_w; 330*15dc779aSAndroid Build Coastguard Worker FLOAT32 ol_gain; 331*15dc779aSAndroid Build Coastguard Worker WORD16 ol_wght_flg; 332*15dc779aSAndroid Build Coastguard Worker WORD32 prev_ol_lags[5]; 333*15dc779aSAndroid Build Coastguard Worker WORD32 prev_pitch_med; 334*15dc779aSAndroid Build Coastguard Worker FLOAT32 prev_hp_wsp[LEN_SUPERFRAME / OPL_DECIM + (MAX_PITCH / OPL_DECIM)]; 335*15dc779aSAndroid Build Coastguard Worker FLOAT32 hp_ol_ltp_mem[3 * 2 + 1]; 336*15dc779aSAndroid Build Coastguard Worker const FLOAT32 *lp_analysis_window; 337*15dc779aSAndroid Build Coastguard Worker FLOAT32 xn_buffer[128]; 338*15dc779aSAndroid Build Coastguard Worker WORD32 c_prev[(NUM_COEFF / 2) + 4]; 339*15dc779aSAndroid Build Coastguard Worker WORD32 c_pres[(NUM_COEFF / 2) + 4]; 340*15dc779aSAndroid Build Coastguard Worker WORD32 arith_reset_flag; 341*15dc779aSAndroid Build Coastguard Worker WORD16 prev_mode; 342*15dc779aSAndroid Build Coastguard Worker WORD32 num_bits_per_supfrm; 343*15dc779aSAndroid Build Coastguard Worker FLOAT32 fd_synth[2 * LEN_FRAME + 1 + ORDER]; 344*15dc779aSAndroid Build Coastguard Worker FLOAT32 fd_orig[2 * LEN_FRAME + 1 + ORDER]; 345*15dc779aSAndroid Build Coastguard Worker WORD32 low_pass_line; 346*15dc779aSAndroid Build Coastguard Worker WORD32 last_was_short; 347*15dc779aSAndroid Build Coastguard Worker WORD32 next_is_short; 348*15dc779aSAndroid Build Coastguard Worker FLOAT32 gain_tcx; 349*15dc779aSAndroid Build Coastguard Worker WORD32 max_sfb_short; 350*15dc779aSAndroid Build Coastguard Worker } ia_usac_td_encoder_struct; 351