00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023 #ifndef __CL_SlidingWindow__
00024 #define __CL_SlidingWindow__
00025
00026 #include "CL_API.h"
00027 #include <iostream.h>
00028
00029 class UT_IStream;
00030
00031 class CL_API CL_SlidingWindow
00032 {
00033 public:
00034
00035 CL_SlidingWindow(int size, int overlap);
00036 CL_SlidingWindow(UT_IStream &is);
00037 virtual ~CL_SlidingWindow();
00038
00039 void filterSamples(int n,const float *source,float *dest);
00040 void shiftSamples(int nsource, const float *source,
00041 int ndest, float *dest, int shift);
00042
00043 void setOverlap(int overlap);
00044 void resize(int size, int preserve = 0);
00045
00046 virtual void reset(float val = 0.0F);
00047 virtual int maxFilterSamples();
00048
00049 virtual void save(ostream &os, int binary);
00050 virtual bool load(UT_IStream &is, int version);
00051
00052 private:
00053
00054
00055 virtual void doWindowOp(int nsamples,float *dest);
00056 virtual void doShiftOp(int nsamples,const float *source,int nshift);
00057
00058 protected:
00059 int myWindowSize;
00060 int myOverlap;
00061 int myLastFilteredSample;
00062
00063 float *myPreviousData;
00064 float *myMirrorData;
00065 };
00066
00067 #endif