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