Coverage Report

Created: 2026-01-10 06:30

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