23 #ifndef SDRBASE_DSP_INTHALFBANDFILTEREOF_H_ 24 #define SDRBASE_DSP_INTHALFBANDFILTEREOF_H_ 32 template<u
int32_t HBFilterOrder>
64 void myDecimate(
float x1,
float y1,
float *x2,
float *y2)
110 void myInterpolateInf(
float *x1,
float *y1,
float *x2,
float *y2,
float *x3,
float *y3,
float *x4,
float *y4)
126 void myInterpolateSup(
float *x1,
float *y1,
float *x2,
float *y2,
float *x3,
float *y3,
float *x4,
float *y4)
153 if ((m_ptr % 2) == 0)
155 m_even[0][m_ptr/2] = x;
156 m_even[1][m_ptr/2] = y;
157 m_even[0][m_ptr/2 +
m_size] = x;
158 m_even[1][m_ptr/2 +
m_size] = y;
162 m_odd[0][m_ptr/2] = x;
163 m_odd[1][m_ptr/2] = y;
164 m_odd[0][m_ptr/2 +
m_size] = x;
165 m_odd[1][m_ptr/2 +
m_size] = y;
171 m_ptr = m_ptr + 1 < 2*m_size ? m_ptr + 1: 0;
182 for (
int i = 0; i < HBFIRFilterTraits<HBFilterOrder>::hbOrder / 4;
i++)
184 if ((m_ptr % 2) == 0)
199 if ((m_ptr % 2) == 0)
201 iAcc += m_odd[0][m_ptr/2 + m_size/2] * 0.5f;
202 qAcc += m_odd[1][m_ptr/2 + m_size/2] * 0.5f;
206 iAcc += m_even[0][m_ptr/2 + m_size/2 + 1] * 0.5f;
207 qAcc += m_even[1][m_ptr/2 + m_size/2 + 1] * 0.5f;
223 for (
int i = 0; i < HBFIRFilterTraits<HBFilterOrder>::hbOrder / 4;
i++)
236 template<u
int32_t HBFilterOrder>
float m_odd[2][HBFIRFilterTraits< HBFilterOrder >::hbOrder]
float m_samples[HBFIRFilterTraits< HBFilterOrder >::hbOrder][2]
void myInterpolate(float *x1, float *y1, float *x2, float *y2)
bool workDecimateCenter(float *x, float *y)
float m_even[2][HBFIRFilterTraits< HBFilterOrder >::hbOrder]
void storeSample(float x, float y)
void myInterpolateInf(float *x1, float *y1, float *x2, float *y2, float *x3, float *y3, float *x4, float *y4)
void myInterpolateZeroStuffing(float *x1, float *y1, float *x2, float *y2)
void doInterpolateFIR(float *x, float *y)
void doFIR(float *x, float *y)
void myDecimate(float x1, float y1, float *x2, float *y2)
void myInterpolateSup(float *x1, float *y1, float *x2, float *y2, float *x3, float *y3, float *x4, float *y4)