1 #ifndef __realfftf_h 2 #define __realfftf_h 3 4 #include "MemoryX.h" 5 6 using fft_type = float; 7 struct FFTParam { 8 ArrayOf<int> BitReversed; 9 ArrayOf<fft_type> SinTable; 10 size_t Points; 11 #ifdef EXPERIMENTAL_EQ_SSE_THREADED 12 int pow2Bits; 13 #endif 14 }; 15 16 struct MATH_API FFTDeleter{ 17 void operator () (FFTParam *p) const; 18 }; 19 20 using HFFT = std::unique_ptr< 21 FFTParam, FFTDeleter 22 >; 23 24 MATH_API HFFT GetFFT(size_t); 25 MATH_API void RealFFTf(fft_type *, const FFTParam *); 26 MATH_API void InverseRealFFTf(fft_type *, const FFTParam *); 27 MATH_API void ReorderToTime(const FFTParam *hFFT, const fft_type *buffer, fft_type *TimeOut); 28 MATH_API void ReorderToFreq(const FFTParam *hFFT, const fft_type *buffer, 29 fft_type *RealOut, fft_type *ImagOut); 30 31 #endif 32 33