xref: /aosp_15_r20/external/libxaac/decoder/ixheaacd_sbr_dec.h (revision 15dc779a375ca8b5125643b829a8aa4b70d7f451)
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