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 23*15dc779aSAndroid Build Coastguard Worker #define IXHEAACE_SBR_HF_ADJ_OFFSET (2) 24*15dc779aSAndroid Build Coastguard Worker #define IXHEAACE_ESBR_HBE_DELAY_OFFSET (32) 25*15dc779aSAndroid Build Coastguard Worker #define IXHEAACE_TIMESLOT_BUFFER_SIZE (78) 26*15dc779aSAndroid Build Coastguard Worker #define IXHEAACE_MAX_NUM_PATCHES (6) 27*15dc779aSAndroid Build Coastguard Worker #define IXHEAACE_MAX_STRETCH (4) 28*15dc779aSAndroid Build Coastguard Worker #define IXHEAACE_MAX_NUM_LIMITERS (12) 29*15dc779aSAndroid Build Coastguard Worker #define IXHEAACE_MAX_FREQ_COEFFS (56) 30*15dc779aSAndroid Build Coastguard Worker #define IXHEAACE_MAX_NOISE_COEFFS (5) 31*15dc779aSAndroid Build Coastguard Worker 32*15dc779aSAndroid Build Coastguard Worker #define IXHEAACE_HBE_OPER_WIN_LEN (13) 33*15dc779aSAndroid Build Coastguard Worker #define IXHEAACE_NUM_QMF_SYNTH_CHANNELS (64) 34*15dc779aSAndroid Build Coastguard Worker #define IXHEAACE_TWICE_QMF_SYNTH_CH_NUM (128) 35*15dc779aSAndroid Build Coastguard Worker #define IXHEAACE_HBE_ZERO_BAND_IDX (6) 36*15dc779aSAndroid Build Coastguard Worker #define IXHEAACE_HBE_OPER_BLK_LEN_2 (10) 37*15dc779aSAndroid Build Coastguard Worker #define IXHEAACE_HBE_OPER_BLK_LEN_3 (8) 38*15dc779aSAndroid Build Coastguard Worker #define IXHEAACE_HBE_OPER_BLK_LEN_4 (6) 39*15dc779aSAndroid Build Coastguard Worker #define IXHEAACE_FD_OVERSAMPLING_FAC (1.5f) 40*15dc779aSAndroid Build Coastguard Worker 41*15dc779aSAndroid Build Coastguard Worker #define IXHEAACE_MAX_NO_COLS_VALUE (64) 42*15dc779aSAndroid Build Coastguard Worker #define IXHEAACE_MAX_FRAME_SIZE (1024) 43*15dc779aSAndroid Build Coastguard Worker #define IXHEAACE_MAX_NUM_SAMPLES (4096) 44*15dc779aSAndroid Build Coastguard Worker #define IXHEAACE_MAX_QMF_X_INBUF_SIZE (IXHEAACE_MAX_NO_COLS_VALUE) 45*15dc779aSAndroid Build Coastguard Worker #define IXHEAACE_MAX_QMF_X_OUTBUF_SIZE (2 * IXHEAACE_MAX_QMF_X_INBUF_SIZE) 46*15dc779aSAndroid Build Coastguard Worker 47*15dc779aSAndroid Build Coastguard Worker #define IXHEAACE_MAX_QMF_X_IN_REAL_BUF \ 48*15dc779aSAndroid Build Coastguard Worker (IXHEAACE_NUM_QMF_SYNTH_CHANNELS * IXHEAACE_MAX_QMF_X_INBUF_SIZE) 49*15dc779aSAndroid Build Coastguard Worker #define IXHEAACE_MAX_QMF_X_IN_IMAG_BUF \ 50*15dc779aSAndroid Build Coastguard Worker (IXHEAACE_NUM_QMF_SYNTH_CHANNELS * IXHEAACE_MAX_QMF_X_INBUF_SIZE) 51*15dc779aSAndroid Build Coastguard Worker 52*15dc779aSAndroid Build Coastguard Worker #define IXHEAACE_MAX_QMF_X_OUT_REAL_BUF \ 53*15dc779aSAndroid Build Coastguard Worker (IXHEAACE_NUM_QMF_SYNTH_CHANNELS * IXHEAACE_MAX_QMF_X_OUTBUF_SIZE) 54*15dc779aSAndroid Build Coastguard Worker #define IXHEAACE_MAX_QMF_X_OUT_IMAG_BUF \ 55*15dc779aSAndroid Build Coastguard Worker (IXHEAACE_NUM_QMF_SYNTH_CHANNELS * IXHEAACE_MAX_QMF_X_OUTBUF_SIZE) 56*15dc779aSAndroid Build Coastguard Worker 57*15dc779aSAndroid Build Coastguard Worker #define IXHEAACE_X_INBUF_SIZE (IXHEAACE_MAX_FRAME_SIZE + IXHEAACE_NUM_QMF_SYNTH_CHANNELS) 58*15dc779aSAndroid Build Coastguard Worker #define IXHEAACE_X_OUTBUF_SIZE (IXHEAACE_X_INBUF_SIZE * 2) 59*15dc779aSAndroid Build Coastguard Worker 60*15dc779aSAndroid Build Coastguard Worker #define IXHEAACE_MAX_HBE_PERSISTENT_SIZE \ 61*15dc779aSAndroid Build Coastguard Worker (IXHEAACE_MAX_QMF_X_INBUF_SIZE * sizeof(FLOAT32 *) + \ 62*15dc779aSAndroid Build Coastguard Worker IXHEAACE_MAX_QMF_X_OUTBUF_SIZE * sizeof(FLOAT32 *) + \ 63*15dc779aSAndroid Build Coastguard Worker IXHEAACE_MAX_QMF_X_IN_REAL_BUF * sizeof(FLOAT32) + \ 64*15dc779aSAndroid Build Coastguard Worker IXHEAACE_MAX_QMF_X_IN_IMAG_BUF * sizeof(FLOAT32) + \ 65*15dc779aSAndroid Build Coastguard Worker IXHEAACE_MAX_QMF_X_OUT_REAL_BUF * sizeof(FLOAT32) + \ 66*15dc779aSAndroid Build Coastguard Worker IXHEAACE_MAX_QMF_X_OUT_IMAG_BUF * sizeof(FLOAT32) + IXHEAACE_X_INBUF_SIZE * sizeof(FLOAT32) + \ 67*15dc779aSAndroid Build Coastguard Worker IXHEAACE_X_OUTBUF_SIZE * sizeof(FLOAT32)) 68*15dc779aSAndroid Build Coastguard Worker 69*15dc779aSAndroid Build Coastguard Worker #define IXHEAACE_LOW (0) 70*15dc779aSAndroid Build Coastguard Worker #define IXHEAACE_HIGH (1) 71*15dc779aSAndroid Build Coastguard Worker 72*15dc779aSAndroid Build Coastguard Worker #define IXHEAACE_SBR_CONST_PMIN 1.0f 73*15dc779aSAndroid Build Coastguard Worker 74*15dc779aSAndroid Build Coastguard Worker #define ixheaace_cbrt_calc(a) (pow(a, -0.333333f)) 75*15dc779aSAndroid Build Coastguard Worker 76*15dc779aSAndroid Build Coastguard Worker #define IXHEAACE_QMF_FILTER_STATE_ANA_SIZE 320 77*15dc779aSAndroid Build Coastguard Worker 78*15dc779aSAndroid Build Coastguard Worker typedef struct { 79*15dc779aSAndroid Build Coastguard Worker FLOAT32 real[64][128]; 80*15dc779aSAndroid Build Coastguard Worker FLOAT32 imag[64][128]; 81*15dc779aSAndroid Build Coastguard Worker } ixheaace_str_dft_hbe_anal_coeff; 82*15dc779aSAndroid Build Coastguard Worker 83*15dc779aSAndroid Build Coastguard Worker typedef struct { 84*15dc779aSAndroid Build Coastguard Worker WORD32 x_over_qmf[IXHEAACE_MAX_NUM_PATCHES]; 85*15dc779aSAndroid Build Coastguard Worker WORD32 max_stretch; 86*15dc779aSAndroid Build Coastguard Worker WORD32 core_frame_length; 87*15dc779aSAndroid Build Coastguard Worker WORD32 hbe_qmf_in_len; 88*15dc779aSAndroid Build Coastguard Worker WORD32 hbe_qmf_out_len; 89*15dc779aSAndroid Build Coastguard Worker WORD32 no_bins; 90*15dc779aSAndroid Build Coastguard Worker WORD32 start_band; 91*15dc779aSAndroid Build Coastguard Worker WORD32 end_band; 92*15dc779aSAndroid Build Coastguard Worker WORD32 upsamp_4_flag; 93*15dc779aSAndroid Build Coastguard Worker WORD32 synth_buf_offset; 94*15dc779aSAndroid Build Coastguard Worker 95*15dc779aSAndroid Build Coastguard Worker WORD16 num_sf_bands[2]; 96*15dc779aSAndroid Build Coastguard Worker WORD16 *ptr_freq_band_tab[2]; 97*15dc779aSAndroid Build Coastguard Worker WORD16 freq_band_tbl_lo[IXHEAACE_MAX_FREQ_COEFFS / 2 + 1]; 98*15dc779aSAndroid Build Coastguard Worker WORD16 freq_band_tbl_hi[IXHEAACE_MAX_FREQ_COEFFS + 1]; 99*15dc779aSAndroid Build Coastguard Worker 100*15dc779aSAndroid Build Coastguard Worker FLOAT32 *ptr_input_buf; 101*15dc779aSAndroid Build Coastguard Worker 102*15dc779aSAndroid Build Coastguard Worker FLOAT32 qmf_in_buf[IXHEAACE_TWICE_QMF_SYNTH_CH_NUM][IXHEAACE_TWICE_QMF_SYNTH_CH_NUM]; 103*15dc779aSAndroid Build Coastguard Worker FLOAT32 qmf_out_buf[IXHEAACE_TWICE_QMF_SYNTH_CH_NUM][IXHEAACE_TWICE_QMF_SYNTH_CH_NUM]; 104*15dc779aSAndroid Build Coastguard Worker 105*15dc779aSAndroid Build Coastguard Worker WORD32 k_start; 106*15dc779aSAndroid Build Coastguard Worker WORD32 synth_size; 107*15dc779aSAndroid Build Coastguard Worker FLOAT32 synth_buf[1280]; 108*15dc779aSAndroid Build Coastguard Worker FLOAT32 analy_buf[640]; 109*15dc779aSAndroid Build Coastguard Worker FLOAT32 *ptr_syn_win_coeff; 110*15dc779aSAndroid Build Coastguard Worker FLOAT32 *ptr_ana_win_coeff; 111*15dc779aSAndroid Build Coastguard Worker 112*15dc779aSAndroid Build Coastguard Worker FLOAT32 *ptr_syn_cos_tab; 113*15dc779aSAndroid Build Coastguard Worker FLOAT32 *ptr_analy_cos_sin_tab; 114*15dc779aSAndroid Build Coastguard Worker 115*15dc779aSAndroid Build Coastguard Worker VOID (*ixheaace_real_synth_fft)(FLOAT32 *ptr_inp, FLOAT32 *ptr_out, WORD32 n_points); 116*15dc779aSAndroid Build Coastguard Worker FLOAT32 norm_qmf_in_buf[128][128]; 117*15dc779aSAndroid Build Coastguard Worker 118*15dc779aSAndroid Build Coastguard Worker VOID (*ixheaace_cmplx_anal_fft)(FLOAT32 *ptr_inp, FLOAT32 *ptr_out, WORD32 n_points); 119*15dc779aSAndroid Build Coastguard Worker 120*15dc779aSAndroid Build Coastguard Worker WORD32 esbr_hq; 121*15dc779aSAndroid Build Coastguard Worker WORD32 in_hop_size; 122*15dc779aSAndroid Build Coastguard Worker WORD32 fft_size[2]; 123*15dc779aSAndroid Build Coastguard Worker 124*15dc779aSAndroid Build Coastguard Worker FLOAT32 *ptr_ana_win; /* Phase Vocoder Analysis Window for FFT */ 125*15dc779aSAndroid Build Coastguard Worker FLOAT32 *ptr_syn_win; /* Phase Vocoder Synthesis Window for OLA */ 126*15dc779aSAndroid Build Coastguard Worker 127*15dc779aSAndroid Build Coastguard Worker FLOAT32 *ptr_spectrum; /* FFT values in cartesian space */ 128*15dc779aSAndroid Build Coastguard Worker FLOAT32 *ptr_spectrum_tx; /* Transposed spectrum */ 129*15dc779aSAndroid Build Coastguard Worker FLOAT32 *ptr_mag; /* FFT magnitudes */ 130*15dc779aSAndroid Build Coastguard Worker FLOAT32 *ptr_phase; /* FFT angles */ 131*15dc779aSAndroid Build Coastguard Worker FLOAT32 *ptr_output_buf; 132*15dc779aSAndroid Build Coastguard Worker WORD32 ana_fft_size[2]; /* Analysis FFT length */ 133*15dc779aSAndroid Build Coastguard Worker WORD32 syn_fft_size[2]; /* Synthesis FFT length */ 134*15dc779aSAndroid Build Coastguard Worker WORD32 out_hop_size; 135*15dc779aSAndroid Build Coastguard Worker WORD32 analy_size; 136*15dc779aSAndroid Build Coastguard Worker WORD32 x_over_bin[IXHEAACE_MAX_STRETCH][2]; 137*15dc779aSAndroid Build Coastguard Worker WORD32 a_start; 138*15dc779aSAndroid Build Coastguard Worker 139*15dc779aSAndroid Build Coastguard Worker FLOAT32 spectrum_buf[1536]; /* FFT values in cartesian space */ 140*15dc779aSAndroid Build Coastguard Worker FLOAT32 spectrum_transposed_buf[1536]; /* Transposed spectrum */ 141*15dc779aSAndroid Build Coastguard Worker FLOAT32 mag_buf[1536]; /* FFT magnitudes */ 142*15dc779aSAndroid Build Coastguard Worker FLOAT32 phase_buf[1536]; /* FFT angles */ 143*15dc779aSAndroid Build Coastguard Worker FLOAT32 output_buf[IXHEAACE_MAX_NUM_SAMPLES]; 144*15dc779aSAndroid Build Coastguard Worker FLOAT32 fd_win_buf[3][3][1536]; 145*15dc779aSAndroid Build Coastguard Worker 146*15dc779aSAndroid Build Coastguard Worker FLOAT32 analysis_window_buf[1024]; 147*15dc779aSAndroid Build Coastguard Worker FLOAT32 synthesis_window_buf[1024]; 148*15dc779aSAndroid Build Coastguard Worker 149*15dc779aSAndroid Build Coastguard Worker WORD32 oversampling_flag; 150*15dc779aSAndroid Build Coastguard Worker ixheaace_str_dft_hbe_anal_coeff str_dft_hbe_anal_coeff; 151*15dc779aSAndroid Build Coastguard Worker VOID (*ixheaace_hbe_anal_fft)(FLOAT32 *ptr_inp, FLOAT32 *ptr_scratch, WORD32 len, WORD32 sign); 152*15dc779aSAndroid Build Coastguard Worker VOID(*ixheaace_hbe_synth_ifft) 153*15dc779aSAndroid Build Coastguard Worker (FLOAT32 *ptr_inp, FLOAT32 *ptr_scratch, WORD32 len, WORD32 sign); 154*15dc779aSAndroid Build Coastguard Worker FLOAT32 *ptr_syn_cos_sin_tab; 155*15dc779aSAndroid Build Coastguard Worker FLOAT32 *ptr_ana_cos_sin_tab; 156*15dc779aSAndroid Build Coastguard Worker } ixheaace_str_esbr_hbe_txposer; 157*15dc779aSAndroid Build Coastguard Worker 158*15dc779aSAndroid Build Coastguard Worker typedef struct { 159*15dc779aSAndroid Build Coastguard Worker WORD16 w_16[2 * 12]; 160*15dc779aSAndroid Build Coastguard Worker FLOAT32 dig_rev_tab_4_16[2]; 161*15dc779aSAndroid Build Coastguard Worker 162*15dc779aSAndroid Build Coastguard Worker FLOAT32 esbr_qmf_c[1280]; 163*15dc779aSAndroid Build Coastguard Worker FLOAT32 esbr_qmf_c_24[480]; 164*15dc779aSAndroid Build Coastguard Worker FLOAT32 esbr_w_16[2 * 12]; 165*15dc779aSAndroid Build Coastguard Worker 166*15dc779aSAndroid Build Coastguard Worker FLOAT32 esbr_sin_cos_twiddle_l64[64]; 167*15dc779aSAndroid Build Coastguard Worker FLOAT32 esbr_alt_sin_twiddle_l64[32]; 168*15dc779aSAndroid Build Coastguard Worker 169*15dc779aSAndroid Build Coastguard Worker FLOAT32 esbr_sin_cos_twiddle_l32[32]; 170*15dc779aSAndroid Build Coastguard Worker FLOAT32 esbr_alt_sin_twiddle_l32[16]; 171*15dc779aSAndroid Build Coastguard Worker FLOAT32 esbr_t_cos_sin_l32[32 + 32]; 172*15dc779aSAndroid Build Coastguard Worker 173*15dc779aSAndroid Build Coastguard Worker FLOAT32 esbr_sin_cos_twiddle_l24[24]; 174*15dc779aSAndroid Build Coastguard Worker FLOAT32 esbr_alt_sin_twiddle_l24[12]; 175*15dc779aSAndroid Build Coastguard Worker FLOAT32 esbr_t_cos_sin_l24[24 + 24]; 176*15dc779aSAndroid Build Coastguard Worker 177*15dc779aSAndroid Build Coastguard Worker FLOAT32 esbr_sin_cos_twiddle_l16[16]; 178*15dc779aSAndroid Build Coastguard Worker FLOAT32 esbr_alt_sin_twiddle_l16[8]; 179*15dc779aSAndroid Build Coastguard Worker FLOAT32 esbr_t_cos_sin_l16[16 + 16]; 180*15dc779aSAndroid Build Coastguard Worker } ixheaace_str_qmf_dec_tabs_struct; 181*15dc779aSAndroid Build Coastguard Worker 182*15dc779aSAndroid Build Coastguard Worker typedef struct { 183*15dc779aSAndroid Build Coastguard Worker WORD32 no_channels; 184*15dc779aSAndroid Build Coastguard Worker WORD16 num_time_slots; 185*15dc779aSAndroid Build Coastguard Worker 186*15dc779aSAndroid Build Coastguard Worker WORD16 lsb; 187*15dc779aSAndroid Build Coastguard Worker WORD16 usb; 188*15dc779aSAndroid Build Coastguard Worker 189*15dc779aSAndroid Build Coastguard Worker const FLOAT32 *ptr_ana_win_coeff_32; 190*15dc779aSAndroid Build Coastguard Worker const FLOAT32 *ptr_esbr_cos_twiddle; 191*15dc779aSAndroid Build Coastguard Worker const FLOAT32 *ptr_esbr_alt_sin_twiddle; 192*15dc779aSAndroid Build Coastguard Worker const FLOAT32 *ptr_esbr_t_cos; 193*15dc779aSAndroid Build Coastguard Worker FLOAT32 anal_filter_states_32[IXHEAACE_QMF_FILTER_STATE_ANA_SIZE]; 194*15dc779aSAndroid Build Coastguard Worker FLOAT32 *ptr_state_new_samples_pos_low_32; 195*15dc779aSAndroid Build Coastguard Worker const FLOAT32 *ptr_filter_pos_32; 196*15dc779aSAndroid Build Coastguard Worker ixheaace_str_qmf_dec_tabs_struct *pstr_qmf_dec_tabs; 197*15dc779aSAndroid Build Coastguard Worker } ia_sbr_qmf_filter_bank_struct; 198*15dc779aSAndroid Build Coastguard Worker 199*15dc779aSAndroid Build Coastguard Worker typedef struct { 200*15dc779aSAndroid Build Coastguard Worker ixheaace_str_esbr_hbe_txposer *pstr_hbe_txposer; 201*15dc779aSAndroid Build Coastguard Worker VOID *ptr_hbe_txposer_buffers; 202*15dc779aSAndroid Build Coastguard Worker FLOAT32 ph_vocod_qmf_real[IXHEAACE_TIMESLOT_BUFFER_SIZE][IXHEAACE_NUM_QMF_SYNTH_CHANNELS]; 203*15dc779aSAndroid Build Coastguard Worker FLOAT32 ph_vocod_qmf_imag[IXHEAACE_TIMESLOT_BUFFER_SIZE][IXHEAACE_NUM_QMF_SYNTH_CHANNELS]; 204*15dc779aSAndroid Build Coastguard Worker FLOAT32 sbr_qmf_out_real[IXHEAACE_TIMESLOT_BUFFER_SIZE][IXHEAACE_NUM_QMF_SYNTH_CHANNELS]; 205*15dc779aSAndroid Build Coastguard Worker FLOAT32 sbr_qmf_out_imag[IXHEAACE_TIMESLOT_BUFFER_SIZE][IXHEAACE_NUM_QMF_SYNTH_CHANNELS]; 206*15dc779aSAndroid Build Coastguard Worker FLOAT32 qmf_buf_real[IXHEAACE_TIMESLOT_BUFFER_SIZE + 2 * 32][IXHEAACE_NUM_QMF_SYNTH_CHANNELS]; 207*15dc779aSAndroid Build Coastguard Worker FLOAT32 qmf_buf_imag[IXHEAACE_TIMESLOT_BUFFER_SIZE + 2 * 32][IXHEAACE_NUM_QMF_SYNTH_CHANNELS]; 208*15dc779aSAndroid Build Coastguard Worker 209*15dc779aSAndroid Build Coastguard Worker ia_sbr_qmf_filter_bank_struct str_codec_qmf_bank; 210*15dc779aSAndroid Build Coastguard Worker } ixheaace_str_hbe_enc; 211*15dc779aSAndroid Build Coastguard Worker 212*15dc779aSAndroid Build Coastguard Worker extern const ixheaace_str_qmf_dec_tabs_struct ixheaace_str_aac_qmf_tabs; 213*15dc779aSAndroid Build Coastguard Worker 214*15dc779aSAndroid Build Coastguard Worker VOID iusace_complex_fft_p2(FLOAT32 *ptr_x, WORD32 nlength, FLOAT32 *ptr_scratch_fft_p2_y); 215*15dc779aSAndroid Build Coastguard Worker VOID iusace_complex_fft_p3_no_scratch(FLOAT32 *ptr_data, WORD32 nlength); 216*15dc779aSAndroid Build Coastguard Worker 217*15dc779aSAndroid Build Coastguard Worker VOID ixheaace_esbr_hbe_data_init(ixheaace_str_esbr_hbe_txposer *pstr_esbr_hbe_txposer, 218*15dc779aSAndroid Build Coastguard Worker const WORD32 num_aac_samples, WORD32 samp_fac_4_flag, 219*15dc779aSAndroid Build Coastguard Worker const WORD32 num_out_samples, VOID *ptr_persistent_hbe_mem, 220*15dc779aSAndroid Build Coastguard Worker WORD32 *ptr_total_persistant); 221*15dc779aSAndroid Build Coastguard Worker 222*15dc779aSAndroid Build Coastguard Worker IA_ERRORCODE ixheaace_dft_hbe_data_reinit(ixheaace_str_esbr_hbe_txposer *pstr_hbe_txposer); 223*15dc779aSAndroid Build Coastguard Worker 224*15dc779aSAndroid Build Coastguard Worker IA_ERRORCODE ixheaace_qmf_hbe_data_reinit(ixheaace_str_esbr_hbe_txposer *pstr_hbe_txposer); 225*15dc779aSAndroid Build Coastguard Worker 226*15dc779aSAndroid Build Coastguard Worker IA_ERRORCODE ixheaace_dft_hbe_apply(ixheaace_str_esbr_hbe_txposer *pstr_hbe_txposer, 227*15dc779aSAndroid Build Coastguard Worker FLOAT32 qmf_buf_real[][64], FLOAT32 qmf_buf_imag[][64], 228*15dc779aSAndroid Build Coastguard Worker WORD32 num_columns, FLOAT32 pv_qmf_buf_real[][64], 229*15dc779aSAndroid Build Coastguard Worker FLOAT32 pv_qmf_buf_imag[][64], WORD32 pitch_in_bins, 230*15dc779aSAndroid Build Coastguard Worker FLOAT32 *ptr_dft_hbe_scratch_buf); 231*15dc779aSAndroid Build Coastguard Worker 232*15dc779aSAndroid Build Coastguard Worker IA_ERRORCODE ixheaace_qmf_hbe_apply(ixheaace_str_esbr_hbe_txposer *pstr_hbe_txposer, 233*15dc779aSAndroid Build Coastguard Worker FLOAT32 qmf_buf_real[][64], FLOAT32 qmf_buf_imag[][64], 234*15dc779aSAndroid Build Coastguard Worker WORD32 num_columns, FLOAT32 pv_qmf_buf_real[][64], 235*15dc779aSAndroid Build Coastguard Worker FLOAT32 pv_qmf_buf_imag[][64], WORD32 pitch_in_bins); 236*15dc779aSAndroid Build Coastguard Worker 237*15dc779aSAndroid Build Coastguard Worker IA_ERRORCODE ixheaace_hbe_post_anal_process(ixheaace_str_esbr_hbe_txposer *pstr_hbe_txposer, 238*15dc779aSAndroid Build Coastguard Worker WORD32 pitch_in_bins, WORD32 sbr_upsamp_4_flg); 239*15dc779aSAndroid Build Coastguard Worker 240*15dc779aSAndroid Build Coastguard Worker VOID ixheaace_hbe_repl_spec(WORD32 x_over_qmf[IXHEAACE_MAX_NUM_PATCHES], 241*15dc779aSAndroid Build Coastguard Worker FLOAT32 qmf_buf_real[][64], FLOAT32 qmf_buf_imag[][64], 242*15dc779aSAndroid Build Coastguard Worker WORD32 no_bins, WORD32 max_stretch); 243*15dc779aSAndroid Build Coastguard Worker 244*15dc779aSAndroid Build Coastguard Worker VOID ixheaace_esbr_qmf_init(ia_sbr_qmf_filter_bank_struct *pstr_codec_qmf_bank, 245*15dc779aSAndroid Build Coastguard Worker WORD32 sbr_ratio_idx, WORD32 output_frame_size); 246*15dc779aSAndroid Build Coastguard Worker 247*15dc779aSAndroid Build Coastguard Worker VOID ixheaace_esbr_analysis_filt_block( 248*15dc779aSAndroid Build Coastguard Worker ia_sbr_qmf_filter_bank_struct *pstr_codec_qmf_bank, 249*15dc779aSAndroid Build Coastguard Worker ixheaace_str_qmf_dec_tabs_struct *pstr_qmf_dec_tabs, FLOAT32 *ptr_core_coder_samples, 250*15dc779aSAndroid Build Coastguard Worker FLOAT32 qmf_buf_real[IXHEAACE_TIMESLOT_BUFFER_SIZE + 2 * 32][IXHEAACE_NUM_QMF_SYNTH_CHANNELS], 251*15dc779aSAndroid Build Coastguard Worker FLOAT32 qmf_buf_imag[IXHEAACE_TIMESLOT_BUFFER_SIZE + 2 * 32][IXHEAACE_NUM_QMF_SYNTH_CHANNELS], 252*15dc779aSAndroid Build Coastguard Worker WORD32 op_delay); 253