xref: /aosp_15_r20/external/libxaac/encoder/iusace_lpd.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 VOID iusace_autocorr_plus(FLOAT32 *speech, FLOAT32 *auto_corr_vector, WORD32 window_len,
23*15dc779aSAndroid Build Coastguard Worker                           const FLOAT32 *lp_analysis_win, FLOAT32 *temp_aut_corr);
24*15dc779aSAndroid Build Coastguard Worker VOID iusace_compute_lp_residual(FLOAT32 *a, FLOAT32 *x, FLOAT32 *y, WORD32 l);
25*15dc779aSAndroid Build Coastguard Worker VOID iusace_convolve(FLOAT32 *signal, FLOAT32 *wsynth_filter_ir, FLOAT32 *conv_out);
26*15dc779aSAndroid Build Coastguard Worker VOID iusace_synthesis_tool_float(FLOAT32 *a, FLOAT32 *x, FLOAT32 *y, WORD32 l, FLOAT32 *mem,
27*15dc779aSAndroid Build Coastguard Worker                                  FLOAT32 *buf_synth_tool);
28*15dc779aSAndroid Build Coastguard Worker VOID iusace_apply_preemph(FLOAT32 *signal, FLOAT32 factor, WORD32 length, FLOAT32 *mem);
29*15dc779aSAndroid Build Coastguard Worker VOID iusace_apply_deemph(FLOAT32 *signal, FLOAT32 factor, WORD32 length, FLOAT32 *mem);
30*15dc779aSAndroid Build Coastguard Worker VOID iusace_lpc_2_lsp_conversion(FLOAT32 *lpc, FLOAT32 *lsp, FLOAT32 *prev_lsp);
31*15dc779aSAndroid Build Coastguard Worker VOID iusace_levinson_durbin_algo(FLOAT32 *auto_corr_input, FLOAT32 *lpc);
32*15dc779aSAndroid Build Coastguard Worker VOID iusace_get_weighted_lpc(FLOAT32 *lpc, FLOAT32 *weighted_lpc);
33*15dc779aSAndroid Build Coastguard Worker VOID iusace_lsp_2_lsf_conversion(FLOAT32 *lsp, FLOAT32 *lsf);
34*15dc779aSAndroid Build Coastguard Worker VOID iusace_lsf_2_lsp_conversion(FLOAT32 *lsf, FLOAT32 *lsp);
35*15dc779aSAndroid Build Coastguard Worker VOID iusace_open_loop_search(FLOAT32 *wsp, WORD32 min_pitch_lag, WORD32 max_pitch_lag,
36*15dc779aSAndroid Build Coastguard Worker                              WORD32 num_frame, WORD32 *ol_pitch_lag,
37*15dc779aSAndroid Build Coastguard Worker                              ia_usac_td_encoder_struct *st);
38*15dc779aSAndroid Build Coastguard Worker WORD32 iusace_get_ol_lag_median(WORD32 prev_ol_lag, WORD32 *prev_ol_lags);
39*15dc779aSAndroid Build Coastguard Worker VOID iusace_closed_loop_search(FLOAT32 *exc, FLOAT32 *xn, FLOAT32 *wsyn_filt_ir,
40*15dc779aSAndroid Build Coastguard Worker                                WORD32 search_range_min, WORD32 search_range_max, WORD32 *pit_frac,
41*15dc779aSAndroid Build Coastguard Worker                                WORD32 is_first_subfrm, WORD32 min_pitch_lag_res1_2,
42*15dc779aSAndroid Build Coastguard Worker                                WORD32 min_pitch_lag_res_1, WORD32 *pitch_lag_out);
43*15dc779aSAndroid Build Coastguard Worker VOID iusace_decim2_fir_filter(FLOAT32 *signal, WORD32 length, FLOAT32 *mem,
44*15dc779aSAndroid Build Coastguard Worker                               FLOAT32 *scratch_fir_sig_buf);
45*15dc779aSAndroid Build Coastguard Worker FLOAT32 iusace_calc_sq_gain(FLOAT32 *x, WORD32 num_bits, WORD32 length,
46*15dc779aSAndroid Build Coastguard Worker                             FLOAT32 *scratch_sq_gain_en);
47*15dc779aSAndroid Build Coastguard Worker VOID iusace_lpc_coef_gen(FLOAT32 *lsf_old, FLOAT32 *lsf_new, FLOAT32 *a, WORD32 nb_subfr,
48*15dc779aSAndroid Build Coastguard Worker                          WORD32 m);
49*15dc779aSAndroid Build Coastguard Worker VOID iusace_interpolation_lsp_params(FLOAT32 *lsp_old, FLOAT32 *lsp_new, FLOAT32 *lp_flt_coff_a,
50*15dc779aSAndroid Build Coastguard Worker                                      WORD32 nb_subfr);
51*15dc779aSAndroid Build Coastguard Worker 
52*15dc779aSAndroid Build Coastguard Worker VOID iusace_acelp_tgt_ir_corr(FLOAT32 *x, FLOAT32 *ir_wsyn, FLOAT32 *corr_out);
53*15dc779aSAndroid Build Coastguard Worker 
54*15dc779aSAndroid Build Coastguard Worker VOID iusace_acelp_tgt_cb_corr1(FLOAT32 *xn, FLOAT32 *y1, FLOAT32 *y2, FLOAT32 *corr_out);
55*15dc779aSAndroid Build Coastguard Worker 
56*15dc779aSAndroid Build Coastguard Worker FLOAT32 iusace_acelp_tgt_cb_corr2(FLOAT32 *xn, FLOAT32 *y1, FLOAT32 *corr_out);
57*15dc779aSAndroid Build Coastguard Worker 
58*15dc779aSAndroid Build Coastguard Worker VOID iusace_acelp_cb_target_update(FLOAT32 *x, FLOAT32 *x2, FLOAT32 *y, FLOAT32 gain);
59*15dc779aSAndroid Build Coastguard Worker 
60*15dc779aSAndroid Build Coastguard Worker VOID iusace_acelp_cb_exc(FLOAT32 *corr_input, FLOAT32 *lp_residual, FLOAT32 *ir_wsyn,
61*15dc779aSAndroid Build Coastguard Worker                          WORD16 *alg_cb_exc_out, FLOAT32 *filt_cb_exc, WORD32 num_bits_cb,
62*15dc779aSAndroid Build Coastguard Worker                          WORD32 *acelp_param_out, FLOAT32 *scratch_acelp_ir_buf);
63*15dc779aSAndroid Build Coastguard Worker 
64*15dc779aSAndroid Build Coastguard Worker VOID iusace_acelp_ltpred_cb_exc(FLOAT32 *exc, WORD32 t0, WORD32 t0_frac, WORD32 len_subfrm);
65*15dc779aSAndroid Build Coastguard Worker 
66*15dc779aSAndroid Build Coastguard Worker VOID iusace_acelp_quant_gain(FLOAT32 *code, FLOAT32 *pitch_gain, FLOAT32 *code_gain,
67*15dc779aSAndroid Build Coastguard Worker                              FLOAT32 *tgt_cb_corr_data, FLOAT32 mean_energy, WORD32 *qunt_idx);
68