xref: /aosp_15_r20/external/libxaac/decoder/ixheaacd_aac_imdct.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_AAC_IMDCT_H
21*15dc779aSAndroid Build Coastguard Worker #define IXHEAACD_AAC_IMDCT_H
22*15dc779aSAndroid Build Coastguard Worker 
23*15dc779aSAndroid Build Coastguard Worker WORD32 ixheaacd_inverse_transform(
24*15dc779aSAndroid Build Coastguard Worker     WORD32 spec_data[], WORD32 scratch[],
25*15dc779aSAndroid Build Coastguard Worker     ia_aac_dec_imdct_tables_struct *ptr_imdct_tables, WORD32 expo,
26*15dc779aSAndroid Build Coastguard Worker     WORD32 npoints);
27*15dc779aSAndroid Build Coastguard Worker 
28*15dc779aSAndroid Build Coastguard Worker VOID ixheaacd_inverse_transform_960(
29*15dc779aSAndroid Build Coastguard Worker     WORD32 spec_data[], WORD32 scratch[],
30*15dc779aSAndroid Build Coastguard Worker     ia_aac_dec_imdct_tables_struct *ptr_imdct_tables, WORD32 expo,
31*15dc779aSAndroid Build Coastguard Worker     WORD32 *imdct_scale);
32*15dc779aSAndroid Build Coastguard Worker 
33*15dc779aSAndroid Build Coastguard Worker VOID ixheaacd_post_twiddle_dec(WORD32 out_ptr[], WORD32 spec_data[],
34*15dc779aSAndroid Build Coastguard Worker                                ia_aac_dec_imdct_tables_struct *ptr_imdct_tables,
35*15dc779aSAndroid Build Coastguard Worker                                WORD32 npoints);
36*15dc779aSAndroid Build Coastguard Worker 
37*15dc779aSAndroid Build Coastguard Worker VOID ixheaacd_post_twiddle_armv7(
38*15dc779aSAndroid Build Coastguard Worker     WORD32 out_ptr[], WORD32 spec_data[],
39*15dc779aSAndroid Build Coastguard Worker     ia_aac_dec_imdct_tables_struct *ptr_imdct_tables, WORD32 npoints);
40*15dc779aSAndroid Build Coastguard Worker 
41*15dc779aSAndroid Build Coastguard Worker VOID ixheaacd_post_twiddle_armv8(
42*15dc779aSAndroid Build Coastguard Worker     WORD32 out_ptr[], WORD32 spec_data[],
43*15dc779aSAndroid Build Coastguard Worker     ia_aac_dec_imdct_tables_struct *ptr_imdct_tables, WORD32 npoints);
44*15dc779aSAndroid Build Coastguard Worker 
45*15dc779aSAndroid Build Coastguard Worker VOID ixheaacd_post_twid_overlap_add_dec(
46*15dc779aSAndroid Build Coastguard Worker     WORD32 pcm_out[], WORD32 spec_data[],
47*15dc779aSAndroid Build Coastguard Worker     ia_aac_dec_imdct_tables_struct *ptr_imdct_tables, WORD npoints,
48*15dc779aSAndroid Build Coastguard Worker     WORD32 *ptr_overlap_buf, WORD16 q_shift, const WORD16 *window,
49*15dc779aSAndroid Build Coastguard Worker     WORD16 ch_fac);
50*15dc779aSAndroid Build Coastguard Worker 
51*15dc779aSAndroid Build Coastguard Worker VOID ixheaacd_post_twid_overlap_add_armv7(
52*15dc779aSAndroid Build Coastguard Worker     WORD32 pcm_out[], WORD32 spec_data[],
53*15dc779aSAndroid Build Coastguard Worker     ia_aac_dec_imdct_tables_struct *ptr_imdct_tables, WORD npoints,
54*15dc779aSAndroid Build Coastguard Worker     WORD32 *ptr_overlap_buf, WORD16 q_shift, const WORD16 *window,
55*15dc779aSAndroid Build Coastguard Worker     WORD16 ch_fac);
56*15dc779aSAndroid Build Coastguard Worker 
57*15dc779aSAndroid Build Coastguard Worker VOID ixheaacd_post_twid_overlap_add_armv8(
58*15dc779aSAndroid Build Coastguard Worker     WORD32 pcm_out[], WORD32 spec_data[],
59*15dc779aSAndroid Build Coastguard Worker     ia_aac_dec_imdct_tables_struct *ptr_imdct_tables, WORD npoints,
60*15dc779aSAndroid Build Coastguard Worker     WORD32 *ptr_overlap_buf, WORD16 q_shift, const WORD16 *window,
61*15dc779aSAndroid Build Coastguard Worker     WORD16 ch_fac);
62*15dc779aSAndroid Build Coastguard Worker 
63*15dc779aSAndroid Build Coastguard Worker VOID ixheaacd_pretwiddle_compute_dec(
64*15dc779aSAndroid Build Coastguard Worker     WORD32 *spec_data1, WORD32 *spec_data2, WORD32 *out_ptr,
65*15dc779aSAndroid Build Coastguard Worker     ia_aac_dec_imdct_tables_struct *ptr_imdct_tables, WORD npoints4,
66*15dc779aSAndroid Build Coastguard Worker     WORD32 neg_expo);
67*15dc779aSAndroid Build Coastguard Worker 
68*15dc779aSAndroid Build Coastguard Worker VOID ixheaacd_pretwiddle_compute_960_dec(
69*15dc779aSAndroid Build Coastguard Worker     WORD32 *spec_data1, WORD32 *spec_data2, WORD32 *out_ptr,
70*15dc779aSAndroid Build Coastguard Worker     ia_aac_dec_imdct_tables_struct *ptr_imdct_tables, WORD npoints4,
71*15dc779aSAndroid Build Coastguard Worker     WORD32 neg_expo);
72*15dc779aSAndroid Build Coastguard Worker 
73*15dc779aSAndroid Build Coastguard Worker VOID ixheaacd_pretwiddle_compute_armv7(
74*15dc779aSAndroid Build Coastguard Worker     WORD32 *spec_data1, WORD32 *spec_data2, WORD32 *out_ptr,
75*15dc779aSAndroid Build Coastguard Worker     ia_aac_dec_imdct_tables_struct *ptr_imdct_tables, WORD npoints4,
76*15dc779aSAndroid Build Coastguard Worker     WORD32 neg_expo);
77*15dc779aSAndroid Build Coastguard Worker 
78*15dc779aSAndroid Build Coastguard Worker VOID ixheaacd_pretwiddle_compute_armv8(
79*15dc779aSAndroid Build Coastguard Worker     WORD32 *spec_data1, WORD32 *spec_data2, WORD32 *out_ptr,
80*15dc779aSAndroid Build Coastguard Worker     ia_aac_dec_imdct_tables_struct *ptr_imdct_tables, WORD npoints4,
81*15dc779aSAndroid Build Coastguard Worker     WORD32 neg_expo);
82*15dc779aSAndroid Build Coastguard Worker 
83*15dc779aSAndroid Build Coastguard Worker VOID ixheaacd_imdct_using_fft_dec(
84*15dc779aSAndroid Build Coastguard Worker     ia_aac_dec_imdct_tables_struct *ptr_imdct_tables, WORD32 npoints,
85*15dc779aSAndroid Build Coastguard Worker     WORD32 *ptr_x, WORD32 *ptr_y);
86*15dc779aSAndroid Build Coastguard Worker 
87*15dc779aSAndroid Build Coastguard Worker VOID ixheaacd_imdct_using_fft_armv7(
88*15dc779aSAndroid Build Coastguard Worker     ia_aac_dec_imdct_tables_struct *ptr_imdct_tables, WORD32 npoints,
89*15dc779aSAndroid Build Coastguard Worker     WORD32 *ptr_x, WORD32 *ptr_y);
90*15dc779aSAndroid Build Coastguard Worker 
91*15dc779aSAndroid Build Coastguard Worker VOID ixheaacd_imdct_using_fft_armv8(
92*15dc779aSAndroid Build Coastguard Worker     ia_aac_dec_imdct_tables_struct *ptr_imdct_tables, WORD32 npoints,
93*15dc779aSAndroid Build Coastguard Worker     WORD32 *ptr_x, WORD32 *ptr_y);
94*15dc779aSAndroid Build Coastguard Worker 
95*15dc779aSAndroid Build Coastguard Worker VOID ixheaacd_fft_480_ld(WORD32 *inp, WORD32 *op,
96*15dc779aSAndroid Build Coastguard Worker                          ia_aac_dec_imdct_tables_struct *imdct_tables_ptr);
97*15dc779aSAndroid Build Coastguard Worker 
98*15dc779aSAndroid Build Coastguard Worker VOID ixheaacd_fft_5(WORD32 *inp, WORD32 *op);
99*15dc779aSAndroid Build Coastguard Worker 
100*15dc779aSAndroid Build Coastguard Worker VOID ixheaacd_fft_3(WORD32 *inp, WORD32 *op);
101*15dc779aSAndroid Build Coastguard Worker 
102*15dc779aSAndroid Build Coastguard Worker VOID ixheaacd_fft_960_15(WORD32 *inp, WORD32 *op,
103*15dc779aSAndroid Build Coastguard Worker                          ia_aac_dec_imdct_tables_struct *imdct_tables_ptr);
104*15dc779aSAndroid Build Coastguard Worker 
105*15dc779aSAndroid Build Coastguard Worker VOID ixheaacd_fft_960(WORD32 *inp, WORD32 *op,
106*15dc779aSAndroid Build Coastguard Worker                       ia_aac_dec_imdct_tables_struct *imdct_tables_ptr);
107*15dc779aSAndroid Build Coastguard Worker 
108*15dc779aSAndroid Build Coastguard Worker VOID ixheaacd_fft_120(ia_aac_dec_imdct_tables_struct *imdct_tables_ptr,
109*15dc779aSAndroid Build Coastguard Worker                       WORD32 npoints, WORD32* ptr_x, WORD32* ptr_y);
110*15dc779aSAndroid Build Coastguard Worker 
111*15dc779aSAndroid Build Coastguard Worker VOID ixheaacd_fft_32_points(WORD16 *ptr_w, WORD32 npoints,
112*15dc779aSAndroid Build Coastguard Worker                             WORD32* ptr_x, WORD32* ptr_y);
113*15dc779aSAndroid Build Coastguard Worker 
114*15dc779aSAndroid Build Coastguard Worker VOID ixheaacd_ld_dec_fft_15_opt(WORD32 *inp, WORD32 *op, WORD32 *fft3out,
115*15dc779aSAndroid Build Coastguard Worker                                 WORD16 *re_arr_tab_sml_240_ptr);
116*15dc779aSAndroid Build Coastguard Worker 
117*15dc779aSAndroid Build Coastguard Worker VOID ixheaacd_dec_rearrange_short(WORD32 *ip, WORD32 *op, WORD32 mdct_len_2,
118*15dc779aSAndroid Build Coastguard Worker                                   WORD16 *re_arr_tab);
119*15dc779aSAndroid Build Coastguard Worker 
120*15dc779aSAndroid Build Coastguard Worker VOID ixheaacd_pre_twiddle(WORD32 *xptr, WORD32 *data, WORD32 n,
121*15dc779aSAndroid Build Coastguard Worker                           WORD32 *cos_array_ptr, WORD32 neg_expo);
122*15dc779aSAndroid Build Coastguard Worker 
123*15dc779aSAndroid Build Coastguard Worker VOID ixheaacd_pre_twiddle_960(WORD32 *xptr, WORD32 *data, WORD32 n,
124*15dc779aSAndroid Build Coastguard Worker                               WORD32 *cos_array_ptr, WORD32 neg_expo);
125*15dc779aSAndroid Build Coastguard Worker 
126*15dc779aSAndroid Build Coastguard Worker VOID ixheaacd_pre_twiddle_120(WORD32 *xptr, WORD32 *data, WORD32 n,
127*15dc779aSAndroid Build Coastguard Worker                               WORD16 *cos_array_ptr, WORD32 neg_expo);
128*15dc779aSAndroid Build Coastguard Worker 
129*15dc779aSAndroid Build Coastguard Worker VOID ixheaacd_post_twiddle_ld(WORD32 out[], WORD32 x[],
130*15dc779aSAndroid Build Coastguard Worker                               const WORD32 *cos_sin_ptr, WORD m);
131*15dc779aSAndroid Build Coastguard Worker 
132*15dc779aSAndroid Build Coastguard Worker VOID ixheaacd_post_twiddle_960(WORD32 out[], WORD32 x[],
133*15dc779aSAndroid Build Coastguard Worker                                const WORD32 *cos_sin_ptr, WORD m);
134*15dc779aSAndroid Build Coastguard Worker 
135*15dc779aSAndroid Build Coastguard Worker VOID ixheaacd_post_twiddle_120(WORD32 out[], WORD32 x[],
136*15dc779aSAndroid Build Coastguard Worker                                const WORD16 *cos_sin_ptr, WORD m);
137*15dc779aSAndroid Build Coastguard Worker 
138*15dc779aSAndroid Build Coastguard Worker VOID ixheaacd_post_twiddle_eld(WORD32 out[], WORD32 x[],
139*15dc779aSAndroid Build Coastguard Worker                                const WORD32 *cos_sin_ptr, WORD m);
140*15dc779aSAndroid Build Coastguard Worker 
141*15dc779aSAndroid Build Coastguard Worker VOID ixheaacd_fft32x32_ld_dec(ia_aac_dec_imdct_tables_struct *imdct_tables_ptr,
142*15dc779aSAndroid Build Coastguard Worker                               WORD32 npoints, WORD32 *ptr_x, WORD32 *ptr_y);
143*15dc779aSAndroid Build Coastguard Worker 
144*15dc779aSAndroid Build Coastguard Worker VOID ixheaacd_fft32x32_ld2_armv7(
145*15dc779aSAndroid Build Coastguard Worker     ia_aac_dec_imdct_tables_struct *imdct_tables_ptr, WORD32 npoints,
146*15dc779aSAndroid Build Coastguard Worker     WORD32 *ptr_x, WORD32 *ptr_y);
147*15dc779aSAndroid Build Coastguard Worker 
148*15dc779aSAndroid Build Coastguard Worker VOID ixheaacd_fft32x32_ld2_armv8(
149*15dc779aSAndroid Build Coastguard Worker     ia_aac_dec_imdct_tables_struct *imdct_tables_ptr, WORD32 npoints,
150*15dc779aSAndroid Build Coastguard Worker     WORD32 *ptr_x, WORD32 *ptr_y);
151*15dc779aSAndroid Build Coastguard Worker 
152*15dc779aSAndroid Build Coastguard Worker WORD16 ixheaacd_neg_expo_inc_dec(WORD16 neg_expo);
153*15dc779aSAndroid Build Coastguard Worker 
154*15dc779aSAndroid Build Coastguard Worker WORD16 ixheaacd_neg_expo_inc_arm(WORD16 neg_expo);
155*15dc779aSAndroid Build Coastguard Worker 
156*15dc779aSAndroid Build Coastguard Worker VOID ixheaacd_rearrange_dec(WORD32 *ip, WORD32 *op, WORD32 mdct_len_2,
157*15dc779aSAndroid Build Coastguard Worker                             UWORD8 *re_arr_tab);
158*15dc779aSAndroid Build Coastguard Worker 
159*15dc779aSAndroid Build Coastguard Worker VOID ia_aac_ld_dec_rearrange_armv7(WORD32 *ip, WORD32 *op, WORD32 mdct_len_2,
160*15dc779aSAndroid Build Coastguard Worker                                    UWORD8 *re_arr_tab);
161*15dc779aSAndroid Build Coastguard Worker 
162*15dc779aSAndroid Build Coastguard Worker VOID ixheaacd_fft_15_ld_dec(WORD32 *inp, WORD32 *op, WORD32 *fft3out,
163*15dc779aSAndroid Build Coastguard Worker                             UWORD8 *re_arr_tab_sml_240_ptr);
164*15dc779aSAndroid Build Coastguard Worker 
165*15dc779aSAndroid Build Coastguard Worker VOID ixheaacd_fft_15_ld_armv7(WORD32 *inp, WORD32 *op, WORD32 *fft3out,
166*15dc779aSAndroid Build Coastguard Worker                               UWORD8 *re_arr_tab_sml_240_ptr);
167*15dc779aSAndroid Build Coastguard Worker 
168*15dc779aSAndroid Build Coastguard Worker VOID ixheaacd_inverse_transform_512(
169*15dc779aSAndroid Build Coastguard Worker     WORD32 data[], WORD32 temp[], WORD32 *imdct_scale, WORD32 *cos_sin_ptr,
170*15dc779aSAndroid Build Coastguard Worker     ia_aac_dec_imdct_tables_struct *imdct_tables_ptr, WORD32 object_type);
171*15dc779aSAndroid Build Coastguard Worker 
172*15dc779aSAndroid Build Coastguard Worker VOID ixheaacd_mdct_960(WORD32 *inp, WORD32 *scratch, WORD32 *mdct_scale,
173*15dc779aSAndroid Build Coastguard Worker                        WORD32 mdct_flag,
174*15dc779aSAndroid Build Coastguard Worker                        ia_aac_dec_imdct_tables_struct *imdct_tables_ptr);
175*15dc779aSAndroid Build Coastguard Worker 
176*15dc779aSAndroid Build Coastguard Worker VOID ixheaacd_mdct_480_ld(WORD32 *inp, WORD32 *scratch, WORD32 *mdct_scale,
177*15dc779aSAndroid Build Coastguard Worker                           WORD32 mdct_flag,
178*15dc779aSAndroid Build Coastguard Worker                           ia_aac_dec_imdct_tables_struct *imdct_tables_ptr,
179*15dc779aSAndroid Build Coastguard Worker                           WORD32 object_type);
180*15dc779aSAndroid Build Coastguard Worker #endif
181