00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022 #ifndef __CL_Filter__
00023 #define __CL_Filter__
00024
00025 #include "CL_API.h"
00026 #include "CL_SlidingWindow.h"
00027
00028 class UT_FFT;
00029 class UT_IStream;
00030
00031 class CL_API CL_Filter : public CL_SlidingWindow
00032 {
00033 public:
00034
00035 CL_Filter(int size, int overlap);
00036 CL_Filter(UT_IStream &is);
00037 virtual ~CL_Filter();
00038
00039
00040 void setFilter(float *filter,float *phase = 0);
00041
00042 virtual void reset(float val = 0.0F);
00043 virtual int maxFilterSamples();
00044
00045 private:
00046 virtual void doWindowOp(int nsamples, float *dest);
00047
00048
00049 void initialize();
00050
00051 void window(float *windower);
00052 void filter();
00053 void computeWindow();
00054
00055 float myLastDataSample;
00056 float myLastSlope;
00057
00058 float *myData;
00059 float *myReal, * myImag;
00060 float *myFilter;
00061 float *myPhaseFilter;
00062
00063 float *myWindow;
00064 float *myUnWindow;
00065
00066 UT_FFT *myTransform;
00067
00068 };
00069
00070 #endif