unplugged-system/external/libxaac/decoder/ixheaacd_mps_aac_struct.h

95 lines
2.7 KiB
C

/******************************************************************************
*
* 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
*/
#ifndef IXHEAACD_MPS_AAC_STRUCT_H
#define IXHEAACD_MPS_AAC_STRUCT_H
#include "ixheaacd_defines.h"
#define PNS_BAND_FLAGS_SIZE 16
#define MAX_WINDOWS 8
#define MAX_SFB_SHORT 16
#define MAXIMUM_LINES 4
typedef struct {
WORD16 a_scale_factor[MAX_WINDOWS * MAX_SFB_SHORT];
WORD8 a_code_book[MAX_WINDOWS * MAX_SFB_SHORT];
} ia_mps_dec_residual_dynamic_data_struct;
typedef struct {
WORD16 window_sequence;
WORD16 max_sf_bands;
WORD16 total_sf_bands;
WORD16 sampling_rate_index;
WORD16 window_groups;
WORD8 window_group_length[8];
WORD16 frame_length;
} ia_mps_dec_residual_ics_info_struct;
typedef struct {
WORD16 start_band;
WORD16 stop_band;
WORD8 direction;
WORD8 resolution;
WORD8 order;
WORD8 coeff[MAX_ORDER];
} ia_mps_dec_residual_filter_struct;
typedef struct {
FLAG tns_data_present;
WORD8 number_of_filters[MAX_WINDOWS];
ia_mps_dec_residual_filter_struct filter[MAX_WINDOWS][MAX_FILTERS];
} ia_mps_dec_residual_tns_data;
typedef struct {
FLAG pulse_data_present;
WORD16 number_pulse;
WORD16 pulse_start_band;
WORD8 pulse_offset[MAXIMUM_LINES];
WORD8 pulse_amp[MAXIMUM_LINES];
} ia_mps_dec_residual_pulse_data_struct;
typedef struct {
UWORD8 pns_used[PNS_BAND_FLAGS_SIZE * 8];
WORD16 current_energy;
UWORD16 pns_active;
} ia_mps_dec_residual_pns_data_struct;
typedef struct {
WORD16 *p_scale_factor;
WORD8 *p_code_book;
WORD32 *p_spectral_coefficient;
ia_mps_dec_residual_ics_info_struct ics_info;
ia_mps_dec_residual_tns_data tns_data;
ia_mps_dec_residual_pulse_data_struct pulse_data;
ia_mps_dec_residual_pns_data_struct pns_data;
WORD16 common_window;
WORD16 global_gain;
WORD32 *p_tns_scratch;
} ia_mps_dec_residual_channel_info_struct;
typedef struct {
WORD16 sfb_long_idx[52];
WORD16 sfb_short_idx[16];
} ia_mps_dec_residual_sfband_info_struct;
#endif /* IXHEAACD_MPS_AAC_STRUCT_H */