xref: /aosp_15_r20/external/libxaac/decoder/ixheaacd_channelinfo.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_CHANNELINFO_H
21*15dc779aSAndroid Build Coastguard Worker #define IXHEAACD_CHANNELINFO_H
22*15dc779aSAndroid Build Coastguard Worker 
23*15dc779aSAndroid Build Coastguard Worker #include "ixheaacd_lt_predict.h"
24*15dc779aSAndroid Build Coastguard Worker 
25*15dc779aSAndroid Build Coastguard Worker #define MAX_SFB_SHORT 16
26*15dc779aSAndroid Build Coastguard Worker #define MAX_QUANTIZED_VALUE 8191
27*15dc779aSAndroid Build Coastguard Worker 
28*15dc779aSAndroid Build Coastguard Worker #define OVERLAP_BUFFER_SIZE 512
29*15dc779aSAndroid Build Coastguard Worker 
30*15dc779aSAndroid Build Coastguard Worker #define JOINT_STEREO_MAX_GROUPS 8
31*15dc779aSAndroid Build Coastguard Worker #define JOINT_STEREO_MAX_BANDS 64
32*15dc779aSAndroid Build Coastguard Worker 
33*15dc779aSAndroid Build Coastguard Worker typedef struct {
34*15dc779aSAndroid Build Coastguard Worker   WORD16 window_shape;
35*15dc779aSAndroid Build Coastguard Worker   WORD16 window_sequence;
36*15dc779aSAndroid Build Coastguard Worker   WORD16 max_sfb;
37*15dc779aSAndroid Build Coastguard Worker   WORD16 num_swb_window;
38*15dc779aSAndroid Build Coastguard Worker   WORD16 sampling_rate_index;
39*15dc779aSAndroid Build Coastguard Worker   WORD16 num_window_groups;
40*15dc779aSAndroid Build Coastguard Worker   WORD8 window_group_length[8];
41*15dc779aSAndroid Build Coastguard Worker   WORD16 frame_length;
42*15dc779aSAndroid Build Coastguard Worker   WORD32 frame_size;
43*15dc779aSAndroid Build Coastguard Worker   WORD16 predictor_data_present;
44*15dc779aSAndroid Build Coastguard Worker   ltp_info ltp;
45*15dc779aSAndroid Build Coastguard Worker   ltp_info ltp2;
46*15dc779aSAndroid Build Coastguard Worker   WORD8 qshift_adj;
47*15dc779aSAndroid Build Coastguard Worker } ia_ics_info_struct;
48*15dc779aSAndroid Build Coastguard Worker 
49*15dc779aSAndroid Build Coastguard Worker typedef struct {
50*15dc779aSAndroid Build Coastguard Worker   WORD32 aac_sect_data_resil_flag;
51*15dc779aSAndroid Build Coastguard Worker   WORD32 aac_sf_data_resil_flag;
52*15dc779aSAndroid Build Coastguard Worker   WORD32 aac_spect_data_resil_flag;
53*15dc779aSAndroid Build Coastguard Worker   WORD32 ep_config;
54*15dc779aSAndroid Build Coastguard Worker } ia_aac_err_config_struct;
55*15dc779aSAndroid Build Coastguard Worker 
56*15dc779aSAndroid Build Coastguard Worker typedef struct {
57*15dc779aSAndroid Build Coastguard Worker   WORD32 ld_sbr_flag_present;
58*15dc779aSAndroid Build Coastguard Worker   WORD32 ld_sbr_samp_rate;
59*15dc779aSAndroid Build Coastguard Worker   WORD32 ld_sbr_crc_flag;
60*15dc779aSAndroid Build Coastguard Worker   WORD32 ldSbrHeaderPresent;
61*15dc779aSAndroid Build Coastguard Worker 
62*15dc779aSAndroid Build Coastguard Worker   WORD32 aac_sect_data_resil_flag;
63*15dc779aSAndroid Build Coastguard Worker   WORD32 aac_sf_data_resil_flag;
64*15dc779aSAndroid Build Coastguard Worker   WORD32 aac_spect_data_resil_flag;
65*15dc779aSAndroid Build Coastguard Worker   WORD32 ep_config;
66*15dc779aSAndroid Build Coastguard Worker 
67*15dc779aSAndroid Build Coastguard Worker } ia_eld_specific_config_struct;
68*15dc779aSAndroid Build Coastguard Worker 
69*15dc779aSAndroid Build Coastguard Worker typedef struct {
70*15dc779aSAndroid Build Coastguard Worker   UWORD8 ms_used[JOINT_STEREO_MAX_GROUPS][JOINT_STEREO_MAX_BANDS];
71*15dc779aSAndroid Build Coastguard Worker } ia_stereo_info_struct;
72*15dc779aSAndroid Build Coastguard Worker 
73*15dc779aSAndroid Build Coastguard Worker typedef struct {
74*15dc779aSAndroid Build Coastguard Worker   WORD16 start_band;
75*15dc779aSAndroid Build Coastguard Worker   WORD16 stop_band;
76*15dc779aSAndroid Build Coastguard Worker   WORD8 direction;
77*15dc779aSAndroid Build Coastguard Worker   WORD8 resolution;
78*15dc779aSAndroid Build Coastguard Worker   WORD8 order;
79*15dc779aSAndroid Build Coastguard Worker   WORD8 coef[MAX_ORDER];
80*15dc779aSAndroid Build Coastguard Worker } ia_filter_info_struct;
81*15dc779aSAndroid Build Coastguard Worker 
82*15dc779aSAndroid Build Coastguard Worker typedef struct {
83*15dc779aSAndroid Build Coastguard Worker   FLAG tns_data_present;
84*15dc779aSAndroid Build Coastguard Worker   WORD8 n_filt[MAX_WINDOWS];
85*15dc779aSAndroid Build Coastguard Worker   ia_filter_info_struct str_filter[MAX_WINDOWS][MAX_FILTERS];
86*15dc779aSAndroid Build Coastguard Worker } ia_tns_info_aac_struct;
87*15dc779aSAndroid Build Coastguard Worker 
88*15dc779aSAndroid Build Coastguard Worker typedef struct {
89*15dc779aSAndroid Build Coastguard Worker   const WORD16 *ptr_long_window[2];
90*15dc779aSAndroid Build Coastguard Worker   const WORD16 *ptr_short_window[2];
91*15dc779aSAndroid Build Coastguard Worker   WORD16 window_shape;
92*15dc779aSAndroid Build Coastguard Worker   WORD16 window_sequence;
93*15dc779aSAndroid Build Coastguard Worker   WORD32 *ptr_overlap_buf;
94*15dc779aSAndroid Build Coastguard Worker 
95*15dc779aSAndroid Build Coastguard Worker   WORD16 rvlc_prev_sf[128];
96*15dc779aSAndroid Build Coastguard Worker   WORD16 rvlc_prev_cb[128];
97*15dc779aSAndroid Build Coastguard Worker   WORD8 rvlc_prev_blk_type;
98*15dc779aSAndroid Build Coastguard Worker   WORD8 rvlc_prev_sf_ok;
99*15dc779aSAndroid Build Coastguard Worker 
100*15dc779aSAndroid Build Coastguard Worker } ia_aac_dec_overlap_info;
101*15dc779aSAndroid Build Coastguard Worker 
102*15dc779aSAndroid Build Coastguard Worker typedef struct {
103*15dc779aSAndroid Build Coastguard Worker   WORD32 sf_concealment;
104*15dc779aSAndroid Build Coastguard Worker   WORD32 rev_global_gain;
105*15dc779aSAndroid Build Coastguard Worker   WORD16 rvlc_sf_len;
106*15dc779aSAndroid Build Coastguard Worker   WORD32 dpcm_noise_nrg;
107*15dc779aSAndroid Build Coastguard Worker   WORD32 sf_esc_present;
108*15dc779aSAndroid Build Coastguard Worker   WORD16 rvlc_esc_len;
109*15dc779aSAndroid Build Coastguard Worker   WORD32 dpcm_noise_last_pos;
110*15dc779aSAndroid Build Coastguard Worker 
111*15dc779aSAndroid Build Coastguard Worker   WORD32 dpcm_is_last_pos;
112*15dc779aSAndroid Build Coastguard Worker 
113*15dc779aSAndroid Build Coastguard Worker   WORD16 rvlc_sf_fwd_len;
114*15dc779aSAndroid Build Coastguard Worker   WORD16 rvlc_sf_bwd_len;
115*15dc779aSAndroid Build Coastguard Worker 
116*15dc779aSAndroid Build Coastguard Worker   WORD16 *ptr_rvl_bit_cnt;
117*15dc779aSAndroid Build Coastguard Worker   UWORD16 *ptr_rvl_bit_str_idx;
118*15dc779aSAndroid Build Coastguard Worker 
119*15dc779aSAndroid Build Coastguard Worker   WORD16 num_wind_grps;
120*15dc779aSAndroid Build Coastguard Worker   WORD16 max_sfb_transmitted;
121*15dc779aSAndroid Build Coastguard Worker   UWORD8 first_noise_group;
122*15dc779aSAndroid Build Coastguard Worker   UWORD8 first_noise_band;
123*15dc779aSAndroid Build Coastguard Worker   UWORD8 direction;
124*15dc779aSAndroid Build Coastguard Worker 
125*15dc779aSAndroid Build Coastguard Worker   UWORD16 rvl_fwd_bit_str_idx;
126*15dc779aSAndroid Build Coastguard Worker   UWORD16 rvl_bwd_bit_str_idx;
127*15dc779aSAndroid Build Coastguard Worker   UWORD16 esc_bit_str_idx;
128*15dc779aSAndroid Build Coastguard Worker 
129*15dc779aSAndroid Build Coastguard Worker   const UWORD32 *ptr_huff_tree_rvl_cw;
130*15dc779aSAndroid Build Coastguard Worker   const UWORD32 *ptr_huff_tree_rvl_esc;
131*15dc779aSAndroid Build Coastguard Worker 
132*15dc779aSAndroid Build Coastguard Worker   UWORD8 num_fwd_esc_words_decoded;
133*15dc779aSAndroid Build Coastguard Worker   UWORD8 num_bwd_esc_words_decoded;
134*15dc779aSAndroid Build Coastguard Worker   UWORD8 num_esc_words_decoded;
135*15dc779aSAndroid Build Coastguard Worker 
136*15dc779aSAndroid Build Coastguard Worker   WORD8 noise_used;
137*15dc779aSAndroid Build Coastguard Worker   WORD8 intensity_used;
138*15dc779aSAndroid Build Coastguard Worker   WORD8 sf_used;
139*15dc779aSAndroid Build Coastguard Worker 
140*15dc779aSAndroid Build Coastguard Worker   WORD16 firt_scale_fac;
141*15dc779aSAndroid Build Coastguard Worker   WORD16 last_scale_fac;
142*15dc779aSAndroid Build Coastguard Worker   WORD16 first_nrg;
143*15dc779aSAndroid Build Coastguard Worker   WORD16 last_nrg;
144*15dc779aSAndroid Build Coastguard Worker   WORD16 is_first;
145*15dc779aSAndroid Build Coastguard Worker   WORD16 is_last;
146*15dc779aSAndroid Build Coastguard Worker 
147*15dc779aSAndroid Build Coastguard Worker   UWORD32 rvlc_err_log;
148*15dc779aSAndroid Build Coastguard Worker   WORD16 conceal_min;
149*15dc779aSAndroid Build Coastguard Worker   WORD16 conceal_max;
150*15dc779aSAndroid Build Coastguard Worker   WORD16 conceal_min_esc;
151*15dc779aSAndroid Build Coastguard Worker   WORD16 conceal_max_esc;
152*15dc779aSAndroid Build Coastguard Worker } ia_rvlc_info_struct;
153*15dc779aSAndroid Build Coastguard Worker 
154*15dc779aSAndroid Build Coastguard Worker #define LINES_PER_UNIT 4
155*15dc779aSAndroid Build Coastguard Worker 
156*15dc779aSAndroid Build Coastguard Worker #define MAX_SFB_HCR (((1024 / 8) / LINES_PER_UNIT) * 8)
157*15dc779aSAndroid Build Coastguard Worker #define NUMBER_OF_UNIT_GROUPS (LINES_PER_UNIT * 8)
158*15dc779aSAndroid Build Coastguard Worker #define LINES_PER_UNIT_GROUP (1024 / NUMBER_OF_UNIT_GROUPS)
159*15dc779aSAndroid Build Coastguard Worker 
160*15dc779aSAndroid Build Coastguard Worker #define FROM_LEFT_TO_RIGHT 0
161*15dc779aSAndroid Build Coastguard Worker #define FROM_RIGHT_TO_LEFT 1
162*15dc779aSAndroid Build Coastguard Worker 
163*15dc779aSAndroid Build Coastguard Worker #define MAX_CB_PAIRS 23
164*15dc779aSAndroid Build Coastguard Worker #define MAX_HCR_SETS 14
165*15dc779aSAndroid Build Coastguard Worker 
166*15dc779aSAndroid Build Coastguard Worker #define ESCAPE_VALUE 16
167*15dc779aSAndroid Build Coastguard Worker #define POSITION_OF_FLAG_A 21
168*15dc779aSAndroid Build Coastguard Worker #define POSITION_OF_FLAG_B 20
169*15dc779aSAndroid Build Coastguard Worker 
170*15dc779aSAndroid Build Coastguard Worker #define MAX_CB 32
171*15dc779aSAndroid Build Coastguard Worker 
172*15dc779aSAndroid Build Coastguard Worker #define MAX_CB_CHECK 32
173*15dc779aSAndroid Build Coastguard Worker #define WORD_BITS 32
174*15dc779aSAndroid Build Coastguard Worker 
175*15dc779aSAndroid Build Coastguard Worker #define THIRTYTWO_LOG_DIV_TWO_LOG 5
176*15dc779aSAndroid Build Coastguard Worker #define EIGHT_LOG_DIV_TWO_LOG 3
177*15dc779aSAndroid Build Coastguard Worker #define FOUR_LOG_DIV_TWO_LOG 2
178*15dc779aSAndroid Build Coastguard Worker 
179*15dc779aSAndroid Build Coastguard Worker #define CPE_TOP_LENGTH 12288
180*15dc779aSAndroid Build Coastguard Worker #define SCE_TOP_LENGTH 6144
181*15dc779aSAndroid Build Coastguard Worker #define LEN_OF_LONGEST_CW_TOP_LENGTH 49
182*15dc779aSAndroid Build Coastguard Worker #define Q_VALUE_INVALID 8192
183*15dc779aSAndroid Build Coastguard Worker #define NODE_MASK 0x400
184*15dc779aSAndroid Build Coastguard Worker 
185*15dc779aSAndroid Build Coastguard Worker #define ERROR_POS 0x00000001
186*15dc779aSAndroid Build Coastguard Worker #define HCR_FATAL_PCW_ERROR_MASK 0x100E01FC
187*15dc779aSAndroid Build Coastguard Worker 
188*15dc779aSAndroid Build Coastguard Worker typedef enum { PCW, PCW_SIGN, PCW_ESC_SIGN } ia_pcw_type_struct;
189*15dc779aSAndroid Build Coastguard Worker 
190*15dc779aSAndroid Build Coastguard Worker typedef struct {
191*15dc779aSAndroid Build Coastguard Worker   UWORD32 err_log;
192*15dc779aSAndroid Build Coastguard Worker   WORD32 *ptr_quant_spec_coeff_base;
193*15dc779aSAndroid Build Coastguard Worker   WORD32 quant_spec_coeff_idx;
194*15dc779aSAndroid Build Coastguard Worker   WORD16 reordered_spec_data_len;
195*15dc779aSAndroid Build Coastguard Worker   WORD16 num_sect;
196*15dc779aSAndroid Build Coastguard Worker   WORD16 *ptr_num_line_in_sect;
197*15dc779aSAndroid Build Coastguard Worker   UWORD16 bit_str_idx;
198*15dc779aSAndroid Build Coastguard Worker   WORD8 longest_cw_len;
199*15dc779aSAndroid Build Coastguard Worker   UWORD8 *ptr_cb;
200*15dc779aSAndroid Build Coastguard Worker } ia_huff_code_reorder_io_struct;
201*15dc779aSAndroid Build Coastguard Worker 
202*15dc779aSAndroid Build Coastguard Worker typedef struct {
203*15dc779aSAndroid Build Coastguard Worker   const UWORD8 *ptr_min_cb_pair_tbl;
204*15dc779aSAndroid Build Coastguard Worker   const UWORD8 *ptr_max_cb_pair_tbl;
205*15dc779aSAndroid Build Coastguard Worker } ia_huff_code_reorder_cb_pairs_struct;
206*15dc779aSAndroid Build Coastguard Worker 
207*15dc779aSAndroid Build Coastguard Worker typedef struct {
208*15dc779aSAndroid Build Coastguard Worker   const UWORD16 *ptr_lav_tbl;
209*15dc779aSAndroid Build Coastguard Worker   const UWORD8 *ptr_max_cw_len_tbl;
210*15dc779aSAndroid Build Coastguard Worker   const UWORD8 *ptr_cb_dimension_tbl;
211*15dc779aSAndroid Build Coastguard Worker   const UWORD8 *ptr_cb_dim_shift_tbl;
212*15dc779aSAndroid Build Coastguard Worker   const UWORD8 *ptr_cb_sign_tbl;
213*15dc779aSAndroid Build Coastguard Worker   const UWORD8 *ptr_cb_priority;
214*15dc779aSAndroid Build Coastguard Worker } ia_huff_code_reorder_tbl_struct;
215*15dc779aSAndroid Build Coastguard Worker 
216*15dc779aSAndroid Build Coastguard Worker typedef struct {
217*15dc779aSAndroid Build Coastguard Worker   WORD32 num_segment;
218*15dc779aSAndroid Build Coastguard Worker   UWORD32 segment_offset;
219*15dc779aSAndroid Build Coastguard Worker   WORD32 arr_temp_values[1024];
220*15dc779aSAndroid Build Coastguard Worker   UWORD16 arr_seg_start_l[1024 >> 1];
221*15dc779aSAndroid Build Coastguard Worker   UWORD16 arr_seg_start_r[1024 >> 1];
222*15dc779aSAndroid Build Coastguard Worker   WORD8 p_remaining_bits_in_seg[1024 >> 1];
223*15dc779aSAndroid Build Coastguard Worker   WORD32 code[512];
224*15dc779aSAndroid Build Coastguard Worker   WORD32 code_extra[512];
225*15dc779aSAndroid Build Coastguard Worker   WORD8 p_num_bits[512];
226*15dc779aSAndroid Build Coastguard Worker   UWORD8 read_direction;
227*15dc779aSAndroid Build Coastguard Worker   WORD32 is_decoded[512];
228*15dc779aSAndroid Build Coastguard Worker } ia_huff_code_reord_seg_info_struct;
229*15dc779aSAndroid Build Coastguard Worker 
230*15dc779aSAndroid Build Coastguard Worker typedef struct {
231*15dc779aSAndroid Build Coastguard Worker   UWORD32 num_code_word;
232*15dc779aSAndroid Build Coastguard Worker   UWORD32 current_codeword;
233*15dc779aSAndroid Build Coastguard Worker   UWORD32 num_sorted_section;
234*15dc779aSAndroid Build Coastguard Worker   UWORD16 ptr_num_cw_in_sect[MAX_SFB_HCR];
235*15dc779aSAndroid Build Coastguard Worker   UWORD16 ptr_num_sorted_cw_in_sect[MAX_SFB_HCR];
236*15dc779aSAndroid Build Coastguard Worker   UWORD16 ptr_num_ext_sorted_cw_in_sect[MAX_SFB_HCR + MAX_HCR_SETS];
237*15dc779aSAndroid Build Coastguard Worker   WORD32 num_ext_sorted_cw_in_sect_idx;
238*15dc779aSAndroid Build Coastguard Worker   UWORD16 ptr_num_ext_sorted_sect_in_sets[MAX_HCR_SETS];
239*15dc779aSAndroid Build Coastguard Worker   WORD32 num_ext_sorted_sect_in_sets_idx;
240*15dc779aSAndroid Build Coastguard Worker   UWORD16 ptr_reorder_offset[MAX_SFB_HCR];
241*15dc779aSAndroid Build Coastguard Worker   UWORD8 ptr_sorted_cb[MAX_SFB_HCR];
242*15dc779aSAndroid Build Coastguard Worker 
243*15dc779aSAndroid Build Coastguard Worker   UWORD8 ptr_ext_sorted_cw[MAX_SFB_HCR + MAX_HCR_SETS];
244*15dc779aSAndroid Build Coastguard Worker   WORD32 ext_sorted_cw_idx;
245*15dc779aSAndroid Build Coastguard Worker   UWORD8 ptr_ext_sorted_sect_max_cb_len[MAX_SFB_HCR + MAX_HCR_SETS];
246*15dc779aSAndroid Build Coastguard Worker   WORD32 ext_sorted_sect_max_cb_len_idx;
247*15dc779aSAndroid Build Coastguard Worker   UWORD8 ptr_cb_switch[MAX_SFB_HCR];
248*15dc779aSAndroid Build Coastguard Worker } ia_huff_code_reord_sect_info_struct;
249*15dc779aSAndroid Build Coastguard Worker 
250*15dc779aSAndroid Build Coastguard Worker typedef UWORD32 (*ixheaacd_ptr_state_func)(ia_bit_buf_struct *, pVOID);
251*15dc779aSAndroid Build Coastguard Worker 
252*15dc779aSAndroid Build Coastguard Worker typedef struct {
253*15dc779aSAndroid Build Coastguard Worker   WORD32 *ptr_result_base;
254*15dc779aSAndroid Build Coastguard Worker   UWORD16 res_ptr_idx[1024 >> 2];
255*15dc779aSAndroid Build Coastguard Worker   UWORD32 cw_offset;
256*15dc779aSAndroid Build Coastguard Worker   UWORD8 ptr_cb[1024 >> 2];
257*15dc779aSAndroid Build Coastguard Worker } ia_hcr_non_pcw_sideinfo_struct;
258*15dc779aSAndroid Build Coastguard Worker 
259*15dc779aSAndroid Build Coastguard Worker typedef struct {
260*15dc779aSAndroid Build Coastguard Worker   ia_huff_code_reorder_io_struct str_dec_io;
261*15dc779aSAndroid Build Coastguard Worker   ia_huff_code_reorder_cb_pairs_struct codebook_pairs;
262*15dc779aSAndroid Build Coastguard Worker   ia_huff_code_reorder_tbl_struct table_info;
263*15dc779aSAndroid Build Coastguard Worker   ia_huff_code_reord_seg_info_struct str_segment_info;
264*15dc779aSAndroid Build Coastguard Worker   ia_huff_code_reord_sect_info_struct sect_info;
265*15dc779aSAndroid Build Coastguard Worker   ia_hcr_non_pcw_sideinfo_struct str_non_pcw_side_info;
266*15dc779aSAndroid Build Coastguard Worker 
267*15dc779aSAndroid Build Coastguard Worker   WORD32 global_hcr_type;
268*15dc779aSAndroid Build Coastguard Worker } ia_hcr_info_struct;
269*15dc779aSAndroid Build Coastguard Worker 
270*15dc779aSAndroid Build Coastguard Worker typedef struct {
271*15dc779aSAndroid Build Coastguard Worker   WORD16 scale_factor[MAX_WINDOWS * MAX_SFB_SHORT];
272*15dc779aSAndroid Build Coastguard Worker   WORD8 code_book[MAX_WINDOWS * MAX_SFB_SHORT];
273*15dc779aSAndroid Build Coastguard Worker } ia_aac_sfb_code_book_struct;
274*15dc779aSAndroid Build Coastguard Worker 
275*15dc779aSAndroid Build Coastguard Worker typedef struct {
276*15dc779aSAndroid Build Coastguard Worker   ia_stereo_info_struct str_stereo_info;
277*15dc779aSAndroid Build Coastguard Worker   ia_pns_correlation_info_struct str_pns_corr_info;
278*15dc779aSAndroid Build Coastguard Worker } ia_pns_stereo_data_struct;
279*15dc779aSAndroid Build Coastguard Worker 
280*15dc779aSAndroid Build Coastguard Worker typedef struct {
281*15dc779aSAndroid Build Coastguard Worker   WORD16 win_shape;
282*15dc779aSAndroid Build Coastguard Worker   WORD16 win_seq;
283*15dc779aSAndroid Build Coastguard Worker 
284*15dc779aSAndroid Build Coastguard Worker   WORD32 *ptr_overlap_buf;
285*15dc779aSAndroid Build Coastguard Worker 
286*15dc779aSAndroid Build Coastguard Worker } ia_aac_dec_ola_data;
287*15dc779aSAndroid Build Coastguard Worker 
288*15dc779aSAndroid Build Coastguard Worker typedef struct {
289*15dc779aSAndroid Build Coastguard Worker   const WORD16 *ptr_long_window[2];
290*15dc779aSAndroid Build Coastguard Worker   const WORD16 *ptr_short_window[2];
291*15dc779aSAndroid Build Coastguard Worker 
292*15dc779aSAndroid Build Coastguard Worker   ia_aac_dec_ola_data overlap_add_data;
293*15dc779aSAndroid Build Coastguard Worker 
294*15dc779aSAndroid Build Coastguard Worker   WORD16 *ltp_buf;
295*15dc779aSAndroid Build Coastguard Worker   UWORD16 ltp_lag_1;
296*15dc779aSAndroid Build Coastguard Worker   UWORD16 ltp_lag_2;
297*15dc779aSAndroid Build Coastguard Worker   ia_ec_state_str str_ec_state;
298*15dc779aSAndroid Build Coastguard Worker } ia_aac_dec_channel_info;
299*15dc779aSAndroid Build Coastguard Worker 
300*15dc779aSAndroid Build Coastguard Worker typedef struct {
301*15dc779aSAndroid Build Coastguard Worker   WORD16 *ptr_scale_factor;
302*15dc779aSAndroid Build Coastguard Worker   WORD8 *ptr_code_book;
303*15dc779aSAndroid Build Coastguard Worker   WORD32 *ptr_spec_coeff;
304*15dc779aSAndroid Build Coastguard Worker   ia_stereo_info_struct *pstr_stereo_info;
305*15dc779aSAndroid Build Coastguard Worker   ia_pns_correlation_info_struct *pstr_pns_corr_info;
306*15dc779aSAndroid Build Coastguard Worker   ia_pns_rand_vec_struct *pstr_pns_rand_vec_data;
307*15dc779aSAndroid Build Coastguard Worker   ia_ics_info_struct str_ics_info;
308*15dc779aSAndroid Build Coastguard Worker   ia_tns_info_aac_struct str_tns_info;
309*15dc779aSAndroid Build Coastguard Worker   ia_pulse_info_struct str_pulse_info;
310*15dc779aSAndroid Build Coastguard Worker   ia_pns_info_struct str_pns_info;
311*15dc779aSAndroid Build Coastguard Worker   WORD16 common_window;
312*15dc779aSAndroid Build Coastguard Worker   WORD16 element_instance_tag;
313*15dc779aSAndroid Build Coastguard Worker   WORD16 global_gain;
314*15dc779aSAndroid Build Coastguard Worker   WORD32 *scratch_buf_ptr;
315*15dc779aSAndroid Build Coastguard Worker   WORD32 *pulse_scratch;
316*15dc779aSAndroid Build Coastguard Worker   ia_rvlc_info_struct ptr_rvlc_info;
317*15dc779aSAndroid Build Coastguard Worker   ia_hcr_info_struct str_hcr_info;
318*15dc779aSAndroid Build Coastguard Worker   WORD16 reorder_spect_data_len;
319*15dc779aSAndroid Build Coastguard Worker   WORD8 longest_cw_len;
320*15dc779aSAndroid Build Coastguard Worker   WORD16 rvlc_scf_esc_arr[128];
321*15dc779aSAndroid Build Coastguard Worker   WORD16 rvlc_scf_fwd_arr[128];
322*15dc779aSAndroid Build Coastguard Worker   WORD16 rvlc_scf_bwd_arr[128];
323*15dc779aSAndroid Build Coastguard Worker   WORD8 rvlc_intensity_used;
324*15dc779aSAndroid Build Coastguard Worker   WORD16 num_line_in_sec4_hcr_arr[32 * 8];
325*15dc779aSAndroid Build Coastguard Worker   UWORD8 cb4_hcr_arr[32 * 8];
326*15dc779aSAndroid Build Coastguard Worker   WORD32 number_sect;
327*15dc779aSAndroid Build Coastguard Worker   WORD32 granule_len;
328*15dc779aSAndroid Build Coastguard Worker   WORD16 rvlc_curr_sf_flag;
329*15dc779aSAndroid Build Coastguard Worker   WORD16 *ltp_buf;
330*15dc779aSAndroid Build Coastguard Worker   UWORD16 ltp_lag;
331*15dc779aSAndroid Build Coastguard Worker } ia_aac_dec_channel_info_struct;
332*15dc779aSAndroid Build Coastguard Worker WORD16 ixheaacd_ics_read(ia_bit_buf_struct *it_bit_buff,
333*15dc779aSAndroid Build Coastguard Worker                          ia_ics_info_struct *ptr_ics_info,
334*15dc779aSAndroid Build Coastguard Worker                          WORD8 num_swb_window[2], WORD32 object_type,
335*15dc779aSAndroid Build Coastguard Worker                          WORD32 common_window, WORD32 frame_size);
336*15dc779aSAndroid Build Coastguard Worker 
337*15dc779aSAndroid Build Coastguard Worker IA_ERRORCODE ixheaacd_ltp_decode(ia_bit_buf_struct *it_bit_buff,
338*15dc779aSAndroid Build Coastguard Worker                                  ia_ics_info_struct *ptr_ics_info,
339*15dc779aSAndroid Build Coastguard Worker                                  WORD32 object_type, WORD32 frame_size,
340*15dc779aSAndroid Build Coastguard Worker                                  WORD32 ch);
341*15dc779aSAndroid Build Coastguard Worker 
342*15dc779aSAndroid Build Coastguard Worker #endif /* #ifndef IXHEAACD_CHANNELINFO_H */
343