Coverage Report

Created: 2026-03-21 07:02

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