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 #ifndef IXHEAACD_MPS_AAC_STRUCT_H 21*15dc779aSAndroid Build Coastguard Worker #define IXHEAACD_MPS_AAC_STRUCT_H 22*15dc779aSAndroid Build Coastguard Worker 23*15dc779aSAndroid Build Coastguard Worker #include "ixheaacd_defines.h" 24*15dc779aSAndroid Build Coastguard Worker 25*15dc779aSAndroid Build Coastguard Worker #define PNS_BAND_FLAGS_SIZE 16 26*15dc779aSAndroid Build Coastguard Worker #define MAX_WINDOWS 8 27*15dc779aSAndroid Build Coastguard Worker #define MAX_SFB_SHORT 16 28*15dc779aSAndroid Build Coastguard Worker #define MAXIMUM_LINES 4 29*15dc779aSAndroid Build Coastguard Worker 30*15dc779aSAndroid Build Coastguard Worker typedef struct { 31*15dc779aSAndroid Build Coastguard Worker WORD16 a_scale_factor[MAX_WINDOWS * MAX_SFB_SHORT]; 32*15dc779aSAndroid Build Coastguard Worker WORD8 a_code_book[MAX_WINDOWS * MAX_SFB_SHORT]; 33*15dc779aSAndroid Build Coastguard Worker } ia_mps_dec_residual_dynamic_data_struct; 34*15dc779aSAndroid Build Coastguard Worker 35*15dc779aSAndroid Build Coastguard Worker typedef struct { 36*15dc779aSAndroid Build Coastguard Worker WORD16 window_sequence; 37*15dc779aSAndroid Build Coastguard Worker WORD16 max_sf_bands; 38*15dc779aSAndroid Build Coastguard Worker WORD16 total_sf_bands; 39*15dc779aSAndroid Build Coastguard Worker WORD16 sampling_rate_index; 40*15dc779aSAndroid Build Coastguard Worker WORD16 window_groups; 41*15dc779aSAndroid Build Coastguard Worker WORD8 window_group_length[8]; 42*15dc779aSAndroid Build Coastguard Worker WORD16 frame_length; 43*15dc779aSAndroid Build Coastguard Worker 44*15dc779aSAndroid Build Coastguard Worker } ia_mps_dec_residual_ics_info_struct; 45*15dc779aSAndroid Build Coastguard Worker 46*15dc779aSAndroid Build Coastguard Worker typedef struct { 47*15dc779aSAndroid Build Coastguard Worker WORD16 start_band; 48*15dc779aSAndroid Build Coastguard Worker WORD16 stop_band; 49*15dc779aSAndroid Build Coastguard Worker WORD8 direction; 50*15dc779aSAndroid Build Coastguard Worker WORD8 resolution; 51*15dc779aSAndroid Build Coastguard Worker WORD8 order; 52*15dc779aSAndroid Build Coastguard Worker WORD8 coeff[MAX_ORDER]; 53*15dc779aSAndroid Build Coastguard Worker } ia_mps_dec_residual_filter_struct; 54*15dc779aSAndroid Build Coastguard Worker 55*15dc779aSAndroid Build Coastguard Worker typedef struct { 56*15dc779aSAndroid Build Coastguard Worker FLAG tns_data_present; 57*15dc779aSAndroid Build Coastguard Worker WORD8 number_of_filters[MAX_WINDOWS]; 58*15dc779aSAndroid Build Coastguard Worker ia_mps_dec_residual_filter_struct filter[MAX_WINDOWS][MAX_FILTERS]; 59*15dc779aSAndroid Build Coastguard Worker } ia_mps_dec_residual_tns_data; 60*15dc779aSAndroid Build Coastguard Worker 61*15dc779aSAndroid Build Coastguard Worker typedef struct { 62*15dc779aSAndroid Build Coastguard Worker FLAG pulse_data_present; 63*15dc779aSAndroid Build Coastguard Worker WORD16 number_pulse; 64*15dc779aSAndroid Build Coastguard Worker WORD16 pulse_start_band; 65*15dc779aSAndroid Build Coastguard Worker WORD8 pulse_offset[MAXIMUM_LINES]; 66*15dc779aSAndroid Build Coastguard Worker WORD8 pulse_amp[MAXIMUM_LINES]; 67*15dc779aSAndroid Build Coastguard Worker } ia_mps_dec_residual_pulse_data_struct; 68*15dc779aSAndroid Build Coastguard Worker 69*15dc779aSAndroid Build Coastguard Worker typedef struct { 70*15dc779aSAndroid Build Coastguard Worker UWORD8 pns_used[PNS_BAND_FLAGS_SIZE * 8]; 71*15dc779aSAndroid Build Coastguard Worker WORD16 current_energy; 72*15dc779aSAndroid Build Coastguard Worker UWORD16 pns_active; 73*15dc779aSAndroid Build Coastguard Worker } ia_mps_dec_residual_pns_data_struct; 74*15dc779aSAndroid Build Coastguard Worker 75*15dc779aSAndroid Build Coastguard Worker typedef struct { 76*15dc779aSAndroid Build Coastguard Worker WORD16 *p_scale_factor; 77*15dc779aSAndroid Build Coastguard Worker WORD8 *p_code_book; 78*15dc779aSAndroid Build Coastguard Worker WORD32 *p_spectral_coefficient; 79*15dc779aSAndroid Build Coastguard Worker ia_mps_dec_residual_ics_info_struct ics_info; 80*15dc779aSAndroid Build Coastguard Worker ia_mps_dec_residual_tns_data tns_data; 81*15dc779aSAndroid Build Coastguard Worker ia_mps_dec_residual_pulse_data_struct pulse_data; 82*15dc779aSAndroid Build Coastguard Worker ia_mps_dec_residual_pns_data_struct pns_data; 83*15dc779aSAndroid Build Coastguard Worker WORD16 common_window; 84*15dc779aSAndroid Build Coastguard Worker WORD16 global_gain; 85*15dc779aSAndroid Build Coastguard Worker WORD32 *p_tns_scratch; 86*15dc779aSAndroid Build Coastguard Worker } ia_mps_dec_residual_channel_info_struct; 87*15dc779aSAndroid Build Coastguard Worker 88*15dc779aSAndroid Build Coastguard Worker typedef struct { 89*15dc779aSAndroid Build Coastguard Worker WORD16 sfb_long_idx[52]; 90*15dc779aSAndroid Build Coastguard Worker WORD16 sfb_short_idx[16]; 91*15dc779aSAndroid Build Coastguard Worker 92*15dc779aSAndroid Build Coastguard Worker } ia_mps_dec_residual_sfband_info_struct; 93*15dc779aSAndroid Build Coastguard Worker 94*15dc779aSAndroid Build Coastguard Worker #endif /* IXHEAACD_MPS_AAC_STRUCT_H */ 95