xref: /aosp_15_r20/external/libxaac/decoder/ixheaacd_main.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_MAIN_H
21*15dc779aSAndroid Build Coastguard Worker #define IXHEAACD_MAIN_H
22*15dc779aSAndroid Build Coastguard Worker 
23*15dc779aSAndroid Build Coastguard Worker VOID ixheaacd_imdct_flt(FLOAT32 in_data[], FLOAT32 out_data[], WORD32 len);
24*15dc779aSAndroid Build Coastguard Worker 
25*15dc779aSAndroid Build Coastguard Worker VOID usac_tw_imdct(FLOAT32 in_data[], FLOAT32 out_data[], WORD32 len);
26*15dc779aSAndroid Build Coastguard Worker 
27*15dc779aSAndroid Build Coastguard Worker WORD32 ixheaacd_window_calc(FLOAT32 window[], WORD32 len, WORD32 wfun_select);
28*15dc779aSAndroid Build Coastguard Worker 
29*15dc779aSAndroid Build Coastguard Worker VOID calc_window_ratio(FLOAT32 window[], WORD32 len, WORD32 prev_len,
30*15dc779aSAndroid Build Coastguard Worker                        WORD32 wfun_select, WORD32 prev_wfun_select);
31*15dc779aSAndroid Build Coastguard Worker 
32*15dc779aSAndroid Build Coastguard Worker WORD32 ixheaacd_tw_window_calc(FLOAT32 window[], WORD32 len,
33*15dc779aSAndroid Build Coastguard Worker                                WORD32 wfun_select);
34*15dc779aSAndroid Build Coastguard Worker 
35*15dc779aSAndroid Build Coastguard Worker typedef struct ia_usac_lpd_decoder {
36*15dc779aSAndroid Build Coastguard Worker   WORD32 mode_prev;
37*15dc779aSAndroid Build Coastguard Worker   float synth_prev[MAX_PITCH + SYNTH_DELAY_LMAX];
38*15dc779aSAndroid Build Coastguard Worker   float xcitation_prev[MAX_PITCH + INTER_LP_FIL_ORDER + 1];
39*15dc779aSAndroid Build Coastguard Worker   int pitch_prev[NUM_SUBFR_SUPERFRAME_BY2 - 1];
40*15dc779aSAndroid Build Coastguard Worker   float gain_prev[NUM_SUBFR_SUPERFRAME_BY2 - 1];
41*15dc779aSAndroid Build Coastguard Worker 
42*15dc779aSAndroid Build Coastguard Worker   float lp_flt_coeff_a_prev[2 * (ORDER + 1)];
43*15dc779aSAndroid Build Coastguard Worker 
44*15dc779aSAndroid Build Coastguard Worker   FLOAT32 exc_prev[1 + (2 * FAC_LENGTH)];
45*15dc779aSAndroid Build Coastguard Worker 
46*15dc779aSAndroid Build Coastguard Worker   FLOAT32 bpf_prev[FILTER_DELAY + LEN_SUBFR];
47*15dc779aSAndroid Build Coastguard Worker 
48*15dc779aSAndroid Build Coastguard Worker   WORD32 ilspold[ORDER];
49*15dc779aSAndroid Build Coastguard Worker 
50*15dc779aSAndroid Build Coastguard Worker   FLOAT32 fac_gain;
51*15dc779aSAndroid Build Coastguard Worker   FLOAT32 fac_fd_data[FAC_LENGTH / 4];
52*15dc779aSAndroid Build Coastguard Worker 
53*15dc779aSAndroid Build Coastguard Worker   FLOAT32 lsf_prev[ORDER];
54*15dc779aSAndroid Build Coastguard Worker   FLOAT32 lspold[ORDER];
55*15dc779aSAndroid Build Coastguard Worker   WORD32 lsfold_first[ORDER];
56*15dc779aSAndroid Build Coastguard Worker 
57*15dc779aSAndroid Build Coastguard Worker   FLOAT32 gain_threshold;
58*15dc779aSAndroid Build Coastguard Worker 
59*15dc779aSAndroid Build Coastguard Worker   WORD32 fscale;
60*15dc779aSAndroid Build Coastguard Worker 
61*15dc779aSAndroid Build Coastguard Worker   FLOAT32 fd_synth_buf[3 * LEN_FRAME + 1 + ORDER];
62*15dc779aSAndroid Build Coastguard Worker   FLOAT32 *fd_synth;
63*15dc779aSAndroid Build Coastguard Worker   WORD32 bpf_active_prev;
64*15dc779aSAndroid Build Coastguard Worker   WORD32 last_tcx_pitch;
65*15dc779aSAndroid Build Coastguard Worker   FLOAT32 synth_prev_ec[ORDER];
66*15dc779aSAndroid Build Coastguard Worker } ia_usac_lpd_decoder, *ia_usac_lpd_decoder_handle;
67*15dc779aSAndroid Build Coastguard Worker 
68*15dc779aSAndroid Build Coastguard Worker typedef struct ia_usac_data_main_struct {
69*15dc779aSAndroid Build Coastguard Worker   FLOAT32 time_sample_vector[MAX_NUM_CHANNELS][4096];
70*15dc779aSAndroid Build Coastguard Worker   FLOAT32 time_sample_vector_prev[MAX_NUM_CHANNELS][4096];
71*15dc779aSAndroid Build Coastguard Worker   WORD32 input_data_ptr[MAX_NUM_CHANNELS][4096];
72*15dc779aSAndroid Build Coastguard Worker   WORD32 overlap_data_ptr[MAX_NUM_CHANNELS][4096];
73*15dc779aSAndroid Build Coastguard Worker   WORD32 output_data_ptr[MAX_NUM_CHANNELS][4096];
74*15dc779aSAndroid Build Coastguard Worker 
75*15dc779aSAndroid Build Coastguard Worker   WORD32 window_shape[MAX_NUM_CHANNELS];
76*15dc779aSAndroid Build Coastguard Worker   WORD32 window_shape_prev[MAX_NUM_CHANNELS];
77*15dc779aSAndroid Build Coastguard Worker   WORD32 window_sequence[MAX_NUM_CHANNELS];
78*15dc779aSAndroid Build Coastguard Worker   WORD32 window_sequence_last[MAX_NUM_CHANNELS];
79*15dc779aSAndroid Build Coastguard Worker 
80*15dc779aSAndroid Build Coastguard Worker   WORD32 output_samples;
81*15dc779aSAndroid Build Coastguard Worker   WORD32 sbr_ratio_idx;
82*15dc779aSAndroid Build Coastguard Worker   WORD32 usac_independency_flg;
83*15dc779aSAndroid Build Coastguard Worker 
84*15dc779aSAndroid Build Coastguard Worker   WORD32 sampling_rate_idx;
85*15dc779aSAndroid Build Coastguard Worker   WORD32 audio_object_type;
86*15dc779aSAndroid Build Coastguard Worker 
87*15dc779aSAndroid Build Coastguard Worker   WORD32 down_samp_sbr;
88*15dc779aSAndroid Build Coastguard Worker   WORD32 sbr_mode;
89*15dc779aSAndroid Build Coastguard Worker 
90*15dc779aSAndroid Build Coastguard Worker   WORD32 tw_mdct[MAX_ELEMENTS];
91*15dc779aSAndroid Build Coastguard Worker   WORD32 mps_pseudo_lr[MAX_ELEMENTS];
92*15dc779aSAndroid Build Coastguard Worker   WORD32 td_frame_prev[MAX_NUM_CHANNELS];
93*15dc779aSAndroid Build Coastguard Worker 
94*15dc779aSAndroid Build Coastguard Worker   FLOAT32 warp_sum[MAX_NUM_CHANNELS][2];
95*15dc779aSAndroid Build Coastguard Worker   FLOAT32 warp_cont_mem[MAX_NUM_CHANNELS][3 * 1024];
96*15dc779aSAndroid Build Coastguard Worker   FLOAT32 prev_sample_pos[MAX_NUM_CHANNELS][3 * 1024];
97*15dc779aSAndroid Build Coastguard Worker   FLOAT32 prev_tw_trans_len[MAX_NUM_CHANNELS][2];
98*15dc779aSAndroid Build Coastguard Worker   WORD32 prev_tw_start_stop[MAX_NUM_CHANNELS][2];
99*15dc779aSAndroid Build Coastguard Worker   FLOAT32 prev_warped_time_sample_vector[MAX_NUM_CHANNELS][3 * 1024];
100*15dc779aSAndroid Build Coastguard Worker 
101*15dc779aSAndroid Build Coastguard Worker   FLOAT32 lpc_prev[MAX_NUM_CHANNELS][ORDER + 1];
102*15dc779aSAndroid Build Coastguard Worker   FLOAT32 acelp_in[MAX_NUM_CHANNELS][1 + (2 * FAC_LENGTH)];
103*15dc779aSAndroid Build Coastguard Worker 
104*15dc779aSAndroid Build Coastguard Worker   WORD32 alpha_q_re[MAX_SHORT_WINDOWS][SFB_NUM_MAX];
105*15dc779aSAndroid Build Coastguard Worker   WORD32 alpha_q_im[MAX_SHORT_WINDOWS][SFB_NUM_MAX];
106*15dc779aSAndroid Build Coastguard Worker   UWORD8 cplx_pred_used[MAX_SHORT_WINDOWS][SFB_NUM_MAX];
107*15dc779aSAndroid Build Coastguard Worker 
108*15dc779aSAndroid Build Coastguard Worker   WORD32 alpha_q_re_prev[SFB_NUM_MAX];
109*15dc779aSAndroid Build Coastguard Worker   WORD32 alpha_q_im_prev[SFB_NUM_MAX];
110*15dc779aSAndroid Build Coastguard Worker   WORD32 dmx_re_prev[BLOCK_LEN_LONG];
111*15dc779aSAndroid Build Coastguard Worker 
112*15dc779aSAndroid Build Coastguard Worker   VOID *sbr_scratch_mem_base;
113*15dc779aSAndroid Build Coastguard Worker 
114*15dc779aSAndroid Build Coastguard Worker   WORD32 *coef_fix[MAX_NUM_CHANNELS];
115*15dc779aSAndroid Build Coastguard Worker   FLOAT32 *coef[MAX_NUM_CHANNELS];
116*15dc779aSAndroid Build Coastguard Worker   UWORD8 *ms_used[MAX_NUM_CHANNELS];
117*15dc779aSAndroid Build Coastguard Worker   WORD32 *coef_save[MAX_NUM_CHANNELS];
118*15dc779aSAndroid Build Coastguard Worker 
119*15dc779aSAndroid Build Coastguard Worker   WORD16 *factors[MAX_NUM_CHANNELS];
120*15dc779aSAndroid Build Coastguard Worker   UWORD8 *group_dis[MAX_NUM_CHANNELS];
121*15dc779aSAndroid Build Coastguard Worker 
122*15dc779aSAndroid Build Coastguard Worker   WORD32 tw_data_present[MAX_NUM_CHANNELS];
123*15dc779aSAndroid Build Coastguard Worker   WORD32 *tw_ratio[MAX_NUM_CHANNELS];
124*15dc779aSAndroid Build Coastguard Worker   ia_tns_frame_info_struct *pstr_tns[MAX_NUM_CHANNELS];
125*15dc779aSAndroid Build Coastguard Worker 
126*15dc779aSAndroid Build Coastguard Worker   ia_usac_lpd_decoder_handle str_tddec[MAX_NUM_CHANNELS];
127*15dc779aSAndroid Build Coastguard Worker 
128*15dc779aSAndroid Build Coastguard Worker   WORD32 arith_prev_n[MAX_NUM_CHANNELS];
129*15dc779aSAndroid Build Coastguard Worker   WORD8 c_prev[MAX_NUM_CHANNELS][1024 / 2 + 4];
130*15dc779aSAndroid Build Coastguard Worker   WORD8 c[MAX_NUM_CHANNELS][1024 / 2 + 4];
131*15dc779aSAndroid Build Coastguard Worker 
132*15dc779aSAndroid Build Coastguard Worker   WORD32 noise_filling_config[MAX_NUM_ELEMENTS];
133*15dc779aSAndroid Build Coastguard Worker   UWORD32 seed_value[MAX_NUM_CHANNELS];
134*15dc779aSAndroid Build Coastguard Worker   WORD32 present_chan;
135*15dc779aSAndroid Build Coastguard Worker 
136*15dc779aSAndroid Build Coastguard Worker   WORD32 fac_data_present[MAX_NUM_CHANNELS];
137*15dc779aSAndroid Build Coastguard Worker   WORD32 fac_data[MAX_NUM_CHANNELS][FAC_LENGTH + 1];
138*15dc779aSAndroid Build Coastguard Worker 
139*15dc779aSAndroid Build Coastguard Worker   ia_sfb_info_struct *pstr_sfb_info[MAX_NUM_CHANNELS];
140*15dc779aSAndroid Build Coastguard Worker   ia_sfb_info_struct str_only_long_info;
141*15dc779aSAndroid Build Coastguard Worker   ia_sfb_info_struct str_eight_short_info;
142*15dc779aSAndroid Build Coastguard Worker   ia_sfb_info_struct *pstr_usac_winmap[NUM_WIN_SEQ];
143*15dc779aSAndroid Build Coastguard Worker   WORD16 sfb_width_short[(1 << LEN_MAX_SFBS)];
144*15dc779aSAndroid Build Coastguard Worker 
145*15dc779aSAndroid Build Coastguard Worker   WORD32 ccfl;
146*15dc779aSAndroid Build Coastguard Worker   WORD32 len_subfrm;
147*15dc779aSAndroid Build Coastguard Worker   WORD32 num_subfrm;
148*15dc779aSAndroid Build Coastguard Worker 
149*15dc779aSAndroid Build Coastguard Worker   ia_handle_sbr_dec_inst_struct pstr_esbr_dec;
150*15dc779aSAndroid Build Coastguard Worker   ia_aac_dec_sbr_bitstream_struct esbr_bit_str[2];
151*15dc779aSAndroid Build Coastguard Worker 
152*15dc779aSAndroid Build Coastguard Worker   WORD32 x_ac_dec[1024];
153*15dc779aSAndroid Build Coastguard Worker   WORD32 scratch_buffer[1024];
154*15dc779aSAndroid Build Coastguard Worker 
155*15dc779aSAndroid Build Coastguard Worker   FLOAT32 synth_buf[1883];
156*15dc779aSAndroid Build Coastguard Worker   FLOAT32 exc_buf[1453];
157*15dc779aSAndroid Build Coastguard Worker   FLOAT32 lp_flt_coff[290];
158*15dc779aSAndroid Build Coastguard Worker   WORD32 pitch[25];
159*15dc779aSAndroid Build Coastguard Worker   FLOAT32 pitch_gain[25];
160*15dc779aSAndroid Build Coastguard Worker 
161*15dc779aSAndroid Build Coastguard Worker   UWORD16 *huffman_code_book_scl;
162*15dc779aSAndroid Build Coastguard Worker   UWORD32 *huffman_code_book_scl_index;
163*15dc779aSAndroid Build Coastguard Worker 
164*15dc779aSAndroid Build Coastguard Worker   WORD32 *tns_coeff3_32;
165*15dc779aSAndroid Build Coastguard Worker 
166*15dc779aSAndroid Build Coastguard Worker   WORD32 *tns_coeff4_32;
167*15dc779aSAndroid Build Coastguard Worker 
168*15dc779aSAndroid Build Coastguard Worker   WORD32 (*tns_max_bands_tbl_usac)[16][2];
169*15dc779aSAndroid Build Coastguard Worker 
170*15dc779aSAndroid Build Coastguard Worker   WORD16 sfb_width_long[(1 << LEN_MAX_SFBL)];
171*15dc779aSAndroid Build Coastguard Worker   WORD32 usac_flag;
172*15dc779aSAndroid Build Coastguard Worker 
173*15dc779aSAndroid Build Coastguard Worker   WORD32 arr_coef_fix[MAX_NUM_CHANNELS][(LN2 + LN2 / 8)];
174*15dc779aSAndroid Build Coastguard Worker   FLOAT32 arr_coef[MAX_NUM_CHANNELS][(LN2 + LN2 / 8)];
175*15dc779aSAndroid Build Coastguard Worker   WORD32 arr_coef_save[MAX_NUM_CHANNELS][(LN2 + LN2 / 8)];
176*15dc779aSAndroid Build Coastguard Worker   WORD16 arr_factors[MAX_NUM_CHANNELS][MAXBANDS];
177*15dc779aSAndroid Build Coastguard Worker   UWORD8 arr_group_dis[MAX_NUM_CHANNELS][NSHORT];
178*15dc779aSAndroid Build Coastguard Worker   WORD32 arr_tw_ratio[MAX_NUM_CHANNELS][NUM_TW_NODES];
179*15dc779aSAndroid Build Coastguard Worker   UWORD8 arr_ms_used[MAX_NUM_CHANNELS][MAXBANDS];
180*15dc779aSAndroid Build Coastguard Worker   ia_usac_lpd_decoder arr_str_tddec[MAX_NUM_CHANNELS];
181*15dc779aSAndroid Build Coastguard Worker   ia_tns_frame_info_struct arr_str_tns[MAX_NUM_CHANNELS];
182*15dc779aSAndroid Build Coastguard Worker 
183*15dc779aSAndroid Build Coastguard Worker   WORD32 enh_sbr;
184*15dc779aSAndroid Build Coastguard Worker   WORD32 esbr_hq;
185*15dc779aSAndroid Build Coastguard Worker   WORD32 enh_sbr_ps;
186*15dc779aSAndroid Build Coastguard Worker   WORD32 drc_config_changed;
187*15dc779aSAndroid Build Coastguard Worker   WORD32 core_mode;
188*15dc779aSAndroid Build Coastguard Worker   WORD32 frame_ok;
189*15dc779aSAndroid Build Coastguard Worker   WORD32 sbr_parse_err_flag;
190*15dc779aSAndroid Build Coastguard Worker   WORD32 last_frame_ok;
191*15dc779aSAndroid Build Coastguard Worker   WORD32 ec_flag;
192*15dc779aSAndroid Build Coastguard Worker   WORD32 first_frame;
193*15dc779aSAndroid Build Coastguard Worker   WORD32 sbr_parse_complete;
194*15dc779aSAndroid Build Coastguard Worker   UWORD8 max_sfb[2];
195*15dc779aSAndroid Build Coastguard Worker   WORD32 num_ch_out;
196*15dc779aSAndroid Build Coastguard Worker   WORD16 spec_scale[MAX_NUM_CHANNELS][128];
197*15dc779aSAndroid Build Coastguard Worker   ia_ec_state_str str_error_concealment[MAX_NUM_CHANNELS];
198*15dc779aSAndroid Build Coastguard Worker   ia_td_frame_data_struct *pstr_td_frame;
199*15dc779aSAndroid Build Coastguard Worker   WORD32 sampling_rate;
200*15dc779aSAndroid Build Coastguard Worker   WORD32 td_frame_prev_ec[MAX_NUM_CHANNELS];
201*15dc779aSAndroid Build Coastguard Worker   FLOAT32 lsp_coeff[5][ORDER];
202*15dc779aSAndroid Build Coastguard Worker   FLOAT32 lsf_adaptive_mean_cand[ORDER];
203*15dc779aSAndroid Build Coastguard Worker   FLOAT32 lsf_adaptive_mean[ORDER];
204*15dc779aSAndroid Build Coastguard Worker   FLOAT32 lpc4_lsf[ORDER];
205*15dc779aSAndroid Build Coastguard Worker   WORD32 bpf_control_info;
206*15dc779aSAndroid Build Coastguard Worker   WORD32 first_lpd_flag;
207*15dc779aSAndroid Build Coastguard Worker   WORD32 short_fac_flag;
208*15dc779aSAndroid Build Coastguard Worker   WORD32 core_mode_last;
209*15dc779aSAndroid Build Coastguard Worker   FLOAT32 stability_factor_old;
210*15dc779aSAndroid Build Coastguard Worker   WORD32 num_lost_lpd_frames[MAX_NUM_CHANNELS];
211*15dc779aSAndroid Build Coastguard Worker   WORD32 pitch_lag_old;
212*15dc779aSAndroid Build Coastguard Worker   WORD32 pitch_lag_frac_old;
213*15dc779aSAndroid Build Coastguard Worker   WORD32 pitch_lag;
214*15dc779aSAndroid Build Coastguard Worker   WORD32 pitch_lag_frac;
215*15dc779aSAndroid Build Coastguard Worker   WORD16 seed_ace;
216*15dc779aSAndroid Build Coastguard Worker   ia_ec_state_str *pstr_ec_state;
217*15dc779aSAndroid Build Coastguard Worker   FLOAT32 past_pitch_gain;
218*15dc779aSAndroid Build Coastguard Worker   FLOAT32 past_gain_code;
219*15dc779aSAndroid Build Coastguard Worker   FLOAT32 past_gain_tcx[MAX_NUM_CHANNELS];
220*15dc779aSAndroid Build Coastguard Worker   WORD32 tcx_spec_coeffs[MAX_NUM_CHANNELS][1280];
221*15dc779aSAndroid Build Coastguard Worker   FLOAT32 lspold_ec[ORDER];
222*15dc779aSAndroid Build Coastguard Worker   FLOAT32 lp_flt_coff_a_ec[ORDER + 1];
223*15dc779aSAndroid Build Coastguard Worker   ia_td_frame_data_struct td_frame_data_prev[MAX_NUM_CHANNELS];
224*15dc779aSAndroid Build Coastguard Worker   WORD32 last_shiftp;
225*15dc779aSAndroid Build Coastguard Worker } ia_usac_data_struct;
226*15dc779aSAndroid Build Coastguard Worker 
227*15dc779aSAndroid Build Coastguard Worker IA_ERRORCODE ixheaacd_tns_apply(ia_usac_data_struct *usac_data, WORD32 *spec,
228*15dc779aSAndroid Build Coastguard Worker                                 WORD32 nbands,
229*15dc779aSAndroid Build Coastguard Worker                                 ia_sfb_info_struct *pstr_sfb_info,
230*15dc779aSAndroid Build Coastguard Worker                                 ia_tns_frame_info_struct *pstr_tns);
231*15dc779aSAndroid Build Coastguard Worker 
232*15dc779aSAndroid Build Coastguard Worker WORD32 ixheaacd_calc_max_spectral_line_dec(WORD32 *ptr_tmp, WORD32 size);
233*15dc779aSAndroid Build Coastguard Worker 
234*15dc779aSAndroid Build Coastguard Worker WORD32 ixheaacd_calc_max_spectral_line_armv7(WORD32 *ptr_tmp, WORD32 size);
235*15dc779aSAndroid Build Coastguard Worker 
236*15dc779aSAndroid Build Coastguard Worker WORD32 ixheaacd_calc_max_spectral_line_armv8(WORD32 *ptr_tmp, WORD32 size);
237*15dc779aSAndroid Build Coastguard Worker 
238*15dc779aSAndroid Build Coastguard Worker WORD32 ixheaacd_tw_buff_update(ia_usac_data_struct *usac_data, WORD32 i,
239*15dc779aSAndroid Build Coastguard Worker                                ia_usac_lpd_decoder_handle st);
240*15dc779aSAndroid Build Coastguard Worker 
241*15dc779aSAndroid Build Coastguard Worker VOID ixheaacd_fix2flt_data(ia_usac_data_struct *usac_data,
242*15dc779aSAndroid Build Coastguard Worker                            ia_usac_lpd_decoder_handle st, WORD32 k);
243*15dc779aSAndroid Build Coastguard Worker 
244*15dc779aSAndroid Build Coastguard Worker VOID ixheaacd_td_frm_dec(ia_usac_data_struct *usac_data, WORD32 k, WORD32 mod0);
245*15dc779aSAndroid Build Coastguard Worker 
246*15dc779aSAndroid Build Coastguard Worker WORD32 ixheaacd_tw_frame_dec(ia_usac_data_struct *usac_data, WORD32 i_ch,
247*15dc779aSAndroid Build Coastguard Worker                              FLOAT32 sample_pos[], FLOAT32 tw_trans_len[],
248*15dc779aSAndroid Build Coastguard Worker                              WORD32 tw_start_stop[]);
249*15dc779aSAndroid Build Coastguard Worker 
250*15dc779aSAndroid Build Coastguard Worker WORD32 ixheaacd_fd_frm_dec(ia_usac_data_struct *usac_data, WORD32 i_ch);
251*15dc779aSAndroid Build Coastguard Worker 
252*15dc779aSAndroid Build Coastguard Worker VOID ixheaacd_acelp_mdct(WORD32 *ptr_in, WORD32 *ptr_out, WORD32 *preshift, WORD32 length,
253*15dc779aSAndroid Build Coastguard Worker                          WORD32 *ptr_scratch);
254*15dc779aSAndroid Build Coastguard Worker 
255*15dc779aSAndroid Build Coastguard Worker VOID ixheaacd_acelp_mdct_main(ia_usac_data_struct *usac_data, WORD32 *x, WORD32 *y, WORD32 l,
256*15dc779aSAndroid Build Coastguard Worker                               WORD32 m, WORD32 *preshift);
257*15dc779aSAndroid Build Coastguard Worker 
258*15dc779aSAndroid Build Coastguard Worker VOID ixheaacd_fr_alias_cnx_fix(WORD32 *x_in, WORD32 len_subfr, WORD32 lfac, WORD32 *iaq,
259*15dc779aSAndroid Build Coastguard Worker                                WORD32 *izir, WORD32 *ifacdec, WORD8 *qshift1, WORD8 qshift2,
260*15dc779aSAndroid Build Coastguard Worker                                WORD8 qshift3, WORD32 *preshift, WORD32 *ptr_scratch);
261*15dc779aSAndroid Build Coastguard Worker 
262*15dc779aSAndroid Build Coastguard Worker VOID ixheaacd_fwd_alias_cancel_tool(ia_usac_data_struct *usac_data,
263*15dc779aSAndroid Build Coastguard Worker                                     ia_td_frame_data_struct *pstr_td_frame_data,
264*15dc779aSAndroid Build Coastguard Worker                                     WORD32 fac_length, FLOAT32 *iaq, WORD32 gain);
265*15dc779aSAndroid Build Coastguard Worker 
266*15dc779aSAndroid Build Coastguard Worker WORD32 ixheaacd_lpd_bpf_fix(ia_usac_data_struct *usac_data, WORD32 is_short,
267*15dc779aSAndroid Build Coastguard Worker                             FLOAT32 out_buffer[],
268*15dc779aSAndroid Build Coastguard Worker                             ia_usac_lpd_decoder_handle st);
269*15dc779aSAndroid Build Coastguard Worker 
270*15dc779aSAndroid Build Coastguard Worker VOID ixheaacd_reset_acelp_data_fix(ia_usac_data_struct *usac_data,
271*15dc779aSAndroid Build Coastguard Worker                                    ia_usac_lpd_decoder_handle st,
272*15dc779aSAndroid Build Coastguard Worker                                    WORD32 *ptr_ola_buff, WORD32 last_was_short,
273*15dc779aSAndroid Build Coastguard Worker                                    WORD32 tw_mdct);
274*15dc779aSAndroid Build Coastguard Worker 
275*15dc779aSAndroid Build Coastguard Worker FLOAT32 ixheaacd_randomsign(UWORD32 *seed);
276*15dc779aSAndroid Build Coastguard Worker #endif
277