17
17
18
18
#include "webrtc/common_audio/signal_processing/complex_fft_tables.h"
19
19
#include "webrtc/common_audio/signal_processing/include/signal_processing_library.h"
20
+ #include "webrtc/rtc_base/system/arch.h"
20
21
21
22
#define CFFTSFT 14
22
23
#define CFFTRND 1
@@ -126,18 +127,16 @@ int WebRtcSpl_ComplexFFT(int16_t frfi[], int stages, int mode)
126
127
[wri ]"r" (wri ),
127
128
[cfftrnd ]"r" (CFFTRND ));
128
129
#else
129
- tr32 = WEBRTC_SPL_MUL_16_16 (wr , frfi [2 * j ])
130
- - WEBRTC_SPL_MUL_16_16 (wi , frfi [2 * j + 1 ]) + CFFTRND ;
130
+ tr32 = wr * frfi [2 * j ] - wi * frfi [2 * j + 1 ] + CFFTRND ;
131
131
132
- ti32 = WEBRTC_SPL_MUL_16_16 (wr , frfi [2 * j + 1 ])
133
- + WEBRTC_SPL_MUL_16_16 (wi , frfi [2 * j ]) + CFFTRND ;
132
+ ti32 = wr * frfi [2 * j + 1 ] + wi * frfi [2 * j ] + CFFTRND ;
134
133
#endif
135
134
136
135
tr32 >>= 15 - CFFTSFT ;
137
136
ti32 >>= 15 - CFFTSFT ;
138
137
139
- qr32 = ((int32_t )frfi [2 * i ]) << CFFTSFT ;
140
- qi32 = ((int32_t )frfi [2 * i + 1 ]) << CFFTSFT ;
138
+ qr32 = ((int32_t )frfi [2 * i ]) * ( 1 << CFFTSFT ) ;
139
+ qi32 = ((int32_t )frfi [2 * i + 1 ]) * ( 1 << CFFTSFT ) ;
141
140
142
141
frfi [2 * j ] = (int16_t )(
143
142
(qr32 - tr32 + CFFTRND2 ) >> (1 + CFFTSFT ));
@@ -159,15 +158,16 @@ int WebRtcSpl_ComplexFFT(int16_t frfi[], int stages, int mode)
159
158
160
159
int WebRtcSpl_ComplexIFFT (int16_t frfi [], int stages , int mode )
161
160
{
162
- int i , j , l , k , istep , n , m , scale , shift ;
161
+ size_t i , j , l , istep , n , m ;
162
+ int k , scale , shift ;
163
163
int16_t wr , wi ;
164
164
int32_t tr32 , ti32 , qr32 , qi32 ;
165
165
int32_t tmp32 , round2 ;
166
166
167
167
/* The 1024-value is a constant given from the size of kSinTable1024[],
168
168
* and should not be changed depending on the input parameter 'stages'
169
169
*/
170
- n = 1 << stages ;
170
+ n = (( size_t ) 1 ) << stages ;
171
171
if (n > 1024 )
172
172
return -1 ;
173
173
@@ -183,7 +183,7 @@ int WebRtcSpl_ComplexIFFT(int16_t frfi[], int stages, int mode)
183
183
shift = 0 ;
184
184
round2 = 8192 ;
185
185
186
- tmp32 = ( int32_t ) WebRtcSpl_MaxAbsValueW16 (frfi , 2 * n );
186
+ tmp32 = WebRtcSpl_MaxAbsValueW16 (frfi , 2 * n );
187
187
if (tmp32 > 13573 )
188
188
{
189
189
shift ++ ;
@@ -270,17 +270,15 @@ int WebRtcSpl_ComplexIFFT(int16_t frfi[], int stages, int mode)
270
270
);
271
271
#else
272
272
273
- tr32 = WEBRTC_SPL_MUL_16_16 (wr , frfi [2 * j ])
274
- - WEBRTC_SPL_MUL_16_16 (wi , frfi [2 * j + 1 ]) + CIFFTRND ;
273
+ tr32 = wr * frfi [2 * j ] - wi * frfi [2 * j + 1 ] + CIFFTRND ;
275
274
276
- ti32 = WEBRTC_SPL_MUL_16_16 (wr , frfi [2 * j + 1 ])
277
- + WEBRTC_SPL_MUL_16_16 (wi , frfi [2 * j ]) + CIFFTRND ;
275
+ ti32 = wr * frfi [2 * j + 1 ] + wi * frfi [2 * j ] + CIFFTRND ;
278
276
#endif
279
277
tr32 >>= 15 - CIFFTSFT ;
280
278
ti32 >>= 15 - CIFFTSFT ;
281
279
282
- qr32 = ((int32_t )frfi [2 * i ]) << CIFFTSFT ;
283
- qi32 = ((int32_t )frfi [2 * i + 1 ]) << CIFFTSFT ;
280
+ qr32 = ((int32_t )frfi [2 * i ]) * ( 1 << CIFFTSFT ) ;
281
+ qi32 = ((int32_t )frfi [2 * i + 1 ]) * ( 1 << CIFFTSFT ) ;
284
282
285
283
frfi [2 * j ] = (int16_t )(
286
284
(qr32 - tr32 + round2 ) >> (shift + CIFFTSFT ));
0 commit comments