diff --git a/common_audio/signal_processing/complex_fft.c b/common_audio/signal_processing/complex_fft.c index d4666f3598..36689b3c46 100644 --- a/common_audio/signal_processing/complex_fft.c +++ b/common_audio/signal_processing/complex_fft.c @@ -134,8 +134,8 @@ int WebRtcSpl_ComplexFFT(int16_t frfi[], int stages, int mode) tr32 >>= 15 - CFFTSFT; ti32 >>= 15 - CFFTSFT; - qr32 = ((int32_t)frfi[2 * i]) << CFFTSFT; - qi32 = ((int32_t)frfi[2 * i + 1]) << CFFTSFT; + qr32 = ((int32_t)frfi[2 * i]) * (1 << CFFTSFT); + qi32 = ((int32_t)frfi[2 * i + 1]) * (1 << CFFTSFT); frfi[2 * j] = (int16_t)( (qr32 - tr32 + CFFTRND2) >> (1 + CFFTSFT)); @@ -276,8 +276,8 @@ int WebRtcSpl_ComplexIFFT(int16_t frfi[], int stages, int mode) tr32 >>= 15 - CIFFTSFT; ti32 >>= 15 - CIFFTSFT; - qr32 = ((int32_t)frfi[2 * i]) << CIFFTSFT; - qi32 = ((int32_t)frfi[2 * i + 1]) << CIFFTSFT; + qr32 = ((int32_t)frfi[2 * i]) * (1 << CIFFTSFT); + qi32 = ((int32_t)frfi[2 * i + 1]) * (1 << CIFFTSFT); frfi[2 * j] = (int16_t)( (qr32 - tr32 + round2) >> (shift + CIFFTSFT)); diff --git a/modules/audio_processing/aecm/aecm_core_c.cc b/modules/audio_processing/aecm/aecm_core_c.cc index 7fd6a499ad..fa5f15cf10 100644 --- a/modules/audio_processing/aecm/aecm_core_c.cc +++ b/modules/audio_processing/aecm/aecm_core_c.cc @@ -74,9 +74,9 @@ static void WindowAndFFT(AecmCore* aecm, for (i = 0; i < PART_LEN; i++) { // Window time domain signal and insert into real part of // transformation array |fft| - int16_t scaled_time_signal = time_signal[i] << time_signal_scaling; + int16_t scaled_time_signal = time_signal[i] * (1 << time_signal_scaling); fft[i] = (int16_t)((scaled_time_signal * WebRtcAecm_kSqrtHanning[i]) >> 14); - scaled_time_signal = time_signal[i + PART_LEN] << time_signal_scaling; + scaled_time_signal = time_signal[i + PART_LEN] * (1 << time_signal_scaling); fft[PART_LEN + i] = (int16_t)(( scaled_time_signal * WebRtcAecm_kSqrtHanning[PART_LEN - i]) >> 14); }