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