| /****************************************************************************** |
| * * |
| * Copyright (C) 2018 The Android Open Source Project |
| * |
| * Licensed under the Apache License, Version 2.0 (the "License"); |
| * you may not use this file except in compliance with the License. |
| * You may obtain a copy of the License at: |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * See the License for the specific language governing permissions and |
| * limitations under the License. |
| * |
| ***************************************************************************** |
| * Originally developed and contributed by Ittiam Systems Pvt. Ltd, Bangalore |
| */ |
| #ifndef IXHEAACD_LPP_TRAN_H |
| #define IXHEAACD_LPP_TRAN_H |
| |
| #define MAX_NUM_PATCHES 6 |
| #define GUARDBANDS 0 |
| #define SHIFT_START_SB 1 |
| |
| typedef struct { |
| WORD32 phi_11; |
| WORD32 phi_22; |
| WORD32 phi_01; |
| WORD32 phi_02; |
| WORD32 phi_12; |
| WORD32 phi_01_im; |
| WORD32 phi_02_im; |
| WORD32 phi_12_im; |
| WORD32 d; |
| } ixheaacd_lpp_trans_cov_matrix; |
| |
| typedef struct { |
| WORD16 src_start_band; |
| WORD16 src_end_band; |
| WORD16 guard_start_band; |
| |
| WORD16 dst_start_band; |
| WORD16 dst_end_band; |
| WORD16 num_bands_in_patch; |
| } ia_patch_param_struct; |
| |
| typedef struct { |
| WORD16 num_columns; |
| WORD16 num_patches; |
| WORD16 start_patch; |
| WORD16 stop_patch; |
| WORD16 bw_borders[MAX_NUM_NOISE_VALUES]; |
| ia_patch_param_struct str_patch_param[MAX_NUM_PATCHES]; |
| } ia_transposer_settings_struct; |
| |
| typedef struct { |
| ia_transposer_settings_struct *pstr_settings; |
| WORD32 bw_array_prev[MAX_NUM_PATCHES]; |
| WORD32 *lpc_filt_states_real[LPC_ORDER]; |
| WORD32 *lpc_filt_states_imag[LPC_ORDER]; |
| } ia_sbr_hf_generator_struct; |
| |
| VOID ixheaacd_low_pow_hf_generator( |
| ia_sbr_hf_generator_struct *hf_generator, WORD32 **qmf_buff_re, |
| WORD16 *degree_alias, WORD first_slot_offset, WORD last_slot_offset, |
| WORD num_if_bands, WORD max_qmf_subband_aac, WORD32 *sbr_invf_mode, |
| WORD32 *sbr_invf_mode_prev, WORD32 norm_max, WORD32 *ptr_qmf_matrix); |
| |
| VOID ixheaacd_hf_generator(ia_sbr_hf_generator_struct *hf_generator, |
| ia_sbr_scale_fact_struct *sbr_scale_factor, |
| WORD32 **qmf_buff_re, WORD32 **qmf_buff_im, |
| WORD time_step, WORD first_slot_offset, |
| WORD last_slot_offset, WORD num_if_bands, |
| WORD max_qmf_subband_aac, WORD32 *sbr_invf_mode, |
| WORD32 *sbr_invf_mode_prev, WORD32 *ptr_qmf_matrix, |
| WORD audio_object_type); |
| |
| VOID ixheaacd_invfilt_level_emphasis(ia_sbr_hf_generator_struct *hf_generator, |
| WORD32 num_if_bands, WORD32 *sbr_invf_mode, |
| WORD32 *sbr_invf_mode_prev, |
| WORD32 *bw_array); |
| |
| struct ixheaacd_lpp_trans_patch { |
| WORD32 num_patches; |
| WORD32 start_subband[MAX_NUM_PATCHES + 1]; |
| }; |
| |
| VOID ixheaacd_covariance_matrix_calc_dec( |
| WORD32 *sub_sign_xlow, ixheaacd_lpp_trans_cov_matrix *cov_matrix, |
| WORD32 count); |
| |
| VOID ixheaacd_covariance_matrix_calc_armv7( |
| WORD32 *sub_sign_xlow, ixheaacd_lpp_trans_cov_matrix *cov_matrix, |
| WORD32 count); |
| |
| VOID ixheaacd_covariance_matrix_calc_2_dec( |
| ixheaacd_lpp_trans_cov_matrix *cov_matrix, WORD32 *real_buffer, |
| WORD32 ixheaacd_num_bands, WORD16 slots); |
| |
| VOID ixheaacd_covariance_matrix_calc_2_armv7( |
| ixheaacd_lpp_trans_cov_matrix *cov_matrix, WORD32 *real_buffer, |
| WORD32 ixheaacd_num_bands, WORD16 slots); |
| |
| #endif /* IXHEAACD_LPP_TRAN_H */ |