00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023 #ifndef _GRDELAY_H_
00024 #define _GRDELAY_H_
00025
00026 #include <VrHistoryProc.h>
00027
00028 template<class iType, class oType>
00029 class GrDelay : public VrHistoryProc<iType,oType>
00030 {
00031 public:
00032 GrDelay (unsigned int maxdelay);
00033
00034 virtual const char *name () { return "GrDelay"; }
00035 virtual int work (VrSampleRange output, void *o[],
00036 VrSampleRange inputs[], void *i[]);
00037 virtual void set_delay (unsigned int del) { del = (delay>history) ? history : delay; };
00038 protected:
00039 unsigned int delay;
00040 };
00041
00042 template<class iType, class oType>
00043 GrDelay<iType, oType>::GrDelay (unsigned int maxdelay)
00044 : VrHistoryProc<iType, oType>(1), delay(maxdelay)
00045 {
00046 history = delay+1;
00047 }
00048
00049 template<class iType, class oType> int
00050 GrDelay<iType, oType>::work (VrSampleRange output, void *ao[],
00051 VrSampleRange inputs[], void *ai[])
00052 {
00053 iType **in = (iType **) ai;
00054 oType **out = (oType **) ao;
00055 unsigned int size = output.size;
00056 for(unsigned int samp=0; samp < size; samp++)
00057 out[0][samp] = in[0][samp + history - delay];
00058
00059 return output.size;
00060 }
00061
00062 #endif