FFT_fftw3.hxx
Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023 #ifndef FFT_fftw3_hxx
00024 #define FFT_fftw3_hxx
00025
00026 #ifndef USE_FFTW3
00027 #error This header should not be used without the USE_FFTW3 macro defined
00028 #endif
00029
00030 #include "FFT_base.hxx"
00031 #include "DataTypes.hxx"
00032 #include "SpecTypeFlags.hxx"
00033 #include "ErrDynamicType.hxx"
00034
00035 namespace CLAM
00036 {
00037
00038 class FFTConfig;
00039 class Spectrum;
00040 class Audio;
00041 namespace Hidden { struct FFT_fftw3_Implementation; }
00042
00045 class FFT_fftw3: public FFT_base
00046 {
00047 public:
00048 FFT_fftw3(const FFTConfig &c=FFTConfig());
00049 ~FFT_fftw3();
00050 const char * GetClassName() const {return "FFT_fftw3";}
00051
00052
00053 bool Do();
00054 bool Do(const Audio& in, Spectrum &out);
00055 protected:
00056 bool ConcreteConfigure(const ProcessingConfig&);
00057
00058 private:
00059 Hidden::FFT_fftw3_Implementation * _fftw3;
00060 private:
00061
00062 void ReleaseMemory();
00063 void SetupMemory();
00064
00065
00066 void ToComplex(Spectrum &out);
00067 };
00068
00069 }
00070
00071 #endif//FFT_fftw3_hxx
00072