Coverage Report

Created: 2025-08-26 06:53

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