23 #ifndef SDRBASE_DSP_INTHALFBANDFILTEREO_H_ 24 #define SDRBASE_DSP_INTHALFBANDFILTEREO_H_ 31 template<
typename EOStorageType,
typename AccuType, u
int32_t HBFilterOrder>
614 doFIR(&out[0], &out[1]);
621 doFIR(&out[2], &out[3]);
631 doFIR(&out[0], &out[1]);
638 doFIR(&out[2], &out[3]);
648 doFIR(&out[0], &out[1]);
655 doFIR(&out[2], &out[3]);
665 doFIR(&out[0], &out[1]);
672 doFIR(&out[2], &out[3]);
682 doFIR(&out[0], &out[1]);
689 doFIR(&out[2], &out[3]);
699 doFIR(&out[0], &out[1]);
706 doFIR(&out[2], &out[3]);
758 void myInterpolateInf(qint32 *x1, qint32 *y1, qint32 *x2, qint32 *y2, qint32 *x3, qint32 *y3, qint32 *x4, qint32 *y4)
774 void myInterpolateSup(qint32 *x1, qint32 *y1, qint32 *x2, qint32 *y2, qint32 *x3, qint32 *y3, qint32 *x4, qint32 *y4)
801 if ((m_ptr % 2) == 0)
803 m_even[0][m_ptr/2] = sampleI;
804 m_even[1][m_ptr/2] = sampleQ;
805 m_even[0][m_ptr/2 +
m_size] = sampleI;
806 m_even[1][m_ptr/2 +
m_size] = sampleQ;
810 m_odd[0][m_ptr/2] = sampleI;
811 m_odd[1][m_ptr/2] = sampleQ;
812 m_odd[0][m_ptr/2 +
m_size] = sampleI;
813 m_odd[1][m_ptr/2 +
m_size] = sampleQ;
819 if ((m_ptr % 2) == 0)
821 m_even[0][m_ptr/2] = x;
822 m_even[1][m_ptr/2] = y;
823 m_even[0][m_ptr/2 +
m_size] = x;
824 m_even[1][m_ptr/2 +
m_size] = y;
828 m_odd[0][m_ptr/2] = x;
829 m_odd[1][m_ptr/2] = y;
830 m_odd[0][m_ptr/2 +
m_size] = x;
831 m_odd[1][m_ptr/2 +
m_size] = y;
837 m_ptr = m_ptr + 1 < 2*m_size ? m_ptr + 1: 0;
848 for (
int i = 0; i < HBFIRFilterTraits<HBFilterOrder>::hbOrder / 4;
i++)
850 if ((m_ptr % 2) == 0)
865 if ((m_ptr % 2) == 0)
888 for (
int i = 0; i < HBFIRFilterTraits<HBFilterOrder>::hbOrder / 4;
i++)
890 if ((m_ptr % 2) == 0)
905 if ((m_ptr % 2) == 0)
929 for (
int i = 0; i < HBFIRFilterTraits<HBFilterOrder>::hbOrder / 4;
i++)
950 for (
int i = 0; i < HBFIRFilterTraits<HBFilterOrder>::hbOrder / 4;
i++)
void myDecimateSup(int32_t x1, int32_t y1, int32_t x2, int32_t y2, int32_t x3, int32_t y3, int32_t x4, int32_t y4, int32_t *out)
void myDecimateCen(int32_t x1, int32_t y1, int32_t *x2, int32_t *y2, int32_t x3, int32_t y3, int32_t *x4, int32_t *y4)
void doFIR(Sample *sample)
void myDecimateSup(int32_t *in, int32_t *out)
void myDecimate(int32_t x1, int32_t y1, int32_t *x2, int32_t *y2)
bool workDecimateCenter(int32_t *x, int32_t *y)
bool workInterpolateLowerHalfZeroStuffing(Sample *sampleIn, Sample *sampleOut)
void myDecimateCen(int32_t *in, int32_t *out)
void storeSample32(int32_t x, int32_t y)
void myInterpolateZeroStuffing(Sample *sample1, Sample *sample2)
bool workInterpolateLowerHalf(Sample *sampleIn, Sample *sampleOut)
bool workInterpolateCenterZeroStuffing(Sample *sampleIn, Sample *SampleOut)
void myDecimateInf(int32_t *in, int32_t *out)
void myInterpolate(qint32 *x1, qint32 *y1, qint32 *x2, qint32 *y2)
bool workDecimateLowerHalf(Sample *sample)
void doInterpolateFIR(Sample *sample)
void doInterpolateFIR(qint32 *x, qint32 *y)
void myInterpolateZeroStuffing(int32_t *x1, int32_t *y1, int32_t *x2, int32_t *y2)
void myInterpolateInf(qint32 *x1, qint32 *y1, qint32 *x2, qint32 *y2, qint32 *x3, qint32 *y3, qint32 *x4, qint32 *y4)
void myDecimate(const Sample *sample1, Sample *sample2)
bool workInterpolateUpperHalf(Sample *sampleIn, Sample *sampleOut)
bool workInterpolateUpperHalfZeroStuffing(Sample *sampleIn, Sample *sampleOut)
bool workInterpolateCenter(Sample *sampleIn, Sample *SampleOut)
void myInterpolateSup(qint32 *x1, qint32 *y1, qint32 *x2, qint32 *y2, qint32 *x3, qint32 *y3, qint32 *x4, qint32 *y4)
EOStorageType m_odd[2][HBFIRFilterTraits< HBFilterOrder >::hbOrder]
void myDecimateCen(int32_t x1, int32_t y1, int32_t x2, int32_t y2, int32_t x3, int32_t y3, int32_t x4, int32_t y4, int32_t *out)
bool workDecimateCenter(Sample *sample)
void storeSample(const FixReal &sampleI, const FixReal &sampleQ)
EOStorageType m_samples[HBFIRFilterTraits< HBFilterOrder >::hbOrder][2]
void doFIR(int32_t *x, int32_t *y)
void myDecimateInf(int32_t x1, int32_t y1, int32_t x2, int32_t y2, int32_t x3, int32_t y3, int32_t x4, int32_t y4, int32_t *out)
EOStorageType m_even[2][HBFIRFilterTraits< HBFilterOrder >::hbOrder]
bool workDecimateUpperHalf(Sample *sample)