22 #ifndef INCLUDE_INTHALFBANDFILTER_DBFF_H 23 #define INCLUDE_INTHALFBANDFILTER_DBFF_H 30 template<
typename AccuType,
typename SampleType, u
int32_t HBFilterOrder>
109 doInterpolateFIR(SampleOut);
112 m_samplesDB[m_ptr][0] = sampleIn->
real();
113 m_samplesDB[m_ptr][1] = sampleIn->
imag();
196 doInterpolateFIR(&s);
201 m_samplesDB[m_ptr][0] = sampleIn->
real();
202 m_samplesDB[m_ptr][1] = sampleIn->
imag();
225 doInterpolateFIR(&s);
230 m_samplesDB[m_ptr][0] = sampleIn->
real();
231 m_samplesDB[m_ptr][1] = sampleIn->
imag();
256 storeSampleReal((
Real) 0, (
Real) 0);
292 storeSampleReal((
Real) 0, (
Real) 0);
395 doInterpolateFIR(&s);
400 m_samplesDB[m_ptr][0] = sampleIn->
real();
401 m_samplesDB[m_ptr][1] = sampleIn->
imag();
424 doInterpolateFIR(&s);
429 m_samplesDB[m_ptr][0] = sampleIn->
real();
430 m_samplesDB[m_ptr][1] = sampleIn->
imag();
455 storeSampleReal((
Real) 0, (
Real) 0);
491 storeSampleReal((
Real) 0, (
Real) 0);
537 void myDecimate(AccuType x1, AccuType y1, AccuType *x2, AccuType *y2)
539 storeSampleAccu(x1, y1);
542 storeSampleAccu(*x2, *y2);
554 storeSampleReal((
Real) 0, (
Real) 0);
563 m_samplesDB[m_ptr][0] = *x1;
564 m_samplesDB[m_ptr][1] = *y1;
580 doInterpolateFIR(x2, y2);
583 void myInterpolateInf(qint32 *x1, qint32 *y1, qint32 *x2, qint32 *y2, qint32 *x3, qint32 *y3, qint32 *x4, qint32 *y4)
585 myInterpolate(x1, y1, x2, y2);
586 myInterpolate(x3, y3, x4, y4);
599 void myInterpolateSup(qint32 *x1, qint32 *y1, qint32 *x2, qint32 *y2, qint32 *x3, qint32 *y3, qint32 *x4, qint32 *y4)
601 myInterpolate(x1, y1, x2, y2);
602 myInterpolate(x3, y3, x4, y4);
623 m_samplesDB[m_ptr][0] = sampleI;
624 m_samplesDB[m_ptr][1] = sampleQ;
625 m_samplesDB[m_ptr + m_size][0] = sampleI;
626 m_samplesDB[m_ptr + m_size][1] = sampleQ;
631 m_samplesDB[m_ptr][0] = x;
632 m_samplesDB[m_ptr][1] = y;
633 m_samplesDB[m_ptr + m_size][0] = x;
634 m_samplesDB[m_ptr + m_size][1] = y;
639 m_ptr = m_ptr + 1 < m_size ? m_ptr + 1: 0;
644 int a = m_ptr + m_size;
649 for (
int i = 0; i < HBFIRFilterTraits<HBFilterOrder>::hbOrder / 4;
i++)
666 int a = m_ptr + m_size;
671 for (
int i = 0; i < HBFIRFilterTraits<HBFilterOrder>::hbOrder / 4;
i++)
679 iAcc += m_samplesDB[b-1][0] / 2.0;
680 qAcc += m_samplesDB[b-1][1] / 2.0;
695 for (
int i = 0; i < HBFIRFilterTraits<HBFilterOrder>::hbOrder / 4;
i++)
716 for (
int i = 0; i < HBFIRFilterTraits<HBFilterOrder>::hbOrder / 4;
i++)
729 template<
typename AccuType,
typename SampleType, u
int32_t HBFilterOrder>
734 for (
int i = 0;
i < m_size;
i++)
736 m_samplesDB[
i][0] = 0;
737 m_samplesDB[
i][1] = 0;
744 #endif // INCLUDE_INTHALFBANDFILTER_DBFF_H
bool workDecimateLowerHalf(FSample *sample)
void storeSampleAccu(AccuType x, AccuType y)
bool workInterpolateCenterZeroStuffing(FSample *sampleIn, FSample *SampleOut)
void doFIRAccu(AccuType *x, AccuType *y)
bool workInterpolateLowerHalfZeroStuffing(FSample *sampleIn, FSample *sampleOut)
bool workInterpolateLowerHalf(FSample *sampleIn, FSample *sampleOut)
void myInterpolateSup(qint32 *x1, qint32 *y1, qint32 *x2, qint32 *y2, qint32 *x3, qint32 *y3, qint32 *x4, qint32 *y4)
void doInterpolateFIR(FSample *sample)
void storeSampleReal(const Real &sampleI, const Real &sampleQ)
bool workInterpolateUpperHalf(FSample *sampleIn, FSample *sampleOut)
void myInterpolateZeroStuffing(FSample *sample1, FSample *sample2)
void myDecimate(const FSample *sample1, FSample *sample2)
void doFIR(FSample *sample)
void doInterpolateFIR(Real *x, Real *y)
bool workInterpolateCenter(FSample *sampleIn, FSample *SampleOut)
void myInterpolateInf(qint32 *x1, qint32 *y1, qint32 *x2, qint32 *y2, qint32 *x3, qint32 *y3, qint32 *x4, qint32 *y4)
void myInterpolate(qint32 *x1, qint32 *y1, qint32 *x2, qint32 *y2)
bool workDecimateCenter(FSample *sample)
void myDecimate(AccuType x1, AccuType y1, AccuType *x2, AccuType *y2)
bool workInterpolateUpperHalfZeroStuffing(FSample *sampleIn, FSample *sampleOut)
bool workDecimateUpperHalf(FSample *sample)