FFT_ooura.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_ooura_
00024 #define _FFT_ooura_
00025
00026 #include "FFT_base.hxx"
00027 #include "DataTypes.hxx"
00028 #include "SpecTypeFlags.hxx"
00029 #include "ErrDynamicType.hxx"
00030
00031 namespace CLAM {
00032
00033 struct FFTConfig;
00034 class Spectrum;
00035 class Audio;
00036 class ProcessingConfig;
00037 class IFFT_ooura;
00038
00044 class FFT_ooura: public FFT_base
00045 {
00046
00048 int *ip;
00049 TData *w;
00050
00051 bool FFTConfigure();
00052
00055 bool ConcreteConfigure(const ProcessingConfig&);
00056
00057
00058
00059 void ReleaseMemory();
00060
00061 void SetupMemory();
00062
00063
00064
00065 void ToComplex(Spectrum &out);
00066 void ToOther(Spectrum &out);
00067
00068 public:
00069
00070
00071 static void rdft(int n, int isgn, TData *a, int *ip, TData *w);
00072 static void makewt(int nw, int *ip, TData *w);
00073 static void makect(int nc, int *ip, TData *c);
00074 static void bitrv2(int n, int *ip, TData *a);
00075 static void cftfsub(int n, TData *a, TData *w);
00076 static void cftbsub(int n, TData *a, TData *w);
00077 static void rftfsub(int n, TData *a, int nc, TData *c);
00078 static void rftbsub(int n, TData *a, int nc, TData *c);
00079 static void cft1st(int n, TData *a, TData *w);
00080 static void cftmdl(int n, int l, TData *a, TData *w);
00081
00082
00083
00084 FFT_ooura();
00085
00086 FFT_ooura(const FFTConfig &c) throw(ErrDynamicType);
00087
00088 ~FFT_ooura();
00089
00090 const char * GetClassName() const {return "FFT_ooura";}
00091
00092
00093
00094 bool Do();
00095
00096 bool Do(const Audio& in, Spectrum &out);
00097
00098
00099 bool MayDisableExecution() const {return true;}
00100
00101 };
00102
00103 };
00104
00105 #endif // _FFT_numrec_
00106