HARDT - The Ham Radio DSP Toolkit
hdelay.h
1 #ifndef __HDELAY_H
2 #define __HDELAY_H
3 
4 #include "hfilter.h"
5 #include "hardt.h"
6 #include "hreader.h"
7 #include "hwriter.h"
8 #include "hwriterconsumer.h"
9 #include "hprobe.h"
10 
14 template <class T>
15 class HDelay : public HFilter<T>
16 {
17  private:
18 
19  int _buffersize;
20  int _inPos;
21  int _outPos;
22  T *_buffer;
23 
24  void Init(size_t blocksize, H_SAMPLE_RATE rate, int seconds)
25  {
26  // Calculate the number of blocks that must be buffered
27  int blocksPerSeconds = ceil((float) rate / (float) blocksize);
28  int blocks = (seconds * blocksPerSeconds);
29  Init(blocksize, blocks);
30  }
31 
32  void Init(size_t blocksize, int blocks)
33  {
34  _buffersize = blocks + 1;
35 
36  // Allocate and initialize buffer
37  _buffer = new T[_buffersize * blocksize];
38  memset((void*) _buffer, 0, _buffersize * blocksize * sizeof(T));
39 
40  // Set initial positions
41  _inPos = _buffersize - 1;
42  _outPos = 0;
43  }
44 
45  public:
46 
56  HDelay(HWriter<T>* writer, size_t blocksize, H_SAMPLE_RATE rate, int seconds, HProbe<T>* probe = NULL);
57 
67  HDelay(HWriterConsumer<T>* consumer, size_t blocksize, H_SAMPLE_RATE rate, int seconds, HProbe<T>* probe = NULL);
68 
78  HDelay(HReader<T>* reader, size_t blocksize, H_SAMPLE_RATE rate, int seconds, HProbe<T>* probe = NULL);
79 
88  HDelay(HWriter<T>* writer, size_t blocksize, int blocks, HProbe<T>* probe = NULL);
89 
98  HDelay(HWriterConsumer<T>* consumer, size_t blocksize, int blocks, HProbe<T>* probe = NULL);
99 
108  HDelay(HReader<T>* reader, size_t blocksize, int blocks, HProbe<T>* probe = NULL);
109 
111  ~HDelay();
112 
114  virtual void Filter(T* src, T* dest, size_t blocksize);
115 };
116 
117 #endif
HDelay::HDelay
HDelay(HWriter< T > *writer, size_t blocksize, H_SAMPLE_RATE rate, int seconds, HProbe< T > *probe=NULL)
Definition: hdelay.cpp:7
HWriter
Definition: hwriter.h:10
HFilter
Definition: hfilter.h:14
HDelay
Definition: hdelay.h:15
HReader
Definition: hreader.h:24
HDelay::~HDelay
~HDelay()
Definition: hdelay.cpp:49
HProbe
Definition: hprobe.h:10
HDelay::Filter
virtual void Filter(T *src, T *dest, size_t blocksize)
Definition: hdelay.cpp:56
HWriterConsumer
Definition: hwriterconsumer.h:8