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_SBR_DEC_H 21*15dc779aSAndroid Build Coastguard Worker #define IXHEAACD_SBR_DEC_H 22*15dc779aSAndroid Build Coastguard Worker 23*15dc779aSAndroid Build Coastguard Worker #include <setjmp.h> 24*15dc779aSAndroid Build Coastguard Worker 25*15dc779aSAndroid Build Coastguard Worker typedef struct { 26*15dc779aSAndroid Build Coastguard Worker FLOAT32 real[64][128]; 27*15dc779aSAndroid Build Coastguard Worker FLOAT32 imag[64][128]; 28*15dc779aSAndroid Build Coastguard Worker } ia_dft_hbe_anal_coeff; 29*15dc779aSAndroid Build Coastguard Worker 30*15dc779aSAndroid Build Coastguard Worker typedef struct { 31*15dc779aSAndroid Build Coastguard Worker WORD32 x_over_qmf[MAX_NUM_PATCHES]; 32*15dc779aSAndroid Build Coastguard Worker WORD32 max_stretch; 33*15dc779aSAndroid Build Coastguard Worker WORD32 core_frame_length; 34*15dc779aSAndroid Build Coastguard Worker WORD32 hbe_qmf_in_len; 35*15dc779aSAndroid Build Coastguard Worker WORD32 hbe_qmf_out_len; 36*15dc779aSAndroid Build Coastguard Worker WORD32 no_bins; 37*15dc779aSAndroid Build Coastguard Worker WORD32 start_band; 38*15dc779aSAndroid Build Coastguard Worker WORD32 end_band; 39*15dc779aSAndroid Build Coastguard Worker WORD32 upsamp_4_flag; 40*15dc779aSAndroid Build Coastguard Worker WORD32 synth_buf_offset; 41*15dc779aSAndroid Build Coastguard Worker 42*15dc779aSAndroid Build Coastguard Worker FLOAT32 *ptr_input_buf; 43*15dc779aSAndroid Build Coastguard Worker 44*15dc779aSAndroid Build Coastguard Worker FLOAT32 **qmf_in_buf; 45*15dc779aSAndroid Build Coastguard Worker FLOAT32 **qmf_out_buf; 46*15dc779aSAndroid Build Coastguard Worker 47*15dc779aSAndroid Build Coastguard Worker WORD32 k_start; 48*15dc779aSAndroid Build Coastguard Worker WORD32 synth_size; 49*15dc779aSAndroid Build Coastguard Worker FLOAT32 synth_buf[1280]; 50*15dc779aSAndroid Build Coastguard Worker FLOAT32 analy_buf[640]; 51*15dc779aSAndroid Build Coastguard Worker FLOAT32 *synth_wind_coeff; 52*15dc779aSAndroid Build Coastguard Worker FLOAT32 *analy_wind_coeff; 53*15dc779aSAndroid Build Coastguard Worker 54*15dc779aSAndroid Build Coastguard Worker FLOAT32 *synth_cos_tab; 55*15dc779aSAndroid Build Coastguard Worker FLOAT32 *analy_cos_sin_tab; 56*15dc779aSAndroid Build Coastguard Worker 57*15dc779aSAndroid Build Coastguard Worker FLOAT32 norm_qmf_in_buf[46][128]; 58*15dc779aSAndroid Build Coastguard Worker VOID (*ixheaacd_real_synth_fft)(FLOAT32 *inp, FLOAT32 *out, WORD32 n_points); 59*15dc779aSAndroid Build Coastguard Worker 60*15dc779aSAndroid Build Coastguard Worker VOID (*ixheaacd_cmplx_anal_fft)(FLOAT32 *inp, FLOAT32 *out, WORD32 n_points); 61*15dc779aSAndroid Build Coastguard Worker 62*15dc779aSAndroid Build Coastguard Worker WORD32 esbr_hq; 63*15dc779aSAndroid Build Coastguard Worker WORD32 in_hop_size; 64*15dc779aSAndroid Build Coastguard Worker WORD32 fft_size[2]; 65*15dc779aSAndroid Build Coastguard Worker 66*15dc779aSAndroid Build Coastguard Worker FLOAT32 *anal_window; 67*15dc779aSAndroid Build Coastguard Worker FLOAT32 *synth_window; 68*15dc779aSAndroid Build Coastguard Worker 69*15dc779aSAndroid Build Coastguard Worker FLOAT32 *ptr_spectrum; 70*15dc779aSAndroid Build Coastguard Worker FLOAT32 *ptr_spectrum_tx; 71*15dc779aSAndroid Build Coastguard Worker FLOAT32 *mag; 72*15dc779aSAndroid Build Coastguard Worker FLOAT32 *phase; 73*15dc779aSAndroid Build Coastguard Worker FLOAT32 *ptr_output_buf; 74*15dc779aSAndroid Build Coastguard Worker WORD32 ana_fft_size[2]; 75*15dc779aSAndroid Build Coastguard Worker WORD32 syn_fft_size[2]; 76*15dc779aSAndroid Build Coastguard Worker WORD32 out_hop_size; 77*15dc779aSAndroid Build Coastguard Worker WORD32 analy_size; 78*15dc779aSAndroid Build Coastguard Worker WORD32 x_over_bin[MAX_STRETCH][2]; 79*15dc779aSAndroid Build Coastguard Worker WORD32 a_start; 80*15dc779aSAndroid Build Coastguard Worker 81*15dc779aSAndroid Build Coastguard Worker FLOAT32 spectrum_buf[1536]; 82*15dc779aSAndroid Build Coastguard Worker FLOAT32 spectrum_transposed_buf[1536]; 83*15dc779aSAndroid Build Coastguard Worker FLOAT32 mag_buf[1536]; 84*15dc779aSAndroid Build Coastguard Worker FLOAT32 phase_buf[1536]; 85*15dc779aSAndroid Build Coastguard Worker FLOAT32 output_buf[4096]; 86*15dc779aSAndroid Build Coastguard Worker FLOAT32 fd_win_buf[3][3][1536]; 87*15dc779aSAndroid Build Coastguard Worker 88*15dc779aSAndroid Build Coastguard Worker FLOAT32 analysis_window_buf[1024]; 89*15dc779aSAndroid Build Coastguard Worker FLOAT32 synthesis_window_buf[1024]; 90*15dc779aSAndroid Build Coastguard Worker 91*15dc779aSAndroid Build Coastguard Worker WORD32 oversampling_flag; 92*15dc779aSAndroid Build Coastguard Worker ia_dft_hbe_anal_coeff str_dft_hbe_anal_coeff; 93*15dc779aSAndroid Build Coastguard Worker VOID (*ixheaacd_hbe_anal_fft)(FLOAT32 *inp, FLOAT32 *scratch, WORD32 len, WORD32 sign); 94*15dc779aSAndroid Build Coastguard Worker VOID (*ixheaacd_hbe_synth_ifft)(FLOAT32 *inp, FLOAT32 *scratch, WORD32 len, WORD32 sign); 95*15dc779aSAndroid Build Coastguard Worker FLOAT32 *syn_cos_sin_tab; 96*15dc779aSAndroid Build Coastguard Worker FLOAT32 *ana_cos_sin_tab; 97*15dc779aSAndroid Build Coastguard Worker 98*15dc779aSAndroid Build Coastguard Worker } ia_esbr_hbe_txposer_struct; 99*15dc779aSAndroid Build Coastguard Worker 100*15dc779aSAndroid Build Coastguard Worker typedef struct { 101*15dc779aSAndroid Build Coastguard Worker WORD32 *ptr_sbr_overlap_buf; 102*15dc779aSAndroid Build Coastguard Worker WORD32 **drc_factors_sbr; 103*15dc779aSAndroid Build Coastguard Worker ia_sbr_qmf_filter_bank_struct str_codec_qmf_bank; 104*15dc779aSAndroid Build Coastguard Worker ia_sbr_qmf_filter_bank_struct str_synthesis_qmf_bank; 105*15dc779aSAndroid Build Coastguard Worker ia_sbr_calc_env_struct str_sbr_calc_env; 106*15dc779aSAndroid Build Coastguard Worker ia_sbr_hf_generator_struct str_hf_generator; 107*15dc779aSAndroid Build Coastguard Worker 108*15dc779aSAndroid Build Coastguard Worker ia_sbr_scale_fact_struct str_sbr_scale_fact; 109*15dc779aSAndroid Build Coastguard Worker 110*15dc779aSAndroid Build Coastguard Worker WORD32 max_samp_val; 111*15dc779aSAndroid Build Coastguard Worker WORD32 band_count; 112*15dc779aSAndroid Build Coastguard Worker ia_esbr_hbe_txposer_struct *p_hbe_txposer; 113*15dc779aSAndroid Build Coastguard Worker 114*15dc779aSAndroid Build Coastguard Worker FLOAT32 core_sample_buf[2624]; 115*15dc779aSAndroid Build Coastguard Worker WORD16 core_sample_buf_sbr[2624]; 116*15dc779aSAndroid Build Coastguard Worker FLOAT32 ph_vocod_qmf_real[TIMESLOT_BUFFER_SIZE][NO_QMF_SYNTH_CHANNELS]; 117*15dc779aSAndroid Build Coastguard Worker FLOAT32 ph_vocod_qmf_imag[TIMESLOT_BUFFER_SIZE][NO_QMF_SYNTH_CHANNELS]; 118*15dc779aSAndroid Build Coastguard Worker FLOAT32 sbr_qmf_out_real[TIMESLOT_BUFFER_SIZE][NO_QMF_SYNTH_CHANNELS]; 119*15dc779aSAndroid Build Coastguard Worker FLOAT32 sbr_qmf_out_imag[TIMESLOT_BUFFER_SIZE][NO_QMF_SYNTH_CHANNELS]; 120*15dc779aSAndroid Build Coastguard Worker FLOAT32 qmf_buf_real[TIMESLOT_BUFFER_SIZE + 2 * 32][NO_QMF_SYNTH_CHANNELS]; 121*15dc779aSAndroid Build Coastguard Worker FLOAT32 qmf_buf_imag[TIMESLOT_BUFFER_SIZE + 2 * 32][NO_QMF_SYNTH_CHANNELS]; 122*15dc779aSAndroid Build Coastguard Worker 123*15dc779aSAndroid Build Coastguard Worker FLOAT32 mps_qmf_buf_real[TIMESLOT_BUFFER_SIZE][NO_QMF_SYNTH_CHANNELS]; 124*15dc779aSAndroid Build Coastguard Worker FLOAT32 mps_qmf_buf_imag[TIMESLOT_BUFFER_SIZE][NO_QMF_SYNTH_CHANNELS]; 125*15dc779aSAndroid Build Coastguard Worker FLOAT32 mps_sbr_qmf_buf_real[TIMESLOT_BUFFER_SIZE][NO_QMF_SYNTH_CHANNELS]; 126*15dc779aSAndroid Build Coastguard Worker FLOAT32 mps_sbr_qmf_buf_imag[TIMESLOT_BUFFER_SIZE][NO_QMF_SYNTH_CHANNELS]; 127*15dc779aSAndroid Build Coastguard Worker 128*15dc779aSAndroid Build Coastguard Worker WORD32 sbr_scratch_local[256]; 129*15dc779aSAndroid Build Coastguard Worker FLOAT32 scratch_buff[320]; 130*15dc779aSAndroid Build Coastguard Worker 131*15dc779aSAndroid Build Coastguard Worker FLOAT32 qmf_energy_buf[64][32]; 132*15dc779aSAndroid Build Coastguard Worker FLOAT32 pvc_qmf_enrg_arr[16 * 32]; 133*15dc779aSAndroid Build Coastguard Worker 134*15dc779aSAndroid Build Coastguard Worker FLOAT32 **pp_qmf_buf_real; 135*15dc779aSAndroid Build Coastguard Worker FLOAT32 **pp_qmf_buf_imag; 136*15dc779aSAndroid Build Coastguard Worker 137*15dc779aSAndroid Build Coastguard Worker WORD32 *p_arr_qmf_buf_real[MAX_ENV_COLS]; 138*15dc779aSAndroid Build Coastguard Worker WORD32 *p_arr_qmf_buf_imag[MAX_ENV_COLS]; 139*15dc779aSAndroid Build Coastguard Worker 140*15dc779aSAndroid Build Coastguard Worker FLOAT32 *time_sample_buf; 141*15dc779aSAndroid Build Coastguard Worker } ia_sbr_dec_struct; 142*15dc779aSAndroid Build Coastguard Worker 143*15dc779aSAndroid Build Coastguard Worker typedef struct { 144*15dc779aSAndroid Build Coastguard Worker ia_sbr_prev_frame_data_struct *pstr_prev_frame_data; 145*15dc779aSAndroid Build Coastguard Worker ia_sbr_dec_struct str_sbr_dec; 146*15dc779aSAndroid Build Coastguard Worker WORD32 output_frame_size; 147*15dc779aSAndroid Build Coastguard Worker WORD32 sync_state; 148*15dc779aSAndroid Build Coastguard Worker } ia_sbr_channel_struct; 149*15dc779aSAndroid Build Coastguard Worker 150*15dc779aSAndroid Build Coastguard Worker struct ia_sbr_dec_inst_struct { 151*15dc779aSAndroid Build Coastguard Worker ia_ps_dec_struct *pstr_ps_stereo_dec; 152*15dc779aSAndroid Build Coastguard Worker ia_ps_dec_config_struct str_ps_config_prev; 153*15dc779aSAndroid Build Coastguard Worker FLAG ps_present; 154*15dc779aSAndroid Build Coastguard Worker ia_sbr_channel_struct *pstr_sbr_channel[MAXNRSBRCHANNELS]; 155*15dc779aSAndroid Build Coastguard Worker ia_sbr_header_data_struct *pstr_sbr_header[MAXNRSBRCHANNELS]; 156*15dc779aSAndroid Build Coastguard Worker ia_freq_band_data_struct *pstr_freq_band_data[MAXNRSBRCHANNELS]; 157*15dc779aSAndroid Build Coastguard Worker ia_sbr_tables_struct *pstr_sbr_tables; 158*15dc779aSAndroid Build Coastguard Worker ixheaacd_misc_tables *pstr_common_tables; 159*15dc779aSAndroid Build Coastguard Worker ia_pvc_data_struct *ptr_pvc_data_str; 160*15dc779aSAndroid Build Coastguard Worker VOID *hbe_txposer_buffers; 161*15dc779aSAndroid Build Coastguard Worker FLOAT32 *time_sample_buf[MAXNRSBRCHANNELS]; 162*15dc779aSAndroid Build Coastguard Worker VOID *scratch_mem_v; 163*15dc779aSAndroid Build Coastguard Worker VOID *frame_buffer[2]; 164*15dc779aSAndroid Build Coastguard Worker ia_sbr_header_data_struct str_sbr_dflt_header; 165*15dc779aSAndroid Build Coastguard Worker FLAG stereo_config_idx; 166*15dc779aSAndroid Build Coastguard Worker FLAG usac_independency_flag; 167*15dc779aSAndroid Build Coastguard Worker FLAG pvc_flag; 168*15dc779aSAndroid Build Coastguard Worker FLAG hbe_flag; 169*15dc779aSAndroid Build Coastguard Worker FLAG sbr_mode; 170*15dc779aSAndroid Build Coastguard Worker FLAG prev_sbr_mode; 171*15dc779aSAndroid Build Coastguard Worker FLAG inter_tes_flag; 172*15dc779aSAndroid Build Coastguard Worker FLAG aot_usac_flag; 173*15dc779aSAndroid Build Coastguard Worker WORD32 band_count[MAXNRSBRCHANNELS]; 174*15dc779aSAndroid Build Coastguard Worker jmp_buf *xaac_jmp_buf; 175*15dc779aSAndroid Build Coastguard Worker WORD8 *ptr_mps_data; 176*15dc779aSAndroid Build Coastguard Worker WORD32 left_mps_bits; 177*15dc779aSAndroid Build Coastguard Worker WORD32 mps_bits_pos; 178*15dc779aSAndroid Build Coastguard Worker FLAG esbr_hq; 179*15dc779aSAndroid Build Coastguard Worker FLAG enh_sbr; 180*15dc779aSAndroid Build Coastguard Worker FLAG enh_sbr_ps; 181*15dc779aSAndroid Build Coastguard Worker FLAG eld_sbr; 182*15dc779aSAndroid Build Coastguard Worker WORD32 num_delay_frames; 183*15dc779aSAndroid Build Coastguard Worker FLAG sbr_parse_err_flag; 184*15dc779aSAndroid Build Coastguard Worker FLAG frame_ok; 185*15dc779aSAndroid Build Coastguard Worker FLAG ec_flag; 186*15dc779aSAndroid Build Coastguard Worker FLAG first_frame; 187*15dc779aSAndroid Build Coastguard Worker FLAG prev_usac_independency_flag; 188*15dc779aSAndroid Build Coastguard Worker FLAG sbr_parse_complete; 189*15dc779aSAndroid Build Coastguard Worker }; 190*15dc779aSAndroid Build Coastguard Worker 191*15dc779aSAndroid Build Coastguard Worker typedef struct ia_sbr_pers_struct { 192*15dc779aSAndroid Build Coastguard Worker WORD16 *sbr_qmf_analy_states; 193*15dc779aSAndroid Build Coastguard Worker 194*15dc779aSAndroid Build Coastguard Worker WORD32 *sbr_qmf_analy_states_32; 195*15dc779aSAndroid Build Coastguard Worker 196*15dc779aSAndroid Build Coastguard Worker WORD16 *sbr_qmf_synth_states; 197*15dc779aSAndroid Build Coastguard Worker 198*15dc779aSAndroid Build Coastguard Worker WORD32 *sbr_qmf_synth_states_32; 199*15dc779aSAndroid Build Coastguard Worker 200*15dc779aSAndroid Build Coastguard Worker WORD32 **sbr_lpc_filter_states_real[MAXNRSBRCHANNELS]; 201*15dc779aSAndroid Build Coastguard Worker 202*15dc779aSAndroid Build Coastguard Worker WORD32 **sbr_lpc_filter_states_imag[MAXNRSBRCHANNELS]; 203*15dc779aSAndroid Build Coastguard Worker 204*15dc779aSAndroid Build Coastguard Worker WORD32 *ptr_sbr_overlap_buf[MAXNRSBRCHANNELS]; 205*15dc779aSAndroid Build Coastguard Worker 206*15dc779aSAndroid Build Coastguard Worker struct ia_sbr_dec_inst_struct str_sbr_dec_inst; 207*15dc779aSAndroid Build Coastguard Worker 208*15dc779aSAndroid Build Coastguard Worker ia_transposer_settings_struct str_sbr_tran_settings; 209*15dc779aSAndroid Build Coastguard Worker 210*15dc779aSAndroid Build Coastguard Worker WORD16 *sbr_smooth_gain_buf[MAXNRSBRCHANNELS]; 211*15dc779aSAndroid Build Coastguard Worker 212*15dc779aSAndroid Build Coastguard Worker WORD16 *sbr_smooth_noise_buf[MAXNRSBRCHANNELS]; 213*15dc779aSAndroid Build Coastguard Worker 214*15dc779aSAndroid Build Coastguard Worker ia_sbr_prev_frame_data_struct *pstr_prev_frame_data[MAXNRSBRCHANNELS]; 215*15dc779aSAndroid Build Coastguard Worker 216*15dc779aSAndroid Build Coastguard Worker } ia_sbr_pers_struct; 217*15dc779aSAndroid Build Coastguard Worker 218*15dc779aSAndroid Build Coastguard Worker WORD32 ixheaacd_sbr_dec( 219*15dc779aSAndroid Build Coastguard Worker ia_sbr_dec_struct *ptr_sbr_dec, WORD16 *ptr_time_data, 220*15dc779aSAndroid Build Coastguard Worker ia_sbr_header_data_struct *ptr_header_data, ia_sbr_frame_info_data_struct *ptr_frame_data, 221*15dc779aSAndroid Build Coastguard Worker ia_sbr_prev_frame_data_struct *ptr_frame_data_prev, ia_ps_dec_struct *ptr_ps_dec, 222*15dc779aSAndroid Build Coastguard Worker ia_sbr_qmf_filter_bank_struct *ptr_qmf_synth_bank_r, ia_sbr_scale_fact_struct *ptr_sbr_sf_r, 223*15dc779aSAndroid Build Coastguard Worker FLAG apply_processing, FLAG low_pow_flag, WORD32 *ptr_work_buf_core, 224*15dc779aSAndroid Build Coastguard Worker ia_sbr_tables_struct *sbr_tables_ptr, ixheaacd_misc_tables *pstr_common_tables, WORD ch_fac, 225*15dc779aSAndroid Build Coastguard Worker ia_pvc_data_struct *ptr_pvc_data_str, FLAG drc_on, WORD32 drc_sbr_factors[][64], 226*15dc779aSAndroid Build Coastguard Worker WORD32 audio_object_type, WORD32 ldmps_present, VOID *self, WORD32 heaac_mps_present, 227*15dc779aSAndroid Build Coastguard Worker WORD32 ec_flag); 228*15dc779aSAndroid Build Coastguard Worker 229*15dc779aSAndroid Build Coastguard Worker WORD16 ixheaacd_create_sbrdec(ixheaacd_misc_tables *pstr_common_table, 230*15dc779aSAndroid Build Coastguard Worker ia_sbr_channel_struct *ptr_sbr_channel, 231*15dc779aSAndroid Build Coastguard Worker ia_sbr_header_data_struct *ptr_header_data, 232*15dc779aSAndroid Build Coastguard Worker WORD16 chan, FLAG down_sample_flag, 233*15dc779aSAndroid Build Coastguard Worker VOID *sbr_persistent_mem_v, WORD ps_enable, 234*15dc779aSAndroid Build Coastguard Worker WORD audio_object_type, WORD32 ldmps_present, 235*15dc779aSAndroid Build Coastguard Worker WORD32 ldsbr_present); 236*15dc779aSAndroid Build Coastguard Worker 237*15dc779aSAndroid Build Coastguard Worker #define MAX_NUM_QMF_BANDS_ESBR 128 238*15dc779aSAndroid Build Coastguard Worker 239*15dc779aSAndroid Build Coastguard Worker WORD32 ixheaacd_sbr_dec_from_mps(FLOAT32 *p_mps_qmf_output, VOID *p_sbr_dec, VOID *p_sbr_frame, 240*15dc779aSAndroid Build Coastguard Worker VOID *p_sbr_header, WORD32 ec_flag); 241*15dc779aSAndroid Build Coastguard Worker 242*15dc779aSAndroid Build Coastguard Worker WORD32 ixheaacd_qmf_hbe_apply(ia_esbr_hbe_txposer_struct *h_hbe_txposer, 243*15dc779aSAndroid Build Coastguard Worker FLOAT32 qmf_buf_real[][64], 244*15dc779aSAndroid Build Coastguard Worker FLOAT32 qmf_buf_imag[][64], WORD32 num_columns, 245*15dc779aSAndroid Build Coastguard Worker FLOAT32 pv_qmf_buf_real[][64], 246*15dc779aSAndroid Build Coastguard Worker FLOAT32 pv_qmf_buf_imag[][64], 247*15dc779aSAndroid Build Coastguard Worker WORD32 pitch_in_bins, 248*15dc779aSAndroid Build Coastguard Worker ia_sbr_header_data_struct *ptr_header_data); 249*15dc779aSAndroid Build Coastguard Worker 250*15dc779aSAndroid Build Coastguard Worker VOID ixheaacd_hbe_apply_cfftn(FLOAT32 re[], FLOAT32 *scratch, WORD32 n_pass, WORD32 i_sign); 251*15dc779aSAndroid Build Coastguard Worker 252*15dc779aSAndroid Build Coastguard Worker VOID ixheaacd_hbe_apply_cfftn_gen(FLOAT32 re[], FLOAT32 *scratch, WORD32 n_pass, 253*15dc779aSAndroid Build Coastguard Worker WORD32 i_sign); 254*15dc779aSAndroid Build Coastguard Worker 255*15dc779aSAndroid Build Coastguard Worker VOID ixheaacd_hbe_apply_fft_288(FLOAT32 *inp, FLOAT32 *scratch, WORD32 len, WORD32 i_sign); 256*15dc779aSAndroid Build Coastguard Worker 257*15dc779aSAndroid Build Coastguard Worker VOID ixheaacd_hbe_apply_ifft_224(FLOAT32 *inp, FLOAT32 *scratch, WORD32 len, WORD32 i_sign); 258*15dc779aSAndroid Build Coastguard Worker 259*15dc779aSAndroid Build Coastguard Worker VOID ixheaacd_hbe_apply_fft_3(FLOAT32 *inp, FLOAT32 *op, WORD32 i_sign); 260*15dc779aSAndroid Build Coastguard Worker 261*15dc779aSAndroid Build Coastguard Worker VOID ixheaacd_hbe_apply_ifft_7(FLOAT32 *inp, FLOAT32 *op); 262*15dc779aSAndroid Build Coastguard Worker 263*15dc779aSAndroid Build Coastguard Worker VOID ixheaacd_hbe_apply_ifft_336(FLOAT32 *inp, FLOAT32 *ptr_scratch, WORD32 len, 264*15dc779aSAndroid Build Coastguard Worker WORD32 i_sign); 265*15dc779aSAndroid Build Coastguard Worker 266*15dc779aSAndroid Build Coastguard Worker WORD32 ixheaacd_dft_hbe_apply(ia_esbr_hbe_txposer_struct *ptr_hbe_txposer, 267*15dc779aSAndroid Build Coastguard Worker FLOAT32 qmf_buf_real[][64], 268*15dc779aSAndroid Build Coastguard Worker FLOAT32 qmf_buf_imag[][64], WORD32 num_columns, 269*15dc779aSAndroid Build Coastguard Worker FLOAT32 pv_qmf_buf_real[][64], 270*15dc779aSAndroid Build Coastguard Worker FLOAT32 pv_qmf_buf_imag[][64], 271*15dc779aSAndroid Build Coastguard Worker WORD32 pitch_in_bins, 272*15dc779aSAndroid Build Coastguard Worker FLOAT32 *dft_hbe_scratch_buf); 273*15dc779aSAndroid Build Coastguard Worker 274*15dc779aSAndroid Build Coastguard Worker WORD32 ixheaacd_sbr_env_calc(ia_sbr_frame_info_data_struct *frame_data, FLOAT32 input_real[][64], 275*15dc779aSAndroid Build Coastguard Worker FLOAT32 input_imag[][64], FLOAT32 input_real1[][64], 276*15dc779aSAndroid Build Coastguard Worker FLOAT32 input_imag1[][64], WORD32 x_over_qmf[MAX_NUM_PATCHES], 277*15dc779aSAndroid Build Coastguard Worker FLOAT32 *scratch_buff, FLOAT32 *env_out, WORD32 ldmps_present, 278*15dc779aSAndroid Build Coastguard Worker WORD32 ec_flag); 279*15dc779aSAndroid Build Coastguard Worker 280*15dc779aSAndroid Build Coastguard Worker WORD32 ixheaacd_generate_hf(FLOAT32 ptr_src_buf_real[][64], FLOAT32 ptr_src_buf_imag[][64], 281*15dc779aSAndroid Build Coastguard Worker FLOAT32 ptr_ph_vocod_buf_real[][64], 282*15dc779aSAndroid Build Coastguard Worker FLOAT32 ptr_ph_vocod_buf_imag[][64], FLOAT32 ptr_dst_buf_real[][64], 283*15dc779aSAndroid Build Coastguard Worker FLOAT32 ptr_dst_buf_imag[][64], 284*15dc779aSAndroid Build Coastguard Worker ia_sbr_frame_info_data_struct *ptr_frame_data, 285*15dc779aSAndroid Build Coastguard Worker ia_sbr_header_data_struct *ptr_header_data, WORD32 audio_object_type, 286*15dc779aSAndroid Build Coastguard Worker WORD32 time_slots, WORD32 ec_flag); 287*15dc779aSAndroid Build Coastguard Worker 288*15dc779aSAndroid Build Coastguard Worker VOID ixheaacd_clr_subsamples(WORD32 *ptr_qmf_buf, WORD32 num, WORD32 size); 289*15dc779aSAndroid Build Coastguard Worker 290*15dc779aSAndroid Build Coastguard Worker VOID ixheaacd_rescale_x_overlap( 291*15dc779aSAndroid Build Coastguard Worker ia_sbr_dec_struct *ptr_sbr_dec, ia_sbr_header_data_struct *ptr_header_data, 292*15dc779aSAndroid Build Coastguard Worker ia_sbr_frame_info_data_struct *ptr_frame_data, 293*15dc779aSAndroid Build Coastguard Worker ia_sbr_prev_frame_data_struct *ptr_frame_data_prev, 294*15dc779aSAndroid Build Coastguard Worker WORD32 **pp_overlap_buffer_real, WORD32 **pp_overlap_buffer_imag, 295*15dc779aSAndroid Build Coastguard Worker FLAG low_pow_flag); 296*15dc779aSAndroid Build Coastguard Worker 297*15dc779aSAndroid Build Coastguard Worker WORD32 ixheaacd_qmf_hbe_data_reinit( 298*15dc779aSAndroid Build Coastguard Worker ia_esbr_hbe_txposer_struct *ptr_hbe_transposer_str, 299*15dc779aSAndroid Build Coastguard Worker WORD16 *ptr_freq_band_tbl[MAX_FREQ_COEFFS + 1], WORD16 *ptr_num_sf_bands, 300*15dc779aSAndroid Build Coastguard Worker WORD32 upsamp_4_flag); 301*15dc779aSAndroid Build Coastguard Worker 302*15dc779aSAndroid Build Coastguard Worker WORD32 ixheaacd_dft_hbe_data_reinit(ia_esbr_hbe_txposer_struct *ptr_hbe_txposer, 303*15dc779aSAndroid Build Coastguard Worker WORD16 *p_freq_band_tab[2], WORD16 *p_num_sfb); 304*15dc779aSAndroid Build Coastguard Worker 305*15dc779aSAndroid Build Coastguard Worker WORD32 ixheaacd_sbr_read_pvc_sce(ia_sbr_frame_info_data_struct *ptr_frame_data, 306*15dc779aSAndroid Build Coastguard Worker ia_bit_buf_struct *it_bit_buff, 307*15dc779aSAndroid Build Coastguard Worker WORD32 hbe_flag, 308*15dc779aSAndroid Build Coastguard Worker ia_pvc_data_struct *ptr_pvc_data, 309*15dc779aSAndroid Build Coastguard Worker ia_sbr_tables_struct *sbr_tables_ptr, 310*15dc779aSAndroid Build Coastguard Worker ia_sbr_header_data_struct *ptr_header_data); 311*15dc779aSAndroid Build Coastguard Worker 312*15dc779aSAndroid Build Coastguard Worker WORD32 ixheaacd_esbr_dec(ia_sbr_dec_struct *ptr_sbr_dec, 313*15dc779aSAndroid Build Coastguard Worker ia_sbr_header_data_struct *ptr_header_data, 314*15dc779aSAndroid Build Coastguard Worker ia_sbr_frame_info_data_struct *ptr_frame_data, 315*15dc779aSAndroid Build Coastguard Worker FLAG apply_processing, FLAG low_pow_flag, 316*15dc779aSAndroid Build Coastguard Worker ia_sbr_tables_struct *sbr_tables_ptr, WORD32 ch_fac); 317*15dc779aSAndroid Build Coastguard Worker 318*15dc779aSAndroid Build Coastguard Worker VOID ixheaacd_hbe_repl_spec(WORD32 x_over_qmf[MAX_NUM_PATCHES], 319*15dc779aSAndroid Build Coastguard Worker FLOAT32 qmf_buf_real[][64], 320*15dc779aSAndroid Build Coastguard Worker FLOAT32 qmf_buf_imag[][64], WORD32 no_bins, 321*15dc779aSAndroid Build Coastguard Worker WORD32 max_stretch); 322*15dc779aSAndroid Build Coastguard Worker 323*15dc779aSAndroid Build Coastguard Worker #endif 324