xref: /aosp_15_r20/external/libxaac/decoder/ixheaacd_mps_aac_struct.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 #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