d@0
|
1 /*
|
d@0
|
2 ==============================================================================
|
d@0
|
3
|
d@0
|
4 FFT.h
|
d@0
|
5 Created: 11 Aug 2014 11:18:53am
|
d@0
|
6 Author: mickael.legoff
|
d@0
|
7
|
d@0
|
8 ==============================================================================
|
d@0
|
9 */
|
d@0
|
10
|
d@0
|
11 #ifndef FFT_H_INCLUDED
|
d@0
|
12 #define FFT_H_INCLUDED
|
d@0
|
13
|
d@0
|
14 #include "FFTW.h"
|
d@0
|
15
|
d@0
|
16
|
d@0
|
17 template < typename FFTImpl >
|
d@0
|
18 class FastFourierTransform
|
d@0
|
19 {
|
d@0
|
20
|
d@0
|
21 public:
|
d@0
|
22 FastFourierTransform();
|
d@0
|
23 FastFourierTransform( unsigned fftLength )
|
d@0
|
24 : m_fft_impl( fftLength )
|
d@0
|
25 {
|
d@0
|
26
|
d@0
|
27 m_realPart = new float[fftLength];
|
d@0
|
28 m_imagPart = new float[fftLength];
|
d@0
|
29
|
d@0
|
30 memset(m_realPart, 0, (fftLength)*sizeof(float));
|
d@0
|
31 memset(m_imagPart, 0, (fftLength)*sizeof(float));
|
d@0
|
32 }
|
d@0
|
33
|
d@0
|
34 // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
d@0
|
35
|
d@0
|
36 ~FastFourierTransform()
|
d@0
|
37 {
|
d@0
|
38 if(m_realPart != NULL)
|
d@0
|
39 {
|
d@0
|
40 delete[] m_realPart;
|
d@0
|
41 m_realPart = nullptr;
|
d@0
|
42 }
|
d@0
|
43
|
d@0
|
44 if(m_imagPart != NULL)
|
d@0
|
45 {
|
d@0
|
46 delete[] m_imagPart;
|
d@0
|
47 m_imagPart = nullptr;
|
d@0
|
48 }
|
d@0
|
49 }
|
d@0
|
50
|
d@0
|
51 // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
d@0
|
52
|
d@0
|
53 void process( const float* input ) { m_fft_impl.process( input , m_realPart , m_imagPart ); }
|
d@0
|
54
|
d@0
|
55 // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
d@0
|
56
|
d@0
|
57 const float * realPart() { return m_realPart; }
|
d@0
|
58 const float * imagPart() { return m_imagPart; }
|
d@0
|
59
|
d@0
|
60 private:
|
d@0
|
61
|
d@0
|
62 float* m_realPart;
|
d@0
|
63 float* m_imagPart;
|
d@0
|
64
|
d@0
|
65 FFTImpl m_fft_impl;
|
d@0
|
66
|
d@0
|
67 };
|
d@0
|
68
|
d@0
|
69
|
d@0
|
70 typedef FastFourierTransform<FFTW> FFT;
|
d@0
|
71
|
d@0
|
72
|
d@0
|
73 #endif // FFT_H_INCLUDED
|