Coverage Report

Created: 2025-08-03 06:57

/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.34M
static VOID ia_enhaacplus_enc_fft15(FLOAT32 *ptr_vec) {
47
1.34M
  FLOAT32 r0, r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11, r12, r13, r14, r15, r16, r17, i0, i1,
48
1.34M
      i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, tmp0, tmp1, tmp2,
49
1.34M
      tmp3, tmp4, tmp5, tmp6, tmp7, tmp8, tmp9, tmp10, tmp11, tmp12, tmp13, tmp14, tmp15, tmp16,
50
1.34M
      tmp17, tmp18, tmp19, tmp20, tmp21, tmp22, tmp23, tmp24, tmp25, tmp26, tmp27, tmp28, tmp29;
51
52
  /* Pre-additions real part */
53
1.34M
  r1 = ptr_vec[2] + ptr_vec[8];
54
1.34M
  r2 = ptr_vec[2] - ptr_vec[8];
55
1.34M
  r3 = ptr_vec[4] + ptr_vec[16];
56
1.34M
  r4 = ptr_vec[4] - ptr_vec[16];
57
1.34M
  r5 = ptr_vec[6] + ptr_vec[24];
58
1.34M
  r6 = ptr_vec[6] - ptr_vec[24];
59
1.34M
  r7 = ptr_vec[10] + ptr_vec[20];
60
1.34M
  r8 = ptr_vec[10] - ptr_vec[20];
61
1.34M
  r9 = ptr_vec[12] + ptr_vec[18];
62
1.34M
  r10 = ptr_vec[12] - ptr_vec[18];
63
1.34M
  r11 = ptr_vec[14] + ptr_vec[26];
64
1.34M
  r12 = ptr_vec[14] - ptr_vec[26];
65
1.34M
  r13 = ptr_vec[22] + ptr_vec[28];
66
1.34M
  r14 = ptr_vec[22] - ptr_vec[28];
67
68
1.34M
  tmp2 = r1 + r3;
69
1.34M
  tmp4 = r1 - r3;
70
1.34M
  tmp6 = r2 + r14;
71
1.34M
  tmp8 = r2 - r14;
72
1.34M
  tmp10 = r4 + r12;
73
1.34M
  tmp12 = r4 - r12;
74
1.34M
  tmp14 = r5 + r9;
75
1.34M
  tmp16 = r5 - r9;
76
1.34M
  tmp18 = r11 + r13;
77
1.34M
  tmp20 = r11 - r13;
78
79
  /* Pre-additions imaginary part */
80
1.34M
  i1 = ptr_vec[3] + ptr_vec[9];
81
1.34M
  i2 = ptr_vec[3] - ptr_vec[9];
82
1.34M
  i3 = ptr_vec[5] + ptr_vec[17];
83
1.34M
  i4 = ptr_vec[5] - ptr_vec[17];
84
1.34M
  i5 = ptr_vec[7] + ptr_vec[25];
85
1.34M
  i6 = ptr_vec[7] - ptr_vec[25];
86
1.34M
  i7 = ptr_vec[11] + ptr_vec[21];
87
1.34M
  i8 = ptr_vec[11] - ptr_vec[21];
88
1.34M
  i9 = ptr_vec[13] + ptr_vec[19];
89
1.34M
  i10 = ptr_vec[13] - ptr_vec[19];
90
1.34M
  i11 = ptr_vec[15] + ptr_vec[27];
91
1.34M
  i12 = ptr_vec[15] - ptr_vec[27];
92
1.34M
  i13 = ptr_vec[23] + ptr_vec[29];
93
1.34M
  i14 = ptr_vec[23] - ptr_vec[29];
94
95
1.34M
  tmp3 = i1 + i3;
96
1.34M
  tmp5 = i1 - i3;
97
1.34M
  tmp7 = i2 + i14;
98
1.34M
  tmp9 = i2 - i14;
99
1.34M
  tmp11 = i4 + i12;
100
1.34M
  tmp13 = i4 - i12;
101
1.34M
  tmp15 = i5 + i9;
102
1.34M
  tmp17 = i5 - i9;
103
1.34M
  tmp19 = i11 + i13;
104
1.34M
  tmp21 = i11 - i13;
105
106
  /* Pre-additions and core multiplications */
107
1.34M
  tmp28 = tmp4 + tmp20;
108
1.34M
  tmp29 = tmp5 + tmp21;
109
1.34M
  r4 = tmp2 + tmp18;
110
1.34M
  i4 = tmp3 + tmp19;
111
1.34M
  r3 = (FLOAT32)((r4 + tmp14) * -1.25);
112
1.34M
  i3 = (FLOAT32)((i4 + tmp15) * -1.25);
113
1.34M
  r2 = (FLOAT32)((tmp29 - i8) * -8.660254037844387e-1);
114
1.34M
  i2 = (FLOAT32)((tmp28 - r8) * 8.660254037844387e-1);
115
1.34M
  r1 = r4 + r7;
116
1.34M
  i1 = i4 + i7;
117
1.34M
  r0 = r1 + ptr_vec[0] + tmp14;
118
1.34M
  i0 = i1 + ptr_vec[1] + tmp15;
119
1.34M
  r7 = tmp4 - tmp20;
120
1.34M
  i7 = tmp5 - tmp21;
121
1.34M
  r8 = (FLOAT32)((tmp3 - tmp19) * -4.841229182759272e-1);
122
1.34M
  i8 = (FLOAT32)((tmp2 - tmp18) * 4.841229182759272e-1);
123
1.34M
  tmp0 = tmp6 + r10;
124
1.34M
  tmp1 = tmp7 + i10;
125
1.34M
  tmp2 = r6 - tmp10;
126
1.34M
  tmp3 = i6 - tmp11;
127
1.34M
  r10 = (FLOAT32)(tmp7 * -2.308262652881440);
128
1.34M
  i10 = (FLOAT32)(tmp6 * 2.308262652881440);
129
1.34M
  r11 = (FLOAT32)(tmp8 * 1.332676064001459);
130
1.34M
  i11 = (FLOAT32)(tmp9 * 1.332676064001459);
131
1.34M
  r6 = (FLOAT32)((r7 - tmp16) * 5.590169943749475e-1);
132
1.34M
  i6 = (FLOAT32)((i7 - tmp17) * 5.590169943749475e-1);
133
1.34M
  r12 = (FLOAT32)((tmp1 + tmp3) * 5.877852522924733e-1);
134
1.34M
  i12 = (FLOAT32)((tmp0 + tmp2) * -5.877852522924733e-1);
135
1.34M
  r13 = (FLOAT32)((tmp7 - tmp11) * -8.816778784387098e-1);
136
1.34M
  i13 = (FLOAT32)((tmp6 - tmp10) * 8.816778784387098e-1);
137
1.34M
  r14 = (FLOAT32)((tmp8 + tmp12) * 5.090369604551274e-1);
138
1.34M
  i14 = (FLOAT32)((tmp9 + tmp13) * 5.090369604551274e-1);
139
1.34M
  r16 = (FLOAT32)(tmp11 * 5.449068960040204e-1);
140
1.34M
  i16 = (FLOAT32)(tmp10 * -5.449068960040204e-1);
141
1.34M
  r17 = (FLOAT32)(tmp12 * 3.146021430912046e-1);
142
1.34M
  i17 = (FLOAT32)(tmp13 * 3.146021430912046e-1);
143
144
1.34M
  r4 *= 1.875;
145
1.34M
  i4 *= 1.875;
146
1.34M
  r1 *= -1.5;
147
1.34M
  i1 *= -1.5;
148
1.34M
  r7 *= (FLOAT32)(-8.385254915624212e-1);
149
1.34M
  i7 *= (FLOAT32)(-8.385254915624212e-1);
150
1.34M
  r5 = (FLOAT32)(tmp29 * 1.082531754730548);
151
1.34M
  i5 = (FLOAT32)(tmp28 * -1.082531754730548);
152
1.34M
  r9 = (FLOAT32)(tmp1 * 1.5388417685876270);
153
1.34M
  i9 = (FLOAT32)(tmp0 * -1.538841768587627);
154
1.34M
  r15 = (FLOAT32)(tmp3 * 3.632712640026803e-1);
155
1.34M
  i15 = (FLOAT32)(tmp2 * -3.632712640026803e-1);
156
157
  /* Post-additions real part */
158
1.34M
  tmp2 = r0 + r1;
159
1.34M
  tmp4 = r3 + r6;
160
1.34M
  tmp6 = r3 - r6;
161
1.34M
  tmp8 = r4 + r5;
162
1.34M
  tmp10 = r4 - r5;
163
1.34M
  tmp12 = r7 + r8;
164
1.34M
  tmp14 = r7 - r8;
165
1.34M
  tmp16 = r13 + r16;
166
1.34M
  tmp18 = r14 + r17;
167
1.34M
  tmp20 = r10 - r13;
168
1.34M
  tmp22 = r11 - r14;
169
1.34M
  tmp24 = r12 + r15;
170
1.34M
  tmp26 = r12 - r9;
171
172
1.34M
  r1 = tmp2 + r2;
173
1.34M
  r2 = tmp2 - r2;
174
1.34M
  r3 = tmp4 + tmp26;
175
1.34M
  r4 = tmp4 - tmp26;
176
1.34M
  r5 = tmp6 + tmp24;
177
1.34M
  r6 = tmp6 - tmp24;
178
1.34M
  r7 = tmp16 + tmp18;
179
1.34M
  r8 = tmp16 - tmp18;
180
1.34M
  r9 = tmp20 - tmp22;
181
1.34M
  r10 = tmp20 + tmp22;
182
1.34M
  r11 = r1 + tmp8;
183
1.34M
  r12 = r2 + tmp10;
184
1.34M
  r13 = r11 - tmp12;
185
1.34M
  r14 = r12 - tmp14;
186
1.34M
  r15 = r12 + tmp14;
187
1.34M
  r16 = r11 + tmp12;
188
189
  /* Post-additions imaginary part */
190
1.34M
  tmp3 = i0 + i1;
191
1.34M
  tmp5 = i3 + i6;
192
1.34M
  tmp7 = i3 - i6;
193
1.34M
  tmp9 = i4 + i5;
194
1.34M
  tmp11 = i4 - i5;
195
1.34M
  tmp13 = i7 + i8;
196
1.34M
  tmp15 = i7 - i8;
197
1.34M
  tmp17 = i13 + i16;
198
1.34M
  tmp19 = i14 + i17;
199
1.34M
  tmp21 = i10 - i13;
200
1.34M
  tmp23 = i11 - i14;
201
1.34M
  tmp25 = i12 + i15;
202
1.34M
  tmp27 = i12 - i9;
203
204
1.34M
  i1 = tmp3 + i2;
205
1.34M
  i2 = tmp3 - i2;
206
1.34M
  i3 = tmp5 + tmp27;
207
1.34M
  i4 = tmp5 - tmp27;
208
1.34M
  i5 = tmp7 + tmp25;
209
1.34M
  i6 = tmp7 - tmp25;
210
1.34M
  i7 = tmp17 + tmp19;
211
1.34M
  i8 = tmp17 - tmp19;
212
1.34M
  i9 = tmp21 - tmp23;
213
1.34M
  i10 = tmp21 + tmp23;
214
1.34M
  i11 = i1 + tmp9;
215
1.34M
  i12 = i2 + tmp11;
216
1.34M
  i13 = i11 - tmp13;
217
1.34M
  i14 = i12 - tmp15;
218
1.34M
  i15 = i12 + tmp15;
219
1.34M
  i16 = i11 + tmp13;
220
221
1.34M
  *ptr_vec++ = r0;
222
1.34M
  *ptr_vec++ = i0;
223
1.34M
  *ptr_vec++ = r13 + r5 + r7;
224
1.34M
  *ptr_vec++ = i13 + i5 + i7;
225
1.34M
  *ptr_vec++ = r15 + r3 - r9;
226
1.34M
  *ptr_vec++ = i15 + i3 - i9;
227
1.34M
  *ptr_vec++ = r0 + r4;
228
1.34M
  *ptr_vec++ = i0 + i4;
229
1.34M
  *ptr_vec++ = r13 + r6 - r7;
230
1.34M
  *ptr_vec++ = i13 + i6 - i7;
231
1.34M
  *ptr_vec++ = r2;
232
1.34M
  *ptr_vec++ = i2;
233
1.34M
  *ptr_vec++ = r0 + r5;
234
1.34M
  *ptr_vec++ = i0 + i5;
235
1.34M
  *ptr_vec++ = r16 + r3 - r10;
236
1.34M
  *ptr_vec++ = i16 + i3 - i10;
237
1.34M
  *ptr_vec++ = r15 + r4 + r9;
238
1.34M
  *ptr_vec++ = i15 + i4 + i9;
239
1.34M
  *ptr_vec++ = r0 + r6;
240
1.34M
  *ptr_vec++ = i0 + i6;
241
1.34M
  *ptr_vec++ = r1;
242
1.34M
  *ptr_vec++ = i1;
243
1.34M
  *ptr_vec++ = r14 + r5 + r8;
244
1.34M
  *ptr_vec++ = i14 + i5 + i8;
245
1.34M
  *ptr_vec++ = r0 + r3;
246
1.34M
  *ptr_vec++ = i0 + i3;
247
1.34M
  *ptr_vec++ = r16 + r4 + r10;
248
1.34M
  *ptr_vec++ = i16 + i4 + i10;
249
1.34M
  *ptr_vec++ = r14 + r6 - r8;
250
1.34M
  *ptr_vec++ = i14 + i6 - i8;
251
1.34M
}
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.2k
static VOID ia_enhaacplus_enc_fft240(FLOAT32 *ptr_in) {
424
84.2k
  const WORD32 n1 = 240;
425
84.2k
  const WORD32 n2 = 15;
426
84.2k
  const WORD32 n3 = 16;
427
84.2k
  const WORD32 *ptr_idx1 = ia_enhaacplus_enc_fft240_table1;
428
84.2k
  const WORD32 *ptr_idx2 = ia_enhaacplus_enc_fft240_table2;
429
430
84.2k
  WORD32 k, l;
431
84.2k
  FLOAT32 temp[32], out[480];
432
433
1.34M
  for (k = 0; k < n2; k++) {
434
21.4M
    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.4M
    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.2k
  ptr_idx1 -= n2;
453
454
1.43M
  for (k = 0; k < n3; k++) {
455
21.5M
    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.34M
    ia_enhaacplus_enc_fft15(temp); /* 15-point FFT */
461
462
21.5M
    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.34M
  }
467
468
84.2k
  memcpy(ptr_in, out, (2 * n1) * sizeof(out[0]));
469
84.2k
}
470
471
VOID ia_aac_ld_enc_mdct_480(FLOAT32 *ptr_inp, FLOAT32 *ptr_scratch, WORD32 mdct_flag,
472
84.2k
                            ixheaace_mdct_tables *pstr_mdct_tables) {
473
84.2k
  WORD32 k;
474
84.2k
  FLOAT32 const_mltfac = ((FLOAT32)FRAME_LEN_512) / FRAME_LEN_480;
475
476
84.2k
  ia_eaacp_enc_pre_twiddle_aac(ptr_scratch, ptr_inp, FRAME_LEN_480,
477
84.2k
                               pstr_mdct_tables->cosine_array_960);
478
479
84.2k
  ia_enhaacplus_enc_fft240(ptr_scratch);
480
481
84.2k
  ia_enhaacplus_enc_post_twiddle(ptr_inp, ptr_scratch, pstr_mdct_tables->cosine_array_960,
482
84.2k
                                 FRAME_LEN_480);
483
484
84.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
84.2k
}