xref: /aosp_15_r20/external/libxaac/decoder/ixheaacd_struct_def.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_STRUCT_DEF_H
21*15dc779aSAndroid Build Coastguard Worker #define IXHEAACD_STRUCT_DEF_H
22*15dc779aSAndroid Build Coastguard Worker 
23*15dc779aSAndroid Build Coastguard Worker #include <setjmp.h>
24*15dc779aSAndroid Build Coastguard Worker #include <stdbool.h>
25*15dc779aSAndroid Build Coastguard Worker #include "ixheaacd_peak_limiter_struct_def.h"
26*15dc779aSAndroid Build Coastguard Worker 
27*15dc779aSAndroid Build Coastguard Worker #define MAX_DECOR_CONFIG_IDX (2)
28*15dc779aSAndroid Build Coastguard Worker #define MAX_TIME_SLOTS (72)
29*15dc779aSAndroid Build Coastguard Worker #define NUM_MPS_TABLES (13)
30*15dc779aSAndroid Build Coastguard Worker 
31*15dc779aSAndroid Build Coastguard Worker #define MAX_PREROLL_FRAME_OFFSET 4
32*15dc779aSAndroid Build Coastguard Worker // max of escapedValue(4, 4, 8) i.e. 2^4 -1 + 2^4 -1 + 2^8 -1;
33*15dc779aSAndroid Build Coastguard Worker #define MAX_PREROLL_SIZE 285
34*15dc779aSAndroid Build Coastguard Worker #define IA_ENHAACPLUS_DEC_MPS_PAYLOAD_SIZE (1024)
35*15dc779aSAndroid Build Coastguard Worker 
36*15dc779aSAndroid Build Coastguard Worker typedef struct {
37*15dc779aSAndroid Build Coastguard Worker   WORD8 element_instance_tag;
38*15dc779aSAndroid Build Coastguard Worker   WORD32 object_type;
39*15dc779aSAndroid Build Coastguard Worker   WORD32 samp_freq_index;
40*15dc779aSAndroid Build Coastguard Worker   WORD32 num_front_channel_elements;
41*15dc779aSAndroid Build Coastguard Worker   WORD32 num_side_channel_elements;
42*15dc779aSAndroid Build Coastguard Worker   WORD32 num_back_channel_elements;
43*15dc779aSAndroid Build Coastguard Worker   WORD32 num_lfe_channel_elements;
44*15dc779aSAndroid Build Coastguard Worker   WORD32 num_assoc_data_elements;
45*15dc779aSAndroid Build Coastguard Worker   WORD32 num_valid_cc_elements;
46*15dc779aSAndroid Build Coastguard Worker 
47*15dc779aSAndroid Build Coastguard Worker   WORD8 front_element_is_cpe[16];
48*15dc779aSAndroid Build Coastguard Worker   WORD8 front_element_tag_select[16];
49*15dc779aSAndroid Build Coastguard Worker   WORD8 side_element_is_cpe[16];
50*15dc779aSAndroid Build Coastguard Worker   WORD8 side_element_tag_select[16];
51*15dc779aSAndroid Build Coastguard Worker   WORD8 back_element_is_cpe[16];
52*15dc779aSAndroid Build Coastguard Worker   WORD8 back_element_tag_select[16];
53*15dc779aSAndroid Build Coastguard Worker   WORD8 lfe_element_tag_select[16];
54*15dc779aSAndroid Build Coastguard Worker 
55*15dc779aSAndroid Build Coastguard Worker   WORD32 channels;
56*15dc779aSAndroid Build Coastguard Worker   WORD32 alignment_bits;
57*15dc779aSAndroid Build Coastguard Worker 
58*15dc779aSAndroid Build Coastguard Worker } ia_program_config_struct;
59*15dc779aSAndroid Build Coastguard Worker 
60*15dc779aSAndroid Build Coastguard Worker typedef struct ia_enhaacplus_dec_ind_cc {
61*15dc779aSAndroid Build Coastguard Worker   WORD8 cc_target_is_cpe[MAX_BS_ELEMENT];
62*15dc779aSAndroid Build Coastguard Worker   WORD8 cc_target_tag_select[MAX_BS_ELEMENT];
63*15dc779aSAndroid Build Coastguard Worker   WORD8 cc_l[MAX_BS_ELEMENT];
64*15dc779aSAndroid Build Coastguard Worker   WORD8 cc_r[MAX_BS_ELEMENT];
65*15dc779aSAndroid Build Coastguard Worker   WORD32 cc_gain[2 * MAX_BS_ELEMENT];
66*15dc779aSAndroid Build Coastguard Worker   WORD8 elements_coupled[MAX_BS_ELEMENT];
67*15dc779aSAndroid Build Coastguard Worker   WORD num_coupled_elements;
68*15dc779aSAndroid Build Coastguard Worker 
69*15dc779aSAndroid Build Coastguard Worker } ia_enhaacplus_dec_ind_cc;
70*15dc779aSAndroid Build Coastguard Worker 
71*15dc779aSAndroid Build Coastguard Worker typedef struct {
72*15dc779aSAndroid Build Coastguard Worker   UWORD32 ui_pcm_wdsz;
73*15dc779aSAndroid Build Coastguard Worker   UWORD32 ui_samp_freq;
74*15dc779aSAndroid Build Coastguard Worker   UWORD32 ui_n_channels;
75*15dc779aSAndroid Build Coastguard Worker   WORD32 i_channel_mask;
76*15dc779aSAndroid Build Coastguard Worker   UWORD32 ui_channel_mode;
77*15dc779aSAndroid Build Coastguard Worker   UWORD32 ui_sbr_mode;
78*15dc779aSAndroid Build Coastguard Worker   WORD32 ui_effect_type;
79*15dc779aSAndroid Build Coastguard Worker   WORD32 ui_target_loudness;
80*15dc779aSAndroid Build Coastguard Worker   WORD32 ui_loud_norm_flag;
81*15dc779aSAndroid Build Coastguard Worker 
82*15dc779aSAndroid Build Coastguard Worker   UWORD32 flag_downmix;
83*15dc779aSAndroid Build Coastguard Worker   UWORD32 flag_08khz_out;
84*15dc779aSAndroid Build Coastguard Worker   UWORD32 flag_16khz_out;
85*15dc779aSAndroid Build Coastguard Worker   UWORD32 flag_to_stereo;
86*15dc779aSAndroid Build Coastguard Worker   UWORD32 down_sample_flag;
87*15dc779aSAndroid Build Coastguard Worker   UWORD32 header_dec_done;
88*15dc779aSAndroid Build Coastguard Worker   UWORD32 ui_mp4_flag;
89*15dc779aSAndroid Build Coastguard Worker   UWORD32 ui_disable_sync;
90*15dc779aSAndroid Build Coastguard Worker   UWORD32 ui_auto_sbr_upsample;
91*15dc779aSAndroid Build Coastguard Worker   WORD32 frame_status;
92*15dc779aSAndroid Build Coastguard Worker   UWORD32 ui_max_channels;
93*15dc779aSAndroid Build Coastguard Worker   UWORD32 ui_pce_found_in_hdr;
94*15dc779aSAndroid Build Coastguard Worker   UWORD32 ui_n_memtabs;
95*15dc779aSAndroid Build Coastguard Worker 
96*15dc779aSAndroid Build Coastguard Worker   WORD32 ui_drc_boost;
97*15dc779aSAndroid Build Coastguard Worker   WORD32 ui_drc_cut;
98*15dc779aSAndroid Build Coastguard Worker   WORD32 ui_drc_target_level;
99*15dc779aSAndroid Build Coastguard Worker   WORD32 ui_drc_set;
100*15dc779aSAndroid Build Coastguard Worker   WORD32 ui_drc_heavy_comp;
101*15dc779aSAndroid Build Coastguard Worker 
102*15dc779aSAndroid Build Coastguard Worker   ia_program_config_struct str_prog_config;
103*15dc779aSAndroid Build Coastguard Worker   WORD32 element_type[MAX_BS_ELEMENT + 1];
104*15dc779aSAndroid Build Coastguard Worker   WORD32 slot_element[MAX_BS_ELEMENT + 1];
105*15dc779aSAndroid Build Coastguard Worker 
106*15dc779aSAndroid Build Coastguard Worker   WORD element_instance_order[MAX_BS_ELEMENT];
107*15dc779aSAndroid Build Coastguard Worker   WORD ui_coupling_channel;
108*15dc779aSAndroid Build Coastguard Worker   WORD downmix;
109*15dc779aSAndroid Build Coastguard Worker   WORD32 loas_present;
110*15dc779aSAndroid Build Coastguard Worker 
111*15dc779aSAndroid Build Coastguard Worker   WORD framesize_480;
112*15dc779aSAndroid Build Coastguard Worker   WORD ld_decoder;
113*15dc779aSAndroid Build Coastguard Worker 
114*15dc779aSAndroid Build Coastguard Worker   WORD eld_sbr_present;
115*15dc779aSAndroid Build Coastguard Worker 
116*15dc779aSAndroid Build Coastguard Worker   UWORD32 ui_out_channels;
117*15dc779aSAndroid Build Coastguard Worker   WORD32 ui_channel_mask;
118*15dc779aSAndroid Build Coastguard Worker 
119*15dc779aSAndroid Build Coastguard Worker   WORD32 ui_dec_type;
120*15dc779aSAndroid Build Coastguard Worker 
121*15dc779aSAndroid Build Coastguard Worker   UWORD32 ui_qmf_bands;
122*15dc779aSAndroid Build Coastguard Worker 
123*15dc779aSAndroid Build Coastguard Worker   WORD32 ui_flush_cmd;
124*15dc779aSAndroid Build Coastguard Worker 
125*15dc779aSAndroid Build Coastguard Worker   ia_drc_config drc_config_struct;
126*15dc779aSAndroid Build Coastguard Worker   WORD32 output_level;
127*15dc779aSAndroid Build Coastguard Worker   WORD32 i_loud_ref_level;
128*15dc779aSAndroid Build Coastguard Worker   UWORD8 dup_stereo_flag;
129*15dc779aSAndroid Build Coastguard Worker   WORD32 peak_limiter_off;
130*15dc779aSAndroid Build Coastguard Worker 
131*15dc779aSAndroid Build Coastguard Worker   WORD32 mps_present;
132*15dc779aSAndroid Build Coastguard Worker   UWORD32 ui_frame_size;
133*15dc779aSAndroid Build Coastguard Worker   WORD32 ui_enh_sbr;
134*15dc779aSAndroid Build Coastguard Worker   WORD32 ui_hq_esbr;
135*15dc779aSAndroid Build Coastguard Worker   WORD32 ui_enh_sbr_ps;
136*15dc779aSAndroid Build Coastguard Worker   WORD32 ui_usac_flag;
137*15dc779aSAndroid Build Coastguard Worker 
138*15dc779aSAndroid Build Coastguard Worker   WORD32 ui_err_conceal;
139*15dc779aSAndroid Build Coastguard Worker   FLAG first_frame;
140*15dc779aSAndroid Build Coastguard Worker } ia_aac_dec_config_struct;
141*15dc779aSAndroid Build Coastguard Worker 
142*15dc779aSAndroid Build Coastguard Worker typedef struct ia_aac_dec_state_struct {
143*15dc779aSAndroid Build Coastguard Worker   ia_aac_dec_config_struct *p_config;
144*15dc779aSAndroid Build Coastguard Worker 
145*15dc779aSAndroid Build Coastguard Worker   AUDIO_OBJECT_TYPE audio_object_type;
146*15dc779aSAndroid Build Coastguard Worker 
147*15dc779aSAndroid Build Coastguard Worker   UWORD32 ui_in_bytes;
148*15dc779aSAndroid Build Coastguard Worker   UWORD32 ui_out_bytes;
149*15dc779aSAndroid Build Coastguard Worker   UWORD32 ui_exec_done;
150*15dc779aSAndroid Build Coastguard Worker 
151*15dc779aSAndroid Build Coastguard Worker   WORD16 b_n_raw_data_blk;
152*15dc779aSAndroid Build Coastguard Worker   WORD16 s_adts_hdr_present;
153*15dc779aSAndroid Build Coastguard Worker   WORD16 s_adif_hdr_present;
154*15dc779aSAndroid Build Coastguard Worker   WORD16 num_channel_last;
155*15dc779aSAndroid Build Coastguard Worker   UWORD32 sampling_rate;
156*15dc779aSAndroid Build Coastguard Worker   UWORD32 extension_samp_rate;
157*15dc779aSAndroid Build Coastguard Worker   UWORD32 bit_rate;
158*15dc779aSAndroid Build Coastguard Worker   UWORD32 ui_init_done;
159*15dc779aSAndroid Build Coastguard Worker   UWORD32 ui_input_over;
160*15dc779aSAndroid Build Coastguard Worker   UWORD32 header_dec_done;
161*15dc779aSAndroid Build Coastguard Worker   WORD32 frame_counter;
162*15dc779aSAndroid Build Coastguard Worker   ia_aac_decoder_struct *pstr_aac_dec_info[MAX_BS_ELEMENT];
163*15dc779aSAndroid Build Coastguard Worker 
164*15dc779aSAndroid Build Coastguard Worker   UWORD32 ch_config;
165*15dc779aSAndroid Build Coastguard Worker   struct ia_bit_buf_struct str_bit_buf, *pstr_bit_buf;
166*15dc779aSAndroid Build Coastguard Worker   ia_aac_dec_sbr_bitstream_struct (*pstr_stream_sbr)[2];
167*15dc779aSAndroid Build Coastguard Worker   ia_handle_sbr_dec_inst_struct str_sbr_dec_info[MAX_BS_ELEMENT];
168*15dc779aSAndroid Build Coastguard Worker   WORD32 sbr_present_flag;
169*15dc779aSAndroid Build Coastguard Worker   WORD32 ps_present;
170*15dc779aSAndroid Build Coastguard Worker 
171*15dc779aSAndroid Build Coastguard Worker   ia_bit_buf_struct *ptr_bit_stream;
172*15dc779aSAndroid Build Coastguard Worker 
173*15dc779aSAndroid Build Coastguard Worker   VOID *aac_scratch_mem_v;
174*15dc779aSAndroid Build Coastguard Worker   VOID *aac_persistent_mem_v;
175*15dc779aSAndroid Build Coastguard Worker 
176*15dc779aSAndroid Build Coastguard Worker   VOID *sbr_persistent_mem_v;
177*15dc779aSAndroid Build Coastguard Worker   WORD32 *ptr_overlap_buf;
178*15dc779aSAndroid Build Coastguard Worker   WORD16 num_of_out_samples;
179*15dc779aSAndroid Build Coastguard Worker   WORD32 last_frame_ok;
180*15dc779aSAndroid Build Coastguard Worker   WORD32 i_bytes_consumed;
181*15dc779aSAndroid Build Coastguard Worker 
182*15dc779aSAndroid Build Coastguard Worker   WORD32 *coup_ch_output;
183*15dc779aSAndroid Build Coastguard Worker   ia_enhaacplus_dec_ind_cc ind_cc_info;
184*15dc779aSAndroid Build Coastguard Worker 
185*15dc779aSAndroid Build Coastguard Worker   WORD8 protection_absent;
186*15dc779aSAndroid Build Coastguard Worker   WORD32 crc_check;
187*15dc779aSAndroid Build Coastguard Worker   WORD32 ui_flush_cmd;
188*15dc779aSAndroid Build Coastguard Worker 
189*15dc779aSAndroid Build Coastguard Worker   WORD32 frame_len_flag;
190*15dc779aSAndroid Build Coastguard Worker   WORD32 depends_on_core_coder;
191*15dc779aSAndroid Build Coastguard Worker   WORD32 extension_flag;
192*15dc779aSAndroid Build Coastguard Worker 
193*15dc779aSAndroid Build Coastguard Worker   WORD32 bs_format;
194*15dc779aSAndroid Build Coastguard Worker   WORD32 bit_count;
195*15dc779aSAndroid Build Coastguard Worker   WORD32 sync_status;
196*15dc779aSAndroid Build Coastguard Worker   WORD32 extension_flag_3;
197*15dc779aSAndroid Build Coastguard Worker 
198*15dc779aSAndroid Build Coastguard Worker   ixheaacd_latm_struct latm_struct_element;
199*15dc779aSAndroid Build Coastguard Worker   WORD32 latm_initialized;
200*15dc779aSAndroid Build Coastguard Worker 
201*15dc779aSAndroid Build Coastguard Worker   ia_drc_dec_struct str_drc_dec_info;
202*15dc779aSAndroid Build Coastguard Worker   ia_drc_dec_struct drc_dummy;
203*15dc779aSAndroid Build Coastguard Worker   ia_drc_dec_struct *pstr_drc_dec;
204*15dc779aSAndroid Build Coastguard Worker   ixheaac_drc_data_struct *pstr_hdrc_data[MAX_BS_ELEMENT * 3];
205*15dc779aSAndroid Build Coastguard Worker 
206*15dc779aSAndroid Build Coastguard Worker   WORD32 prev_channel_mode;
207*15dc779aSAndroid Build Coastguard Worker   WORD32 drc_cut_fac;
208*15dc779aSAndroid Build Coastguard Worker   WORD32 drc_boost_fac;
209*15dc779aSAndroid Build Coastguard Worker 
210*15dc779aSAndroid Build Coastguard Worker   WORD32 first_drc_frame;
211*15dc779aSAndroid Build Coastguard Worker 
212*15dc779aSAndroid Build Coastguard Worker   ia_aac_err_config_struct str_err_config;
213*15dc779aSAndroid Build Coastguard Worker   WORD32 frame_size;
214*15dc779aSAndroid Build Coastguard Worker   WORD32 frame_length;
215*15dc779aSAndroid Build Coastguard Worker 
216*15dc779aSAndroid Build Coastguard Worker   WORD32 dwnsmp_signal;
217*15dc779aSAndroid Build Coastguard Worker   ia_eld_specific_config_struct eld_specific_config;
218*15dc779aSAndroid Build Coastguard Worker   FLAG usac_flag;
219*15dc779aSAndroid Build Coastguard Worker 
220*15dc779aSAndroid Build Coastguard Worker   WORD32 num_of_output_ch;
221*15dc779aSAndroid Build Coastguard Worker   VOID *ia_audio_specific_config;
222*15dc779aSAndroid Build Coastguard Worker   ia_mps_dec_state_struct mps_dec_handle;
223*15dc779aSAndroid Build Coastguard Worker 
224*15dc779aSAndroid Build Coastguard Worker   ia_heaac_mps_state_struct heaac_mps_handle;
225*15dc779aSAndroid Build Coastguard Worker   UWORD8 mps_buffer[IA_ENHAACPLUS_DEC_MPS_PAYLOAD_SIZE];
226*15dc779aSAndroid Build Coastguard Worker 
227*15dc779aSAndroid Build Coastguard Worker   UWORD16 *huffman_code_book_scl;
228*15dc779aSAndroid Build Coastguard Worker   UWORD32 *huffman_code_book_scl_index;
229*15dc779aSAndroid Build Coastguard Worker 
230*15dc779aSAndroid Build Coastguard Worker   ia_aac_dec_tables_struct *pstr_aac_tables;
231*15dc779aSAndroid Build Coastguard Worker 
232*15dc779aSAndroid Build Coastguard Worker   VOID *pstr_dec_data;
233*15dc779aSAndroid Build Coastguard Worker   VOID *sbr_persistent_mem_u;
234*15dc779aSAndroid Build Coastguard Worker   VOID *sbr_scratch_mem_u;
235*15dc779aSAndroid Build Coastguard Worker   UWORD8 *header_ptr;
236*15dc779aSAndroid Build Coastguard Worker   WORD32 header_length;
237*15dc779aSAndroid Build Coastguard Worker   ia_sbr_header_data_struct str_sbr_config;
238*15dc779aSAndroid Build Coastguard Worker   jmp_buf xaac_jmp_buf;
239*15dc779aSAndroid Build Coastguard Worker   WORD32 decode_create_done;
240*15dc779aSAndroid Build Coastguard Worker   WORD32 ldmps_present;
241*15dc779aSAndroid Build Coastguard Worker   WORD32 fatal_err_present;
242*15dc779aSAndroid Build Coastguard Worker   WORD8 *pers_mem_ptr;
243*15dc779aSAndroid Build Coastguard Worker   UWORD8 preroll_config_present;
244*15dc779aSAndroid Build Coastguard Worker   UWORD8 preroll_config_prev[MAX_PREROLL_SIZE];
245*15dc779aSAndroid Build Coastguard Worker 
246*15dc779aSAndroid Build Coastguard Worker   UWORD8 qshift_cnt;
247*15dc779aSAndroid Build Coastguard Worker   WORD8 qshift_adj[16];
248*15dc779aSAndroid Build Coastguard Worker   UWORD32 delay_in_samples;
249*15dc779aSAndroid Build Coastguard Worker   UWORD8 peak_lim_init;
250*15dc779aSAndroid Build Coastguard Worker   ia_peak_limiter_struct peak_limiter;
251*15dc779aSAndroid Build Coastguard Worker   UWORD8 sbr_present;
252*15dc779aSAndroid Build Coastguard Worker   UWORD8 slot_pos;
253*15dc779aSAndroid Build Coastguard Worker   WORD32 mps_header;
254*15dc779aSAndroid Build Coastguard Worker   WORD32 ui_mps_out_bytes;
255*15dc779aSAndroid Build Coastguard Worker   WORD32 drc_config_changed;
256*15dc779aSAndroid Build Coastguard Worker   WORD32 apply_crossfade;
257*15dc779aSAndroid Build Coastguard Worker   WORD32 ec_enable;
258*15dc779aSAndroid Build Coastguard Worker   WORD32 first_frame;
259*15dc779aSAndroid Build Coastguard Worker } ia_aac_dec_state_struct;
260*15dc779aSAndroid Build Coastguard Worker 
261*15dc779aSAndroid Build Coastguard Worker typedef struct ia_exhaacplus_dec_api_struct {
262*15dc779aSAndroid Build Coastguard Worker   ia_aac_dec_state_struct *p_state_aac;
263*15dc779aSAndroid Build Coastguard Worker 
264*15dc779aSAndroid Build Coastguard Worker   ia_aac_dec_config_struct aac_config;
265*15dc779aSAndroid Build Coastguard Worker 
266*15dc779aSAndroid Build Coastguard Worker   ia_mem_info_struct *p_mem_info_aac;
267*15dc779aSAndroid Build Coastguard Worker 
268*15dc779aSAndroid Build Coastguard Worker   pVOID *pp_mem_aac;
269*15dc779aSAndroid Build Coastguard Worker 
270*15dc779aSAndroid Build Coastguard Worker   ia_aac_dec_tables_struct aac_tables;
271*15dc779aSAndroid Build Coastguard Worker   ixheaacd_misc_tables *common_tables;
272*15dc779aSAndroid Build Coastguard Worker   ia_sbr_tables_struct str_sbr_tables;
273*15dc779aSAndroid Build Coastguard Worker 
274*15dc779aSAndroid Build Coastguard Worker } ia_exhaacplus_dec_api_struct;
275*15dc779aSAndroid Build Coastguard Worker 
276*15dc779aSAndroid Build Coastguard Worker WORD32 ixheaacd_aacdec_decodeframe(
277*15dc779aSAndroid Build Coastguard Worker     ia_exhaacplus_dec_api_struct *p_obj_exhaacplus_dec,
278*15dc779aSAndroid Build Coastguard Worker     ia_aac_dec_scratch_struct *aac_scratch_ptrs, VOID *time_data, FLAG frame_status, WORD *type,
279*15dc779aSAndroid Build Coastguard Worker     WORD *ch_idx, WORD init_flag, WORD channel, WORD *element_index_order, WORD skip_full_decode,
280*15dc779aSAndroid Build Coastguard Worker     WORD ch_fac, WORD slot_element, WORD max_channels, WORD32 total_channels, WORD32 frame_length,
281*15dc779aSAndroid Build Coastguard Worker     WORD32 frame_size, ia_drc_dec_struct *pstr_drc_dec, WORD32 object_type, WORD32 ch_config,
282*15dc779aSAndroid Build Coastguard Worker     ia_eld_specific_config_struct eld_specific_config, WORD16 adtsheader,
283*15dc779aSAndroid Build Coastguard Worker     ia_drc_dec_struct *drc_dummy, WORD32 ldmps_present, UWORD8 *slot_pos, UWORD8 *mps_buffer,
284*15dc779aSAndroid Build Coastguard Worker     WORD32 *mps_header, WORD32 *mps_bytes, WORD32 is_init, WORD32 first_frame);
285*15dc779aSAndroid Build Coastguard Worker 
286*15dc779aSAndroid Build Coastguard Worker WORD ixheaacd_get_channel_mask(
287*15dc779aSAndroid Build Coastguard Worker     ia_exhaacplus_dec_api_struct *p_obj_exhaacplus_dec);
288*15dc779aSAndroid Build Coastguard Worker 
289*15dc779aSAndroid Build Coastguard Worker VOID ixheaacd_allocate_mem_persistent(
290*15dc779aSAndroid Build Coastguard Worker     ia_exhaacplus_dec_api_struct *p_obj_exhaacplus_dec,
291*15dc779aSAndroid Build Coastguard Worker     ia_aac_dec_state_struct *p_state_enhaacplus_dec, WORD channels,
292*15dc779aSAndroid Build Coastguard Worker     WORD *persistent_used_total, WORD *sbr_persistent_start, WORD ps_enable);
293*15dc779aSAndroid Build Coastguard Worker 
294*15dc779aSAndroid Build Coastguard Worker WORD32 ixheaacd_dec_mem_api(ia_exhaacplus_dec_api_struct *p_obj_exhaacplus_dec,
295*15dc779aSAndroid Build Coastguard Worker                             WORD32 i_cmd, WORD32 i_idx, VOID *pv_value);
296*15dc779aSAndroid Build Coastguard Worker 
297*15dc779aSAndroid Build Coastguard Worker VOID ixheaacd_fill_aac_mem_tables(
298*15dc779aSAndroid Build Coastguard Worker     ia_exhaacplus_dec_api_struct *p_obj_exhaacplus_dec);
299*15dc779aSAndroid Build Coastguard Worker 
300*15dc779aSAndroid Build Coastguard Worker WORD32 ixheaacd_decoder_2_ga_hdr(
301*15dc779aSAndroid Build Coastguard Worker     ia_exhaacplus_dec_api_struct *p_obj_exhaacplus_dec);
302*15dc779aSAndroid Build Coastguard Worker 
303*15dc779aSAndroid Build Coastguard Worker WORD32 ixheaacd_decoder_flush_api(
304*15dc779aSAndroid Build Coastguard Worker     ia_exhaacplus_dec_api_struct *p_obj_exhaacplus_dec);
305*15dc779aSAndroid Build Coastguard Worker 
306*15dc779aSAndroid Build Coastguard Worker WORD32 ixheaacd_fill_usac_mem_tables(ia_exhaacplus_dec_api_struct *self);
307*15dc779aSAndroid Build Coastguard Worker 
308*15dc779aSAndroid Build Coastguard Worker WORD32 ixheaacd_dec_init(ia_exhaacplus_dec_api_struct *p_obj_exhaacplus_dec);
309*15dc779aSAndroid Build Coastguard Worker 
310*15dc779aSAndroid Build Coastguard Worker WORD32 ixheaacd_dec_execute(ia_exhaacplus_dec_api_struct *p_obj_exhaacplus_dec);
311*15dc779aSAndroid Build Coastguard Worker 
312*15dc779aSAndroid Build Coastguard Worker WORD32 ixheaacd_dec_table_api(
313*15dc779aSAndroid Build Coastguard Worker     ia_exhaacplus_dec_api_struct *p_obj_exhaacplus_dec, WORD32 i_cmd,
314*15dc779aSAndroid Build Coastguard Worker     WORD32 i_idx, VOID *pv_value);
315*15dc779aSAndroid Build Coastguard Worker 
316*15dc779aSAndroid Build Coastguard Worker IA_ERRORCODE ixheaacd_aac_mps_init(ia_exhaacplus_dec_api_struct *p_obj_mps_dec,
317*15dc779aSAndroid Build Coastguard Worker                                    UWORD8 *databuf, WORD32 buffer_size,
318*15dc779aSAndroid Build Coastguard Worker                                    WORD32 sample_rate);
319*15dc779aSAndroid Build Coastguard Worker 
320*15dc779aSAndroid Build Coastguard Worker WORD32 ixheaacd_peak_limiter_init(ia_peak_limiter_struct *peak_limiter, UWORD32 num_channels,
321*15dc779aSAndroid Build Coastguard Worker                                   UWORD32 sample_rate, FLOAT32 *buffer,
322*15dc779aSAndroid Build Coastguard Worker                                   UWORD32 *delay_in_samples);
323*15dc779aSAndroid Build Coastguard Worker 
324*15dc779aSAndroid Build Coastguard Worker VOID ixheaacd_peak_limiter_process(ia_peak_limiter_struct *peak_limiter, VOID *samples,
325*15dc779aSAndroid Build Coastguard Worker                                    UWORD32 frame_len, WORD8 *qshift_adj);
326*15dc779aSAndroid Build Coastguard Worker 
327*15dc779aSAndroid Build Coastguard Worker VOID ixheaacd_scale_adjust(VOID *samples, UWORD32 frame_len, WORD8 *qshift_adj,
328*15dc779aSAndroid Build Coastguard Worker                            WORD num_channels);
329*15dc779aSAndroid Build Coastguard Worker VOID ixheaacd_peak_limiter_process_float(ia_peak_limiter_struct *peak_limiter,
330*15dc779aSAndroid Build Coastguard Worker                                          FLOAT32 samples[MAX_NUM_CHANNELS][4096],
331*15dc779aSAndroid Build Coastguard Worker                                          UWORD32 frame_len);
332*15dc779aSAndroid Build Coastguard Worker 
333*15dc779aSAndroid Build Coastguard Worker 
334*15dc779aSAndroid Build Coastguard Worker #endif /* IXHEAACD_STRUCT_DEF_H */
335