/src/libxaac/encoder/ixheaace_mdct_480.c
Line | Count | Source (jump to first uncovered line) |
1 | | /****************************************************************************** |
2 | | * * |
3 | | * Copyright (C) 2023 The Android Open Source Project |
4 | | * |
5 | | * Licensed under the Apache License, Version 2.0 (the "License"); |
6 | | * you may not use this file except in compliance with the License. |
7 | | * You may obtain a copy of the License at: |
8 | | * |
9 | | * http://www.apache.org/licenses/LICENSE-2.0 |
10 | | * |
11 | | * Unless required by applicable law or agreed to in writing, software |
12 | | * distributed under the License is distributed on an "AS IS" BASIS, |
13 | | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
14 | | * See the License for the specific language governing permissions and |
15 | | * limitations under the License. |
16 | | * |
17 | | ***************************************************************************** |
18 | | * Originally developed and contributed by Ittiam Systems Pvt. Ltd, Bangalore |
19 | | */ |
20 | | |
21 | | #include <string.h> |
22 | | #include "ixheaac_type_def.h" |
23 | | #include "ixheaace_psy_const.h" |
24 | | #include "ixheaace_tns.h" |
25 | | #include "ixheaace_tns_params.h" |
26 | | #include "ixheaace_rom.h" |
27 | | #include "ixheaace_common_rom.h" |
28 | | #include "ixheaac_constants.h" |
29 | | #include "ixheaace_aac_constants.h" |
30 | | |
31 | | #include "ixheaace_fft.h" |
32 | | |
33 | 0 | void ia_aac_ld_enc_rearrange(WORD32 *ip, WORD32 *op, WORD32 N, UWORD8 *re_arr_tab) { |
34 | 0 | WORD32 n, i = 0; |
35 | |
|
36 | 0 | for (n = 0; n < N; n++) { |
37 | 0 | WORD32 idx = re_arr_tab[n] << 1; |
38 | |
|
39 | 0 | op[i++] = ip[idx]; |
40 | 0 | op[i++] = ip[idx + 1]; |
41 | 0 | } |
42 | |
|
43 | 0 | return; |
44 | 0 | } |
45 | | |
46 | 1.58M | static VOID ia_enhaacplus_enc_fft15(FLOAT32 *ptr_vec) { |
47 | 1.58M | FLOAT32 r0, r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11, r12, r13, r14, r15, r16, r17, i0, i1, |
48 | 1.58M | i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, tmp0, tmp1, tmp2, |
49 | 1.58M | tmp3, tmp4, tmp5, tmp6, tmp7, tmp8, tmp9, tmp10, tmp11, tmp12, tmp13, tmp14, tmp15, tmp16, |
50 | 1.58M | tmp17, tmp18, tmp19, tmp20, tmp21, tmp22, tmp23, tmp24, tmp25, tmp26, tmp27, tmp28, tmp29; |
51 | | |
52 | | /* Pre-additions real part */ |
53 | 1.58M | r1 = ptr_vec[2] + ptr_vec[8]; |
54 | 1.58M | r2 = ptr_vec[2] - ptr_vec[8]; |
55 | 1.58M | r3 = ptr_vec[4] + ptr_vec[16]; |
56 | 1.58M | r4 = ptr_vec[4] - ptr_vec[16]; |
57 | 1.58M | r5 = ptr_vec[6] + ptr_vec[24]; |
58 | 1.58M | r6 = ptr_vec[6] - ptr_vec[24]; |
59 | 1.58M | r7 = ptr_vec[10] + ptr_vec[20]; |
60 | 1.58M | r8 = ptr_vec[10] - ptr_vec[20]; |
61 | 1.58M | r9 = ptr_vec[12] + ptr_vec[18]; |
62 | 1.58M | r10 = ptr_vec[12] - ptr_vec[18]; |
63 | 1.58M | r11 = ptr_vec[14] + ptr_vec[26]; |
64 | 1.58M | r12 = ptr_vec[14] - ptr_vec[26]; |
65 | 1.58M | r13 = ptr_vec[22] + ptr_vec[28]; |
66 | 1.58M | r14 = ptr_vec[22] - ptr_vec[28]; |
67 | | |
68 | 1.58M | tmp2 = r1 + r3; |
69 | 1.58M | tmp4 = r1 - r3; |
70 | 1.58M | tmp6 = r2 + r14; |
71 | 1.58M | tmp8 = r2 - r14; |
72 | 1.58M | tmp10 = r4 + r12; |
73 | 1.58M | tmp12 = r4 - r12; |
74 | 1.58M | tmp14 = r5 + r9; |
75 | 1.58M | tmp16 = r5 - r9; |
76 | 1.58M | tmp18 = r11 + r13; |
77 | 1.58M | tmp20 = r11 - r13; |
78 | | |
79 | | /* Pre-additions imaginary part */ |
80 | 1.58M | i1 = ptr_vec[3] + ptr_vec[9]; |
81 | 1.58M | i2 = ptr_vec[3] - ptr_vec[9]; |
82 | 1.58M | i3 = ptr_vec[5] + ptr_vec[17]; |
83 | 1.58M | i4 = ptr_vec[5] - ptr_vec[17]; |
84 | 1.58M | i5 = ptr_vec[7] + ptr_vec[25]; |
85 | 1.58M | i6 = ptr_vec[7] - ptr_vec[25]; |
86 | 1.58M | i7 = ptr_vec[11] + ptr_vec[21]; |
87 | 1.58M | i8 = ptr_vec[11] - ptr_vec[21]; |
88 | 1.58M | i9 = ptr_vec[13] + ptr_vec[19]; |
89 | 1.58M | i10 = ptr_vec[13] - ptr_vec[19]; |
90 | 1.58M | i11 = ptr_vec[15] + ptr_vec[27]; |
91 | 1.58M | i12 = ptr_vec[15] - ptr_vec[27]; |
92 | 1.58M | i13 = ptr_vec[23] + ptr_vec[29]; |
93 | 1.58M | i14 = ptr_vec[23] - ptr_vec[29]; |
94 | | |
95 | 1.58M | tmp3 = i1 + i3; |
96 | 1.58M | tmp5 = i1 - i3; |
97 | 1.58M | tmp7 = i2 + i14; |
98 | 1.58M | tmp9 = i2 - i14; |
99 | 1.58M | tmp11 = i4 + i12; |
100 | 1.58M | tmp13 = i4 - i12; |
101 | 1.58M | tmp15 = i5 + i9; |
102 | 1.58M | tmp17 = i5 - i9; |
103 | 1.58M | tmp19 = i11 + i13; |
104 | 1.58M | tmp21 = i11 - i13; |
105 | | |
106 | | /* Pre-additions and core multiplications */ |
107 | 1.58M | tmp28 = tmp4 + tmp20; |
108 | 1.58M | tmp29 = tmp5 + tmp21; |
109 | 1.58M | r4 = tmp2 + tmp18; |
110 | 1.58M | i4 = tmp3 + tmp19; |
111 | 1.58M | r3 = (FLOAT32)((r4 + tmp14) * -1.25); |
112 | 1.58M | i3 = (FLOAT32)((i4 + tmp15) * -1.25); |
113 | 1.58M | r2 = (FLOAT32)((tmp29 - i8) * -8.660254037844387e-1); |
114 | 1.58M | i2 = (FLOAT32)((tmp28 - r8) * 8.660254037844387e-1); |
115 | 1.58M | r1 = r4 + r7; |
116 | 1.58M | i1 = i4 + i7; |
117 | 1.58M | r0 = r1 + ptr_vec[0] + tmp14; |
118 | 1.58M | i0 = i1 + ptr_vec[1] + tmp15; |
119 | 1.58M | r7 = tmp4 - tmp20; |
120 | 1.58M | i7 = tmp5 - tmp21; |
121 | 1.58M | r8 = (FLOAT32)((tmp3 - tmp19) * -4.841229182759272e-1); |
122 | 1.58M | i8 = (FLOAT32)((tmp2 - tmp18) * 4.841229182759272e-1); |
123 | 1.58M | tmp0 = tmp6 + r10; |
124 | 1.58M | tmp1 = tmp7 + i10; |
125 | 1.58M | tmp2 = r6 - tmp10; |
126 | 1.58M | tmp3 = i6 - tmp11; |
127 | 1.58M | r10 = (FLOAT32)(tmp7 * -2.308262652881440); |
128 | 1.58M | i10 = (FLOAT32)(tmp6 * 2.308262652881440); |
129 | 1.58M | r11 = (FLOAT32)(tmp8 * 1.332676064001459); |
130 | 1.58M | i11 = (FLOAT32)(tmp9 * 1.332676064001459); |
131 | 1.58M | r6 = (FLOAT32)((r7 - tmp16) * 5.590169943749475e-1); |
132 | 1.58M | i6 = (FLOAT32)((i7 - tmp17) * 5.590169943749475e-1); |
133 | 1.58M | r12 = (FLOAT32)((tmp1 + tmp3) * 5.877852522924733e-1); |
134 | 1.58M | i12 = (FLOAT32)((tmp0 + tmp2) * -5.877852522924733e-1); |
135 | 1.58M | r13 = (FLOAT32)((tmp7 - tmp11) * -8.816778784387098e-1); |
136 | 1.58M | i13 = (FLOAT32)((tmp6 - tmp10) * 8.816778784387098e-1); |
137 | 1.58M | r14 = (FLOAT32)((tmp8 + tmp12) * 5.090369604551274e-1); |
138 | 1.58M | i14 = (FLOAT32)((tmp9 + tmp13) * 5.090369604551274e-1); |
139 | 1.58M | r16 = (FLOAT32)(tmp11 * 5.449068960040204e-1); |
140 | 1.58M | i16 = (FLOAT32)(tmp10 * -5.449068960040204e-1); |
141 | 1.58M | r17 = (FLOAT32)(tmp12 * 3.146021430912046e-1); |
142 | 1.58M | i17 = (FLOAT32)(tmp13 * 3.146021430912046e-1); |
143 | | |
144 | 1.58M | r4 *= 1.875; |
145 | 1.58M | i4 *= 1.875; |
146 | 1.58M | r1 *= -1.5; |
147 | 1.58M | i1 *= -1.5; |
148 | 1.58M | r7 *= (FLOAT32)(-8.385254915624212e-1); |
149 | 1.58M | i7 *= (FLOAT32)(-8.385254915624212e-1); |
150 | 1.58M | r5 = (FLOAT32)(tmp29 * 1.082531754730548); |
151 | 1.58M | i5 = (FLOAT32)(tmp28 * -1.082531754730548); |
152 | 1.58M | r9 = (FLOAT32)(tmp1 * 1.5388417685876270); |
153 | 1.58M | i9 = (FLOAT32)(tmp0 * -1.538841768587627); |
154 | 1.58M | r15 = (FLOAT32)(tmp3 * 3.632712640026803e-1); |
155 | 1.58M | i15 = (FLOAT32)(tmp2 * -3.632712640026803e-1); |
156 | | |
157 | | /* Post-additions real part */ |
158 | 1.58M | tmp2 = r0 + r1; |
159 | 1.58M | tmp4 = r3 + r6; |
160 | 1.58M | tmp6 = r3 - r6; |
161 | 1.58M | tmp8 = r4 + r5; |
162 | 1.58M | tmp10 = r4 - r5; |
163 | 1.58M | tmp12 = r7 + r8; |
164 | 1.58M | tmp14 = r7 - r8; |
165 | 1.58M | tmp16 = r13 + r16; |
166 | 1.58M | tmp18 = r14 + r17; |
167 | 1.58M | tmp20 = r10 - r13; |
168 | 1.58M | tmp22 = r11 - r14; |
169 | 1.58M | tmp24 = r12 + r15; |
170 | 1.58M | tmp26 = r12 - r9; |
171 | | |
172 | 1.58M | r1 = tmp2 + r2; |
173 | 1.58M | r2 = tmp2 - r2; |
174 | 1.58M | r3 = tmp4 + tmp26; |
175 | 1.58M | r4 = tmp4 - tmp26; |
176 | 1.58M | r5 = tmp6 + tmp24; |
177 | 1.58M | r6 = tmp6 - tmp24; |
178 | 1.58M | r7 = tmp16 + tmp18; |
179 | 1.58M | r8 = tmp16 - tmp18; |
180 | 1.58M | r9 = tmp20 - tmp22; |
181 | 1.58M | r10 = tmp20 + tmp22; |
182 | 1.58M | r11 = r1 + tmp8; |
183 | 1.58M | r12 = r2 + tmp10; |
184 | 1.58M | r13 = r11 - tmp12; |
185 | 1.58M | r14 = r12 - tmp14; |
186 | 1.58M | r15 = r12 + tmp14; |
187 | 1.58M | r16 = r11 + tmp12; |
188 | | |
189 | | /* Post-additions imaginary part */ |
190 | 1.58M | tmp3 = i0 + i1; |
191 | 1.58M | tmp5 = i3 + i6; |
192 | 1.58M | tmp7 = i3 - i6; |
193 | 1.58M | tmp9 = i4 + i5; |
194 | 1.58M | tmp11 = i4 - i5; |
195 | 1.58M | tmp13 = i7 + i8; |
196 | 1.58M | tmp15 = i7 - i8; |
197 | 1.58M | tmp17 = i13 + i16; |
198 | 1.58M | tmp19 = i14 + i17; |
199 | 1.58M | tmp21 = i10 - i13; |
200 | 1.58M | tmp23 = i11 - i14; |
201 | 1.58M | tmp25 = i12 + i15; |
202 | 1.58M | tmp27 = i12 - i9; |
203 | | |
204 | 1.58M | i1 = tmp3 + i2; |
205 | 1.58M | i2 = tmp3 - i2; |
206 | 1.58M | i3 = tmp5 + tmp27; |
207 | 1.58M | i4 = tmp5 - tmp27; |
208 | 1.58M | i5 = tmp7 + tmp25; |
209 | 1.58M | i6 = tmp7 - tmp25; |
210 | 1.58M | i7 = tmp17 + tmp19; |
211 | 1.58M | i8 = tmp17 - tmp19; |
212 | 1.58M | i9 = tmp21 - tmp23; |
213 | 1.58M | i10 = tmp21 + tmp23; |
214 | 1.58M | i11 = i1 + tmp9; |
215 | 1.58M | i12 = i2 + tmp11; |
216 | 1.58M | i13 = i11 - tmp13; |
217 | 1.58M | i14 = i12 - tmp15; |
218 | 1.58M | i15 = i12 + tmp15; |
219 | 1.58M | i16 = i11 + tmp13; |
220 | | |
221 | 1.58M | *ptr_vec++ = r0; |
222 | 1.58M | *ptr_vec++ = i0; |
223 | 1.58M | *ptr_vec++ = r13 + r5 + r7; |
224 | 1.58M | *ptr_vec++ = i13 + i5 + i7; |
225 | 1.58M | *ptr_vec++ = r15 + r3 - r9; |
226 | 1.58M | *ptr_vec++ = i15 + i3 - i9; |
227 | 1.58M | *ptr_vec++ = r0 + r4; |
228 | 1.58M | *ptr_vec++ = i0 + i4; |
229 | 1.58M | *ptr_vec++ = r13 + r6 - r7; |
230 | 1.58M | *ptr_vec++ = i13 + i6 - i7; |
231 | 1.58M | *ptr_vec++ = r2; |
232 | 1.58M | *ptr_vec++ = i2; |
233 | 1.58M | *ptr_vec++ = r0 + r5; |
234 | 1.58M | *ptr_vec++ = i0 + i5; |
235 | 1.58M | *ptr_vec++ = r16 + r3 - r10; |
236 | 1.58M | *ptr_vec++ = i16 + i3 - i10; |
237 | 1.58M | *ptr_vec++ = r15 + r4 + r9; |
238 | 1.58M | *ptr_vec++ = i15 + i4 + i9; |
239 | 1.58M | *ptr_vec++ = r0 + r6; |
240 | 1.58M | *ptr_vec++ = i0 + i6; |
241 | 1.58M | *ptr_vec++ = r1; |
242 | 1.58M | *ptr_vec++ = i1; |
243 | 1.58M | *ptr_vec++ = r14 + r5 + r8; |
244 | 1.58M | *ptr_vec++ = i14 + i5 + i8; |
245 | 1.58M | *ptr_vec++ = r0 + r3; |
246 | 1.58M | *ptr_vec++ = i0 + i3; |
247 | 1.58M | *ptr_vec++ = r16 + r4 + r10; |
248 | 1.58M | *ptr_vec++ = i16 + i4 + i10; |
249 | 1.58M | *ptr_vec++ = r14 + r6 - r8; |
250 | 1.58M | *ptr_vec++ = i14 + i6 - i8; |
251 | 1.58M | } |
252 | | |
253 | 1.48M | static VOID ia_enhaacplus_enc_fft16(FLOAT32 *ptr_vec) { |
254 | 1.48M | FLOAT32 var10, var11, var12, var13, var14, var15, var16, var17, var18, var19, var110, var111, |
255 | 1.48M | var112, var113, var114, var115, var20, var21, var22, var23, var24, var25, var26, var27, |
256 | 1.48M | var28, var29, var210, var211, var212, var213, var214, var215, arr0, arr1, arr2, arr3, arr4, |
257 | 1.48M | arr5, arr6, arr7, arr8, arr9, arr10, arr11, arr12, arr13, arr14, arr15; |
258 | | |
259 | | /* Pre-additions */ |
260 | 1.48M | arr0 = ptr_vec[0] + ptr_vec[16]; |
261 | 1.48M | arr8 = ptr_vec[8] + ptr_vec[24]; |
262 | 1.48M | var10 = arr0 + arr8; |
263 | 1.48M | var12 = arr0 - arr8; |
264 | 1.48M | arr1 = ptr_vec[1] + ptr_vec[17]; |
265 | 1.48M | arr9 = ptr_vec[9] + ptr_vec[25]; |
266 | 1.48M | var11 = arr1 + arr9; |
267 | 1.48M | var13 = arr1 - arr9; |
268 | 1.48M | arr2 = ptr_vec[2] + ptr_vec[18]; |
269 | 1.48M | arr10 = ptr_vec[10] + ptr_vec[26]; |
270 | 1.48M | var14 = arr2 + arr10; |
271 | 1.48M | var16 = arr2 - arr10; |
272 | 1.48M | arr3 = ptr_vec[3] + ptr_vec[19]; |
273 | 1.48M | arr11 = ptr_vec[11] + ptr_vec[27]; |
274 | 1.48M | var15 = arr3 + arr11; |
275 | 1.48M | var17 = arr3 - arr11; |
276 | 1.48M | arr4 = ptr_vec[4] + ptr_vec[20]; |
277 | 1.48M | arr12 = ptr_vec[12] + ptr_vec[28]; |
278 | 1.48M | var18 = arr4 + arr12; |
279 | 1.48M | var110 = arr4 - arr12; |
280 | 1.48M | arr5 = ptr_vec[5] + ptr_vec[21]; |
281 | 1.48M | arr13 = ptr_vec[13] + ptr_vec[29]; |
282 | 1.48M | var19 = arr5 + arr13; |
283 | 1.48M | var111 = arr5 - arr13; |
284 | 1.48M | arr6 = ptr_vec[6] + ptr_vec[22]; |
285 | 1.48M | arr14 = ptr_vec[14] + ptr_vec[30]; |
286 | 1.48M | var112 = arr6 + arr14; |
287 | 1.48M | var114 = arr6 - arr14; |
288 | 1.48M | arr7 = ptr_vec[7] + ptr_vec[23]; |
289 | 1.48M | arr15 = ptr_vec[15] + ptr_vec[31]; |
290 | 1.48M | var113 = arr7 + arr15; |
291 | 1.48M | var115 = arr7 - arr15; |
292 | | |
293 | | /* Pre-additions and core multiplications */ |
294 | 1.48M | var20 = var10 + var18; |
295 | 1.48M | var24 = var10 - var18; |
296 | 1.48M | var21 = var11 + var19; |
297 | 1.48M | var25 = var11 - var19; |
298 | 1.48M | var28 = var12 - var111; |
299 | 1.48M | var210 = var12 + var111; |
300 | 1.48M | var29 = var13 + var110; |
301 | 1.48M | var211 = var13 - var110; |
302 | 1.48M | var22 = var14 + var112; |
303 | 1.48M | var27 = var14 - var112; |
304 | 1.48M | var23 = var15 + var113; |
305 | 1.48M | var26 = var113 - var15; |
306 | | |
307 | 1.48M | var11 = var16 + var114; |
308 | 1.48M | var12 = var16 - var114; |
309 | 1.48M | var10 = var17 + var115; |
310 | 1.48M | var13 = var17 - var115; |
311 | 1.48M | var212 = (var10 + var12) * IXHEAACE_INV_SQRT2; |
312 | 1.48M | var214 = (var10 - var12) * IXHEAACE_INV_SQRT2; |
313 | 1.48M | var213 = (var13 - var11) * IXHEAACE_INV_SQRT2; |
314 | 1.48M | var215 = (var11 + var13) * -IXHEAACE_INV_SQRT2; |
315 | | |
316 | | /* odd */ |
317 | 1.48M | arr0 = ptr_vec[0] - ptr_vec[16]; |
318 | 1.48M | arr1 = ptr_vec[1] - ptr_vec[17]; |
319 | 1.48M | arr2 = ptr_vec[2] - ptr_vec[18]; |
320 | 1.48M | arr3 = ptr_vec[3] - ptr_vec[19]; |
321 | 1.48M | arr4 = ptr_vec[4] - ptr_vec[20]; |
322 | 1.48M | arr5 = ptr_vec[5] - ptr_vec[21]; |
323 | 1.48M | arr6 = ptr_vec[6] - ptr_vec[22]; |
324 | 1.48M | arr7 = ptr_vec[7] - ptr_vec[23]; |
325 | 1.48M | arr8 = ptr_vec[8] - ptr_vec[24]; |
326 | 1.48M | arr9 = ptr_vec[9] - ptr_vec[25]; |
327 | 1.48M | arr10 = ptr_vec[10] - ptr_vec[26]; |
328 | 1.48M | arr11 = ptr_vec[11] - ptr_vec[27]; |
329 | 1.48M | arr12 = ptr_vec[12] - ptr_vec[28]; |
330 | 1.48M | arr13 = ptr_vec[13] - ptr_vec[29]; |
331 | 1.48M | arr14 = ptr_vec[14] - ptr_vec[30]; |
332 | 1.48M | arr15 = ptr_vec[15] - ptr_vec[31]; |
333 | | |
334 | | /* Pre-additions and core multiplications */ |
335 | 1.48M | var19 = (arr2 + arr14) * -IXHEAACE_COS_3PI_DIV8; |
336 | 1.48M | var110 = (arr2 - arr14) * IXHEAACE_COS_PI_DIV8; |
337 | 1.48M | var18 = (arr3 + arr15) * IXHEAACE_COS_3PI_DIV8; |
338 | 1.48M | var111 = (arr3 - arr15) * IXHEAACE_COS_PI_DIV8; |
339 | 1.48M | var15 = (arr4 + arr12) * -IXHEAACE_INV_SQRT2; |
340 | 1.48M | var16 = (arr4 - arr12) * IXHEAACE_INV_SQRT2; |
341 | 1.48M | var14 = (arr5 + arr13) * IXHEAACE_INV_SQRT2; |
342 | 1.48M | var17 = (arr5 - arr13) * IXHEAACE_INV_SQRT2; |
343 | 1.48M | var113 = (arr6 + arr10) * -IXHEAACE_COS_PI_DIV8; |
344 | 1.48M | var114 = (arr6 - arr10) * IXHEAACE_COS_3PI_DIV8; |
345 | 1.48M | var112 = (arr7 + arr11) * IXHEAACE_COS_PI_DIV8; |
346 | 1.48M | var115 = (arr7 - arr11) * IXHEAACE_COS_3PI_DIV8; |
347 | | |
348 | | /* Core multiplications */ |
349 | 1.48M | arr2 = var18 * IXHEAACE_SQRT2PLUS1 - var112 * IXHEAACE_SQRT2MINUS1; |
350 | 1.48M | arr3 = var19 * IXHEAACE_SQRT2PLUS1 - var113 * IXHEAACE_SQRT2MINUS1; |
351 | 1.48M | arr4 = var110 * IXHEAACE_SQRT2MINUS1 - var114 * IXHEAACE_SQRT2PLUS1; |
352 | 1.48M | arr5 = var111 * IXHEAACE_SQRT2MINUS1 - var115 * IXHEAACE_SQRT2PLUS1; |
353 | | |
354 | | /* Post-additions */ |
355 | 1.48M | var18 = var18 + var112; |
356 | 1.48M | var19 = var19 + var113; |
357 | 1.48M | var110 = var110 + var114; |
358 | 1.48M | var111 = var111 + var115; |
359 | 1.48M | arr6 = arr0 + var14; |
360 | 1.48M | arr10 = arr0 - var14; |
361 | 1.48M | arr7 = arr1 + var15; |
362 | 1.48M | arr11 = arr1 - var15; |
363 | | |
364 | 1.48M | arr12 = var16 - arr9; |
365 | 1.48M | arr14 = var16 + arr9; |
366 | 1.48M | arr13 = arr8 + var17; |
367 | 1.48M | arr15 = arr8 - var17; |
368 | | |
369 | 1.48M | var10 = arr6 - arr14; |
370 | 1.48M | var12 = arr6 + arr14; |
371 | 1.48M | var11 = arr7 + arr15; |
372 | 1.48M | var13 = arr7 - arr15; |
373 | 1.48M | var14 = arr10 + arr12; |
374 | 1.48M | var16 = arr10 - arr12; |
375 | 1.48M | var15 = arr11 + arr13; |
376 | 1.48M | var17 = arr11 - arr13; |
377 | | |
378 | 1.48M | arr10 = var18 + var110; |
379 | 1.48M | var110 = var18 - var110; |
380 | 1.48M | arr11 = var19 + var111; |
381 | 1.48M | var111 = var19 - var111; |
382 | | |
383 | 1.48M | var112 = arr2 + arr4; |
384 | 1.48M | var114 = arr2 - arr4; |
385 | 1.48M | var113 = arr3 + arr5; |
386 | 1.48M | var115 = arr3 - arr5; |
387 | | |
388 | | /* Post-additions */ |
389 | 1.48M | ptr_vec[0] = var20 + var22; |
390 | 1.48M | ptr_vec[1] = var21 + var23; |
391 | 1.48M | ptr_vec[2] = var12 + arr10; |
392 | 1.48M | ptr_vec[3] = var13 + arr11; |
393 | 1.48M | ptr_vec[4] = var210 + var212; |
394 | 1.48M | ptr_vec[5] = var211 + var213; |
395 | 1.48M | ptr_vec[6] = var10 + var112; |
396 | 1.48M | ptr_vec[7] = var11 + var113; |
397 | 1.48M | ptr_vec[8] = var24 - var26; |
398 | 1.48M | ptr_vec[9] = var25 - var27; |
399 | 1.48M | ptr_vec[10] = var16 + var114; |
400 | 1.48M | ptr_vec[11] = var17 + var115; |
401 | 1.48M | ptr_vec[12] = var28 + var214; |
402 | 1.48M | ptr_vec[13] = var29 + var215; |
403 | 1.48M | ptr_vec[14] = var14 + var110; |
404 | 1.48M | ptr_vec[15] = var15 + var111; |
405 | 1.48M | ptr_vec[16] = var20 - var22; |
406 | 1.48M | ptr_vec[17] = var21 - var23; |
407 | 1.48M | ptr_vec[18] = var12 - arr10; |
408 | 1.48M | ptr_vec[19] = var13 - arr11; |
409 | 1.48M | ptr_vec[20] = var210 - var212; |
410 | 1.48M | ptr_vec[21] = var211 - var213; |
411 | 1.48M | ptr_vec[22] = var10 - var112; |
412 | 1.48M | ptr_vec[23] = var11 - var113; |
413 | 1.48M | ptr_vec[24] = var24 + var26; |
414 | 1.48M | ptr_vec[25] = var25 + var27; |
415 | 1.48M | ptr_vec[26] = var16 - var114; |
416 | 1.48M | ptr_vec[27] = var17 - var115; |
417 | 1.48M | ptr_vec[28] = var28 - var214; |
418 | 1.48M | ptr_vec[29] = var29 - var215; |
419 | 1.48M | ptr_vec[30] = var14 - var110; |
420 | 1.48M | ptr_vec[31] = var15 - var111; |
421 | 1.48M | } |
422 | | |
423 | 99.2k | static VOID ia_enhaacplus_enc_fft240(FLOAT32 *ptr_in) { |
424 | 99.2k | const WORD32 n1 = 240; |
425 | 99.2k | const WORD32 n2 = 15; |
426 | 99.2k | const WORD32 n3 = 16; |
427 | 99.2k | const WORD32 *ptr_idx1 = ia_enhaacplus_enc_fft240_table1; |
428 | 99.2k | const WORD32 *ptr_idx2 = ia_enhaacplus_enc_fft240_table2; |
429 | | |
430 | 99.2k | WORD32 k, l; |
431 | 99.2k | FLOAT32 temp[32], out[480]; |
432 | | |
433 | 1.58M | for (k = 0; k < n2; k++) { |
434 | 25.3M | for (l = 0; l < n3; l++) { |
435 | 23.8M | temp[2 * l] = ptr_in[2 * *ptr_idx1]; |
436 | 23.8M | temp[2 * l + 1] = ptr_in[2 * *ptr_idx1 + 1]; |
437 | 23.8M | ptr_idx1 += n2; |
438 | 23.8M | } |
439 | | |
440 | 1.48M | ia_enhaacplus_enc_fft16(temp); /* 16-point FFT */ |
441 | 1.48M | ptr_idx1 -= n1; |
442 | | |
443 | 25.3M | for (l = 0; l < n3; l++) { |
444 | 23.8M | ptr_in[2 * *ptr_idx1] = temp[2 * l]; |
445 | 23.8M | ptr_in[2 * *ptr_idx1 + 1] = temp[2 * l + 1]; |
446 | 23.8M | ptr_idx1 += n2; |
447 | 23.8M | } |
448 | | |
449 | 1.48M | ptr_idx1 -= n1 - 1; |
450 | 1.48M | } |
451 | | |
452 | 99.2k | ptr_idx1 -= n2; |
453 | | |
454 | 1.68M | for (k = 0; k < n3; k++) { |
455 | 25.4M | for (l = 0; l < n2; l++) { |
456 | 23.8M | temp[2 * l] = ptr_in[2 * *ptr_idx1]; |
457 | 23.8M | temp[2 * l + 1] = ptr_in[2 * *ptr_idx1++ + 1]; |
458 | 23.8M | } |
459 | | |
460 | 1.58M | ia_enhaacplus_enc_fft15(temp); /* 15-point FFT */ |
461 | | |
462 | 25.4M | for (l = 0; l < n2; l++) { |
463 | 23.8M | out[2 * *ptr_idx2] = temp[2 * l]; |
464 | 23.8M | out[2 * *ptr_idx2++ + 1] = temp[2 * l + 1]; |
465 | 23.8M | } |
466 | 1.58M | } |
467 | | |
468 | 99.2k | memcpy(ptr_in, out, (2 * n1) * sizeof(out[0])); |
469 | 99.2k | } |
470 | | |
471 | | VOID ia_aac_ld_enc_mdct_480(FLOAT32 *ptr_inp, FLOAT32 *ptr_scratch, WORD32 mdct_flag, |
472 | 99.2k | ixheaace_mdct_tables *pstr_mdct_tables) { |
473 | 99.2k | WORD32 k; |
474 | 99.2k | FLOAT32 const_mltfac = ((FLOAT32)FRAME_LEN_512) / FRAME_LEN_480; |
475 | | |
476 | 99.2k | ia_eaacp_enc_pre_twiddle_aac(ptr_scratch, ptr_inp, FRAME_LEN_480, |
477 | 99.2k | pstr_mdct_tables->cosine_array_960); |
478 | | |
479 | 99.2k | ia_enhaacplus_enc_fft240(ptr_scratch); |
480 | | |
481 | 99.2k | ia_enhaacplus_enc_post_twiddle(ptr_inp, ptr_scratch, pstr_mdct_tables->cosine_array_960, |
482 | 99.2k | FRAME_LEN_480); |
483 | | |
484 | 99.2k | if (0 == mdct_flag) { |
485 | 0 | for (k = 0; k < MDCT_LEN; k++) { |
486 | 0 | ptr_inp[k] *= const_mltfac; |
487 | 0 | } |
488 | 0 | } |
489 | 99.2k | } |