xref: /aosp_15_r20/external/libxaac/decoder/ixheaacd_function_selector.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_FUNCTION_SELECTOR_H_
21*15dc779aSAndroid Build Coastguard Worker #define _IXHEAACD_FUNCTION_SELECTOR_H_
22*15dc779aSAndroid Build Coastguard Worker 
23*15dc779aSAndroid Build Coastguard Worker #include <stdio.h>
24*15dc779aSAndroid Build Coastguard Worker #include <string.h>
25*15dc779aSAndroid Build Coastguard Worker #include "ixheaacd_sbr_common.h"
26*15dc779aSAndroid Build Coastguard Worker #include "ixheaac_type_def.h"
27*15dc779aSAndroid Build Coastguard Worker 
28*15dc779aSAndroid Build Coastguard Worker #include "ixheaac_constants.h"
29*15dc779aSAndroid Build Coastguard Worker #include "ixheaacd_intrinsics.h"
30*15dc779aSAndroid Build Coastguard Worker #include "ixheaacd_common_rom.h"
31*15dc779aSAndroid Build Coastguard Worker #include "ixheaacd_sbrdecsettings.h"
32*15dc779aSAndroid Build Coastguard Worker #include "ixheaacd_bitbuffer.h"
33*15dc779aSAndroid Build Coastguard Worker #include "ixheaacd_defines.h"
34*15dc779aSAndroid Build Coastguard Worker 
35*15dc779aSAndroid Build Coastguard Worker #include "ixheaacd_pns.h"
36*15dc779aSAndroid Build Coastguard Worker 
37*15dc779aSAndroid Build Coastguard Worker #include "ixheaacd_aac_rom.h"
38*15dc779aSAndroid Build Coastguard Worker #include "ixheaacd_pulsedata.h"
39*15dc779aSAndroid Build Coastguard Worker 
40*15dc779aSAndroid Build Coastguard Worker #include "ixheaacd_drc_data_struct.h"
41*15dc779aSAndroid Build Coastguard Worker 
42*15dc779aSAndroid Build Coastguard Worker #include "ixheaacd_lt_predict.h"
43*15dc779aSAndroid Build Coastguard Worker 
44*15dc779aSAndroid Build Coastguard Worker #include "ixheaacd_cnst.h"
45*15dc779aSAndroid Build Coastguard Worker #include "ixheaacd_ec_defines.h"
46*15dc779aSAndroid Build Coastguard Worker #include "ixheaacd_ec_struct_def.h"
47*15dc779aSAndroid Build Coastguard Worker #include "ixheaacd_channelinfo.h"
48*15dc779aSAndroid Build Coastguard Worker #include "ixheaacd_drc_dec.h"
49*15dc779aSAndroid Build Coastguard Worker 
50*15dc779aSAndroid Build Coastguard Worker #include "ixheaacd_sbrdecoder.h"
51*15dc779aSAndroid Build Coastguard Worker #include "ixheaacd_sbr_scale.h"
52*15dc779aSAndroid Build Coastguard Worker #include "ixheaacd_lpp_tran.h"
53*15dc779aSAndroid Build Coastguard Worker #include "ixheaacd_env_extr_part.h"
54*15dc779aSAndroid Build Coastguard Worker #include "ixheaacd_sbr_rom.h"
55*15dc779aSAndroid Build Coastguard Worker #include "ixheaacd_hybrid.h"
56*15dc779aSAndroid Build Coastguard Worker #include "ixheaacd_ps_dec.h"
57*15dc779aSAndroid Build Coastguard Worker #include "ixheaacd_env_extr.h"
58*15dc779aSAndroid Build Coastguard Worker 
59*15dc779aSAndroid Build Coastguard Worker #include "ixheaacd_basic_funcs.h"
60*15dc779aSAndroid Build Coastguard Worker 
61*15dc779aSAndroid Build Coastguard Worker extern WORD32 (*ixheaacd_fix_div)(WORD32, WORD32);
62*15dc779aSAndroid Build Coastguard Worker extern VOID (*ixheaacd_covariance_matrix_calc)(WORD32 *,
63*15dc779aSAndroid Build Coastguard Worker                                                ia_lpp_trans_cov_matrix *,
64*15dc779aSAndroid Build Coastguard Worker                                                WORD32, WORD32);
65*15dc779aSAndroid Build Coastguard Worker 
66*15dc779aSAndroid Build Coastguard Worker extern VOID(*ixheaacd_covariance_matrix_calc_960)(WORD32 *,
67*15dc779aSAndroid Build Coastguard Worker                                                   ia_lpp_trans_cov_matrix *,
68*15dc779aSAndroid Build Coastguard Worker                                                   WORD32, WORD32);
69*15dc779aSAndroid Build Coastguard Worker 
70*15dc779aSAndroid Build Coastguard Worker extern VOID (*ixheaacd_covariance_matrix_calc_2)(
71*15dc779aSAndroid Build Coastguard Worker     ia_lpp_trans_cov_matrix *, WORD32 *, WORD32, WORD16);
72*15dc779aSAndroid Build Coastguard Worker extern VOID (*ixheaacd_over_lap_add1)(WORD32 *, WORD32 *, WORD32 *,
73*15dc779aSAndroid Build Coastguard Worker                                       const WORD16 *, WORD16, WORD16, WORD16);
74*15dc779aSAndroid Build Coastguard Worker extern VOID (*ixheaacd_over_lap_add2)(WORD32 *, WORD32 *, WORD32 *,
75*15dc779aSAndroid Build Coastguard Worker                                       const WORD16 *, WORD16, WORD16, WORD16);
76*15dc779aSAndroid Build Coastguard Worker 
77*15dc779aSAndroid Build Coastguard Worker extern VOID (*ixheaacd_decorr_filter1)(ia_ps_dec_struct *,
78*15dc779aSAndroid Build Coastguard Worker                                        ia_ps_tables_struct *, WORD16 *);
79*15dc779aSAndroid Build Coastguard Worker 
80*15dc779aSAndroid Build Coastguard Worker extern VOID (*ixheaacd_decorr_filter2)(ia_ps_dec_struct *, WORD32 *, WORD32 *,
81*15dc779aSAndroid Build Coastguard Worker                                        WORD32 *, WORD32 *,
82*15dc779aSAndroid Build Coastguard Worker                                        ia_ps_tables_struct *, WORD16 *);
83*15dc779aSAndroid Build Coastguard Worker 
84*15dc779aSAndroid Build Coastguard Worker extern WORD32 (*ixheaacd_divide16_pos)(WORD32, WORD32);
85*15dc779aSAndroid Build Coastguard Worker 
86*15dc779aSAndroid Build Coastguard Worker extern VOID (*ixheaacd_decorrelation)(ia_ps_dec_struct *, WORD32 *, WORD32 *,
87*15dc779aSAndroid Build Coastguard Worker                                       WORD32 *, WORD32 *,
88*15dc779aSAndroid Build Coastguard Worker                                       ia_ps_tables_struct *);
89*15dc779aSAndroid Build Coastguard Worker 
90*15dc779aSAndroid Build Coastguard Worker extern VOID (*ixheaacd_apply_rot)(ia_ps_dec_struct *, WORD32 *, WORD32 *,
91*15dc779aSAndroid Build Coastguard Worker                                   WORD32 *, WORD32 *, ia_sbr_tables_struct *,
92*15dc779aSAndroid Build Coastguard Worker                                   const WORD16 *);
93*15dc779aSAndroid Build Coastguard Worker 
94*15dc779aSAndroid Build Coastguard Worker extern VOID (*ixheaacd_conv_ergtoamplitudelp)(WORD32, WORD16, WORD16 *,
95*15dc779aSAndroid Build Coastguard Worker                                               WORD16 *, WORD16 *, WORD16 *);
96*15dc779aSAndroid Build Coastguard Worker 
97*15dc779aSAndroid Build Coastguard Worker extern VOID (*ixheaacd_conv_ergtoamplitude)(WORD32, WORD16, WORD16 *, WORD16 *,
98*15dc779aSAndroid Build Coastguard Worker                                             WORD16 *, WORD16 *);
99*15dc779aSAndroid Build Coastguard Worker 
100*15dc779aSAndroid Build Coastguard Worker extern VOID (*ixheaacd_adjust_scale)(WORD32 **, WORD32 **, WORD32, WORD32,
101*15dc779aSAndroid Build Coastguard Worker                                      WORD32, WORD32, WORD32, FLAG);
102*15dc779aSAndroid Build Coastguard Worker 
103*15dc779aSAndroid Build Coastguard Worker extern WORD16 (*ixheaacd_ixheaacd_expsubbandsamples)(WORD32 **, WORD32 **,
104*15dc779aSAndroid Build Coastguard Worker                                                      WORD32, WORD32, WORD32,
105*15dc779aSAndroid Build Coastguard Worker                                                      WORD32, FLAG);
106*15dc779aSAndroid Build Coastguard Worker 
107*15dc779aSAndroid Build Coastguard Worker extern VOID (*ixheaacd_enery_calc_per_subband)(WORD32, WORD32, WORD32, WORD32,
108*15dc779aSAndroid Build Coastguard Worker                                                WORD32, WORD16 *, FLAG,
109*15dc779aSAndroid Build Coastguard Worker                                                ia_sbr_tables_struct *,
110*15dc779aSAndroid Build Coastguard Worker                                                WORD32 *);
111*15dc779aSAndroid Build Coastguard Worker 
112*15dc779aSAndroid Build Coastguard Worker extern VOID (*ixheaacd_harm_idx_zerotwolp)(WORD32 *, WORD16 *, WORD, WORD16 *,
113*15dc779aSAndroid Build Coastguard Worker                                            const WORD32 *, WORD16 *, WORD, FLAG,
114*15dc779aSAndroid Build Coastguard Worker                                            WORD32);
115*15dc779aSAndroid Build Coastguard Worker 
116*15dc779aSAndroid Build Coastguard Worker extern VOID (*ixheaacd_tns_ar_filter_fixed)(WORD32 *, WORD32, WORD32, WORD32 *,
117*15dc779aSAndroid Build Coastguard Worker                                             WORD32, WORD32, WORD);
118*15dc779aSAndroid Build Coastguard Worker 
119*15dc779aSAndroid Build Coastguard Worker extern VOID (*ixheaacd_tns_ar_filter)(WORD32 *, WORD32, WORD32, WORD16 *,
120*15dc779aSAndroid Build Coastguard Worker                                       WORD32, WORD32, WORD, WORD32 *);
121*15dc779aSAndroid Build Coastguard Worker 
122*15dc779aSAndroid Build Coastguard Worker extern VOID (*ixheaacd_tns_parcor_lpc_convert)(WORD16 *, WORD16 *, WORD16 *,
123*15dc779aSAndroid Build Coastguard Worker                                                WORD);
124*15dc779aSAndroid Build Coastguard Worker 
125*15dc779aSAndroid Build Coastguard Worker extern WORD32 (*ixheaacd_calc_max_spectral_line)(WORD32 *, WORD32);
126*15dc779aSAndroid Build Coastguard Worker 
127*15dc779aSAndroid Build Coastguard Worker extern VOID (*ixheaacd_post_twiddle)(WORD32[], WORD32[],
128*15dc779aSAndroid Build Coastguard Worker                                      ia_aac_dec_imdct_tables_struct *, WORD);
129*15dc779aSAndroid Build Coastguard Worker 
130*15dc779aSAndroid Build Coastguard Worker extern VOID (*ixheaacd_post_twid_overlap_add)(WORD32[], WORD32[],
131*15dc779aSAndroid Build Coastguard Worker                                               ia_aac_dec_imdct_tables_struct *,
132*15dc779aSAndroid Build Coastguard Worker                                               WORD, WORD32 *, WORD16,
133*15dc779aSAndroid Build Coastguard Worker                                               const WORD16 *, WORD16);
134*15dc779aSAndroid Build Coastguard Worker 
135*15dc779aSAndroid Build Coastguard Worker extern VOID (*ixheaacd_neg_shift_spec)(WORD32 *, WORD32 *, WORD16, WORD16);
136*15dc779aSAndroid Build Coastguard Worker 
137*15dc779aSAndroid Build Coastguard Worker extern VOID (*ixheaacd_spec_to_overlapbuf)(WORD32 *, WORD32 *, WORD32, WORD32);
138*15dc779aSAndroid Build Coastguard Worker 
139*15dc779aSAndroid Build Coastguard Worker extern VOID (*ixheaacd_overlap_buf_out)(WORD32 *, WORD32 *, WORD32,
140*15dc779aSAndroid Build Coastguard Worker                                         const WORD16);
141*15dc779aSAndroid Build Coastguard Worker 
142*15dc779aSAndroid Build Coastguard Worker extern VOID (*ixheaacd_overlap_out_copy)(WORD32 *, WORD32 *, WORD32 *,
143*15dc779aSAndroid Build Coastguard Worker                                          const WORD16, WORD16);
144*15dc779aSAndroid Build Coastguard Worker 
145*15dc779aSAndroid Build Coastguard Worker extern VOID (*ixheaacd_pretwiddle_compute)(WORD32 *, WORD32 *, WORD32 *,
146*15dc779aSAndroid Build Coastguard Worker                                            ia_aac_dec_imdct_tables_struct *,
147*15dc779aSAndroid Build Coastguard Worker                                            WORD, WORD32);
148*15dc779aSAndroid Build Coastguard Worker 
149*15dc779aSAndroid Build Coastguard Worker extern VOID(*ixheaacd_pretwiddle_compute_960)(WORD32 *, WORD32 *, WORD32 *,
150*15dc779aSAndroid Build Coastguard Worker                                               ia_aac_dec_imdct_tables_struct *,
151*15dc779aSAndroid Build Coastguard Worker                                               WORD, WORD32);
152*15dc779aSAndroid Build Coastguard Worker 
153*15dc779aSAndroid Build Coastguard Worker extern VOID (*ixheaacd_imdct_using_fft)(ia_aac_dec_imdct_tables_struct *,
154*15dc779aSAndroid Build Coastguard Worker                                         WORD32, WORD32 *, WORD32 *);
155*15dc779aSAndroid Build Coastguard Worker 
156*15dc779aSAndroid Build Coastguard Worker extern VOID (*ixheaacd_complex_fft_p2)(WORD32 *xr, WORD32 *xi, WORD32 nlength,
157*15dc779aSAndroid Build Coastguard Worker                                        WORD32 fft_mode, WORD32 *preshift);
158*15dc779aSAndroid Build Coastguard Worker 
159*15dc779aSAndroid Build Coastguard Worker extern VOID(*ixheaacd_mps_complex_fft_64)(WORD32 *ptr_x, WORD32 *fin_re,
160*15dc779aSAndroid Build Coastguard Worker                                           WORD32 *fin_im, WORD32 nlength);
161*15dc779aSAndroid Build Coastguard Worker 
162*15dc779aSAndroid Build Coastguard Worker extern VOID(*ixheaacd_mps_synt_pre_twiddle)(FLOAT32 *ptr_in,
163*15dc779aSAndroid Build Coastguard Worker                                             const FLOAT32 *table_re,
164*15dc779aSAndroid Build Coastguard Worker                                             const FLOAT32 *table_im,
165*15dc779aSAndroid Build Coastguard Worker                                             WORD32 resolution);
166*15dc779aSAndroid Build Coastguard Worker 
167*15dc779aSAndroid Build Coastguard Worker extern VOID(*ixheaacd_mps_synt_post_twiddle)(WORD32 *ptr_in,
168*15dc779aSAndroid Build Coastguard Worker                                              const WORD32 *table_re,
169*15dc779aSAndroid Build Coastguard Worker                                              const WORD32 *table_im,
170*15dc779aSAndroid Build Coastguard Worker                                              WORD32 resolution);
171*15dc779aSAndroid Build Coastguard Worker 
172*15dc779aSAndroid Build Coastguard Worker extern VOID (*ixheaacd_calc_pre_twid)(WORD32 *ptr_x, WORD32 *r_ptr,
173*15dc779aSAndroid Build Coastguard Worker                                       WORD32 *i_ptr, WORD32 nlength,
174*15dc779aSAndroid Build Coastguard Worker                                       const WORD32 *cos_ptr,
175*15dc779aSAndroid Build Coastguard Worker                                       const WORD32 *sin_ptr);
176*15dc779aSAndroid Build Coastguard Worker 
177*15dc779aSAndroid Build Coastguard Worker extern VOID (*ixheaacd_calc_post_twid)(WORD32 *ptr_x, WORD32 *r_ptr,
178*15dc779aSAndroid Build Coastguard Worker                                        WORD32 *i_ptr, WORD32 nlength,
179*15dc779aSAndroid Build Coastguard Worker                                        const WORD32 *cos_ptr,
180*15dc779aSAndroid Build Coastguard Worker                                        const WORD32 *sin_ptr);
181*15dc779aSAndroid Build Coastguard Worker 
182*15dc779aSAndroid Build Coastguard Worker extern VOID(*ixheaacd_mps_synt_post_fft_twiddle)(
183*15dc779aSAndroid Build Coastguard Worker     WORD32 resolution, FLOAT32 *fin_re, FLOAT32 *fin_im, const FLOAT32 *table_re,
184*15dc779aSAndroid Build Coastguard Worker     const FLOAT32 *table_im, FLOAT32 *state);
185*15dc779aSAndroid Build Coastguard Worker 
186*15dc779aSAndroid Build Coastguard Worker extern VOID (*ixheaacd_mps_synt_out_calc)(WORD32 resolution, FLOAT32 *out,
187*15dc779aSAndroid Build Coastguard Worker                                           FLOAT32 *state,
188*15dc779aSAndroid Build Coastguard Worker                                           const FLOAT32 *filter_coeff);
189*15dc779aSAndroid Build Coastguard Worker 
190*15dc779aSAndroid Build Coastguard Worker extern VOID (*ixheaacd_fft_15_ld)(WORD32 *inp, WORD32 *op, WORD32 *fft3out,
191*15dc779aSAndroid Build Coastguard Worker                                   UWORD8 *re_arr_tab_sml_240_ptr);
192*15dc779aSAndroid Build Coastguard Worker 
193*15dc779aSAndroid Build Coastguard Worker extern VOID(*ixheaacd_fft_15_960_dec)(WORD32 *inp, WORD32 *op, WORD32 *fft3out,
194*15dc779aSAndroid Build Coastguard Worker                                       UWORD8 *re_arr_tab_sml_480_ptr);
195*15dc779aSAndroid Build Coastguard Worker 
196*15dc779aSAndroid Build Coastguard Worker extern VOID (*ixheaacd_aac_ld_dec_rearrange)(WORD32 *ip, WORD32 *op,
197*15dc779aSAndroid Build Coastguard Worker                                              WORD32 mdct_len_2,
198*15dc779aSAndroid Build Coastguard Worker                                              UWORD8 *re_arr_tab);
199*15dc779aSAndroid Build Coastguard Worker 
200*15dc779aSAndroid Build Coastguard Worker extern VOID(*ixheaacd_aac_ld_dec_rearrange_960)(WORD32 *ip, WORD32 *op,
201*15dc779aSAndroid Build Coastguard Worker                                                 WORD32 mdct_len_2,
202*15dc779aSAndroid Build Coastguard Worker                                                 WORD16 *re_arr_tab);
203*15dc779aSAndroid Build Coastguard Worker 
204*15dc779aSAndroid Build Coastguard Worker extern VOID (*ixheaacd_fft32x32_ld)(
205*15dc779aSAndroid Build Coastguard Worker     ia_aac_dec_imdct_tables_struct *imdct_tables_ptr, WORD32 npoints,
206*15dc779aSAndroid Build Coastguard Worker     WORD32 *ptr_x, WORD32 *ptr_y);
207*15dc779aSAndroid Build Coastguard Worker 
208*15dc779aSAndroid Build Coastguard Worker extern VOID (*ixheaacd_fft32x32_ld2)(
209*15dc779aSAndroid Build Coastguard Worker     ia_aac_dec_imdct_tables_struct *imdct_tables_ptr, WORD32 npoints,
210*15dc779aSAndroid Build Coastguard Worker     WORD32 *ptr_x, WORD32 *ptr_y);
211*15dc779aSAndroid Build Coastguard Worker 
212*15dc779aSAndroid Build Coastguard Worker extern VOID(*ixheaacd_fft32_points_960)(
213*15dc779aSAndroid Build Coastguard Worker     ia_aac_dec_imdct_tables_struct *imdct_tables_ptr, WORD32 npoints,
214*15dc779aSAndroid Build Coastguard Worker     WORD32 *ptr_x, WORD32 *ptr_y);
215*15dc779aSAndroid Build Coastguard Worker 
216*15dc779aSAndroid Build Coastguard Worker extern WORD16 (*ixheaacd_neg_expo_inc)(WORD16 neg_expo);
217*15dc779aSAndroid Build Coastguard Worker 
218*15dc779aSAndroid Build Coastguard Worker extern VOID (*ixheaacd_inv_dit_fft_8pt)(WORD32 *x, WORD32 *real, WORD32 *imag);
219*15dc779aSAndroid Build Coastguard Worker 
220*15dc779aSAndroid Build Coastguard Worker extern VOID (*ixheaacd_scale_factor_process)(
221*15dc779aSAndroid Build Coastguard Worker     WORD32 *x_invquant, WORD16 *scale_fact, WORD no_band, WORD8 *width,
222*15dc779aSAndroid Build Coastguard Worker     WORD32 *scale_tables_ptr, WORD32 total_channels, WORD32 object_type,
223*15dc779aSAndroid Build Coastguard Worker     WORD32 aac_sf_data_resil_flag);
224*15dc779aSAndroid Build Coastguard Worker 
225*15dc779aSAndroid Build Coastguard Worker #endif /* _IXHEAACD_FUNCTION_SELECTOR_H_ */
226