| /****************************************************************************** |
| * * |
| * Copyright (C) 2023 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 |
| */ |
| |
| #pragma once |
| enum { MS_NONE = 0, MS_SOME = 1, MS_ALL = 2 }; |
| |
| enum { MS_ON = 1 }; |
| |
| typedef struct { |
| WORD32 ms_digest; /* 0 = no MS; 1 = some MS, 2 = all MS */ |
| WORD32 ms_mask[MAXIMUM_GROUPED_SCALE_FACTOR_BAND]; |
| } ixheaace_tools_info; |
| |
| typedef struct { |
| WORD32 sfb_count; |
| WORD32 sfb_per_group; |
| WORD32 max_sfb_per_grp; |
| WORD32 window_sequence; |
| WORD32 window_shape; |
| WORD32 grouping_mask; |
| WORD32 sfb_offsets[MAXIMUM_GROUPED_SCALE_FACTOR_BAND + 1]; |
| FLOAT32 *ptr_sfb_energy; |
| FLOAT32 *ptr_sfb_spread_energy; |
| FLOAT32 *ptr_sfb_thr; |
| FLOAT32 *ptr_spec_coeffs; |
| FLOAT32 sfb_sum_ms_energy; |
| FLOAT32 sfb_sum_lr_energy; |
| FLOAT32 pe; |
| FLOAT32 sfb_min_snr[MAXIMUM_GROUPED_SCALE_FACTOR_BAND]; |
| WORD32 ms_digest; /* 0 = no MS; 1 = some MS, 2 = all MS */ |
| WORD32 ms_used[MAXIMUM_GROUPED_SCALE_FACTOR_BAND]; |
| ixheaace_temporal_noise_shaping_params tns_info; |
| } ixheaace_psy_out_channel; |
| |
| typedef struct { |
| ixheaace_tools_info tools_info; |
| FLOAT32 weight_ms_lr_pe_ratio; |
| } ixheaace_psy_out_element; |
| |
| typedef struct { |
| /* information shared by both channels */ |
| ixheaace_psy_out_element psy_out_element; |
| /* information specific to each channel */ |
| ixheaace_psy_out_channel *psy_out_ch[IXHEAACE_MAX_CH_IN_BS_ELE]; |
| } ixheaace_psy_out; |
| |
| VOID ia_enhaacplus_enc_build_interface( |
| FLOAT32 *ptr_grouped_mdct_spec, ixheaace_sfb_energy *ptr_grouped_sfb_thres, |
| ixheaace_sfb_energy *ptr_grouped_sfb_nrg, ixheaace_sfb_energy *ptr_grouped_sfb_spreaded_nrg, |
| const ixheaace_sfb_energy_sum sfb_nrg_sum_lr, const ixheaace_sfb_energy_sum sfb_nrg_sum_ms, |
| const WORD32 win_seq, const WORD32 win_shape, const WORD32 grouped_sfb_cnt, |
| const WORD32 *ptr_grouped_sfb_offset, const WORD32 max_sfb_per_grp, |
| const FLOAT32 *ptr_grouped_sfb_min_snr, const WORD32 total_groups_cnt, |
| const WORD32 *ptr_group_len, ixheaace_psy_out_channel *ptr_psy_out_ch); |