d@0: /* d@0: ============================================================================== d@0: d@0: FFT.h d@0: Created: 11 Aug 2014 11:18:53am d@0: Author: mickael.legoff d@0: d@0: ============================================================================== d@0: */ d@0: d@0: #ifndef FFT_H_INCLUDED d@0: #define FFT_H_INCLUDED d@0: d@0: #include "FFTW.h" d@0: d@0: d@0: template < typename FFTImpl > d@0: class FastFourierTransform d@0: { d@0: d@0: public: d@0: FastFourierTransform(); d@0: FastFourierTransform( unsigned fftLength ) d@0: : m_fft_impl( fftLength ) d@0: { d@0: d@0: m_realPart = new float[fftLength]; d@0: m_imagPart = new float[fftLength]; d@0: d@0: memset(m_realPart, 0, (fftLength)*sizeof(float)); d@0: memset(m_imagPart, 0, (fftLength)*sizeof(float)); d@0: } d@0: d@0: // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - d@0: d@0: ~FastFourierTransform() d@0: { d@0: if(m_realPart != NULL) d@0: { d@0: delete[] m_realPart; d@0: m_realPart = nullptr; d@0: } d@0: d@0: if(m_imagPart != NULL) d@0: { d@0: delete[] m_imagPart; d@0: m_imagPart = nullptr; d@0: } d@0: } d@0: d@0: // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - d@0: d@0: void process( const float* input ) { m_fft_impl.process( input , m_realPart , m_imagPart ); } d@0: d@0: // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - d@0: d@0: const float * realPart() { return m_realPart; } d@0: const float * imagPart() { return m_imagPart; } d@0: d@0: private: d@0: d@0: float* m_realPart; d@0: float* m_imagPart; d@0: d@0: FFTImpl m_fft_impl; d@0: d@0: }; d@0: d@0: d@0: typedef FastFourierTransform FFT; d@0: d@0: d@0: #endif // FFT_H_INCLUDED