mirror of
https://github.com/cookiengineer/audacity
synced 2025-12-18 22:51:25 +01:00
Code cleanup: removed the old real FFT code not used since at least 2009.
I confirmed that the currently used real FFT code in RealFFTf.cpp is faster than the old one with a quick benchmark that calls PowerSpectrum() on 4-minute audio file, with different sizes of computation windows: Window_size: 256 method: new FFT time_s: 0.393 Window_size: 256 method: old FFT time_s: 1.065 Window_size: 1024 method: new FFT time_s: 0.38 Window_size: 1024 method: old FFT time_s: 0.958 Window_size: 4096 method: new FFT time_s: 0.413 Window_size: 4096 method: old FFT time_s: 1.084 Window_size: 16384 method: new FFT time_s: 0.518 Window_size: 16384 method: old FFT time_s: 1.338 Window_size: 65536 method: new FFT time_s: 0.655 Window_size: 65536 method: old FFT time_s: 1.524 Window_size: 262144 method: new FFT time_s: 0.735 Window_size: 262144 method: old FFT time_s: 1.873
This commit is contained in:
@@ -1255,11 +1255,7 @@ bool SpectrumAnalyst::Calculate(Algorithm alg, int windowFunc,
|
||||
case EnhancedAutocorrelation:
|
||||
|
||||
// Take FFT
|
||||
#ifdef EXPERIMENTAL_USE_REALFFTF
|
||||
RealFFT(mWindowSize, in, out, out2);
|
||||
#else
|
||||
FFT(mWindowSize, false, in, NULL, out, out2);
|
||||
#endif
|
||||
// Compute power
|
||||
for (int i = 0; i < mWindowSize; i++)
|
||||
in[i] = (out[i] * out[i]) + (out2[i] * out2[i]);
|
||||
@@ -1277,11 +1273,7 @@ bool SpectrumAnalyst::Calculate(Algorithm alg, int windowFunc,
|
||||
in[i] = pow(in[i], 1.0f / 3.0f);
|
||||
}
|
||||
// Take FFT
|
||||
#ifdef EXPERIMENTAL_USE_REALFFTF
|
||||
RealFFT(mWindowSize, in, out, out2);
|
||||
#else
|
||||
FFT(mWindowSize, false, in, NULL, out, out2);
|
||||
#endif
|
||||
|
||||
// Take real part of result
|
||||
for (int i = 0; i < half; i++)
|
||||
@@ -1289,12 +1281,7 @@ bool SpectrumAnalyst::Calculate(Algorithm alg, int windowFunc,
|
||||
break;
|
||||
|
||||
case Cepstrum:
|
||||
#ifdef EXPERIMENTAL_USE_REALFFTF
|
||||
RealFFT(mWindowSize, in, out, out2);
|
||||
#else
|
||||
FFT(mWindowSize, false, in, NULL, out, out2);
|
||||
#endif
|
||||
|
||||
// Compute log power
|
||||
// Set a sane lower limit assuming maximum time amplitude of 1.0
|
||||
{
|
||||
@@ -1309,11 +1296,7 @@ bool SpectrumAnalyst::Calculate(Algorithm alg, int windowFunc,
|
||||
in[i] = log(power);
|
||||
}
|
||||
// Take IFFT
|
||||
#ifdef EXPERIMENTAL_USE_REALFFTF
|
||||
InverseRealFFT(mWindowSize, in, NULL, out);
|
||||
#else
|
||||
FFT(mWindowSize, true, in, NULL, out, out2);
|
||||
#endif
|
||||
|
||||
// Take real part of result
|
||||
for (int i = 0; i < half; i++)
|
||||
|
||||
Reference in New Issue
Block a user