xref: /aosp_15_r20/external/libxaac/decoder/ixheaacd_drc_data_struct.h (revision 15dc779a375ca8b5125643b829a8aa4b70d7f451)
1*15dc779aSAndroid Build Coastguard Worker /******************************************************************************
2*15dc779aSAndroid Build Coastguard Worker  *                                                                            *
3*15dc779aSAndroid Build Coastguard Worker  * Copyright (C) 2018 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_DRC_DATA_STRUCT_H
21*15dc779aSAndroid Build Coastguard Worker 
22*15dc779aSAndroid Build Coastguard Worker #define IXHEAACD_DRC_DATA_STRUCT_H
23*15dc779aSAndroid Build Coastguard Worker 
24*15dc779aSAndroid Build Coastguard Worker #define MAX_DRC_BANDS 16
25*15dc779aSAndroid Build Coastguard Worker 
26*15dc779aSAndroid Build Coastguard Worker #define MAX_AUDIO_CHANNELS 8
27*15dc779aSAndroid Build Coastguard Worker 
28*15dc779aSAndroid Build Coastguard Worker #define SBR_QMF_SUB_SAMPLES 64
29*15dc779aSAndroid Build Coastguard Worker #define SBR_QMF_SUB_BANDS 64
30*15dc779aSAndroid Build Coastguard Worker 
31*15dc779aSAndroid Build Coastguard Worker typedef enum {
32*15dc779aSAndroid Build Coastguard Worker   UNKNOWN_PAYLOAD = 0,
33*15dc779aSAndroid Build Coastguard Worker   MPEG_DRC_EXT_DATA = 1,
34*15dc779aSAndroid Build Coastguard Worker   DVB_DRC_ANC_DATA = 2
35*15dc779aSAndroid Build Coastguard Worker 
36*15dc779aSAndroid Build Coastguard Worker } AACDEC_DRC_PAYLOAD_TYPE;
37*15dc779aSAndroid Build Coastguard Worker 
38*15dc779aSAndroid Build Coastguard Worker #define DVB_ANC_DATA_SYNC_BYTE (0xBC)
39*15dc779aSAndroid Build Coastguard Worker typedef struct {
40*15dc779aSAndroid Build Coastguard Worker   WORD32 prog_ref_level;
41*15dc779aSAndroid Build Coastguard Worker   WORD16 n_mdct_bands[MAX_DRC_BANDS];
42*15dc779aSAndroid Build Coastguard Worker   WORD16 drc_fac[MAX_DRC_BANDS];
43*15dc779aSAndroid Build Coastguard Worker   WORD16 drc_fac_dvb[MAX_DRC_BANDS];
44*15dc779aSAndroid Build Coastguard Worker   WORD8 drc_exp;
45*15dc779aSAndroid Build Coastguard Worker   UWORD8 short_block;
46*15dc779aSAndroid Build Coastguard Worker   UWORD8 drc_interp_scheme;
47*15dc779aSAndroid Build Coastguard Worker   UWORD8 n_drc_bands;
48*15dc779aSAndroid Build Coastguard Worker   UWORD8 new_prog_ref_level;
49*15dc779aSAndroid Build Coastguard Worker   UWORD8 new_drc_fac;
50*15dc779aSAndroid Build Coastguard Worker   UWORD8 prev_interp_scheme;
51*15dc779aSAndroid Build Coastguard Worker   WORD32 drc_factors_sbr[SBR_QMF_SUB_SAMPLES][SBR_QMF_SUB_BANDS];
52*15dc779aSAndroid Build Coastguard Worker   WORD32 drc_factors_sbr_lat[SBR_QMF_SUB_SAMPLES][SBR_QMF_SUB_BANDS];
53*15dc779aSAndroid Build Coastguard Worker } ixheaac_drc_data_struct;
54*15dc779aSAndroid Build Coastguard Worker 
55*15dc779aSAndroid Build Coastguard Worker typedef struct {
56*15dc779aSAndroid Build Coastguard Worker   UWORD8 b_channel_on[MAX_AUDIO_CHANNELS];
57*15dc779aSAndroid Build Coastguard Worker   UWORD8 prog_ref_level_present;
58*15dc779aSAndroid Build Coastguard Worker   UWORD8 prog_ref_level;
59*15dc779aSAndroid Build Coastguard Worker   UWORD8 drc_num_bands;
60*15dc779aSAndroid Build Coastguard Worker   UWORD8 drc_band_top[MAX_DRC_BANDS];
61*15dc779aSAndroid Build Coastguard Worker   WORD8 dyn_rng_dlbl[MAX_DRC_BANDS];
62*15dc779aSAndroid Build Coastguard Worker   WORD8 dyn_rng_dlbl_dvb[MAX_DRC_BANDS];
63*15dc779aSAndroid Build Coastguard Worker   WORD8 max_dyn_rng_dlbl;
64*15dc779aSAndroid Build Coastguard Worker   UWORD8 drc_interpolation_scheme;
65*15dc779aSAndroid Build Coastguard Worker   WORD8 drc_data_type;
66*15dc779aSAndroid Build Coastguard Worker } ixheaac_drc_bs_data_struct;
67*15dc779aSAndroid Build Coastguard Worker 
68*15dc779aSAndroid Build Coastguard Worker typedef struct {
69*15dc779aSAndroid Build Coastguard Worker   ixheaac_drc_bs_data_struct str_drc_bs_data[MAX_BS_ELEMENT];
70*15dc779aSAndroid Build Coastguard Worker   ixheaac_drc_data_struct str_drc_channel_data[MAX_BS_ELEMENT];
71*15dc779aSAndroid Build Coastguard Worker   WORD16 drc_ref_level;
72*15dc779aSAndroid Build Coastguard Worker   WORD16 drc_def_level;
73*15dc779aSAndroid Build Coastguard Worker   UWORD8 drc_channel_next_index[MAX_BS_ELEMENT];
74*15dc779aSAndroid Build Coastguard Worker   UWORD8 sbr_allowed;
75*15dc779aSAndroid Build Coastguard Worker   UWORD8 sbr_found;
76*15dc779aSAndroid Build Coastguard Worker   UWORD8 drc_element_found;
77*15dc779aSAndroid Build Coastguard Worker   UWORD8 max_audio_channels;
78*15dc779aSAndroid Build Coastguard Worker   UWORD8 length_history;
79*15dc779aSAndroid Build Coastguard Worker   UWORD8 num_drc_elements;
80*15dc779aSAndroid Build Coastguard Worker   WORD32 state;
81*15dc779aSAndroid Build Coastguard Worker   WORD32 target_ref_level;
82*15dc779aSAndroid Build Coastguard Worker   WORD32 prog_ref_level;
83*15dc779aSAndroid Build Coastguard Worker   WORD32 cut_factor;
84*15dc779aSAndroid Build Coastguard Worker   WORD32 boost_factor;
85*15dc779aSAndroid Build Coastguard Worker   FLAG drc_dig_norm;
86*15dc779aSAndroid Build Coastguard Worker   FLAG drc_on;
87*15dc779aSAndroid Build Coastguard Worker   FLAG dvb_anc_data_present;
88*15dc779aSAndroid Build Coastguard Worker   WORD32 dvb_anc_data_pos;
89*15dc779aSAndroid Build Coastguard Worker   WORD32 pres_mode;
90*15dc779aSAndroid Build Coastguard Worker   WORD32 heavy_mode;
91*15dc779aSAndroid Build Coastguard Worker } ia_drc_dec_struct;
92*15dc779aSAndroid Build Coastguard Worker 
93*15dc779aSAndroid Build Coastguard Worker #endif
94