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