Coverage Report

Created: 2026-01-10 06:30

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/src/libxaac/decoder/ixheaacd_dsp_fft32x32s.c
Line
Count
Source
1
/******************************************************************************
2
 *                                                                            *
3
 * Copyright (C) 2018 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
#include "ixheaacd_sbr_common.h"
21
#include "ixheaac_type_def.h"
22
23
#include "ixheaac_constants.h"
24
#include "ixheaac_basic_ops32.h"
25
#include "ixheaac_basic_ops16.h"
26
#include "ixheaac_basic_ops40.h"
27
#include "ixheaac_basic_ops.h"
28
#include "ixheaacd_common_rom.h"
29
#include "ixheaacd_dsp_fft32x32s.h"
30
#include "ixheaacd_intrinsics.h"
31
32
#include "ixheaac_basic_op.h"
33
34
0
VOID ixheaacd_inv_dit_fft_8pt_dec(WORD32 *y, WORD32 *real, WORD32 *imag) {
35
0
  WORD32 a0, a1, a2, a3, a00, a10, a20, a30;
36
0
  WORD32 vr, vi;
37
38
0
  WORD32 x[16];
39
40
0
  a00 = ixheaac_add32_sat(y[0], y[8]);
41
0
  a0 = ixheaac_sub32_sat(y[0], y[8]);
42
43
0
  a20 = ixheaac_add32_sat(y[1], y[9]);
44
0
  a3 = ixheaac_sub32_sat(y[1], y[9]);
45
46
0
  a10 = ixheaac_add32_sat(y[4], y[12]);
47
0
  a2 = ixheaac_sub32_sat(y[4], y[12]);
48
49
0
  a30 = ixheaac_add32_sat(y[5], y[13]);
50
0
  a1 = ixheaac_sub32_sat(y[5], y[13]);
51
52
0
  x[0] = ixheaac_add32_sat(a00, a10);
53
0
  x[4] = ixheaac_sub32_sat(a00, a10);
54
0
  x[1] = ixheaac_add32_sat(a20, a30);
55
0
  x[5] = ixheaac_sub32_sat(a20, a30);
56
57
0
  x[2] = ixheaac_sub32_sat(a0, a1);
58
0
  x[6] = ixheaac_add32_sat(a0, a1);
59
0
  x[3] = ixheaac_add32_sat(a3, a2);
60
0
  x[7] = ixheaac_sub32_sat(a3, a2);
61
62
0
  a00 = ixheaac_add32_sat(y[2], y[10]);
63
0
  a0 = ixheaac_sub32_sat(y[2], y[10]);
64
65
0
  a20 = ixheaac_add32_sat(y[3], y[11]);
66
0
  a3 = ixheaac_sub32_sat(y[3], y[11]);
67
68
0
  a10 = ixheaac_add32_sat(y[6], y[14]);
69
0
  a2 = ixheaac_sub32_sat(y[6], y[14]);
70
71
0
  a30 = ixheaac_add32_sat(y[7], y[15]);
72
0
  a1 = ixheaac_sub32_sat(y[7], y[15]);
73
74
0
  x[8] = ixheaac_add32_sat(a00, a10);
75
0
  x[12] = ixheaac_sub32_sat(a00, a10);
76
0
  x[9] = ixheaac_add32_sat(a20, a30);
77
0
  x[13] = ixheaac_sub32_sat(a20, a30);
78
79
0
  x[10] = ixheaac_sub32_sat(a0, a1);
80
0
  x[14] = ixheaac_add32_sat(a0, a1);
81
0
  x[11] = ixheaac_add32_sat(a3, a2);
82
0
  x[15] = ixheaac_sub32_sat(a3, a2);
83
84
0
  real[0] = ixheaac_add32_sat(x[0], x[8]);
85
0
  imag[0] = ixheaac_add32_sat(x[1], x[9]);
86
0
  a00 = ixheaac_sub32_sat(x[0], x[8]);
87
0
  a10 = ixheaac_sub32_sat(x[1], x[9]);
88
89
0
  a0 = ixheaac_sub32_sat(x[4], x[13]);
90
0
  a1 = ixheaac_add32_sat(x[5], x[12]);
91
92
0
  real[4] = ixheaac_add32_sat(x[4], x[13]);
93
0
  imag[4] = ixheaac_sub32_sat(x[5], x[12]);
94
95
0
  vr = ixheaac_mult32x16in32_shl_sat(ixheaac_sub32_sat(x[10], x[11]), 0x5A82);
96
0
  vi = ixheaac_mult32x16in32_shl_sat(ixheaac_add32_sat(x[10], x[11]), 0x5A82);
97
98
0
  real[1] = ixheaac_add32_sat(x[2], vr);
99
0
  imag[1] = ixheaac_add32_sat(x[3], vi);
100
101
0
  a2 = ixheaac_sub32_sat(x[2], vr);
102
0
  a3 = ixheaac_sub32_sat(x[3], vi);
103
104
0
  real[2] = ixheaac_add32_sat(a0, a2);
105
0
  imag[2] = ixheaac_add32_sat(a1, a3);
106
0
  vr = ixheaac_mult32x16in32_shl_sat(ixheaac_add32_sat(x[14], x[15]), 0x5A82);
107
0
  vi = ixheaac_mult32x16in32_shl_sat(ixheaac_sub32_sat(x[14], x[15]), 0x5A82);
108
109
0
  a20 = ixheaac_sub32_sat(x[6], vr);
110
0
  a30 = ixheaac_add32_sat(x[7], vi);
111
112
0
  real[3] = ixheaac_add32_sat(a00, a20);
113
0
  imag[3] = ixheaac_add32_sat(a10, a30);
114
115
0
  real[5] = ixheaac_add32_sat(x[6], vr);
116
0
  imag[5] = ixheaac_sub32_sat(x[7], vi);
117
0
}