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