HARDT - The Ham Radio DSP Toolkit
hfirfilter.h
1 #ifndef __HFIRFILTER_H
2 #define __HFIRFILTER_H
3 
4 #include "hfir.h"
5 
6 #include <fstream>
7 
17 template <class T>
18 class HFirFilter : public HFilter<T>
19 {
20  private:
21 
22  HFir<T>* _fir;
23 
24  void Init(float* coefficients, int length);
25 
26  public:
27 
29  HFirFilter(HWriter<T>* writer, float* coefficients, int length, size_t blocksize, HProbe<T>* probe = NULL);
30 
32  HFirFilter(HWriterConsumer<T>* consumer, float* coefficients, int length, size_t blocksize, HProbe<T>* probe = NULL);
33 
35  HFirFilter(HReader<T>* reader, float* coefficients, int length, size_t blocksize, HProbe<T>* probe = NULL);
36 
38  ~HFirFilter();
39 
41  void Filter(T* src, T* dest, size_t blocksize);
42 
44  void SetCoefficients(float* coefficients, int length);
45 
47  std::vector<float> GetCoefficients()
48  {
49  return _fir->GetCoefficients();
50  }
51 
53  static HFirFilter<T>* Create(HWriter<T>* writer, size_t blocksize, char* coeffsFilename)
54  {
55  std::vector<float> coeffs = HFilter<T>::ReadCoeffsFromFile(coeffsFilename);
56 
57  return new HFirFilter<T>(writer, coeffs.data(), coeffs.size(), blocksize);
58  }
59 
61  static HFirFilter<T>* Create(HWriterConsumer<T>* consumer, size_t blocksize, char* coeffsFilename)
62  {
63  std::vector<float> coeffs = HFilter<T>::ReadCoeffsFromFile(coeffsFilename);
64 
65  return new HFirFilter<T>(consumer, coeffs.data(), coeffs.size(), blocksize);
66  }
67 
69  static HFirFilter<T>* Create(HReader<T>* reader, size_t blocksize, char* coeffsFilename)
70  {
71  std::vector<float> coeffs = HFilter<T>::ReadCoeffsFromFile(coeffsFilename);
72 
73  return new HFirFilter<T>(reader, coeffs.data(), coeffs.size(), blocksize);
74  }
75 };
76 
77 #endif
HFirFilter::Create
static HFirFilter< T > * Create(HWriter< T > *writer, size_t blocksize, char *coeffsFilename)
Definition: hfirfilter.h:53
HFir::GetCoefficients
std::vector< float > GetCoefficients()
Definition: hfir.h:164
HFirFilter::Filter
void Filter(T *src, T *dest, size_t blocksize)
Definition: hfirfilter.cpp:50
HFirFilter
Definition: hfirfilter.h:18
HFirFilter::HFirFilter
HFirFilter(HWriter< T > *writer, float *coefficients, int length, size_t blocksize, HProbe< T > *probe=NULL)
Definition: hfirfilter.cpp:7
HWriter
Definition: hwriter.h:10
HFilter
Definition: hfilter.h:14
HFilter::ReadCoeffsFromFile
static std::vector< float > ReadCoeffsFromFile(std::string filename)
Definition: hfilter.h:204
HReader
Definition: hreader.h:24
HFirFilter::~HFirFilter
~HFirFilter()
Definition: hfirfilter.cpp:43
HProbe
Definition: hprobe.h:10
HFir
Definition: hfir.h:6
HFirFilter::GetCoefficients
std::vector< float > GetCoefficients()
Definition: hfirfilter.h:47
HFirFilter::Create
static HFirFilter< T > * Create(HReader< T > *reader, size_t blocksize, char *coeffsFilename)
Definition: hfirfilter.h:69
HFirFilter::SetCoefficients
void SetCoefficients(float *coefficients, int length)
Definition: hfirfilter.cpp:57
HFirFilter::Create
static HFirFilter< T > * Create(HWriterConsumer< T > *consumer, size_t blocksize, char *coeffsFilename)
Definition: hfirfilter.h:61
HWriterConsumer
Definition: hwriterconsumer.h:8