1 /****************************************************************************** 2 * * 3 * Copyright (C) 2018 The Android Open Source Project 4 * 5 * Licensed under the Apache License, Version 2.0 (the "License"); 6 * you may not use this file except in compliance with the License. 7 * You may obtain a copy of the License at: 8 * 9 * http://www.apache.org/licenses/LICENSE-2.0 10 * 11 * Unless required by applicable law or agreed to in writing, software 12 * distributed under the License is distributed on an "AS IS" BASIS, 13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 * See the License for the specific language governing permissions and 15 * limitations under the License. 16 * 17 ***************************************************************************** 18 * Originally developed and contributed by Ittiam Systems Pvt. Ltd, Bangalore 19 */ 20 #ifndef _IXHEAACD_FUNCTION_SELECTOR_H_ 21 #define _IXHEAACD_FUNCTION_SELECTOR_H_ 22 23 #include <stdio.h> 24 #include <string.h> 25 #include "ixheaacd_sbr_common.h" 26 #include "ixheaac_type_def.h" 27 28 #include "ixheaac_constants.h" 29 #include "ixheaacd_intrinsics.h" 30 #include "ixheaacd_common_rom.h" 31 #include "ixheaacd_sbrdecsettings.h" 32 #include "ixheaacd_bitbuffer.h" 33 #include "ixheaacd_defines.h" 34 35 #include "ixheaacd_pns.h" 36 37 #include "ixheaacd_aac_rom.h" 38 #include "ixheaacd_pulsedata.h" 39 40 #include "ixheaacd_drc_data_struct.h" 41 42 #include "ixheaacd_lt_predict.h" 43 44 #include "ixheaacd_cnst.h" 45 #include "ixheaacd_ec_defines.h" 46 #include "ixheaacd_ec_struct_def.h" 47 #include "ixheaacd_channelinfo.h" 48 #include "ixheaacd_drc_dec.h" 49 50 #include "ixheaacd_sbrdecoder.h" 51 #include "ixheaacd_sbr_scale.h" 52 #include "ixheaacd_lpp_tran.h" 53 #include "ixheaacd_env_extr_part.h" 54 #include "ixheaacd_sbr_rom.h" 55 #include "ixheaacd_hybrid.h" 56 #include "ixheaacd_ps_dec.h" 57 #include "ixheaacd_env_extr.h" 58 59 #include "ixheaacd_basic_funcs.h" 60 61 extern WORD32 (*ixheaacd_fix_div)(WORD32, WORD32); 62 extern VOID (*ixheaacd_covariance_matrix_calc)(WORD32 *, 63 ia_lpp_trans_cov_matrix *, 64 WORD32, WORD32); 65 66 extern VOID(*ixheaacd_covariance_matrix_calc_960)(WORD32 *, 67 ia_lpp_trans_cov_matrix *, 68 WORD32, WORD32); 69 70 extern VOID (*ixheaacd_covariance_matrix_calc_2)( 71 ia_lpp_trans_cov_matrix *, WORD32 *, WORD32, WORD16); 72 extern VOID (*ixheaacd_over_lap_add1)(WORD32 *, WORD32 *, WORD32 *, 73 const WORD16 *, WORD16, WORD16, WORD16); 74 extern VOID (*ixheaacd_over_lap_add2)(WORD32 *, WORD32 *, WORD32 *, 75 const WORD16 *, WORD16, WORD16, WORD16); 76 77 extern VOID (*ixheaacd_decorr_filter1)(ia_ps_dec_struct *, 78 ia_ps_tables_struct *, WORD16 *); 79 80 extern VOID (*ixheaacd_decorr_filter2)(ia_ps_dec_struct *, WORD32 *, WORD32 *, 81 WORD32 *, WORD32 *, 82 ia_ps_tables_struct *, WORD16 *); 83 84 extern WORD32 (*ixheaacd_divide16_pos)(WORD32, WORD32); 85 86 extern VOID (*ixheaacd_decorrelation)(ia_ps_dec_struct *, WORD32 *, WORD32 *, 87 WORD32 *, WORD32 *, 88 ia_ps_tables_struct *); 89 90 extern VOID (*ixheaacd_apply_rot)(ia_ps_dec_struct *, WORD32 *, WORD32 *, 91 WORD32 *, WORD32 *, ia_sbr_tables_struct *, 92 const WORD16 *); 93 94 extern VOID (*ixheaacd_conv_ergtoamplitudelp)(WORD32, WORD16, WORD16 *, 95 WORD16 *, WORD16 *, WORD16 *); 96 97 extern VOID (*ixheaacd_conv_ergtoamplitude)(WORD32, WORD16, WORD16 *, WORD16 *, 98 WORD16 *, WORD16 *); 99 100 extern VOID (*ixheaacd_adjust_scale)(WORD32 **, WORD32 **, WORD32, WORD32, 101 WORD32, WORD32, WORD32, FLAG); 102 103 extern WORD16 (*ixheaacd_ixheaacd_expsubbandsamples)(WORD32 **, WORD32 **, 104 WORD32, WORD32, WORD32, 105 WORD32, FLAG); 106 107 extern VOID (*ixheaacd_enery_calc_per_subband)(WORD32, WORD32, WORD32, WORD32, 108 WORD32, WORD16 *, FLAG, 109 ia_sbr_tables_struct *, 110 WORD32 *); 111 112 extern VOID (*ixheaacd_harm_idx_zerotwolp)(WORD32 *, WORD16 *, WORD, WORD16 *, 113 const WORD32 *, WORD16 *, WORD, FLAG, 114 WORD32); 115 116 extern VOID (*ixheaacd_tns_ar_filter_fixed)(WORD32 *, WORD32, WORD32, WORD32 *, 117 WORD32, WORD32, WORD); 118 119 extern VOID (*ixheaacd_tns_ar_filter)(WORD32 *, WORD32, WORD32, WORD16 *, 120 WORD32, WORD32, WORD, WORD32 *); 121 122 extern VOID (*ixheaacd_tns_parcor_lpc_convert)(WORD16 *, WORD16 *, WORD16 *, 123 WORD); 124 125 extern WORD32 (*ixheaacd_calc_max_spectral_line)(WORD32 *, WORD32); 126 127 extern VOID (*ixheaacd_post_twiddle)(WORD32[], WORD32[], 128 ia_aac_dec_imdct_tables_struct *, WORD); 129 130 extern VOID (*ixheaacd_post_twid_overlap_add)(WORD32[], WORD32[], 131 ia_aac_dec_imdct_tables_struct *, 132 WORD, WORD32 *, WORD16, 133 const WORD16 *, WORD16); 134 135 extern VOID (*ixheaacd_neg_shift_spec)(WORD32 *, WORD32 *, WORD16, WORD16); 136 137 extern VOID (*ixheaacd_spec_to_overlapbuf)(WORD32 *, WORD32 *, WORD32, WORD32); 138 139 extern VOID (*ixheaacd_overlap_buf_out)(WORD32 *, WORD32 *, WORD32, 140 const WORD16); 141 142 extern VOID (*ixheaacd_overlap_out_copy)(WORD32 *, WORD32 *, WORD32 *, 143 const WORD16, WORD16); 144 145 extern VOID (*ixheaacd_pretwiddle_compute)(WORD32 *, WORD32 *, WORD32 *, 146 ia_aac_dec_imdct_tables_struct *, 147 WORD, WORD32); 148 149 extern VOID(*ixheaacd_pretwiddle_compute_960)(WORD32 *, WORD32 *, WORD32 *, 150 ia_aac_dec_imdct_tables_struct *, 151 WORD, WORD32); 152 153 extern VOID (*ixheaacd_imdct_using_fft)(ia_aac_dec_imdct_tables_struct *, 154 WORD32, WORD32 *, WORD32 *); 155 156 extern VOID (*ixheaacd_complex_fft_p2)(WORD32 *xr, WORD32 *xi, WORD32 nlength, 157 WORD32 fft_mode, WORD32 *preshift); 158 159 extern VOID(*ixheaacd_mps_complex_fft_64)(WORD32 *ptr_x, WORD32 *fin_re, 160 WORD32 *fin_im, WORD32 nlength); 161 162 extern VOID(*ixheaacd_mps_synt_pre_twiddle)(FLOAT32 *ptr_in, 163 const FLOAT32 *table_re, 164 const FLOAT32 *table_im, 165 WORD32 resolution); 166 167 extern VOID(*ixheaacd_mps_synt_post_twiddle)(WORD32 *ptr_in, 168 const WORD32 *table_re, 169 const WORD32 *table_im, 170 WORD32 resolution); 171 172 extern VOID (*ixheaacd_calc_pre_twid)(WORD32 *ptr_x, WORD32 *r_ptr, 173 WORD32 *i_ptr, WORD32 nlength, 174 const WORD32 *cos_ptr, 175 const WORD32 *sin_ptr); 176 177 extern VOID (*ixheaacd_calc_post_twid)(WORD32 *ptr_x, WORD32 *r_ptr, 178 WORD32 *i_ptr, WORD32 nlength, 179 const WORD32 *cos_ptr, 180 const WORD32 *sin_ptr); 181 182 extern VOID(*ixheaacd_mps_synt_post_fft_twiddle)( 183 WORD32 resolution, FLOAT32 *fin_re, FLOAT32 *fin_im, const FLOAT32 *table_re, 184 const FLOAT32 *table_im, FLOAT32 *state); 185 186 extern VOID (*ixheaacd_mps_synt_out_calc)(WORD32 resolution, FLOAT32 *out, 187 FLOAT32 *state, 188 const FLOAT32 *filter_coeff); 189 190 extern VOID (*ixheaacd_fft_15_ld)(WORD32 *inp, WORD32 *op, WORD32 *fft3out, 191 UWORD8 *re_arr_tab_sml_240_ptr); 192 193 extern VOID(*ixheaacd_fft_15_960_dec)(WORD32 *inp, WORD32 *op, WORD32 *fft3out, 194 UWORD8 *re_arr_tab_sml_480_ptr); 195 196 extern VOID (*ixheaacd_aac_ld_dec_rearrange)(WORD32 *ip, WORD32 *op, 197 WORD32 mdct_len_2, 198 UWORD8 *re_arr_tab); 199 200 extern VOID(*ixheaacd_aac_ld_dec_rearrange_960)(WORD32 *ip, WORD32 *op, 201 WORD32 mdct_len_2, 202 WORD16 *re_arr_tab); 203 204 extern VOID (*ixheaacd_fft32x32_ld)( 205 ia_aac_dec_imdct_tables_struct *imdct_tables_ptr, WORD32 npoints, 206 WORD32 *ptr_x, WORD32 *ptr_y); 207 208 extern VOID (*ixheaacd_fft32x32_ld2)( 209 ia_aac_dec_imdct_tables_struct *imdct_tables_ptr, WORD32 npoints, 210 WORD32 *ptr_x, WORD32 *ptr_y); 211 212 extern VOID(*ixheaacd_fft32_points_960)( 213 ia_aac_dec_imdct_tables_struct *imdct_tables_ptr, WORD32 npoints, 214 WORD32 *ptr_x, WORD32 *ptr_y); 215 216 extern WORD16 (*ixheaacd_neg_expo_inc)(WORD16 neg_expo); 217 218 extern VOID (*ixheaacd_inv_dit_fft_8pt)(WORD32 *x, WORD32 *real, WORD32 *imag); 219 220 extern VOID (*ixheaacd_scale_factor_process)( 221 WORD32 *x_invquant, WORD16 *scale_fact, WORD no_band, WORD8 *width, 222 WORD32 *scale_tables_ptr, WORD32 total_channels, WORD32 object_type, 223 WORD32 aac_sf_data_resil_flag); 224 225 #endif /* _IXHEAACD_FUNCTION_SELECTOR_H_ */ 226