Coverage Report

Created: 2026-06-25 07:09

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