Coverage Report

Created: 2025-10-13 07:04

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