Home | History | Annotate | Download | only in aec

Lines Matching refs:fft

193 // static void FilterAdaptationUnconstrained(AecCore* aec, float *fft,
217 static void FilterAdaptation(AecCore* aec, float* fft, float ef[2][PART_LEN1]) {
231 fft[2 * j] = MulRe(aec->xfBuf[0][xPos + j],
235 fft[2 * j + 1] = MulIm(aec->xfBuf[0][xPos + j],
240 fft[1] = MulRe(aec->xfBuf[0][xPos + PART_LEN],
245 aec_rdft_inverse_128(fft);
246 memset(fft + PART_LEN, 0, sizeof(float) * PART_LEN);
248 // fft scaling
252 fft[j] *= scale;
255 aec_rdft_forward_128(fft);
257 aec->wfBuf[0][pos] += fft[0];
258 aec->wfBuf[0][pos + PART_LEN] += fft[1];
261 aec->wfBuf[0][pos + j] += fft[2 * j];
262 aec->wfBuf[1][pos + j] += fft[2 * j + 1];
284 // Ooura fft returns incorrect sign on imaginary component. It matters here
383 // Window time domain data to be used by the fft.
393 // Puts fft output data into a complex valued array.
410 float* fft,
424 // Windowed near fft
425 WindowData(fft, aec->dBuf);
426 aec_rdft_forward_128(fft);
427 StoreAsComplex(fft, dfw);
429 // Windowed error fft
430 WindowData(fft, aec->eBuf);
431 aec_rdft_forward_128(fft);
432 StoreAsComplex(fft, efw);
582 // Do the energy calculation in the frequency domain. The FFT is performed on
773 // TODO(bjornv): Should we have a different function/wrapper for windowed FFT?
796 float fft[PART_LEN2];
840 WebRtcAec_SubbandCoherence(aec, efw, xfw, fft, cohde, cohxd);
946 // Inverse error fft.
947 fft[0] = efw[0][0];
948 fft[1] = efw[0][PART_LEN];
950 fft[2 * i] = efw[0][i];
951 // Sign change required by Ooura fft.
952 fft[2 * i + 1] = -efw[1][i];
954 aec_rdft_inverse_128(fft);
959 fft[i] *= scale; // fft scaling
960 fft[i] = fft[i] * WebRtcAec_sqrtHanning[i] + aec->outBuf[i];
962 fft[PART_LEN + i] *= scale; // fft scaling
963 aec->outBuf[i] = fft[PART_LEN + i] * WebRtcAec_sqrtHanning[PART_LEN - i];
967 WEBRTC_SPL_WORD16_MAX, fft[i], WEBRTC_SPL_WORD16_MIN);
980 fft[0] = comfortNoiseHband[0][0];
981 fft[1] = comfortNoiseHband[PART_LEN][0];
983 fft[2 * i] = comfortNoiseHband[i][0];
984 fft[2 * i + 1] = comfortNoiseHband[i][1];
986 aec_rdft_inverse_128(fft);
997 fft[i] *= scale; // fft scaling
998 dtmp += cnScaleHband * fft[i];
1026 float fft[PART_LEN2];
1057 // ---------- Ooura fft ----------
1073 // Near fft
1074 memcpy(fft, aec->dBuf, sizeof(float) * PART_LEN2);
1075 TimeToFrequency(fft, df, 0);
1154 // Inverse fft to obtain echo estimate and error.
1155 fft[0] = yf[0][0];
1156 fft[1] = yf[0][PART_LEN];
1158 fft[2 * i] = yf[0][i];
1159 fft[2 * i + 1] = yf[1][i];
1161 aec_rdft_inverse_128(fft);
1165 y[i] = fft[PART_LEN + i] * scale; // fft scaling
1172 // Error fft
1174 memset(fft, 0, sizeof(float) * PART_LEN);
1175 memcpy(fft + PART_LEN, e, sizeof(float) * PART_LEN);
1177 aec_rdft_forward_128(fft);
1181 ef[0][0] = fft[0];
1182 ef[0][PART_LEN] = fft[1];
1184 ef[0][i] = fft[2 * i];
1185 ef[1][i] = fft[2 * i + 1];
1189 // Note that the first PART_LEN samples in fft (before transformation) are
1197 WebRtcAec_FilterAdaptation(aec, fft, ef);
1534 float fft[PART_LEN2];
1542 memcpy(fft, farend, sizeof(float) * PART_LEN2);
1543 TimeToFrequency(fft, xf, 0);
1547 memcpy(fft, farend, sizeof(float) * PART_LEN2);
1548 TimeToFrequency(fft, xf, 1);