SDRAngel  4.11.5
Developer docs for <a href="https://github.com/f4exb/sdrangel">SDRangel<\a>, an Open Source Qt5 / OpenGL 3.0+ SDR and signal analyzer frontend to various hardware.
Public Member Functions | Public Attributes | List of all members
DecimatorsIF< T, InputBits > Class Template Reference

#include <decimatorsif.h>

+ Collaboration diagram for DecimatorsIF< T, InputBits >:

Public Member Functions

void decimate1 (FSampleVector::iterator *it, const T *buf, qint32 nbIAndQ)
 
void decimate2_inf (FSampleVector::iterator *it, const T *buf, qint32 nbIAndQ)
 
void decimate2_sup (FSampleVector::iterator *it, const T *buf, qint32 nbIAndQ)
 
void decimate2_cen (FSampleVector::iterator *it, const T *buf, qint32 nbIAndQ)
 
void decimate4_inf (FSampleVector::iterator *it, const T *buf, qint32 nbIAndQ)
 
void decimate4_sup (FSampleVector::iterator *it, const T *buf, qint32 nbIAndQ)
 
void decimate4_cen (FSampleVector::iterator *it, const T *buf, qint32 nbIAndQ)
 
void decimate8_inf (FSampleVector::iterator *it, const T *buf, qint32 nbIAndQ)
 
void decimate8_sup (FSampleVector::iterator *it, const T *buf, qint32 nbIAndQ)
 
void decimate8_cen (FSampleVector::iterator *it, const T *buf, qint32 nbIAndQ)
 
void decimate16_inf (FSampleVector::iterator *it, const T *buf, qint32 nbIAndQ)
 
void decimate16_sup (FSampleVector::iterator *it, const T *buf, qint32 nbIAndQ)
 
void decimate16_cen (FSampleVector::iterator *it, const T *buf, qint32 nbIAndQ)
 
void decimate32_inf (FSampleVector::iterator *it, const T *buf, qint32 nbIAndQ)
 
void decimate32_sup (FSampleVector::iterator *it, const T *buf, qint32 nbIAndQ)
 
void decimate32_cen (FSampleVector::iterator *it, const T *buf, qint32 nbIAndQ)
 
void decimate64_inf (FSampleVector::iterator *it, const T *buf, qint32 nbIAndQ)
 
void decimate64_sup (FSampleVector::iterator *it, const T *buf, qint32 nbIAndQ)
 
void decimate64_cen (FSampleVector::iterator *it, const T *buf, qint32 nbIAndQ)
 

Public Attributes

IntHalfbandFilterEOF< DECIMATORS_IF_FILTER_ORDERm_decimator2
 
IntHalfbandFilterEOF< DECIMATORS_IF_FILTER_ORDERm_decimator4
 
IntHalfbandFilterEOF< DECIMATORS_IF_FILTER_ORDERm_decimator8
 
IntHalfbandFilterEOF< DECIMATORS_IF_FILTER_ORDERm_decimator16
 
IntHalfbandFilterEOF< DECIMATORS_IF_FILTER_ORDERm_decimator32
 
IntHalfbandFilterEOF< DECIMATORS_IF_FILTER_ORDERm_decimator64
 

Detailed Description

template<typename T, uint InputBits>
class DecimatorsIF< T, InputBits >

Definition at line 55 of file decimatorsif.h.

Member Function Documentation

◆ decimate1()

template<typename T, uint InputBits>
void DecimatorsIF< T, InputBits >::decimate1 ( FSampleVector::iterator *  it,
const T *  buf,
qint32  nbIAndQ 
)

Definition at line 87 of file decimatorsif.h.

Referenced by MainBench::decimateIF().

88 {
89  float xreal, yimag;
90 
91  for (int pos = 0; pos < nbIAndQ - 1; pos += 2)
92  {
93  xreal = buf[pos+0] * decimation_scale<InputBits>::scaleIn;
94  yimag = buf[pos+1] * decimation_scale<InputBits>::scaleIn;
95  (**it).setReal(xreal);
96  (**it).setImag(yimag);
97  ++(*it); // Valgrind optim (comment not repeated)
98  }
99 }
+ Here is the caller graph for this function:

◆ decimate16_cen()

template<typename T, uint InputBits>
void DecimatorsIF< T, InputBits >::decimate16_cen ( FSampleVector::iterator *  it,
const T *  buf,
qint32  nbIAndQ 
)

Definition at line 394 of file decimatorsif.h.

Referenced by MainBench::decimateIF().

395 {
396  float intbuf[16];
397 
398  for (int pos = 0; pos < nbIAndQ - 31; pos += 32)
399  {
400  intbuf[0] = buf[pos+2];
401  intbuf[1] = buf[pos+3];
402  intbuf[2] = buf[pos+6];
403  intbuf[3] = buf[pos+7];
404  intbuf[4] = buf[pos+10];
405  intbuf[5] = buf[pos+11];
406  intbuf[6] = buf[pos+14];
407  intbuf[7] = buf[pos+15];
408  intbuf[8] = buf[pos+18];
409  intbuf[9] = buf[pos+19];
410  intbuf[10] = buf[pos+22];
411  intbuf[11] = buf[pos+23];
412  intbuf[12] = buf[pos+26];
413  intbuf[13] = buf[pos+27];
414  intbuf[14] = buf[pos+30];
415  intbuf[15] = buf[pos+31];
416 
418  buf[pos+0],
419  buf[pos+1],
420  &intbuf[0],
421  &intbuf[1]);
423  buf[pos+4],
424  buf[pos+5],
425  &intbuf[2],
426  &intbuf[3]);
428  buf[pos+8],
429  buf[pos+9],
430  &intbuf[4],
431  &intbuf[5]);
433  buf[pos+12],
434  buf[pos+13],
435  &intbuf[6],
436  &intbuf[7]);
438  buf[pos+16],
439  buf[pos+17],
440  &intbuf[8],
441  &intbuf[9]);
443  buf[pos+20],
444  buf[pos+21],
445  &intbuf[10],
446  &intbuf[11]);
448  buf[pos+24],
449  buf[pos+25],
450  &intbuf[12],
451  &intbuf[13]);
453  buf[pos+28],
454  buf[pos+29],
455  &intbuf[14],
456  &intbuf[15]);
457 
459  intbuf[0],
460  intbuf[1],
461  &intbuf[2],
462  &intbuf[3]);
464  intbuf[4],
465  intbuf[5],
466  &intbuf[6],
467  &intbuf[7]);
469  intbuf[8],
470  intbuf[9],
471  &intbuf[10],
472  &intbuf[11]);
474  intbuf[12],
475  intbuf[13],
476  &intbuf[14],
477  &intbuf[15]);
478 
480  intbuf[2],
481  intbuf[3],
482  &intbuf[6],
483  &intbuf[7]);
485  intbuf[10],
486  intbuf[11],
487  &intbuf[14],
488  &intbuf[15]);
489 
491  intbuf[6],
492  intbuf[7],
493  &intbuf[14],
494  &intbuf[15]);
495 
496  (**it).setReal(intbuf[14] * decimation_scale<InputBits>::scaleIn);
497  (**it).setImag(intbuf[15] * decimation_scale<InputBits>::scaleIn);
498  ++(*it);
499  }
500 }
IntHalfbandFilterEOF< DECIMATORS_IF_FILTER_ORDER > m_decimator2
Definition: decimatorsif.h:78
IntHalfbandFilterEOF< DECIMATORS_IF_FILTER_ORDER > m_decimator4
Definition: decimatorsif.h:79
IntHalfbandFilterEOF< DECIMATORS_IF_FILTER_ORDER > m_decimator8
Definition: decimatorsif.h:80
void myDecimate(float x1, float y1, float *x2, float *y2)
IntHalfbandFilterEOF< DECIMATORS_IF_FILTER_ORDER > m_decimator16
Definition: decimatorsif.h:81
+ Here is the caller graph for this function:

◆ decimate16_inf()

template<typename T, uint InputBits>
void DecimatorsIF< T, InputBits >::decimate16_inf ( FSampleVector::iterator *  it,
const T *  buf,
qint32  nbIAndQ 
)

Definition at line 342 of file decimatorsif.h.

343 {
344  float xreal[4], yimag[4];
345 
346  for (int pos = 0; pos < nbIAndQ - 31; )
347  {
348  for (int i = 0; i < 4; i++)
349  {
350  xreal[i] = (buf[pos+0] - buf[pos+3] + buf[pos+7] - buf[pos+4]);
351  yimag[i] = (buf[pos+1] - buf[pos+5] + buf[pos+2] - buf[pos+6]);
352  pos += 8;
353  }
354 
355  m_decimator2.myDecimate(xreal[0], yimag[0], &xreal[1], &yimag[1]);
356  m_decimator2.myDecimate(xreal[2], yimag[2], &xreal[3], &yimag[3]);
357 
358  m_decimator4.myDecimate(xreal[1], yimag[1], &xreal[3], &yimag[3]);
359 
360  (**it).setReal(xreal[3] * decimation_scale<InputBits>::scaleIn);
361  (**it).setImag(yimag[3] * decimation_scale<InputBits>::scaleIn);
362 
363  ++(*it);
364  }
365 }
int32_t i
Definition: decimators.h:244
IntHalfbandFilterEOF< DECIMATORS_IF_FILTER_ORDER > m_decimator2
Definition: decimatorsif.h:78
IntHalfbandFilterEOF< DECIMATORS_IF_FILTER_ORDER > m_decimator4
Definition: decimatorsif.h:79
void myDecimate(float x1, float y1, float *x2, float *y2)

◆ decimate16_sup()

template<typename T, uint InputBits>
void DecimatorsIF< T, InputBits >::decimate16_sup ( FSampleVector::iterator *  it,
const T *  buf,
qint32  nbIAndQ 
)

Definition at line 368 of file decimatorsif.h.

369 {
370  float xreal[4], yimag[4];
371 
372  for (int pos = 0; pos < nbIAndQ - 31; )
373  {
374  for (int i = 0; i < 4; i++)
375  {
376  xreal[i] = (buf[pos+1] - buf[pos+2] - buf[pos+5] + buf[pos+6]);
377  yimag[i] = (buf[pos+4] + buf[pos+7] - buf[pos+0] - buf[pos+3]);
378  pos += 8;
379  }
380 
381  m_decimator2.myDecimate(xreal[0], yimag[0], &xreal[1], &yimag[1]);
382  m_decimator2.myDecimate(xreal[2], yimag[2], &xreal[3], &yimag[3]);
383 
384  m_decimator4.myDecimate(xreal[1], yimag[1], &xreal[3], &yimag[3]);
385 
386  (**it).setReal(xreal[3] * decimation_scale<InputBits>::scaleIn);
387  (**it).setImag(yimag[3] * decimation_scale<InputBits>::scaleIn);
388 
389  ++(*it);
390  }
391 }
int32_t i
Definition: decimators.h:244
IntHalfbandFilterEOF< DECIMATORS_IF_FILTER_ORDER > m_decimator2
Definition: decimatorsif.h:78
IntHalfbandFilterEOF< DECIMATORS_IF_FILTER_ORDER > m_decimator4
Definition: decimatorsif.h:79
void myDecimate(float x1, float y1, float *x2, float *y2)

◆ decimate2_cen()

template<typename T, uint InputBits>
void DecimatorsIF< T, InputBits >::decimate2_cen ( FSampleVector::iterator *  it,
const T *  buf,
qint32  nbIAndQ 
)

Definition at line 144 of file decimatorsif.h.

Referenced by MainBench::decimateIF().

145 {
146  float intbuf[2];
147 
148  for (int pos = 0; pos < nbIAndQ - 3; pos += 4)
149  {
150  intbuf[0] = buf[pos+2];
151  intbuf[1] = buf[pos+3];
152 
154  buf[pos+0],
155  buf[pos+1],
156  &intbuf[0],
157  &intbuf[1]);
158 
159  (**it).setReal(intbuf[0] * decimation_scale<InputBits>::scaleIn);
160  (**it).setImag(intbuf[1] * decimation_scale<InputBits>::scaleIn);
161 
162  ++(*it);
163  }
164 }
IntHalfbandFilterEOF< DECIMATORS_IF_FILTER_ORDER > m_decimator2
Definition: decimatorsif.h:78
void myDecimate(float x1, float y1, float *x2, float *y2)
+ Here is the caller graph for this function:

◆ decimate2_inf()

template<typename T, uint InputBits>
void DecimatorsIF< T, InputBits >::decimate2_inf ( FSampleVector::iterator *  it,
const T *  buf,
qint32  nbIAndQ 
)

Definition at line 102 of file decimatorsif.h.

103 {
104  float xreal, yimag;
105 
106  for (int pos = 0; pos < nbIAndQ - 7; pos += 8)
107  {
108  xreal = (buf[pos+0] - buf[pos+3]) * decimation_scale<InputBits>::scaleIn;
109  yimag = (buf[pos+1] + buf[pos+2]) * decimation_scale<InputBits>::scaleIn;
110  (**it).setReal(xreal);
111  (**it).setImag(yimag);
112  ++(*it);
113 
114  xreal = (buf[pos+7] - buf[pos+4]) * decimation_scale<InputBits>::scaleIn;
115  yimag = (- buf[pos+5] - buf[pos+6]) * decimation_scale<InputBits>::scaleIn;
116  (**it).setReal(xreal);
117  (**it).setImag(yimag);
118  ++(*it);
119  }
120 }

◆ decimate2_sup()

template<typename T, uint InputBits>
void DecimatorsIF< T, InputBits >::decimate2_sup ( FSampleVector::iterator *  it,
const T *  buf,
qint32  nbIAndQ 
)

Definition at line 123 of file decimatorsif.h.

124 {
125  float xreal, yimag;
126 
127  for (int pos = 0; pos < nbIAndQ - 7; pos += 8)
128  {
129  xreal = (buf[pos+1] - buf[pos+2]) * decimation_scale<InputBits>::scaleIn;
130  yimag = (- buf[pos+0] - buf[pos+3]) * decimation_scale<InputBits>::scaleIn;
131  (**it).setReal(xreal);
132  (**it).setImag(yimag);
133  ++(*it);
134 
135  xreal = (buf[pos+6] - buf[pos+5]) * decimation_scale<InputBits>::scaleIn;
136  yimag = (buf[pos+4] + buf[pos+7]) * decimation_scale<InputBits>::scaleIn;
137  (**it).setReal(xreal);
138  (**it).setImag(yimag);
139  ++(*it);
140  }
141 }

◆ decimate32_cen()

template<typename T, uint InputBits>
void DecimatorsIF< T, InputBits >::decimate32_cen ( FSampleVector::iterator *  it,
const T *  buf,
qint32  nbIAndQ 
)

Definition at line 565 of file decimatorsif.h.

Referenced by MainBench::decimateIF().

566 {
567  float intbuf[32];
568 
569  for (int pos = 0; pos < nbIAndQ - 63; pos += 64)
570  {
571  intbuf[0] = buf[pos+2];
572  intbuf[1] = buf[pos+3];
573  intbuf[2] = buf[pos+6];
574  intbuf[3] = buf[pos+7];
575  intbuf[4] = buf[pos+10];
576  intbuf[5] = buf[pos+11];
577  intbuf[6] = buf[pos+14];
578  intbuf[7] = buf[pos+15];
579  intbuf[8] = buf[pos+18];
580  intbuf[9] = buf[pos+19];
581  intbuf[10] = buf[pos+22];
582  intbuf[11] = buf[pos+23];
583  intbuf[12] = buf[pos+26];
584  intbuf[13] = buf[pos+27];
585  intbuf[14] = buf[pos+30];
586  intbuf[15] = buf[pos+31];
587  intbuf[16] = buf[pos+34];
588  intbuf[17] = buf[pos+35];
589  intbuf[18] = buf[pos+38];
590  intbuf[19] = buf[pos+39];
591  intbuf[20] = buf[pos+42];
592  intbuf[21] = buf[pos+43];
593  intbuf[22] = buf[pos+46];
594  intbuf[23] = buf[pos+47];
595  intbuf[24] = buf[pos+50];
596  intbuf[25] = buf[pos+51];
597  intbuf[26] = buf[pos+54];
598  intbuf[27] = buf[pos+55];
599  intbuf[28] = buf[pos+58];
600  intbuf[29] = buf[pos+59];
601  intbuf[30] = buf[pos+62];
602  intbuf[31] = buf[pos+63];
603 
605  buf[pos+0],
606  buf[pos+1],
607  &intbuf[0],
608  &intbuf[1]);
610  buf[pos+4],
611  buf[pos+5],
612  &intbuf[2],
613  &intbuf[3]);
615  buf[pos+8],
616  buf[pos+9],
617  &intbuf[4],
618  &intbuf[5]);
620  buf[pos+12],
621  buf[pos+13],
622  &intbuf[6],
623  &intbuf[7]);
625  buf[pos+16],
626  buf[pos+17],
627  &intbuf[8],
628  &intbuf[9]);
630  buf[pos+20],
631  buf[pos+21],
632  &intbuf[10],
633  &intbuf[11]);
635  buf[pos+24],
636  buf[pos+25],
637  &intbuf[12],
638  &intbuf[13]);
640  buf[pos+28],
641  buf[pos+29],
642  &intbuf[14],
643  &intbuf[15]);
645  buf[pos+32],
646  buf[pos+33],
647  &intbuf[16],
648  &intbuf[17]);
650  buf[pos+36],
651  buf[pos+37],
652  &intbuf[18],
653  &intbuf[19]);
655  buf[pos+40],
656  buf[pos+41],
657  &intbuf[20],
658  &intbuf[21]);
660  buf[pos+44],
661  buf[pos+45],
662  &intbuf[22],
663  &intbuf[23]);
665  buf[pos+48],
666  buf[pos+49],
667  &intbuf[24],
668  &intbuf[25]);
670  buf[pos+52],
671  buf[pos+53],
672  &intbuf[26],
673  &intbuf[27]);
675  buf[pos+56],
676  buf[pos+57],
677  &intbuf[28],
678  &intbuf[29]);
680  buf[pos+60],
681  buf[pos+61],
682  &intbuf[30],
683  &intbuf[31]);
684 
686  intbuf[0],
687  intbuf[1],
688  &intbuf[2],
689  &intbuf[3]);
691  intbuf[4],
692  intbuf[5],
693  &intbuf[6],
694  &intbuf[7]);
696  intbuf[8],
697  intbuf[9],
698  &intbuf[10],
699  &intbuf[11]);
701  intbuf[12],
702  intbuf[13],
703  &intbuf[14],
704  &intbuf[15]);
706  intbuf[16],
707  intbuf[17],
708  &intbuf[18],
709  &intbuf[19]);
711  intbuf[20],
712  intbuf[21],
713  &intbuf[22],
714  &intbuf[23]);
716  intbuf[24],
717  intbuf[25],
718  &intbuf[26],
719  &intbuf[27]);
721  intbuf[28],
722  intbuf[29],
723  &intbuf[30],
724  &intbuf[31]);
725 
727  intbuf[2],
728  intbuf[3],
729  &intbuf[6],
730  &intbuf[7]);
732  intbuf[10],
733  intbuf[11],
734  &intbuf[14],
735  &intbuf[15]);
737  intbuf[18],
738  intbuf[19],
739  &intbuf[22],
740  &intbuf[23]);
742  intbuf[26],
743  intbuf[27],
744  &intbuf[30],
745  &intbuf[31]);
746 
748  intbuf[6],
749  intbuf[7],
750  &intbuf[14],
751  &intbuf[15]);
753  intbuf[22],
754  intbuf[23],
755  &intbuf[30],
756  &intbuf[31]);
757 
759  intbuf[14],
760  intbuf[15],
761  &intbuf[30],
762  &intbuf[31]);
763 
764  (**it).setReal(intbuf[30] * decimation_scale<InputBits>::scaleIn);
765  (**it).setImag(intbuf[31] * decimation_scale<InputBits>::scaleIn);
766  ++(*it);
767  }
768 }
IntHalfbandFilterEOF< DECIMATORS_IF_FILTER_ORDER > m_decimator32
Definition: decimatorsif.h:82
IntHalfbandFilterEOF< DECIMATORS_IF_FILTER_ORDER > m_decimator2
Definition: decimatorsif.h:78
IntHalfbandFilterEOF< DECIMATORS_IF_FILTER_ORDER > m_decimator4
Definition: decimatorsif.h:79
IntHalfbandFilterEOF< DECIMATORS_IF_FILTER_ORDER > m_decimator8
Definition: decimatorsif.h:80
void myDecimate(float x1, float y1, float *x2, float *y2)
IntHalfbandFilterEOF< DECIMATORS_IF_FILTER_ORDER > m_decimator16
Definition: decimatorsif.h:81
+ Here is the caller graph for this function:

◆ decimate32_inf()

template<typename T, uint InputBits>
void DecimatorsIF< T, InputBits >::decimate32_inf ( FSampleVector::iterator *  it,
const T *  buf,
qint32  nbIAndQ 
)

Definition at line 503 of file decimatorsif.h.

504 {
505  float xreal[8], yimag[8];
506 
507  for (int pos = 0; pos < nbIAndQ - 63; )
508  {
509  for (int i = 0; i < 8; i++)
510  {
511  xreal[i] = (buf[pos+0] - buf[pos+3] + buf[pos+7] - buf[pos+4]);
512  yimag[i] = (buf[pos+1] - buf[pos+5] + buf[pos+2] - buf[pos+6]);
513  pos += 8;
514  }
515 
516  m_decimator2.myDecimate(xreal[0], yimag[0], &xreal[1], &yimag[1]);
517  m_decimator2.myDecimate(xreal[2], yimag[2], &xreal[3], &yimag[3]);
518  m_decimator2.myDecimate(xreal[4], yimag[4], &xreal[5], &yimag[5]);
519  m_decimator2.myDecimate(xreal[6], yimag[6], &xreal[7], &yimag[7]);
520 
521  m_decimator4.myDecimate(xreal[1], yimag[1], &xreal[3], &yimag[3]);
522  m_decimator4.myDecimate(xreal[5], yimag[5], &xreal[7], &yimag[7]);
523 
524  m_decimator8.myDecimate(xreal[3], yimag[3], &xreal[7], &yimag[7]);
525 
526  (**it).setReal(xreal[7] * decimation_scale<InputBits>::scaleIn);
527  (**it).setImag(yimag[7] * decimation_scale<InputBits>::scaleIn);
528 
529  ++(*it);
530  }
531 }
int32_t i
Definition: decimators.h:244
IntHalfbandFilterEOF< DECIMATORS_IF_FILTER_ORDER > m_decimator2
Definition: decimatorsif.h:78
IntHalfbandFilterEOF< DECIMATORS_IF_FILTER_ORDER > m_decimator4
Definition: decimatorsif.h:79
IntHalfbandFilterEOF< DECIMATORS_IF_FILTER_ORDER > m_decimator8
Definition: decimatorsif.h:80
void myDecimate(float x1, float y1, float *x2, float *y2)

◆ decimate32_sup()

template<typename T, uint InputBits>
void DecimatorsIF< T, InputBits >::decimate32_sup ( FSampleVector::iterator *  it,
const T *  buf,
qint32  nbIAndQ 
)

Definition at line 534 of file decimatorsif.h.

535 {
536  float xreal[8], yimag[8];
537 
538  for (int pos = 0; pos < nbIAndQ - 63; )
539  {
540  for (int i = 0; i < 8; i++)
541  {
542  xreal[i] = (buf[pos+1] - buf[pos+2] - buf[pos+5] + buf[pos+6]);
543  yimag[i] = (buf[pos+4] + buf[pos+7] - buf[pos+0] - buf[pos+3]);
544  pos += 8;
545  }
546 
547  m_decimator2.myDecimate(xreal[0], yimag[0], &xreal[1], &yimag[1]);
548  m_decimator2.myDecimate(xreal[2], yimag[2], &xreal[3], &yimag[3]);
549  m_decimator2.myDecimate(xreal[4], yimag[4], &xreal[5], &yimag[5]);
550  m_decimator2.myDecimate(xreal[6], yimag[6], &xreal[7], &yimag[7]);
551 
552  m_decimator4.myDecimate(xreal[1], yimag[1], &xreal[3], &yimag[3]);
553  m_decimator4.myDecimate(xreal[5], yimag[5], &xreal[7], &yimag[7]);
554 
555  m_decimator8.myDecimate(xreal[3], yimag[3], &xreal[7], &yimag[7]);
556 
557  (**it).setReal(xreal[7] * decimation_scale<InputBits>::scaleIn);
558  (**it).setImag(yimag[7] * decimation_scale<InputBits>::scaleIn);
559 
560  ++(*it);
561  }
562 }
int32_t i
Definition: decimators.h:244
IntHalfbandFilterEOF< DECIMATORS_IF_FILTER_ORDER > m_decimator2
Definition: decimatorsif.h:78
IntHalfbandFilterEOF< DECIMATORS_IF_FILTER_ORDER > m_decimator4
Definition: decimatorsif.h:79
IntHalfbandFilterEOF< DECIMATORS_IF_FILTER_ORDER > m_decimator8
Definition: decimatorsif.h:80
void myDecimate(float x1, float y1, float *x2, float *y2)

◆ decimate4_cen()

template<typename T, uint InputBits>
void DecimatorsIF< T, InputBits >::decimate4_cen ( FSampleVector::iterator *  it,
const T *  buf,
qint32  nbIAndQ 
)

Definition at line 201 of file decimatorsif.h.

Referenced by MainBench::decimateIF().

202 {
203  float intbuf[4];
204 
205  for (int pos = 0; pos < nbIAndQ - 7; pos += 8)
206  {
207  intbuf[0] = buf[pos+2];
208  intbuf[1] = buf[pos+3];
209  intbuf[2] = buf[pos+6];
210  intbuf[3] = buf[pos+7];
211 
213  buf[pos+0],
214  buf[pos+1],
215  &intbuf[0],
216  &intbuf[1]);
218  buf[pos+4],
219  buf[pos+5],
220  &intbuf[2],
221  &intbuf[3]);
222 
224  intbuf[0],
225  intbuf[1],
226  &intbuf[2],
227  &intbuf[3]);
228 
229  (**it).setReal(intbuf[2] * decimation_scale<InputBits>::scaleIn);
230  (**it).setImag(intbuf[3] * decimation_scale<InputBits>::scaleIn);
231  ++(*it);
232  }
233 }
IntHalfbandFilterEOF< DECIMATORS_IF_FILTER_ORDER > m_decimator2
Definition: decimatorsif.h:78
IntHalfbandFilterEOF< DECIMATORS_IF_FILTER_ORDER > m_decimator4
Definition: decimatorsif.h:79
void myDecimate(float x1, float y1, float *x2, float *y2)
+ Here is the caller graph for this function:

◆ decimate4_inf()

template<typename T, uint InputBits>
void DecimatorsIF< T, InputBits >::decimate4_inf ( FSampleVector::iterator *  it,
const T *  buf,
qint32  nbIAndQ 
)

Definition at line 167 of file decimatorsif.h.

168 {
169  float xreal, yimag;
170 
171  for (int pos = 0; pos < nbIAndQ - 7; pos += 8)
172  {
173  xreal = (buf[pos+0] - buf[pos+3] + buf[pos+7] - buf[pos+4]) * decimation_scale<InputBits>::scaleIn;
174  yimag = (buf[pos+1] - buf[pos+5] + buf[pos+2] - buf[pos+6]) * decimation_scale<InputBits>::scaleIn;
175 
176  (**it).setReal(xreal);
177  (**it).setImag(yimag);
178 
179  ++(*it);
180  }
181 }

◆ decimate4_sup()

template<typename T, uint InputBits>
void DecimatorsIF< T, InputBits >::decimate4_sup ( FSampleVector::iterator *  it,
const T *  buf,
qint32  nbIAndQ 
)

Definition at line 184 of file decimatorsif.h.

185 {
186  float xreal, yimag;
187 
188  for (int pos = 0; pos < nbIAndQ - 7; pos += 8)
189  {
190  xreal = (buf[pos+1] - buf[pos+2] - buf[pos+5] + buf[pos+6]) * decimation_scale<InputBits>::scaleIn;
191  yimag = (- buf[pos+0] - buf[pos+3] + buf[pos+4] + buf[pos+7]) * decimation_scale<InputBits>::scaleIn;
192 
193  (**it).setReal(xreal);
194  (**it).setImag(yimag);
195 
196  ++(*it);
197  }
198 }

◆ decimate64_cen()

template<typename T, uint InputBits>
void DecimatorsIF< T, InputBits >::decimate64_cen ( FSampleVector::iterator *  it,
const T *  buf,
qint32  nbIAndQ 
)

Definition at line 851 of file decimatorsif.h.

Referenced by MainBench::decimateIF().

852 {
853  float intbuf[64];
854 
855  for (int pos = 0; pos < nbIAndQ - 127; pos += 128)
856  {
857  intbuf[0] = buf[pos+2];
858  intbuf[1] = buf[pos+3];
859  intbuf[2] = buf[pos+6];
860  intbuf[3] = buf[pos+7];
861  intbuf[4] = buf[pos+10];
862  intbuf[5] = buf[pos+11];
863  intbuf[6] = buf[pos+14];
864  intbuf[7] = buf[pos+15];
865  intbuf[8] = buf[pos+18];
866  intbuf[9] = buf[pos+19];
867  intbuf[10] = buf[pos+22];
868  intbuf[11] = buf[pos+23];
869  intbuf[12] = buf[pos+26];
870  intbuf[13] = buf[pos+27];
871  intbuf[14] = buf[pos+30];
872  intbuf[15] = buf[pos+31];
873  intbuf[16] = buf[pos+34];
874  intbuf[17] = buf[pos+35];
875  intbuf[18] = buf[pos+38];
876  intbuf[19] = buf[pos+39];
877  intbuf[20] = buf[pos+42];
878  intbuf[21] = buf[pos+43];
879  intbuf[22] = buf[pos+46];
880  intbuf[23] = buf[pos+47];
881  intbuf[24] = buf[pos+50];
882  intbuf[25] = buf[pos+51];
883  intbuf[26] = buf[pos+54];
884  intbuf[27] = buf[pos+55];
885  intbuf[28] = buf[pos+58];
886  intbuf[29] = buf[pos+59];
887  intbuf[30] = buf[pos+62];
888  intbuf[31] = buf[pos+63];
889 
890  intbuf[32] = buf[pos+66];
891  intbuf[33] = buf[pos+67];
892  intbuf[34] = buf[pos+70];
893  intbuf[35] = buf[pos+71];
894  intbuf[36] = buf[pos+74];
895  intbuf[37] = buf[pos+75];
896  intbuf[38] = buf[pos+78];
897  intbuf[39] = buf[pos+79];
898  intbuf[40] = buf[pos+82];
899  intbuf[41] = buf[pos+83];
900  intbuf[42] = buf[pos+86];
901  intbuf[43] = buf[pos+87];
902  intbuf[44] = buf[pos+90];
903  intbuf[45] = buf[pos+91];
904  intbuf[46] = buf[pos+94];
905  intbuf[47] = buf[pos+95];
906  intbuf[48] = buf[pos+98];
907  intbuf[49] = buf[pos+99];
908  intbuf[50] = buf[pos+102];
909  intbuf[51] = buf[pos+103];
910  intbuf[52] = buf[pos+106];
911  intbuf[53] = buf[pos+107];
912  intbuf[54] = buf[pos+110];
913  intbuf[55] = buf[pos+111];
914  intbuf[56] = buf[pos+114];
915  intbuf[57] = buf[pos+115];
916  intbuf[58] = buf[pos+118];
917  intbuf[59] = buf[pos+119];
918  intbuf[60] = buf[pos+122];
919  intbuf[61] = buf[pos+123];
920  intbuf[62] = buf[pos+126];
921  intbuf[63] = buf[pos+127];
922 
924  buf[pos+0],
925  buf[pos+1],
926  &intbuf[0],
927  &intbuf[1]);
929  buf[pos+4],
930  buf[pos+5],
931  &intbuf[2],
932  &intbuf[3]);
934  buf[pos+8],
935  buf[pos+9],
936  &intbuf[4],
937  &intbuf[5]);
939  buf[pos+12],
940  buf[pos+13],
941  &intbuf[6],
942  &intbuf[7]);
944  buf[pos+16],
945  buf[pos+17],
946  &intbuf[8],
947  &intbuf[9]);
949  buf[pos+20],
950  buf[pos+21],
951  &intbuf[10],
952  &intbuf[11]);
954  buf[pos+24],
955  buf[pos+25],
956  &intbuf[12],
957  &intbuf[13]);
959  buf[pos+28],
960  buf[pos+29],
961  &intbuf[14],
962  &intbuf[15]);
964  buf[pos+32],
965  buf[pos+33],
966  &intbuf[16],
967  &intbuf[17]);
969  buf[pos+36],
970  buf[pos+37],
971  &intbuf[18],
972  &intbuf[19]);
974  buf[pos+40],
975  buf[pos+41],
976  &intbuf[20],
977  &intbuf[21]);
979  buf[pos+44],
980  buf[pos+45],
981  &intbuf[22],
982  &intbuf[23]);
984  buf[pos+48],
985  buf[pos+49],
986  &intbuf[24],
987  &intbuf[25]);
989  buf[pos+52],
990  buf[pos+53],
991  &intbuf[26],
992  &intbuf[27]);
994  buf[pos+56],
995  buf[pos+57],
996  &intbuf[28],
997  &intbuf[29]);
999  buf[pos+60],
1000  buf[pos+61],
1001  &intbuf[30],
1002  &intbuf[31]);
1004  buf[pos+64],
1005  buf[pos+65],
1006  &intbuf[32],
1007  &intbuf[33]);
1009  buf[pos+68],
1010  buf[pos+69],
1011  &intbuf[34],
1012  &intbuf[35]);
1014  buf[pos+72],
1015  buf[pos+73],
1016  &intbuf[36],
1017  &intbuf[37]);
1019  buf[pos+76],
1020  buf[pos+77],
1021  &intbuf[38],
1022  &intbuf[39]);
1024  buf[pos+80],
1025  buf[pos+81],
1026  &intbuf[40],
1027  &intbuf[41]);
1029  buf[pos+84],
1030  buf[pos+85],
1031  &intbuf[42],
1032  &intbuf[43]);
1034  buf[pos+88],
1035  buf[pos+89],
1036  &intbuf[44],
1037  &intbuf[45]);
1039  buf[pos+92],
1040  buf[pos+93],
1041  &intbuf[46],
1042  &intbuf[47]);
1044  buf[pos+96],
1045  buf[pos+97],
1046  &intbuf[48],
1047  &intbuf[49]);
1049  buf[pos+100],
1050  buf[pos+101],
1051  &intbuf[50],
1052  &intbuf[51]);
1054  buf[pos+104],
1055  buf[pos+105],
1056  &intbuf[52],
1057  &intbuf[53]);
1059  buf[pos+108],
1060  buf[pos+109],
1061  &intbuf[54],
1062  &intbuf[55]);
1064  buf[pos+112],
1065  buf[pos+113],
1066  &intbuf[56],
1067  &intbuf[57]);
1069  buf[pos+116],
1070  buf[pos+117],
1071  &intbuf[58],
1072  &intbuf[59]);
1074  buf[pos+120],
1075  buf[pos+121],
1076  &intbuf[60],
1077  &intbuf[61]);
1079  buf[pos+124],
1080  buf[pos+125],
1081  &intbuf[62],
1082  &intbuf[63]);
1083 
1085  intbuf[0],
1086  intbuf[1],
1087  &intbuf[2],
1088  &intbuf[3]);
1090  intbuf[4],
1091  intbuf[5],
1092  &intbuf[6],
1093  &intbuf[7]);
1095  intbuf[8],
1096  intbuf[9],
1097  &intbuf[10],
1098  &intbuf[11]);
1100  intbuf[12],
1101  intbuf[13],
1102  &intbuf[14],
1103  &intbuf[15]);
1105  intbuf[16],
1106  intbuf[17],
1107  &intbuf[18],
1108  &intbuf[19]);
1110  intbuf[20],
1111  intbuf[21],
1112  &intbuf[22],
1113  &intbuf[23]);
1115  intbuf[24],
1116  intbuf[25],
1117  &intbuf[26],
1118  &intbuf[27]);
1120  intbuf[28],
1121  intbuf[29],
1122  &intbuf[30],
1123  &intbuf[31]);
1125  intbuf[32],
1126  intbuf[33],
1127  &intbuf[34],
1128  &intbuf[35]);
1130  intbuf[36],
1131  intbuf[37],
1132  &intbuf[38],
1133  &intbuf[39]);
1135  intbuf[40],
1136  intbuf[41],
1137  &intbuf[42],
1138  &intbuf[43]);
1140  intbuf[44],
1141  intbuf[45],
1142  &intbuf[46],
1143  &intbuf[47]);
1145  intbuf[48],
1146  intbuf[49],
1147  &intbuf[50],
1148  &intbuf[51]);
1150  intbuf[52],
1151  intbuf[53],
1152  &intbuf[54],
1153  &intbuf[55]);
1155  intbuf[56],
1156  intbuf[57],
1157  &intbuf[58],
1158  &intbuf[59]);
1160  intbuf[60],
1161  intbuf[61],
1162  &intbuf[62],
1163  &intbuf[63]);
1164 
1166  intbuf[2],
1167  intbuf[3],
1168  &intbuf[6],
1169  &intbuf[7]);
1171  intbuf[10],
1172  intbuf[11],
1173  &intbuf[14],
1174  &intbuf[15]);
1176  intbuf[18],
1177  intbuf[19],
1178  &intbuf[22],
1179  &intbuf[23]);
1181  intbuf[26],
1182  intbuf[27],
1183  &intbuf[30],
1184  &intbuf[31]);
1186  intbuf[34],
1187  intbuf[35],
1188  &intbuf[38],
1189  &intbuf[39]);
1191  intbuf[42],
1192  intbuf[43],
1193  &intbuf[46],
1194  &intbuf[47]);
1196  intbuf[50],
1197  intbuf[51],
1198  &intbuf[54],
1199  &intbuf[55]);
1201  intbuf[58],
1202  intbuf[59],
1203  &intbuf[62],
1204  &intbuf[63]);
1205 
1207  intbuf[6],
1208  intbuf[7],
1209  &intbuf[14],
1210  &intbuf[15]);
1212  intbuf[22],
1213  intbuf[23],
1214  &intbuf[30],
1215  &intbuf[31]);
1217  intbuf[38],
1218  intbuf[39],
1219  &intbuf[46],
1220  &intbuf[47]);
1222  intbuf[54],
1223  intbuf[55],
1224  &intbuf[62],
1225  &intbuf[63]);
1226 
1228  intbuf[14],
1229  intbuf[15],
1230  &intbuf[30],
1231  &intbuf[31]);
1233  intbuf[46],
1234  intbuf[47],
1235  &intbuf[62],
1236  &intbuf[63]);
1237 
1239  intbuf[30],
1240  intbuf[31],
1241  &intbuf[62],
1242  &intbuf[63]);
1243 
1244  (**it).setReal(intbuf[62] * decimation_scale<InputBits>::scaleIn);
1245  (**it).setImag(intbuf[63] * decimation_scale<InputBits>::scaleIn);
1246  ++(*it);
1247  }
1248 }
IntHalfbandFilterEOF< DECIMATORS_IF_FILTER_ORDER > m_decimator32
Definition: decimatorsif.h:82
IntHalfbandFilterEOF< DECIMATORS_IF_FILTER_ORDER > m_decimator64
Definition: decimatorsif.h:83
IntHalfbandFilterEOF< DECIMATORS_IF_FILTER_ORDER > m_decimator2
Definition: decimatorsif.h:78
IntHalfbandFilterEOF< DECIMATORS_IF_FILTER_ORDER > m_decimator4
Definition: decimatorsif.h:79
IntHalfbandFilterEOF< DECIMATORS_IF_FILTER_ORDER > m_decimator8
Definition: decimatorsif.h:80
void myDecimate(float x1, float y1, float *x2, float *y2)
IntHalfbandFilterEOF< DECIMATORS_IF_FILTER_ORDER > m_decimator16
Definition: decimatorsif.h:81
+ Here is the caller graph for this function:

◆ decimate64_inf()

template<typename T, uint InputBits>
void DecimatorsIF< T, InputBits >::decimate64_inf ( FSampleVector::iterator *  it,
const T *  buf,
qint32  nbIAndQ 
)

Definition at line 771 of file decimatorsif.h.

772 {
773  float xreal[16], yimag[16];
774 
775  for (int pos = 0; pos < nbIAndQ - 127; )
776  {
777  for (int i = 0; i < 16; i++)
778  {
779  xreal[i] = (buf[pos+0] - buf[pos+3] + buf[pos+7] - buf[pos+4]);
780  yimag[i] = (buf[pos+1] - buf[pos+5] + buf[pos+2] - buf[pos+6]);
781  pos += 8;
782  }
783 
784  m_decimator2.myDecimate(xreal[0], yimag[0], &xreal[1], &yimag[1]);
785  m_decimator2.myDecimate(xreal[2], yimag[2], &xreal[3], &yimag[3]);
786  m_decimator2.myDecimate(xreal[4], yimag[4], &xreal[5], &yimag[5]);
787  m_decimator2.myDecimate(xreal[6], yimag[6], &xreal[7], &yimag[7]);
788  m_decimator2.myDecimate(xreal[8], yimag[8], &xreal[9], &yimag[9]);
789  m_decimator2.myDecimate(xreal[10], yimag[10], &xreal[11], &yimag[11]);
790  m_decimator2.myDecimate(xreal[12], yimag[12], &xreal[13], &yimag[13]);
791  m_decimator2.myDecimate(xreal[14], yimag[14], &xreal[15], &yimag[15]);
792 
793  m_decimator4.myDecimate(xreal[1], yimag[1], &xreal[3], &yimag[3]);
794  m_decimator4.myDecimate(xreal[5], yimag[5], &xreal[7], &yimag[7]);
795  m_decimator4.myDecimate(xreal[9], yimag[9], &xreal[11], &yimag[11]);
796  m_decimator4.myDecimate(xreal[13], yimag[13], &xreal[15], &yimag[15]);
797 
798  m_decimator8.myDecimate(xreal[3], yimag[3], &xreal[7], &yimag[7]);
799  m_decimator8.myDecimate(xreal[11], yimag[11], &xreal[15], &yimag[15]);
800 
801  m_decimator16.myDecimate(xreal[7], yimag[7], &xreal[15], &yimag[15]);
802 
803  (**it).setReal(xreal[15] * decimation_scale<InputBits>::scaleIn);
804  (**it).setImag(yimag[15] * decimation_scale<InputBits>::scaleIn);
805 
806  ++(*it);
807  }
808 }
int32_t i
Definition: decimators.h:244
IntHalfbandFilterEOF< DECIMATORS_IF_FILTER_ORDER > m_decimator2
Definition: decimatorsif.h:78
IntHalfbandFilterEOF< DECIMATORS_IF_FILTER_ORDER > m_decimator4
Definition: decimatorsif.h:79
IntHalfbandFilterEOF< DECIMATORS_IF_FILTER_ORDER > m_decimator8
Definition: decimatorsif.h:80
void myDecimate(float x1, float y1, float *x2, float *y2)
IntHalfbandFilterEOF< DECIMATORS_IF_FILTER_ORDER > m_decimator16
Definition: decimatorsif.h:81

◆ decimate64_sup()

template<typename T, uint InputBits>
void DecimatorsIF< T, InputBits >::decimate64_sup ( FSampleVector::iterator *  it,
const T *  buf,
qint32  nbIAndQ 
)

Definition at line 811 of file decimatorsif.h.

812 {
813  float xreal[16], yimag[16];
814 
815  for (int pos = 0; pos < nbIAndQ - 127; )
816  {
817  for (int i = 0; i < 16; i++)
818  {
819  xreal[i] = (buf[pos+1] - buf[pos+2] - buf[pos+5] + buf[pos+6]);
820  yimag[i] = (buf[pos+4] + buf[pos+7] - buf[pos+0] - buf[pos+3]);
821  pos += 8;
822  }
823 
824  m_decimator2.myDecimate(xreal[0], yimag[0], &xreal[1], &yimag[1]);
825  m_decimator2.myDecimate(xreal[2], yimag[2], &xreal[3], &yimag[3]);
826  m_decimator2.myDecimate(xreal[4], yimag[4], &xreal[5], &yimag[5]);
827  m_decimator2.myDecimate(xreal[6], yimag[6], &xreal[7], &yimag[7]);
828  m_decimator2.myDecimate(xreal[8], yimag[8], &xreal[9], &yimag[9]);
829  m_decimator2.myDecimate(xreal[10], yimag[10], &xreal[11], &yimag[11]);
830  m_decimator2.myDecimate(xreal[12], yimag[12], &xreal[13], &yimag[13]);
831  m_decimator2.myDecimate(xreal[14], yimag[14], &xreal[15], &yimag[15]);
832 
833  m_decimator4.myDecimate(xreal[1], yimag[1], &xreal[3], &yimag[3]);
834  m_decimator4.myDecimate(xreal[5], yimag[5], &xreal[7], &yimag[7]);
835  m_decimator4.myDecimate(xreal[9], yimag[9], &xreal[11], &yimag[11]);
836  m_decimator4.myDecimate(xreal[13], yimag[13], &xreal[15], &yimag[15]);
837 
838  m_decimator8.myDecimate(xreal[3], yimag[3], &xreal[7], &yimag[7]);
839  m_decimator8.myDecimate(xreal[11], yimag[11], &xreal[15], &yimag[15]);
840 
841  m_decimator16.myDecimate(xreal[7], yimag[7], &xreal[15], &yimag[15]);
842 
843  (**it).setReal(xreal[15] * decimation_scale<InputBits>::scaleIn);
844  (**it).setImag(yimag[15] * decimation_scale<InputBits>::scaleIn);
845 
846  ++(*it);
847  }
848 }
int32_t i
Definition: decimators.h:244
IntHalfbandFilterEOF< DECIMATORS_IF_FILTER_ORDER > m_decimator2
Definition: decimatorsif.h:78
IntHalfbandFilterEOF< DECIMATORS_IF_FILTER_ORDER > m_decimator4
Definition: decimatorsif.h:79
IntHalfbandFilterEOF< DECIMATORS_IF_FILTER_ORDER > m_decimator8
Definition: decimatorsif.h:80
void myDecimate(float x1, float y1, float *x2, float *y2)
IntHalfbandFilterEOF< DECIMATORS_IF_FILTER_ORDER > m_decimator16
Definition: decimatorsif.h:81

◆ decimate8_cen()

template<typename T, uint InputBits>
void DecimatorsIF< T, InputBits >::decimate8_cen ( FSampleVector::iterator *  it,
const T *  buf,
qint32  nbIAndQ 
)

Definition at line 282 of file decimatorsif.h.

Referenced by MainBench::decimateIF().

283 {
284  float intbuf[8];
285 
286  for (int pos = 0; pos < nbIAndQ - 15; pos += 16)
287  {
288  intbuf[0] = buf[pos+2];
289  intbuf[1] = buf[pos+3];
290  intbuf[2] = buf[pos+6];
291  intbuf[3] = buf[pos+7];
292  intbuf[4] = buf[pos+10];
293  intbuf[5] = buf[pos+11];
294  intbuf[6] = buf[pos+14];
295  intbuf[7] = buf[pos+15];
296 
298  buf[pos+0],
299  buf[pos+1],
300  &intbuf[0],
301  &intbuf[1]);
303  buf[pos+4],
304  buf[pos+5],
305  &intbuf[2],
306  &intbuf[3]);
308  buf[pos+8],
309  buf[pos+9],
310  &intbuf[4],
311  &intbuf[5]);
313  buf[pos+12],
314  buf[pos+13],
315  &intbuf[6],
316  &intbuf[7]);
317 
319  intbuf[0],
320  intbuf[1],
321  &intbuf[2],
322  &intbuf[3]);
324  intbuf[4],
325  intbuf[5],
326  &intbuf[6],
327  &intbuf[7]);
328 
330  intbuf[2],
331  intbuf[3],
332  &intbuf[6],
333  &intbuf[7]);
334 
335  (**it).setReal(intbuf[6] * decimation_scale<InputBits>::scaleIn);
336  (**it).setImag(intbuf[7] * decimation_scale<InputBits>::scaleIn);
337  ++(*it);
338  }
339 }
IntHalfbandFilterEOF< DECIMATORS_IF_FILTER_ORDER > m_decimator2
Definition: decimatorsif.h:78
IntHalfbandFilterEOF< DECIMATORS_IF_FILTER_ORDER > m_decimator4
Definition: decimatorsif.h:79
IntHalfbandFilterEOF< DECIMATORS_IF_FILTER_ORDER > m_decimator8
Definition: decimatorsif.h:80
void myDecimate(float x1, float y1, float *x2, float *y2)
+ Here is the caller graph for this function:

◆ decimate8_inf()

template<typename T, uint InputBits>
void DecimatorsIF< T, InputBits >::decimate8_inf ( FSampleVector::iterator *  it,
const T *  buf,
qint32  nbIAndQ 
)

Definition at line 236 of file decimatorsif.h.

237 {
238  float xreal[2], yimag[2];
239 
240  for (int pos = 0; pos < nbIAndQ - 15; pos += 8)
241  {
242  xreal[0] = (buf[pos+0] - buf[pos+3] + buf[pos+7] - buf[pos+4]);
243  yimag[0] = (buf[pos+1] - buf[pos+5] + buf[pos+2] - buf[pos+6]);
244  pos += 8;
245 
246  xreal[1] = (buf[pos+0] - buf[pos+3] + buf[pos+7] - buf[pos+4]);
247  yimag[1] = (buf[pos+1] - buf[pos+5] + buf[pos+2] - buf[pos+6]);
248 
249  m_decimator2.myDecimate(xreal[0], yimag[0], &xreal[1], &yimag[1]);
250 
251  (**it).setReal(xreal[1] * decimation_scale<InputBits>::scaleIn);
252  (**it).setImag(yimag[1] * decimation_scale<InputBits>::scaleIn);
253 
254  ++(*it);
255  }
256 }
IntHalfbandFilterEOF< DECIMATORS_IF_FILTER_ORDER > m_decimator2
Definition: decimatorsif.h:78
void myDecimate(float x1, float y1, float *x2, float *y2)

◆ decimate8_sup()

template<typename T, uint InputBits>
void DecimatorsIF< T, InputBits >::decimate8_sup ( FSampleVector::iterator *  it,
const T *  buf,
qint32  nbIAndQ 
)

Definition at line 259 of file decimatorsif.h.

260 {
261  float xreal[2], yimag[2];
262 
263  for (int pos = 0; pos < nbIAndQ - 15; pos += 8)
264  {
265  xreal[0] = (buf[pos+1] - buf[pos+2] - buf[pos+5] + buf[pos+6]);
266  yimag[0] = (- buf[pos+0] - buf[pos+3] + buf[pos+4] + buf[pos+7]);
267  pos += 8;
268 
269  xreal[1] = (buf[pos+1] - buf[pos+2] - buf[pos+5] + buf[pos+6]);
270  yimag[1] = (- buf[pos+0] - buf[pos+3] + buf[pos+4] + buf[pos+7]);
271 
272  m_decimator2.myDecimate(xreal[0], yimag[0], &xreal[1], &yimag[1]);
273 
274  (**it).setReal(xreal[1] * decimation_scale<InputBits>::scaleIn);
275  (**it).setImag(yimag[1] * decimation_scale<InputBits>::scaleIn);
276 
277  ++(*it);
278  }
279 }
IntHalfbandFilterEOF< DECIMATORS_IF_FILTER_ORDER > m_decimator2
Definition: decimatorsif.h:78
void myDecimate(float x1, float y1, float *x2, float *y2)

Member Data Documentation

◆ m_decimator16

template<typename T, uint InputBits>
IntHalfbandFilterEOF<DECIMATORS_IF_FILTER_ORDER> DecimatorsIF< T, InputBits >::m_decimator16

Definition at line 81 of file decimatorsif.h.

◆ m_decimator2

template<typename T, uint InputBits>
IntHalfbandFilterEOF<DECIMATORS_IF_FILTER_ORDER> DecimatorsIF< T, InputBits >::m_decimator2

Definition at line 78 of file decimatorsif.h.

◆ m_decimator32

template<typename T, uint InputBits>
IntHalfbandFilterEOF<DECIMATORS_IF_FILTER_ORDER> DecimatorsIF< T, InputBits >::m_decimator32

Definition at line 82 of file decimatorsif.h.

◆ m_decimator4

template<typename T, uint InputBits>
IntHalfbandFilterEOF<DECIMATORS_IF_FILTER_ORDER> DecimatorsIF< T, InputBits >::m_decimator4

Definition at line 79 of file decimatorsif.h.

◆ m_decimator64

template<typename T, uint InputBits>
IntHalfbandFilterEOF<DECIMATORS_IF_FILTER_ORDER> DecimatorsIF< T, InputBits >::m_decimator64

Definition at line 83 of file decimatorsif.h.

◆ m_decimator8

template<typename T, uint InputBits>
IntHalfbandFilterEOF<DECIMATORS_IF_FILTER_ORDER> DecimatorsIF< T, InputBits >::m_decimator8

Definition at line 80 of file decimatorsif.h.


The documentation for this class was generated from the following file: