IFFT_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 _IFFT_fftw3_
00024 #define _IFFT_fftw3_
00025
00026 #include "IFFT_base.hxx"
00027 #include "ErrDynamicType.hxx"
00028 #include "SpectrumConfig.hxx"
00029
00030 namespace CLAM {
00031
00035 class IFFT_fftw3: public IFFT_base
00036 {
00037 struct Implementation;
00038 Implementation * _fftw3;
00039
00040
00041
00042 typedef enum {
00043 sComplex,
00044 sOther
00045 } IFFTState;
00046
00049 IFFTState mState;
00050
00051 void DefaultInit();
00052
00053 inline void CheckTypes(const Spectrum& in, const Audio &out) const;
00054
00055
00056
00063 inline void ComplexToRIFFTW(const Spectrum &in) const;
00064 inline void OtherToRIFFTW(const Spectrum &in) const;
00065 void ReleaseMemory();
00066 void SetupMemory();
00067
00071 bool ConcreteConfigure(const ProcessingConfig&);
00072
00073 public:
00074
00075 IFFT_fftw3(const IFFTConfig &c=IFFTConfig());
00076 ~IFFT_fftw3();
00077 const char * GetClassName() const {return "IFFT_fftw3";}
00078
00079 bool Do();
00080 bool Do(const Spectrum& in, Audio &out) const;
00081 bool MayDisableExecution() const {return true;}
00082
00083
00084 bool SetPrototypes(const Spectrum& in,const Audio &out);
00085 bool SetPrototypes();
00086 bool UnsetPrototypes();
00087
00088 };
00089
00090 }
00091
00092 #endif // _IFFT_fftw3_
00093