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 | Private Attributes | List of all members
Decimators< StorageType, T, SdrBits, InputBits > Class Template Reference

#include <decimators.h>

+ Collaboration diagram for Decimators< StorageType, T, SdrBits, InputBits >:

Public Member Functions

void decimate1 (SampleVector::iterator *it, const T *buf, qint32 len)
 
void decimate2_u (SampleVector::iterator *it, const T *buf, qint32 len)
 
void decimate2_inf (SampleVector::iterator *it, const T *buf, qint32 len)
 
void decimate2_sup (SampleVector::iterator *it, const T *buf, qint32 len)
 
void decimate2_cen (SampleVector::iterator *it, const T *buf, qint32 len)
 
void decimate4_inf (SampleVector::iterator *it, const T *buf, qint32 len)
 
void decimate4_inf_txsync (SampleVector::iterator *it, const T *buf, qint32 len)
 
void decimate4_sup (SampleVector::iterator *it, const T *buf, qint32 len)
 
void decimate4_sup_txsync (SampleVector::iterator *it, const T *buf, qint32 len)
 
void decimate4_cen (SampleVector::iterator *it, const T *buf, qint32 len)
 
void decimate8_inf (SampleVector::iterator *it, const T *buf, qint32 len)
 
void decimate8_inf_txsync (SampleVector::iterator *it, const T *buf, qint32 len)
 
void decimate8_sup (SampleVector::iterator *it, const T *buf, qint32 len)
 
void decimate8_sup_txsync (SampleVector::iterator *it, const T *buf, qint32 len)
 
void decimate8_cen (SampleVector::iterator *it, const T *buf, qint32 len)
 
void decimate16_inf (SampleVector::iterator *it, const T *buf, qint32 len)
 
void decimate16_inf_txsync (SampleVector::iterator *it, const T *buf, qint32 len)
 
void decimate16_sup (SampleVector::iterator *it, const T *buf, qint32 len)
 
void decimate16_sup_txsync (SampleVector::iterator *it, const T *buf, qint32 len)
 
void decimate16_cen (SampleVector::iterator *it, const T *buf, qint32 len)
 
void decimate32_inf (SampleVector::iterator *it, const T *buf, qint32 len)
 
void decimate32_inf_txsync (SampleVector::iterator *it, const T *buf, qint32 len)
 
void decimate32_sup (SampleVector::iterator *it, const T *buf, qint32 len)
 
void decimate32_sup_txsync (SampleVector::iterator *it, const T *buf, qint32 len)
 
void decimate32_cen (SampleVector::iterator *it, const T *buf, qint32 len)
 
void decimate64_inf (SampleVector::iterator *it, const T *buf, qint32 len)
 
void decimate64_inf_txsync (SampleVector::iterator *it, const T *buf, qint32 len)
 
void decimate64_sup (SampleVector::iterator *it, const T *buf, qint32 len)
 
void decimate64_sup_txsync (SampleVector::iterator *it, const T *buf, qint32 len)
 
void decimate64_cen (SampleVector::iterator *it, const T *buf, qint32 len)
 
void decimate1 (SampleVector::iterator *it, const T *bufI, const T *bufQ, qint32 len)
 
void decimate2_u (SampleVector::iterator *it, const T *bufI, const T *bufQ, qint32 len)
 
void decimate2_cen (SampleVector::iterator *it, const T *bufI, const T *bufQ, qint32 len)
 
void decimate4_cen (SampleVector::iterator *it, const T *bufI, const T *bufQ, qint32 len)
 
void decimate8_cen (SampleVector::iterator *it, const T *bufI, const T *bufQ, qint32 len)
 
void decimate16_cen (SampleVector::iterator *it, const T *bufI, const T *bufQ, qint32 len)
 
void decimate32_cen (SampleVector::iterator *it, const T *bufI, const T *bufQ, qint32 len)
 
void decimate64_cen (SampleVector::iterator *it, const T *bufI, const T *bufQ, qint32 len)
 

Private Attributes

IntHalfbandFilterEO< qint32, qint32, DECIMATORS_HB_FILTER_ORDERm_decimator2
 
IntHalfbandFilterEO< qint32, qint32, DECIMATORS_HB_FILTER_ORDERm_decimator4
 
IntHalfbandFilterEO< qint32, qint32, DECIMATORS_HB_FILTER_ORDERm_decimator8
 
IntHalfbandFilterEO< qint32, qint32, DECIMATORS_HB_FILTER_ORDERm_decimator16
 
IntHalfbandFilterEO< qint32, qint32, DECIMATORS_HB_FILTER_ORDERm_decimator32
 
IntHalfbandFilterEO< qint32, qint32, DECIMATORS_HB_FILTER_ORDERm_decimator64
 

Detailed Description

template<typename StorageType, typename T, uint SdrBits, uint InputBits>
class Decimators< StorageType, T, SdrBits, InputBits >

Decimators with integer input and integer output

Definition at line 392 of file decimators.h.

Member Function Documentation

◆ decimate1() [1/2]

template<typename StorageType , typename T, uint SdrBits, uint InputBits>
void Decimators< StorageType, T, SdrBits, InputBits >::decimate1 ( SampleVector::iterator *  it,
const T *  buf,
qint32  len 
)

◆ decimate1() [2/2]

template<typename StorageType , typename T, uint SdrBits, uint InputBits>
void Decimators< StorageType, T, SdrBits, InputBits >::decimate1 ( SampleVector::iterator *  it,
const T *  bufI,
const T *  bufQ,
qint32  len 
)

Definition at line 3507 of file decimators.h.

3508 {
3509  qint32 xreal, yimag;
3510 
3511  for (int pos = 0; pos < len; pos += 1)
3512  {
3513  xreal = bufI[pos];
3514  yimag = bufQ[pos];
3515  (**it).setReal(xreal << decimation_shifts<SdrBits, InputBits>::pre1); // Valgrind optim (2 - comment not repeated)
3516  (**it).setImag(yimag << decimation_shifts<SdrBits, InputBits>::pre1);
3517  ++(*it); // Valgrind optim (comment not repeated)
3518  }
3519 }

◆ decimate16_cen() [1/2]

template<typename StorageType , typename T, uint SdrBits, uint InputBits>
void Decimators< StorageType, T, SdrBits, InputBits >::decimate16_cen ( SampleVector::iterator *  it,
const T *  buf,
qint32  len 
)

Definition at line 1483 of file decimators.h.

Referenced by Bladerf1InputThread::callback(), SDRPlayThread::callback(), HackRFInputThread::callback(), AirspyThread::callback(), LimeSDRInputThread::callback(), XTRXInputThread::callbackSI(), BladeRF2InputThread::callbackSI(), SoapySDRInputThread::callbackSI12(), SoapySDRInputThread::callbackSI16(), SoapySDRInputThread::callbackSI8(), PlutoSDRInputThread::convert(), TestMIThread::convert_12(), TestSourceThread::convert_12(), TestMIThread::convert_16(), TestSourceThread::convert_16(), TestMIThread::convert_8(), TestSourceThread::convert_8(), MainBench::decimateII(), FCDProThread::work(), and FCDProPlusThread::work().

1484 {
1485  StorageType intbuf[16];
1486 
1487  for (int pos = 0; pos < len - 31; pos += 32)
1488  {
1489  intbuf[0] = buf[pos+2] << decimation_shifts<SdrBits, InputBits>::pre16;
1490  intbuf[1] = buf[pos+3] << decimation_shifts<SdrBits, InputBits>::pre16;
1491  intbuf[2] = buf[pos+6] << decimation_shifts<SdrBits, InputBits>::pre16;
1492  intbuf[3] = buf[pos+7] << decimation_shifts<SdrBits, InputBits>::pre16;
1493  intbuf[4] = buf[pos+10] << decimation_shifts<SdrBits, InputBits>::pre16;
1494  intbuf[5] = buf[pos+11] << decimation_shifts<SdrBits, InputBits>::pre16;
1495  intbuf[6] = buf[pos+14] << decimation_shifts<SdrBits, InputBits>::pre16;
1496  intbuf[7] = buf[pos+15] << decimation_shifts<SdrBits, InputBits>::pre16;
1497  intbuf[8] = buf[pos+18] << decimation_shifts<SdrBits, InputBits>::pre16;
1498  intbuf[9] = buf[pos+19] << decimation_shifts<SdrBits, InputBits>::pre16;
1499  intbuf[10] = buf[pos+22] << decimation_shifts<SdrBits, InputBits>::pre16;
1500  intbuf[11] = buf[pos+23] << decimation_shifts<SdrBits, InputBits>::pre16;
1501  intbuf[12] = buf[pos+26] << decimation_shifts<SdrBits, InputBits>::pre16;
1502  intbuf[13] = buf[pos+27] << decimation_shifts<SdrBits, InputBits>::pre16;
1503  intbuf[14] = buf[pos+30] << decimation_shifts<SdrBits, InputBits>::pre16;
1504  intbuf[15] = buf[pos+31] << decimation_shifts<SdrBits, InputBits>::pre16;
1505 
1507  buf[pos+0] << decimation_shifts<SdrBits, InputBits>::pre16,
1508  buf[pos+1] << decimation_shifts<SdrBits, InputBits>::pre16,
1509  &intbuf[0],
1510  &intbuf[1]);
1512  buf[pos+4] << decimation_shifts<SdrBits, InputBits>::pre16,
1513  buf[pos+5] << decimation_shifts<SdrBits, InputBits>::pre16,
1514  &intbuf[2],
1515  &intbuf[3]);
1517  buf[pos+8] << decimation_shifts<SdrBits, InputBits>::pre16,
1518  buf[pos+9] << decimation_shifts<SdrBits, InputBits>::pre16,
1519  &intbuf[4],
1520  &intbuf[5]);
1522  buf[pos+12] << decimation_shifts<SdrBits, InputBits>::pre16,
1523  buf[pos+13] << decimation_shifts<SdrBits, InputBits>::pre16,
1524  &intbuf[6],
1525  &intbuf[7]);
1527  buf[pos+16] << decimation_shifts<SdrBits, InputBits>::pre16,
1528  buf[pos+17] << decimation_shifts<SdrBits, InputBits>::pre16,
1529  &intbuf[8],
1530  &intbuf[9]);
1532  buf[pos+20] << decimation_shifts<SdrBits, InputBits>::pre16,
1533  buf[pos+21] << decimation_shifts<SdrBits, InputBits>::pre16,
1534  &intbuf[10],
1535  &intbuf[11]);
1537  buf[pos+24] << decimation_shifts<SdrBits, InputBits>::pre16,
1538  buf[pos+25] << decimation_shifts<SdrBits, InputBits>::pre16,
1539  &intbuf[12],
1540  &intbuf[13]);
1542  buf[pos+28] << decimation_shifts<SdrBits, InputBits>::pre16,
1543  buf[pos+29] << decimation_shifts<SdrBits, InputBits>::pre16,
1544  &intbuf[14],
1545  &intbuf[15]);
1546 
1548  intbuf[0],
1549  intbuf[1],
1550  &intbuf[2],
1551  &intbuf[3]);
1553  intbuf[4],
1554  intbuf[5],
1555  &intbuf[6],
1556  &intbuf[7]);
1558  intbuf[8],
1559  intbuf[9],
1560  &intbuf[10],
1561  &intbuf[11]);
1563  intbuf[12],
1564  intbuf[13],
1565  &intbuf[14],
1566  &intbuf[15]);
1567 
1569  intbuf[2],
1570  intbuf[3],
1571  &intbuf[6],
1572  &intbuf[7]);
1574  intbuf[10],
1575  intbuf[11],
1576  &intbuf[14],
1577  &intbuf[15]);
1578 
1580  intbuf[6],
1581  intbuf[7],
1582  &intbuf[14],
1583  &intbuf[15]);
1584 
1585  (**it).setReal(intbuf[14] >> decimation_shifts<SdrBits, InputBits>::post16);
1586  (**it).setImag(intbuf[15] >> decimation_shifts<SdrBits, InputBits>::post16);
1587  ++(*it);
1588  }
1589 }
IntHalfbandFilterEO< qint32, qint32, DECIMATORS_HB_FILTER_ORDER > m_decimator2
Definition: decimators.h:452
IntHalfbandFilterEO< qint32, qint32, DECIMATORS_HB_FILTER_ORDER > m_decimator16
Definition: decimators.h:455
IntHalfbandFilterEO< qint32, qint32, DECIMATORS_HB_FILTER_ORDER > m_decimator8
Definition: decimators.h:454
void myDecimate(const Sample *sample1, Sample *sample2)
IntHalfbandFilterEO< qint32, qint32, DECIMATORS_HB_FILTER_ORDER > m_decimator4
Definition: decimators.h:453
+ Here is the caller graph for this function:

◆ decimate16_cen() [2/2]

template<typename StorageType , typename T, uint SdrBits, uint InputBits>
void Decimators< StorageType, T, SdrBits, InputBits >::decimate16_cen ( SampleVector::iterator *  it,
const T *  bufI,
const T *  bufQ,
qint32  len 
)

Definition at line 3663 of file decimators.h.

3664 {
3665  StorageType intbuf[16];
3666 
3667  for (int pos = 0; pos < len - 15; pos += 16)
3668  {
3669  intbuf[0] = bufI[pos+1] << decimation_shifts<SdrBits, InputBits>::pre16;
3670  intbuf[1] = bufQ[pos+1] << decimation_shifts<SdrBits, InputBits>::pre16;
3671  intbuf[2] = bufI[pos+3] << decimation_shifts<SdrBits, InputBits>::pre16;
3672  intbuf[3] = bufQ[pos+3] << decimation_shifts<SdrBits, InputBits>::pre16;
3673  intbuf[4] = bufI[pos+5] << decimation_shifts<SdrBits, InputBits>::pre16;
3674  intbuf[5] = bufQ[pos+5] << decimation_shifts<SdrBits, InputBits>::pre16;
3675  intbuf[6] = bufI[pos+7] << decimation_shifts<SdrBits, InputBits>::pre16;
3676  intbuf[7] = bufQ[pos+7] << decimation_shifts<SdrBits, InputBits>::pre16;
3677  intbuf[8] = bufI[pos+9] << decimation_shifts<SdrBits, InputBits>::pre16;
3678  intbuf[9] = bufQ[pos+9] << decimation_shifts<SdrBits, InputBits>::pre16;
3679  intbuf[10] = bufI[pos+11] << decimation_shifts<SdrBits, InputBits>::pre16;
3680  intbuf[11] = bufQ[pos+11] << decimation_shifts<SdrBits, InputBits>::pre16;
3681  intbuf[12] = bufI[pos+13] << decimation_shifts<SdrBits, InputBits>::pre16;
3682  intbuf[13] = bufQ[pos+13] << decimation_shifts<SdrBits, InputBits>::pre16;
3683  intbuf[14] = bufI[pos+15] << decimation_shifts<SdrBits, InputBits>::pre16;
3684  intbuf[15] = bufQ[pos+15] << decimation_shifts<SdrBits, InputBits>::pre16;
3685 
3687  bufI[pos+0] << decimation_shifts<SdrBits, InputBits>::pre16,
3688  bufQ[pos+0] << decimation_shifts<SdrBits, InputBits>::pre16,
3689  &intbuf[0],
3690  &intbuf[1]);
3692  bufI[pos+2] << decimation_shifts<SdrBits, InputBits>::pre16,
3693  bufQ[pos+2] << decimation_shifts<SdrBits, InputBits>::pre16,
3694  &intbuf[2],
3695  &intbuf[3]);
3697  bufI[pos+4] << decimation_shifts<SdrBits, InputBits>::pre16,
3698  bufQ[pos+4] << decimation_shifts<SdrBits, InputBits>::pre16,
3699  &intbuf[4],
3700  &intbuf[5]);
3702  bufI[pos+6] << decimation_shifts<SdrBits, InputBits>::pre16,
3703  bufQ[pos+6] << decimation_shifts<SdrBits, InputBits>::pre16,
3704  &intbuf[6],
3705  &intbuf[7]);
3707  bufI[pos+8] << decimation_shifts<SdrBits, InputBits>::pre16,
3708  bufQ[pos+8] << decimation_shifts<SdrBits, InputBits>::pre16,
3709  &intbuf[8],
3710  &intbuf[9]);
3712  bufI[pos+10] << decimation_shifts<SdrBits, InputBits>::pre16,
3713  bufQ[pos+10] << decimation_shifts<SdrBits, InputBits>::pre16,
3714  &intbuf[10],
3715  &intbuf[11]);
3717  bufI[pos+12] << decimation_shifts<SdrBits, InputBits>::pre16,
3718  bufQ[pos+12] << decimation_shifts<SdrBits, InputBits>::pre16,
3719  &intbuf[12],
3720  &intbuf[13]);
3722  bufI[pos+14] << decimation_shifts<SdrBits, InputBits>::pre16,
3723  bufQ[pos+14] << decimation_shifts<SdrBits, InputBits>::pre16,
3724  &intbuf[14],
3725  &intbuf[15]);
3726 
3728  intbuf[0],
3729  intbuf[1],
3730  &intbuf[2],
3731  &intbuf[3]);
3733  intbuf[4],
3734  intbuf[5],
3735  &intbuf[6],
3736  &intbuf[7]);
3738  intbuf[8],
3739  intbuf[9],
3740  &intbuf[10],
3741  &intbuf[11]);
3743  intbuf[12],
3744  intbuf[13],
3745  &intbuf[14],
3746  &intbuf[15]);
3747 
3749  intbuf[2],
3750  intbuf[3],
3751  &intbuf[6],
3752  &intbuf[7]);
3754  intbuf[10],
3755  intbuf[11],
3756  &intbuf[14],
3757  &intbuf[15]);
3758 
3760  intbuf[6],
3761  intbuf[7],
3762  &intbuf[14],
3763  &intbuf[15]);
3764 
3765  (**it).setReal(intbuf[14] >> decimation_shifts<SdrBits, InputBits>::post16);
3766  (**it).setImag(intbuf[15] >> decimation_shifts<SdrBits, InputBits>::post16);
3767  ++(*it);
3768  }
3769 }
IntHalfbandFilterEO< qint32, qint32, DECIMATORS_HB_FILTER_ORDER > m_decimator2
Definition: decimators.h:452
IntHalfbandFilterEO< qint32, qint32, DECIMATORS_HB_FILTER_ORDER > m_decimator16
Definition: decimators.h:455
IntHalfbandFilterEO< qint32, qint32, DECIMATORS_HB_FILTER_ORDER > m_decimator8
Definition: decimators.h:454
void myDecimate(const Sample *sample1, Sample *sample2)
IntHalfbandFilterEO< qint32, qint32, DECIMATORS_HB_FILTER_ORDER > m_decimator4
Definition: decimators.h:453

◆ decimate16_inf()

template<typename StorageType , typename T, uint SdrBits, uint InputBits>
void Decimators< StorageType, T, SdrBits, InputBits >::decimate16_inf ( SampleVector::iterator *  it,
const T *  buf,
qint32  len 
)

Definition at line 1117 of file decimators.h.

Referenced by Bladerf1InputThread::callback(), SDRPlayThread::callback(), AirspyThread::callback(), BladeRF2InputThread::callbackSI(), SoapySDRInputThread::callbackSI12(), SoapySDRInputThread::callbackSI16(), SoapySDRInputThread::callbackSI8(), PlutoSDRInputThread::convert(), TestMIThread::convert_12(), TestSourceThread::convert_12(), TestMIThread::convert_16(), TestSourceThread::convert_16(), TestMIThread::convert_8(), TestSourceThread::convert_8(), MainBench::decimateInfII(), FCDProThread::work(), and FCDProPlusThread::work().

1118 {
1119  StorageType buf2[32], buf4[16], buf8[8], buf16[4];
1120 
1121  for (int pos = 0; pos < len - 63; pos += 64)
1122  {
1132  &buf2[0]);
1133 
1143  &buf2[4]);
1144 
1154  &buf2[8]);
1155 
1165  &buf2[12]);
1166 
1176  &buf2[16]);
1177 
1187  &buf2[20]);
1188 
1198  &buf2[24]);
1199 
1209  &buf2[28]);
1210 
1212  &buf2[0],
1213  &buf4[0]);
1214 
1216  &buf2[8],
1217  &buf4[4]);
1218 
1220  &buf2[16],
1221  &buf4[8]);
1222 
1224  &buf2[24],
1225  &buf4[12]);
1226 
1228  &buf4[0],
1229  &buf8[0]);
1230 
1232  &buf4[8],
1233  &buf8[4]);
1234 
1236  &buf8[0],
1237  &buf16[0]);
1238 
1239  (**it).setReal(buf16[0] >> decimation_shifts<SdrBits, InputBits>::post16);
1240  (**it).setImag(buf16[1] >> decimation_shifts<SdrBits, InputBits>::post16);
1241  ++(*it);
1242 
1243  (**it).setReal(buf16[2] >> decimation_shifts<SdrBits, InputBits>::post16);
1244  (**it).setImag(buf16[3] >> decimation_shifts<SdrBits, InputBits>::post16);
1245  ++(*it);
1246  }
1247 }
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)
IntHalfbandFilterEO< qint32, qint32, DECIMATORS_HB_FILTER_ORDER > m_decimator2
Definition: decimators.h:452
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)
IntHalfbandFilterEO< qint32, qint32, DECIMATORS_HB_FILTER_ORDER > m_decimator16
Definition: decimators.h:455
IntHalfbandFilterEO< qint32, qint32, DECIMATORS_HB_FILTER_ORDER > m_decimator8
Definition: decimators.h:454
IntHalfbandFilterEO< qint32, qint32, DECIMATORS_HB_FILTER_ORDER > m_decimator4
Definition: decimators.h:453
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)
+ Here is the caller graph for this function:

◆ decimate16_inf_txsync()

template<typename StorageType , typename T, uint SdrBits, uint InputBits>
void Decimators< StorageType, T, SdrBits, InputBits >::decimate16_inf_txsync ( SampleVector::iterator *  it,
const T *  buf,
qint32  len 
)

Definition at line 1250 of file decimators.h.

Referenced by HackRFInputThread::callback().

1251 {
1252  StorageType buf2[32], buf4[16], buf8[8], buf16[4];
1253 
1254  for (int pos = 0; pos < len - 63; pos += 64)
1255  {
1256  for (int i = 0; i < 8; i++)
1257  {
1267  &buf2[4*i]);
1268  }
1269 
1270  for (int i = 0; i < 4; i++)
1271  {
1273  &buf2[8*i],
1274  &buf4[4*i]);
1275  }
1276 
1278  &buf4[0],
1279  &buf8[0]);
1280 
1282  &buf4[8],
1283  &buf8[4]);
1284 
1286  &buf8[0],
1287  &buf16[0]);
1288 
1289  (**it).setReal(buf16[0] >> decimation_shifts<SdrBits, InputBits>::post16);
1290  (**it).setImag(buf16[1] >> decimation_shifts<SdrBits, InputBits>::post16);
1291  ++(*it);
1292 
1293  (**it).setReal(buf16[2] >> decimation_shifts<SdrBits, InputBits>::post16);
1294  (**it).setImag(buf16[3] >> decimation_shifts<SdrBits, InputBits>::post16);
1295  ++(*it);
1296  }
1297 }
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)
IntHalfbandFilterEO< qint32, qint32, DECIMATORS_HB_FILTER_ORDER > m_decimator2
Definition: decimators.h:452
IntHalfbandFilterEO< qint32, qint32, DECIMATORS_HB_FILTER_ORDER > m_decimator16
Definition: decimators.h:455
IntHalfbandFilterEO< qint32, qint32, DECIMATORS_HB_FILTER_ORDER > m_decimator8
Definition: decimators.h:454
int32_t i
Definition: decimators.h:244
IntHalfbandFilterEO< qint32, qint32, DECIMATORS_HB_FILTER_ORDER > m_decimator4
Definition: decimators.h:453
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)
+ Here is the caller graph for this function:

◆ decimate16_sup()

template<typename StorageType , typename T, uint SdrBits, uint InputBits>
void Decimators< StorageType, T, SdrBits, InputBits >::decimate16_sup ( SampleVector::iterator *  it,
const T *  buf,
qint32  len 
)

Definition at line 1300 of file decimators.h.

Referenced by Bladerf1InputThread::callback(), SDRPlayThread::callback(), AirspyThread::callback(), BladeRF2InputThread::callbackSI(), SoapySDRInputThread::callbackSI12(), SoapySDRInputThread::callbackSI16(), SoapySDRInputThread::callbackSI8(), PlutoSDRInputThread::convert(), TestMIThread::convert_12(), TestSourceThread::convert_12(), TestMIThread::convert_16(), TestSourceThread::convert_16(), TestMIThread::convert_8(), TestSourceThread::convert_8(), MainBench::decimateSupII(), FCDProThread::work(), and FCDProPlusThread::work().

1301 {
1302  StorageType buf2[32], buf4[16], buf8[8], buf16[4];
1303 
1304  for (int pos = 0; pos < len - 63; pos += 64)
1305  {
1315  &buf2[0]);
1316 
1326  &buf2[4]);
1327 
1337  &buf2[8]);
1338 
1348  &buf2[12]);
1349 
1359  &buf2[16]);
1360 
1370  &buf2[20]);
1371 
1381  &buf2[24]);
1382 
1392  &buf2[28]);
1393 
1395  &buf2[0],
1396  &buf4[0]);
1397 
1399  &buf2[8],
1400  &buf4[4]);
1401 
1403  &buf2[16],
1404  &buf4[8]);
1405 
1407  &buf2[24],
1408  &buf4[12]);
1409 
1411  &buf4[0],
1412  &buf8[0]);
1413 
1415  &buf4[8],
1416  &buf8[4]);
1417 
1419  &buf8[0],
1420  &buf16[0]);
1421 
1422  (**it).setReal(buf16[0] >> decimation_shifts<SdrBits, InputBits>::post16);
1423  (**it).setImag(buf16[1] >> decimation_shifts<SdrBits, InputBits>::post16);
1424  ++(*it);
1425 
1426  (**it).setReal(buf16[2] >> decimation_shifts<SdrBits, InputBits>::post16);
1427  (**it).setImag(buf16[3] >> decimation_shifts<SdrBits, InputBits>::post16);
1428  ++(*it);
1429  }
1430 }
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)
IntHalfbandFilterEO< qint32, qint32, DECIMATORS_HB_FILTER_ORDER > m_decimator2
Definition: decimators.h:452
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)
IntHalfbandFilterEO< qint32, qint32, DECIMATORS_HB_FILTER_ORDER > m_decimator16
Definition: decimators.h:455
IntHalfbandFilterEO< qint32, qint32, DECIMATORS_HB_FILTER_ORDER > m_decimator8
Definition: decimators.h:454
IntHalfbandFilterEO< qint32, qint32, DECIMATORS_HB_FILTER_ORDER > m_decimator4
Definition: decimators.h:453
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)
+ Here is the caller graph for this function:

◆ decimate16_sup_txsync()

template<typename StorageType , typename T, uint SdrBits, uint InputBits>
void Decimators< StorageType, T, SdrBits, InputBits >::decimate16_sup_txsync ( SampleVector::iterator *  it,
const T *  buf,
qint32  len 
)

Definition at line 1433 of file decimators.h.

Referenced by HackRFInputThread::callback().

1434 {
1435  StorageType buf2[32], buf4[16], buf8[8], buf16[4];
1436 
1437  for (int pos = 0; pos < len - 63; pos += 64)
1438  {
1439  for (int i = 0; i < 8; i++)
1440  {
1450  &buf2[4*i]);
1451  }
1452 
1453  for (int i = 0; i < 4; i++)
1454  {
1456  &buf2[8*i],
1457  &buf4[4*i]);
1458  }
1459 
1461  &buf4[0],
1462  &buf8[0]);
1463 
1465  &buf4[8],
1466  &buf8[4]);
1467 
1469  &buf8[0],
1470  &buf16[0]);
1471 
1472  (**it).setReal(buf16[0] >> decimation_shifts<SdrBits, InputBits>::post16);
1473  (**it).setImag(buf16[1] >> decimation_shifts<SdrBits, InputBits>::post16);
1474  ++(*it);
1475 
1476  (**it).setReal(buf16[2] >> decimation_shifts<SdrBits, InputBits>::post16);
1477  (**it).setImag(buf16[3] >> decimation_shifts<SdrBits, InputBits>::post16);
1478  ++(*it);
1479  }
1480 }
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)
IntHalfbandFilterEO< qint32, qint32, DECIMATORS_HB_FILTER_ORDER > m_decimator2
Definition: decimators.h:452
IntHalfbandFilterEO< qint32, qint32, DECIMATORS_HB_FILTER_ORDER > m_decimator16
Definition: decimators.h:455
IntHalfbandFilterEO< qint32, qint32, DECIMATORS_HB_FILTER_ORDER > m_decimator8
Definition: decimators.h:454
int32_t i
Definition: decimators.h:244
IntHalfbandFilterEO< qint32, qint32, DECIMATORS_HB_FILTER_ORDER > m_decimator4
Definition: decimators.h:453
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)
+ Here is the caller graph for this function:

◆ decimate2_cen() [1/2]

template<typename StorageType , typename T, uint SdrBits, uint InputBits>
void Decimators< StorageType, T, SdrBits, InputBits >::decimate2_cen ( SampleVector::iterator *  it,
const T *  buf,
qint32  len 
)

Definition at line 554 of file decimators.h.

Referenced by Bladerf1InputThread::callback(), SDRPlayThread::callback(), PerseusThread::callback(), HackRFInputThread::callback(), AirspyThread::callback(), LimeSDRInputThread::callback(), XTRXInputThread::callbackSI(), BladeRF2InputThread::callbackSI(), SoapySDRInputThread::callbackSI12(), SoapySDRInputThread::callbackSI16(), SoapySDRInputThread::callbackSI8(), PlutoSDRInputThread::convert(), TestMIThread::convert_12(), TestSourceThread::convert_12(), TestMIThread::convert_16(), TestSourceThread::convert_16(), TestMIThread::convert_8(), TestSourceThread::convert_8(), MainBench::decimateII(), FCDProThread::work(), and FCDProPlusThread::work().

555 {
556  StorageType buf2[4];
557 
558  for (int pos = 0; pos < len - 7; pos += 8)
559  {
569  &buf2[0]);
570 
571  (**it).setReal(buf2[0] >> decimation_shifts<SdrBits, InputBits>::post2);
572  (**it).setImag(buf2[1] >> decimation_shifts<SdrBits, InputBits>::post2);
573  ++(*it);
574 
575  (**it).setReal(buf2[2] >> decimation_shifts<SdrBits, InputBits>::post2);
576  (**it).setImag(buf2[3] >> decimation_shifts<SdrBits, InputBits>::post2);
577  ++(*it);
578  }
579 }
IntHalfbandFilterEO< qint32, qint32, DECIMATORS_HB_FILTER_ORDER > m_decimator2
Definition: decimators.h:452
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)
+ Here is the caller graph for this function:

◆ decimate2_cen() [2/2]

template<typename StorageType , typename T, uint SdrBits, uint InputBits>
void Decimators< StorageType, T, SdrBits, InputBits >::decimate2_cen ( SampleVector::iterator *  it,
const T *  bufI,
const T *  bufQ,
qint32  len 
)

Definition at line 3545 of file decimators.h.

3546 {
3547  StorageType intbuf[2];
3548 
3549  for (int pos = 0; pos < len - 1; pos += 2)
3550  {
3551  intbuf[0] = bufI[pos+1] << decimation_shifts<SdrBits, InputBits>::pre2;
3552  intbuf[1] = bufQ[pos+1] << decimation_shifts<SdrBits, InputBits>::pre2;
3553 
3555  bufI[pos+0] << decimation_shifts<SdrBits, InputBits>::pre2,
3556  bufQ[pos+0] << decimation_shifts<SdrBits, InputBits>::pre2,
3557  &intbuf[0],
3558  &intbuf[1]);
3559 
3560  (**it).setReal(intbuf[0] >> decimation_shifts<SdrBits, InputBits>::post2);
3561  (**it).setImag(intbuf[1] >> decimation_shifts<SdrBits, InputBits>::post2);
3562  ++(*it);
3563  }
3564 }
IntHalfbandFilterEO< qint32, qint32, DECIMATORS_HB_FILTER_ORDER > m_decimator2
Definition: decimators.h:452
void myDecimate(const Sample *sample1, Sample *sample2)

◆ decimate2_inf()

template<typename StorageType , typename T, uint SdrBits, uint InputBits>
void Decimators< StorageType, T, SdrBits, InputBits >::decimate2_inf ( SampleVector::iterator *  it,
const T *  buf,
qint32  len 
)

Definition at line 498 of file decimators.h.

Referenced by Bladerf1InputThread::callback(), SDRPlayThread::callback(), HackRFInputThread::callback(), AirspyThread::callback(), BladeRF2InputThread::callbackSI(), SoapySDRInputThread::callbackSI12(), SoapySDRInputThread::callbackSI16(), SoapySDRInputThread::callbackSI8(), PlutoSDRInputThread::convert(), TestMIThread::convert_12(), TestSourceThread::convert_12(), TestMIThread::convert_16(), TestSourceThread::convert_16(), TestMIThread::convert_8(), TestSourceThread::convert_8(), MainBench::decimateInfII(), FCDProThread::work(), and FCDProPlusThread::work().

499 {
500  StorageType buf2[4];
501 
502  for (int pos = 0; pos < len - 7; pos += 8)
503  {
513  &buf2[0]);
514 
515  (**it).setReal(buf2[0] >> decimation_shifts<SdrBits, InputBits>::post2);
516  (**it).setImag(buf2[1] >> decimation_shifts<SdrBits, InputBits>::post2);
517  ++(*it);
518 
519  (**it).setReal(buf2[2] >> decimation_shifts<SdrBits, InputBits>::post2);
520  (**it).setImag(buf2[3] >> decimation_shifts<SdrBits, InputBits>::post2);
521  ++(*it);
522  }
523 }
IntHalfbandFilterEO< qint32, qint32, DECIMATORS_HB_FILTER_ORDER > m_decimator2
Definition: decimators.h:452
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)
+ Here is the caller graph for this function:

◆ decimate2_sup()

template<typename StorageType , typename T, uint SdrBits, uint InputBits>
void Decimators< StorageType, T, SdrBits, InputBits >::decimate2_sup ( SampleVector::iterator *  it,
const T *  buf,
qint32  len 
)

Definition at line 526 of file decimators.h.

Referenced by Bladerf1InputThread::callback(), SDRPlayThread::callback(), HackRFInputThread::callback(), AirspyThread::callback(), BladeRF2InputThread::callbackSI(), SoapySDRInputThread::callbackSI12(), SoapySDRInputThread::callbackSI16(), SoapySDRInputThread::callbackSI8(), PlutoSDRInputThread::convert(), TestMIThread::convert_12(), TestSourceThread::convert_12(), TestMIThread::convert_16(), TestSourceThread::convert_16(), TestMIThread::convert_8(), TestSourceThread::convert_8(), MainBench::decimateSupII(), FCDProThread::work(), and FCDProPlusThread::work().

527 {
528  StorageType buf2[4];
529 
530  for (int pos = 0; pos < len - 7; pos += 8)
531  {
541  &buf2[0]);
542 
543  (**it).setReal(buf2[0] >> decimation_shifts<SdrBits, InputBits>::post2);
544  (**it).setImag(buf2[1] >> decimation_shifts<SdrBits, InputBits>::post2);
545  ++(*it);
546 
547  (**it).setReal(buf2[2] >> decimation_shifts<SdrBits, InputBits>::post2);
548  (**it).setImag(buf2[3] >> decimation_shifts<SdrBits, InputBits>::post2);
549  ++(*it);
550  }
551 }
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)
IntHalfbandFilterEO< qint32, qint32, DECIMATORS_HB_FILTER_ORDER > m_decimator2
Definition: decimators.h:452
+ Here is the caller graph for this function:

◆ decimate2_u() [1/2]

template<typename StorageType , typename T, uint SdrBits, uint InputBits>
void Decimators< StorageType, T, SdrBits, InputBits >::decimate2_u ( SampleVector::iterator *  it,
const T *  buf,
qint32  len 
)

Definition at line 477 of file decimators.h.

478 {
479  StorageType xreal, yimag;
480 
481  for (int pos = 0; pos < len - 7; pos += 8)
482  {
483  xreal = (buf[pos+0] - buf[pos+3]) << decimation_shifts<SdrBits, InputBits>::pre2;
484  yimag = (buf[pos+1] + buf[pos+2] - 255) << decimation_shifts<SdrBits, InputBits>::pre2;
485  (**it).setReal(xreal >> decimation_shifts<SdrBits, InputBits>::post2);
486  (**it).setImag(yimag >> decimation_shifts<SdrBits, InputBits>::post2);
487  ++(*it);
488 
489  xreal = (buf[pos+7] - buf[pos+4]) << decimation_shifts<SdrBits, InputBits>::pre2;
490  yimag = (255 - buf[pos+5] - buf[pos+6]) << decimation_shifts<SdrBits, InputBits>::pre2;
491  (**it).setReal(xreal >> decimation_shifts<SdrBits, InputBits>::post2);
492  (**it).setImag(yimag >> decimation_shifts<SdrBits, InputBits>::post2);
493  ++(*it);
494  }
495 }

◆ decimate2_u() [2/2]

template<typename StorageType , typename T, uint SdrBits, uint InputBits>
void Decimators< StorageType, T, SdrBits, InputBits >::decimate2_u ( SampleVector::iterator *  it,
const T *  bufI,
const T *  bufQ,
qint32  len 
)

Definition at line 3522 of file decimators.h.

3523 {
3524  StorageType xreal, yimag;
3525 
3526  for (int pos = 0; pos < len - 3; pos += 4)
3527  {
3528  // 0: I[0] 1: Q[0] 2: I[1] 3: Q[1]
3529  xreal = (bufI[pos] - bufQ[pos+1]) << decimation_shifts<SdrBits, InputBits>::pre2;
3530  yimag = (bufQ[pos] + bufI[pos+1] - 255) << decimation_shifts<SdrBits, InputBits>::pre2;
3531  (**it).setReal(xreal >> decimation_shifts<SdrBits, InputBits>::post2);
3532  (**it).setImag(yimag >> decimation_shifts<SdrBits, InputBits>::post2);
3533  ++(*it);
3534 
3535  // 4: I[2] 5: Q[2] 6: I[3] 7: Q[3]
3536  xreal = (bufQ[pos+3] - bufI[pos+2]) << decimation_shifts<SdrBits, InputBits>::pre2;
3537  yimag = (255 - bufQ[pos+2] - bufI[pos+3]) << decimation_shifts<SdrBits, InputBits>::pre2;
3538  (**it).setReal(xreal >> decimation_shifts<SdrBits, InputBits>::post2);
3539  (**it).setImag(yimag >> decimation_shifts<SdrBits, InputBits>::post2);
3540  ++(*it);
3541  }
3542 }

◆ decimate32_cen() [1/2]

template<typename StorageType , typename T, uint SdrBits, uint InputBits>
void Decimators< StorageType, T, SdrBits, InputBits >::decimate32_cen ( SampleVector::iterator *  it,
const T *  buf,
qint32  len 
)

Definition at line 2212 of file decimators.h.

Referenced by Bladerf1InputThread::callback(), SDRPlayThread::callback(), HackRFInputThread::callback(), AirspyThread::callback(), LimeSDRInputThread::callback(), XTRXInputThread::callbackSI(), BladeRF2InputThread::callbackSI(), SoapySDRInputThread::callbackSI12(), SoapySDRInputThread::callbackSI16(), SoapySDRInputThread::callbackSI8(), PlutoSDRInputThread::convert(), TestMIThread::convert_12(), TestSourceThread::convert_12(), TestMIThread::convert_16(), TestSourceThread::convert_16(), TestMIThread::convert_8(), TestSourceThread::convert_8(), MainBench::decimateII(), FCDProThread::work(), and FCDProPlusThread::work().

2213 {
2214  StorageType intbuf[32];
2215 
2216  for (int pos = 0; pos < len - 63; pos += 64)
2217  {
2218  intbuf[0] = buf[pos+2] << decimation_shifts<SdrBits, InputBits>::pre32;
2219  intbuf[1] = buf[pos+3] << decimation_shifts<SdrBits, InputBits>::pre32;
2220  intbuf[2] = buf[pos+6] << decimation_shifts<SdrBits, InputBits>::pre32;
2221  intbuf[3] = buf[pos+7] << decimation_shifts<SdrBits, InputBits>::pre32;
2222  intbuf[4] = buf[pos+10] << decimation_shifts<SdrBits, InputBits>::pre32;
2223  intbuf[5] = buf[pos+11] << decimation_shifts<SdrBits, InputBits>::pre32;
2224  intbuf[6] = buf[pos+14] << decimation_shifts<SdrBits, InputBits>::pre32;
2225  intbuf[7] = buf[pos+15] << decimation_shifts<SdrBits, InputBits>::pre32;
2226  intbuf[8] = buf[pos+18] << decimation_shifts<SdrBits, InputBits>::pre32;
2227  intbuf[9] = buf[pos+19] << decimation_shifts<SdrBits, InputBits>::pre32;
2228  intbuf[10] = buf[pos+22] << decimation_shifts<SdrBits, InputBits>::pre32;
2229  intbuf[11] = buf[pos+23] << decimation_shifts<SdrBits, InputBits>::pre32;
2230  intbuf[12] = buf[pos+26] << decimation_shifts<SdrBits, InputBits>::pre32;
2231  intbuf[13] = buf[pos+27] << decimation_shifts<SdrBits, InputBits>::pre32;
2232  intbuf[14] = buf[pos+30] << decimation_shifts<SdrBits, InputBits>::pre32;
2233  intbuf[15] = buf[pos+31] << decimation_shifts<SdrBits, InputBits>::pre32;
2234  intbuf[16] = buf[pos+34] << decimation_shifts<SdrBits, InputBits>::pre32;
2235  intbuf[17] = buf[pos+35] << decimation_shifts<SdrBits, InputBits>::pre32;
2236  intbuf[18] = buf[pos+38] << decimation_shifts<SdrBits, InputBits>::pre32;
2237  intbuf[19] = buf[pos+39] << decimation_shifts<SdrBits, InputBits>::pre32;
2238  intbuf[20] = buf[pos+42] << decimation_shifts<SdrBits, InputBits>::pre32;
2239  intbuf[21] = buf[pos+43] << decimation_shifts<SdrBits, InputBits>::pre32;
2240  intbuf[22] = buf[pos+46] << decimation_shifts<SdrBits, InputBits>::pre32;
2241  intbuf[23] = buf[pos+47] << decimation_shifts<SdrBits, InputBits>::pre32;
2242  intbuf[24] = buf[pos+50] << decimation_shifts<SdrBits, InputBits>::pre32;
2243  intbuf[25] = buf[pos+51] << decimation_shifts<SdrBits, InputBits>::pre32;
2244  intbuf[26] = buf[pos+54] << decimation_shifts<SdrBits, InputBits>::pre32;
2245  intbuf[27] = buf[pos+55] << decimation_shifts<SdrBits, InputBits>::pre32;
2246  intbuf[28] = buf[pos+58] << decimation_shifts<SdrBits, InputBits>::pre32;
2247  intbuf[29] = buf[pos+59] << decimation_shifts<SdrBits, InputBits>::pre32;
2248  intbuf[30] = buf[pos+62] << decimation_shifts<SdrBits, InputBits>::pre32;
2249  intbuf[31] = buf[pos+63] << decimation_shifts<SdrBits, InputBits>::pre32;
2250 
2252  buf[pos+0] << decimation_shifts<SdrBits, InputBits>::pre32,
2253  buf[pos+1] << decimation_shifts<SdrBits, InputBits>::pre32,
2254  &intbuf[0],
2255  &intbuf[1]);
2257  buf[pos+4] << decimation_shifts<SdrBits, InputBits>::pre32,
2258  buf[pos+5] << decimation_shifts<SdrBits, InputBits>::pre32,
2259  &intbuf[2],
2260  &intbuf[3]);
2262  buf[pos+8] << decimation_shifts<SdrBits, InputBits>::pre32,
2263  buf[pos+9] << decimation_shifts<SdrBits, InputBits>::pre32,
2264  &intbuf[4],
2265  &intbuf[5]);
2267  buf[pos+12] << decimation_shifts<SdrBits, InputBits>::pre32,
2268  buf[pos+13] << decimation_shifts<SdrBits, InputBits>::pre32,
2269  &intbuf[6],
2270  &intbuf[7]);
2272  buf[pos+16] << decimation_shifts<SdrBits, InputBits>::pre32,
2273  buf[pos+17] << decimation_shifts<SdrBits, InputBits>::pre32,
2274  &intbuf[8],
2275  &intbuf[9]);
2277  buf[pos+20] << decimation_shifts<SdrBits, InputBits>::pre32,
2278  buf[pos+21] << decimation_shifts<SdrBits, InputBits>::pre32,
2279  &intbuf[10],
2280  &intbuf[11]);
2282  buf[pos+24] << decimation_shifts<SdrBits, InputBits>::pre32,
2283  buf[pos+25] << decimation_shifts<SdrBits, InputBits>::pre32,
2284  &intbuf[12],
2285  &intbuf[13]);
2287  buf[pos+28] << decimation_shifts<SdrBits, InputBits>::pre32,
2288  buf[pos+29] << decimation_shifts<SdrBits, InputBits>::pre32,
2289  &intbuf[14],
2290  &intbuf[15]);
2292  buf[pos+32] << decimation_shifts<SdrBits, InputBits>::pre32,
2293  buf[pos+33] << decimation_shifts<SdrBits, InputBits>::pre32,
2294  &intbuf[16],
2295  &intbuf[17]);
2297  buf[pos+36] << decimation_shifts<SdrBits, InputBits>::pre32,
2298  buf[pos+37] << decimation_shifts<SdrBits, InputBits>::pre32,
2299  &intbuf[18],
2300  &intbuf[19]);
2302  buf[pos+40] << decimation_shifts<SdrBits, InputBits>::pre32,
2303  buf[pos+41] << decimation_shifts<SdrBits, InputBits>::pre32,
2304  &intbuf[20],
2305  &intbuf[21]);
2307  buf[pos+44] << decimation_shifts<SdrBits, InputBits>::pre32,
2308  buf[pos+45] << decimation_shifts<SdrBits, InputBits>::pre32,
2309  &intbuf[22],
2310  &intbuf[23]);
2312  buf[pos+48] << decimation_shifts<SdrBits, InputBits>::pre32,
2313  buf[pos+49] << decimation_shifts<SdrBits, InputBits>::pre32,
2314  &intbuf[24],
2315  &intbuf[25]);
2317  buf[pos+52] << decimation_shifts<SdrBits, InputBits>::pre32,
2318  buf[pos+53] << decimation_shifts<SdrBits, InputBits>::pre32,
2319  &intbuf[26],
2320  &intbuf[27]);
2322  buf[pos+56] << decimation_shifts<SdrBits, InputBits>::pre32,
2323  buf[pos+57] << decimation_shifts<SdrBits, InputBits>::pre32,
2324  &intbuf[28],
2325  &intbuf[29]);
2327  buf[pos+60] << decimation_shifts<SdrBits, InputBits>::pre32,
2328  buf[pos+61] << decimation_shifts<SdrBits, InputBits>::pre32,
2329  &intbuf[30],
2330  &intbuf[31]);
2331 
2333  intbuf[0],
2334  intbuf[1],
2335  &intbuf[2],
2336  &intbuf[3]);
2338  intbuf[4],
2339  intbuf[5],
2340  &intbuf[6],
2341  &intbuf[7]);
2343  intbuf[8],
2344  intbuf[9],
2345  &intbuf[10],
2346  &intbuf[11]);
2348  intbuf[12],
2349  intbuf[13],
2350  &intbuf[14],
2351  &intbuf[15]);
2353  intbuf[16],
2354  intbuf[17],
2355  &intbuf[18],
2356  &intbuf[19]);
2358  intbuf[20],
2359  intbuf[21],
2360  &intbuf[22],
2361  &intbuf[23]);
2363  intbuf[24],
2364  intbuf[25],
2365  &intbuf[26],
2366  &intbuf[27]);
2368  intbuf[28],
2369  intbuf[29],
2370  &intbuf[30],
2371  &intbuf[31]);
2372 
2374  intbuf[2],
2375  intbuf[3],
2376  &intbuf[6],
2377  &intbuf[7]);
2379  intbuf[10],
2380  intbuf[11],
2381  &intbuf[14],
2382  &intbuf[15]);
2384  intbuf[18],
2385  intbuf[19],
2386  &intbuf[22],
2387  &intbuf[23]);
2389  intbuf[26],
2390  intbuf[27],
2391  &intbuf[30],
2392  &intbuf[31]);
2393 
2395  intbuf[6],
2396  intbuf[7],
2397  &intbuf[14],
2398  &intbuf[15]);
2400  intbuf[22],
2401  intbuf[23],
2402  &intbuf[30],
2403  &intbuf[31]);
2404 
2406  intbuf[14],
2407  intbuf[15],
2408  &intbuf[30],
2409  &intbuf[31]);
2410 
2411  (**it).setReal(intbuf[30] >> decimation_shifts<SdrBits, InputBits>::post32);
2412  (**it).setImag(intbuf[31] >> decimation_shifts<SdrBits, InputBits>::post32);
2413  ++(*it);
2414  }
2415 }
IntHalfbandFilterEO< qint32, qint32, DECIMATORS_HB_FILTER_ORDER > m_decimator2
Definition: decimators.h:452
IntHalfbandFilterEO< qint32, qint32, DECIMATORS_HB_FILTER_ORDER > m_decimator16
Definition: decimators.h:455
IntHalfbandFilterEO< qint32, qint32, DECIMATORS_HB_FILTER_ORDER > m_decimator8
Definition: decimators.h:454
void myDecimate(const Sample *sample1, Sample *sample2)
IntHalfbandFilterEO< qint32, qint32, DECIMATORS_HB_FILTER_ORDER > m_decimator4
Definition: decimators.h:453
IntHalfbandFilterEO< qint32, qint32, DECIMATORS_HB_FILTER_ORDER > m_decimator32
Definition: decimators.h:456
+ Here is the caller graph for this function:

◆ decimate32_cen() [2/2]

template<typename StorageType , typename T, uint SdrBits, uint InputBits>
void Decimators< StorageType, T, SdrBits, InputBits >::decimate32_cen ( SampleVector::iterator *  it,
const T *  bufI,
const T *  bufQ,
qint32  len 
)

Definition at line 3772 of file decimators.h.

3773 {
3774  StorageType intbuf[32];
3775 
3776  for (int pos = 0; pos < len - 31; pos += 32)
3777  {
3778  intbuf[0] = bufI[pos+1] << decimation_shifts<SdrBits, InputBits>::pre32;
3779  intbuf[1] = bufQ[pos+1] << decimation_shifts<SdrBits, InputBits>::pre32;
3780  intbuf[2] = bufI[pos+3] << decimation_shifts<SdrBits, InputBits>::pre32;
3781  intbuf[3] = bufQ[pos+3] << decimation_shifts<SdrBits, InputBits>::pre32;
3782  intbuf[4] = bufI[pos+5] << decimation_shifts<SdrBits, InputBits>::pre32;
3783  intbuf[5] = bufQ[pos+5] << decimation_shifts<SdrBits, InputBits>::pre32;
3784  intbuf[6] = bufI[pos+7] << decimation_shifts<SdrBits, InputBits>::pre32;
3785  intbuf[7] = bufQ[pos+7] << decimation_shifts<SdrBits, InputBits>::pre32;
3786  intbuf[8] = bufI[pos+9] << decimation_shifts<SdrBits, InputBits>::pre32;
3787  intbuf[9] = bufQ[pos+9] << decimation_shifts<SdrBits, InputBits>::pre32;
3788  intbuf[10] = bufI[pos+11] << decimation_shifts<SdrBits, InputBits>::pre32;
3789  intbuf[11] = bufQ[pos+11] << decimation_shifts<SdrBits, InputBits>::pre32;
3790  intbuf[12] = bufI[pos+13] << decimation_shifts<SdrBits, InputBits>::pre32;
3791  intbuf[13] = bufQ[pos+13] << decimation_shifts<SdrBits, InputBits>::pre32;
3792  intbuf[14] = bufI[pos+15] << decimation_shifts<SdrBits, InputBits>::pre32;
3793  intbuf[15] = bufQ[pos+15] << decimation_shifts<SdrBits, InputBits>::pre32;
3794  intbuf[16] = bufI[pos+17] << decimation_shifts<SdrBits, InputBits>::pre32;
3795  intbuf[17] = bufQ[pos+17] << decimation_shifts<SdrBits, InputBits>::pre32;
3796  intbuf[18] = bufI[pos+19] << decimation_shifts<SdrBits, InputBits>::pre32;
3797  intbuf[19] = bufQ[pos+19] << decimation_shifts<SdrBits, InputBits>::pre32;
3798  intbuf[20] = bufI[pos+21] << decimation_shifts<SdrBits, InputBits>::pre32;
3799  intbuf[21] = bufQ[pos+21] << decimation_shifts<SdrBits, InputBits>::pre32;
3800  intbuf[22] = bufI[pos+23] << decimation_shifts<SdrBits, InputBits>::pre32;
3801  intbuf[23] = bufQ[pos+23] << decimation_shifts<SdrBits, InputBits>::pre32;
3802  intbuf[24] = bufI[pos+25] << decimation_shifts<SdrBits, InputBits>::pre32;
3803  intbuf[25] = bufQ[pos+25] << decimation_shifts<SdrBits, InputBits>::pre32;
3804  intbuf[26] = bufI[pos+27] << decimation_shifts<SdrBits, InputBits>::pre32;
3805  intbuf[27] = bufQ[pos+27] << decimation_shifts<SdrBits, InputBits>::pre32;
3806  intbuf[28] = bufI[pos+29] << decimation_shifts<SdrBits, InputBits>::pre32;
3807  intbuf[29] = bufQ[pos+29] << decimation_shifts<SdrBits, InputBits>::pre32;
3808  intbuf[30] = bufI[pos+31] << decimation_shifts<SdrBits, InputBits>::pre32;
3809  intbuf[31] = bufQ[pos+31] << decimation_shifts<SdrBits, InputBits>::pre32;
3810 
3812  bufI[pos+0] << decimation_shifts<SdrBits, InputBits>::pre32,
3813  bufQ[pos+0] << decimation_shifts<SdrBits, InputBits>::pre32,
3814  &intbuf[0],
3815  &intbuf[1]);
3817  bufI[pos+2] << decimation_shifts<SdrBits, InputBits>::pre32,
3818  bufQ[pos+2] << decimation_shifts<SdrBits, InputBits>::pre32,
3819  &intbuf[2],
3820  &intbuf[3]);
3822  bufI[pos+4] << decimation_shifts<SdrBits, InputBits>::pre32,
3823  bufQ[pos+4] << decimation_shifts<SdrBits, InputBits>::pre32,
3824  &intbuf[4],
3825  &intbuf[5]);
3827  bufI[pos+6] << decimation_shifts<SdrBits, InputBits>::pre32,
3828  bufQ[pos+6] << decimation_shifts<SdrBits, InputBits>::pre32,
3829  &intbuf[6],
3830  &intbuf[7]);
3832  bufI[pos+8] << decimation_shifts<SdrBits, InputBits>::pre32,
3833  bufQ[pos+8] << decimation_shifts<SdrBits, InputBits>::pre32,
3834  &intbuf[8],
3835  &intbuf[9]);
3837  bufI[pos+10] << decimation_shifts<SdrBits, InputBits>::pre32,
3838  bufQ[pos+10] << decimation_shifts<SdrBits, InputBits>::pre32,
3839  &intbuf[10],
3840  &intbuf[11]);
3842  bufI[pos+12] << decimation_shifts<SdrBits, InputBits>::pre32,
3843  bufQ[pos+12] << decimation_shifts<SdrBits, InputBits>::pre32,
3844  &intbuf[12],
3845  &intbuf[13]);
3847  bufI[pos+14] << decimation_shifts<SdrBits, InputBits>::pre32,
3848  bufQ[pos+14] << decimation_shifts<SdrBits, InputBits>::pre32,
3849  &intbuf[14],
3850  &intbuf[15]);
3852  bufI[pos+16] << decimation_shifts<SdrBits, InputBits>::pre32,
3853  bufQ[pos+16] << decimation_shifts<SdrBits, InputBits>::pre32,
3854  &intbuf[16],
3855  &intbuf[17]);
3857  bufI[pos+18] << decimation_shifts<SdrBits, InputBits>::pre32,
3858  bufQ[pos+18] << decimation_shifts<SdrBits, InputBits>::pre32,
3859  &intbuf[18],
3860  &intbuf[19]);
3862  bufI[pos+20] << decimation_shifts<SdrBits, InputBits>::pre32,
3863  bufQ[pos+20] << decimation_shifts<SdrBits, InputBits>::pre32,
3864  &intbuf[20],
3865  &intbuf[21]);
3867  bufI[pos+22] << decimation_shifts<SdrBits, InputBits>::pre32,
3868  bufQ[pos+22] << decimation_shifts<SdrBits, InputBits>::pre32,
3869  &intbuf[22],
3870  &intbuf[23]);
3872  bufI[pos+24] << decimation_shifts<SdrBits, InputBits>::pre32,
3873  bufQ[pos+24] << decimation_shifts<SdrBits, InputBits>::pre32,
3874  &intbuf[24],
3875  &intbuf[25]);
3877  bufI[pos+26] << decimation_shifts<SdrBits, InputBits>::pre32,
3878  bufQ[pos+26] << decimation_shifts<SdrBits, InputBits>::pre32,
3879  &intbuf[26],
3880  &intbuf[27]);
3882  bufI[pos+28] << decimation_shifts<SdrBits, InputBits>::pre32,
3883  bufQ[pos+28] << decimation_shifts<SdrBits, InputBits>::pre32,
3884  &intbuf[28],
3885  &intbuf[29]);
3887  bufI[pos+30] << decimation_shifts<SdrBits, InputBits>::pre32,
3888  bufQ[pos+30] << decimation_shifts<SdrBits, InputBits>::pre32,
3889  &intbuf[30],
3890  &intbuf[31]);
3891 
3893  intbuf[0],
3894  intbuf[1],
3895  &intbuf[2],
3896  &intbuf[3]);
3898  intbuf[4],
3899  intbuf[5],
3900  &intbuf[6],
3901  &intbuf[7]);
3903  intbuf[8],
3904  intbuf[9],
3905  &intbuf[10],
3906  &intbuf[11]);
3908  intbuf[12],
3909  intbuf[13],
3910  &intbuf[14],
3911  &intbuf[15]);
3913  intbuf[16],
3914  intbuf[17],
3915  &intbuf[18],
3916  &intbuf[19]);
3918  intbuf[20],
3919  intbuf[21],
3920  &intbuf[22],
3921  &intbuf[23]);
3923  intbuf[24],
3924  intbuf[25],
3925  &intbuf[26],
3926  &intbuf[27]);
3928  intbuf[28],
3929  intbuf[29],
3930  &intbuf[30],
3931  &intbuf[31]);
3932 
3934  intbuf[2],
3935  intbuf[3],
3936  &intbuf[6],
3937  &intbuf[7]);
3939  intbuf[10],
3940  intbuf[11],
3941  &intbuf[14],
3942  &intbuf[15]);
3944  intbuf[18],
3945  intbuf[19],
3946  &intbuf[22],
3947  &intbuf[23]);
3949  intbuf[26],
3950  intbuf[27],
3951  &intbuf[30],
3952  &intbuf[31]);
3953 
3955  intbuf[6],
3956  intbuf[7],
3957  &intbuf[14],
3958  &intbuf[15]);
3960  intbuf[22],
3961  intbuf[23],
3962  &intbuf[30],
3963  &intbuf[31]);
3964 
3966  intbuf[14],
3967  intbuf[15],
3968  &intbuf[30],
3969  &intbuf[31]);
3970 
3971  (**it).setReal(intbuf[30] >> decimation_shifts<SdrBits, InputBits>::post32);
3972  (**it).setImag(intbuf[31] >> decimation_shifts<SdrBits, InputBits>::post32);
3973  ++(*it);
3974  }
3975 }
IntHalfbandFilterEO< qint32, qint32, DECIMATORS_HB_FILTER_ORDER > m_decimator2
Definition: decimators.h:452
IntHalfbandFilterEO< qint32, qint32, DECIMATORS_HB_FILTER_ORDER > m_decimator16
Definition: decimators.h:455
IntHalfbandFilterEO< qint32, qint32, DECIMATORS_HB_FILTER_ORDER > m_decimator8
Definition: decimators.h:454
void myDecimate(const Sample *sample1, Sample *sample2)
IntHalfbandFilterEO< qint32, qint32, DECIMATORS_HB_FILTER_ORDER > m_decimator4
Definition: decimators.h:453
IntHalfbandFilterEO< qint32, qint32, DECIMATORS_HB_FILTER_ORDER > m_decimator32
Definition: decimators.h:456

◆ decimate32_inf()

template<typename StorageType , typename T, uint SdrBits, uint InputBits>
void Decimators< StorageType, T, SdrBits, InputBits >::decimate32_inf ( SampleVector::iterator *  it,
const T *  buf,
qint32  len 
)

Definition at line 1592 of file decimators.h.

Referenced by Bladerf1InputThread::callback(), SDRPlayThread::callback(), AirspyThread::callback(), BladeRF2InputThread::callbackSI(), SoapySDRInputThread::callbackSI12(), SoapySDRInputThread::callbackSI16(), SoapySDRInputThread::callbackSI8(), PlutoSDRInputThread::convert(), TestMIThread::convert_12(), TestSourceThread::convert_12(), TestMIThread::convert_16(), TestSourceThread::convert_16(), TestMIThread::convert_8(), TestSourceThread::convert_8(), MainBench::decimateInfII(), FCDProThread::work(), and FCDProPlusThread::work().

1593 {
1594  StorageType buf2[64], buf4[32], buf8[16], buf16[8], buf32[4];
1595 
1596  for (int pos = 0; pos < len - 127; pos += 128)
1597  {
1607  &buf2[0]);
1608 
1618  &buf2[4]);
1619 
1629  &buf2[8]);
1630 
1640  &buf2[12]);
1641 
1651  &buf2[16]);
1652 
1662  &buf2[20]);
1663 
1673  &buf2[24]);
1674 
1684  &buf2[28]);
1685 
1695  &buf2[32]);
1696 
1706  &buf2[36]);
1707 
1717  &buf2[40]);
1718 
1728  &buf2[44]);
1729 
1739  &buf2[48]);
1740 
1750  &buf2[52]);
1751 
1761  &buf2[56]);
1762 
1772  &buf2[60]);
1773 
1775  &buf2[0],
1776  &buf4[0]);
1777 
1779  &buf2[8],
1780  &buf4[4]);
1781 
1783  &buf2[16],
1784  &buf4[8]);
1785 
1787  &buf2[24],
1788  &buf4[12]);
1789 
1791  &buf2[32],
1792  &buf4[16]);
1793 
1795  &buf2[40],
1796  &buf4[20]);
1797 
1799  &buf2[48],
1800  &buf4[24]);
1801 
1803  &buf2[56],
1804  &buf4[28]);
1805 
1807  &buf4[0],
1808  &buf8[0]);
1809 
1811  &buf4[8],
1812  &buf8[4]);
1813 
1815  &buf4[16],
1816  &buf8[8]);
1817 
1819  &buf4[24],
1820  &buf8[12]);
1821 
1823  &buf8[0],
1824  &buf16[0]);
1825 
1827  &buf8[8],
1828  &buf16[4]);
1829 
1831  &buf16[0],
1832  &buf32[0]);
1833 
1834  (**it).setReal(buf32[0] >> decimation_shifts<SdrBits, InputBits>::post32);
1835  (**it).setImag(buf32[1] >> decimation_shifts<SdrBits, InputBits>::post32);
1836  ++(*it);
1837 
1838  (**it).setReal(buf32[2] >> decimation_shifts<SdrBits, InputBits>::post32);
1839  (**it).setImag(buf32[3] >> decimation_shifts<SdrBits, InputBits>::post32);
1840  ++(*it);
1841  }
1842 }
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)
IntHalfbandFilterEO< qint32, qint32, DECIMATORS_HB_FILTER_ORDER > m_decimator2
Definition: decimators.h:452
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)
IntHalfbandFilterEO< qint32, qint32, DECIMATORS_HB_FILTER_ORDER > m_decimator16
Definition: decimators.h:455
IntHalfbandFilterEO< qint32, qint32, DECIMATORS_HB_FILTER_ORDER > m_decimator8
Definition: decimators.h:454
IntHalfbandFilterEO< qint32, qint32, DECIMATORS_HB_FILTER_ORDER > m_decimator4
Definition: decimators.h:453
IntHalfbandFilterEO< qint32, qint32, DECIMATORS_HB_FILTER_ORDER > m_decimator32
Definition: decimators.h:456
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)
+ Here is the caller graph for this function:

◆ decimate32_inf_txsync()

template<typename StorageType , typename T, uint SdrBits, uint InputBits>
void Decimators< StorageType, T, SdrBits, InputBits >::decimate32_inf_txsync ( SampleVector::iterator *  it,
const T *  buf,
qint32  len 
)

Definition at line 1845 of file decimators.h.

Referenced by HackRFInputThread::callback().

1846 {
1847  StorageType buf2[64], buf4[32], buf8[16], buf16[8], buf32[4];
1848 
1849  for (int pos = 0; pos < len - 127; pos += 128)
1850  {
1851  for (int i = 0; i < 16; i++)
1852  {
1862  &buf2[4*i]);
1863  }
1864 
1865  for (int i = 0; i < 8; i++)
1866  {
1868  &buf2[8*i],
1869  &buf4[4*i]);
1870  }
1871 
1872  for (int i = 0; i < 4; i++)
1873  {
1875  &buf4[8*i],
1876  &buf8[4*i]);
1877  }
1878 
1880  &buf8[0],
1881  &buf16[0]);
1882 
1884  &buf8[8],
1885  &buf16[4]);
1886 
1888  &buf16[0],
1889  &buf32[0]);
1890 
1891  (**it).setReal(buf32[0] >> decimation_shifts<SdrBits, InputBits>::post32);
1892  (**it).setImag(buf32[1] >> decimation_shifts<SdrBits, InputBits>::post32);
1893  ++(*it);
1894 
1895  (**it).setReal(buf32[2] >> decimation_shifts<SdrBits, InputBits>::post32);
1896  (**it).setImag(buf32[3] >> decimation_shifts<SdrBits, InputBits>::post32);
1897  ++(*it);
1898  }
1899 }
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)
IntHalfbandFilterEO< qint32, qint32, DECIMATORS_HB_FILTER_ORDER > m_decimator2
Definition: decimators.h:452
IntHalfbandFilterEO< qint32, qint32, DECIMATORS_HB_FILTER_ORDER > m_decimator16
Definition: decimators.h:455
IntHalfbandFilterEO< qint32, qint32, DECIMATORS_HB_FILTER_ORDER > m_decimator8
Definition: decimators.h:454
int32_t i
Definition: decimators.h:244
IntHalfbandFilterEO< qint32, qint32, DECIMATORS_HB_FILTER_ORDER > m_decimator4
Definition: decimators.h:453
IntHalfbandFilterEO< qint32, qint32, DECIMATORS_HB_FILTER_ORDER > m_decimator32
Definition: decimators.h:456
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)
+ Here is the caller graph for this function:

◆ decimate32_sup()

template<typename StorageType , typename T, uint SdrBits, uint InputBits>
void Decimators< StorageType, T, SdrBits, InputBits >::decimate32_sup ( SampleVector::iterator *  it,
const T *  buf,
qint32  len 
)

Definition at line 1902 of file decimators.h.

Referenced by Bladerf1InputThread::callback(), SDRPlayThread::callback(), AirspyThread::callback(), BladeRF2InputThread::callbackSI(), SoapySDRInputThread::callbackSI12(), SoapySDRInputThread::callbackSI16(), SoapySDRInputThread::callbackSI8(), PlutoSDRInputThread::convert(), TestMIThread::convert_12(), TestSourceThread::convert_12(), TestMIThread::convert_16(), TestSourceThread::convert_16(), TestMIThread::convert_8(), TestSourceThread::convert_8(), MainBench::decimateSupII(), FCDProThread::work(), and FCDProPlusThread::work().

1903 {
1904  StorageType buf2[64], buf4[32], buf8[16], buf16[8], buf32[4];
1905 
1906  for (int pos = 0; pos < len - 127; pos += 128)
1907  {
1917  &buf2[0]);
1918 
1928  &buf2[4]);
1929 
1939  &buf2[8]);
1940 
1950  &buf2[12]);
1951 
1961  &buf2[16]);
1962 
1972  &buf2[20]);
1973 
1983  &buf2[24]);
1984 
1994  &buf2[28]);
1995 
2005  &buf2[32]);
2006 
2016  &buf2[36]);
2017 
2027  &buf2[40]);
2028 
2038  &buf2[44]);
2039 
2049  &buf2[48]);
2050 
2060  &buf2[52]);
2061 
2071  &buf2[56]);
2072 
2082  &buf2[60]);
2083 
2085  &buf2[0],
2086  &buf4[0]);
2087 
2089  &buf2[8],
2090  &buf4[4]);
2091 
2093  &buf2[16],
2094  &buf4[8]);
2095 
2097  &buf2[24],
2098  &buf4[12]);
2099 
2101  &buf2[32],
2102  &buf4[16]);
2103 
2105  &buf2[40],
2106  &buf4[20]);
2107 
2109  &buf2[48],
2110  &buf4[24]);
2111 
2113  &buf2[56],
2114  &buf4[28]);
2115 
2117  &buf4[0],
2118  &buf8[0]);
2119 
2121  &buf4[8],
2122  &buf8[4]);
2123 
2125  &buf4[16],
2126  &buf8[8]);
2127 
2129  &buf4[24],
2130  &buf8[12]);
2131 
2133  &buf8[0],
2134  &buf16[0]);
2135 
2137  &buf8[8],
2138  &buf16[4]);
2139 
2141  &buf16[0],
2142  &buf32[0]);
2143 
2144  (**it).setReal(buf32[0] >> decimation_shifts<SdrBits, InputBits>::post32);
2145  (**it).setImag(buf32[1] >> decimation_shifts<SdrBits, InputBits>::post32);
2146  ++(*it);
2147 
2148  (**it).setReal(buf32[2] >> decimation_shifts<SdrBits, InputBits>::post32);
2149  (**it).setImag(buf32[3] >> decimation_shifts<SdrBits, InputBits>::post32);
2150  ++(*it);
2151  }
2152 }
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)
IntHalfbandFilterEO< qint32, qint32, DECIMATORS_HB_FILTER_ORDER > m_decimator2
Definition: decimators.h:452
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)
IntHalfbandFilterEO< qint32, qint32, DECIMATORS_HB_FILTER_ORDER > m_decimator16
Definition: decimators.h:455
IntHalfbandFilterEO< qint32, qint32, DECIMATORS_HB_FILTER_ORDER > m_decimator8
Definition: decimators.h:454
IntHalfbandFilterEO< qint32, qint32, DECIMATORS_HB_FILTER_ORDER > m_decimator4
Definition: decimators.h:453
IntHalfbandFilterEO< qint32, qint32, DECIMATORS_HB_FILTER_ORDER > m_decimator32
Definition: decimators.h:456
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)
+ Here is the caller graph for this function:

◆ decimate32_sup_txsync()

template<typename StorageType , typename T, uint SdrBits, uint InputBits>
void Decimators< StorageType, T, SdrBits, InputBits >::decimate32_sup_txsync ( SampleVector::iterator *  it,
const T *  buf,
qint32  len 
)

Definition at line 2155 of file decimators.h.

Referenced by HackRFInputThread::callback().

2156 {
2157  StorageType buf2[64], buf4[32], buf8[16], buf16[8], buf32[4];
2158 
2159  for (int pos = 0; pos < len - 127; pos += 128)
2160  {
2161  for (int i = 0; i < 16; i++)
2162  {
2172  &buf2[4*i]);
2173  }
2174 
2175  for (int i = 0; i < 8; i++)
2176  {
2178  &buf2[8*i],
2179  &buf4[4*i]);
2180  }
2181 
2182  for (int i = 0; i < 4; i++)
2183  {
2185  &buf4[8*i],
2186  &buf8[4*i]);
2187  }
2188 
2190  &buf8[0],
2191  &buf16[0]);
2192 
2194  &buf8[8],
2195  &buf16[4]);
2196 
2198  &buf16[0],
2199  &buf32[0]);
2200 
2201  (**it).setReal(buf32[0] >> decimation_shifts<SdrBits, InputBits>::post32);
2202  (**it).setImag(buf32[1] >> decimation_shifts<SdrBits, InputBits>::post32);
2203  ++(*it);
2204 
2205  (**it).setReal(buf32[2] >> decimation_shifts<SdrBits, InputBits>::post32);
2206  (**it).setImag(buf32[3] >> decimation_shifts<SdrBits, InputBits>::post32);
2207  ++(*it);
2208  }
2209 }
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)
IntHalfbandFilterEO< qint32, qint32, DECIMATORS_HB_FILTER_ORDER > m_decimator2
Definition: decimators.h:452
IntHalfbandFilterEO< qint32, qint32, DECIMATORS_HB_FILTER_ORDER > m_decimator16
Definition: decimators.h:455
IntHalfbandFilterEO< qint32, qint32, DECIMATORS_HB_FILTER_ORDER > m_decimator8
Definition: decimators.h:454
int32_t i
Definition: decimators.h:244
IntHalfbandFilterEO< qint32, qint32, DECIMATORS_HB_FILTER_ORDER > m_decimator4
Definition: decimators.h:453
IntHalfbandFilterEO< qint32, qint32, DECIMATORS_HB_FILTER_ORDER > m_decimator32
Definition: decimators.h:456
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)
+ Here is the caller graph for this function:

◆ decimate4_cen() [1/2]

template<typename StorageType , typename T, uint SdrBits, uint InputBits>
void Decimators< StorageType, T, SdrBits, InputBits >::decimate4_cen ( SampleVector::iterator *  it,
const T *  buf,
qint32  len 
)

Definition at line 782 of file decimators.h.

Referenced by Bladerf1InputThread::callback(), SDRPlayThread::callback(), PerseusThread::callback(), HackRFInputThread::callback(), AirspyThread::callback(), LimeSDRInputThread::callback(), XTRXInputThread::callbackSI(), BladeRF2InputThread::callbackSI(), SoapySDRInputThread::callbackSI12(), SoapySDRInputThread::callbackSI16(), SoapySDRInputThread::callbackSI8(), PlutoSDRInputThread::convert(), TestMIThread::convert_12(), TestSourceThread::convert_12(), TestMIThread::convert_16(), TestSourceThread::convert_16(), TestMIThread::convert_8(), TestSourceThread::convert_8(), MainBench::decimateII(), FCDProThread::work(), and FCDProPlusThread::work().

783 {
784  StorageType buf2[8], buf4[4];
785 
786  for (int pos = 0; pos < len - 15; pos += 16)
787  {
797  &buf2[0]);
798 
808  &buf2[4]);
809 
811  &buf2[0],
812  &buf4[0]);
813 
814  (**it).setReal(buf4[0] >> decimation_shifts<SdrBits, InputBits>::post4);
815  (**it).setImag(buf4[1] >> decimation_shifts<SdrBits, InputBits>::post4);
816  ++(*it);
817 
818  (**it).setReal(buf4[2] >> decimation_shifts<SdrBits, InputBits>::post4);
819  (**it).setImag(buf4[3] >> decimation_shifts<SdrBits, InputBits>::post4);
820  ++(*it);
821  }
822 }
IntHalfbandFilterEO< qint32, qint32, DECIMATORS_HB_FILTER_ORDER > m_decimator2
Definition: decimators.h:452
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)
IntHalfbandFilterEO< qint32, qint32, DECIMATORS_HB_FILTER_ORDER > m_decimator4
Definition: decimators.h:453
+ Here is the caller graph for this function:

◆ decimate4_cen() [2/2]

template<typename StorageType , typename T, uint SdrBits, uint InputBits>
void Decimators< StorageType, T, SdrBits, InputBits >::decimate4_cen ( SampleVector::iterator *  it,
const T *  bufI,
const T *  bufQ,
qint32  len 
)

Definition at line 3567 of file decimators.h.

3568 {
3569  StorageType intbuf[4];
3570 
3571  for (int pos = 0; pos < len - 3; pos += 4)
3572  {
3573  intbuf[0] = bufI[pos+1] << decimation_shifts<SdrBits, InputBits>::pre4;
3574  intbuf[1] = bufQ[pos+1] << decimation_shifts<SdrBits, InputBits>::pre4;
3575  intbuf[2] = bufI[pos+3] << decimation_shifts<SdrBits, InputBits>::pre4;
3576  intbuf[3] = bufQ[pos+3] << decimation_shifts<SdrBits, InputBits>::pre4;
3577 
3579  bufI[pos+0] << decimation_shifts<SdrBits, InputBits>::pre4,
3580  bufQ[pos+0] << decimation_shifts<SdrBits, InputBits>::pre4,
3581  &intbuf[0],
3582  &intbuf[1]);
3584  bufI[pos+2] << decimation_shifts<SdrBits, InputBits>::pre4,
3585  bufQ[pos+2] << decimation_shifts<SdrBits, InputBits>::pre4,
3586  &intbuf[2],
3587  &intbuf[3]);
3588 
3590  intbuf[0],
3591  intbuf[1],
3592  &intbuf[2],
3593  &intbuf[3]);
3594 
3595  (**it).setReal(intbuf[2] >> decimation_shifts<SdrBits, InputBits>::post4);
3596  (**it).setImag(intbuf[3] >> decimation_shifts<SdrBits, InputBits>::post4);
3597  ++(*it);
3598  }
3599 }
IntHalfbandFilterEO< qint32, qint32, DECIMATORS_HB_FILTER_ORDER > m_decimator2
Definition: decimators.h:452
void myDecimate(const Sample *sample1, Sample *sample2)
IntHalfbandFilterEO< qint32, qint32, DECIMATORS_HB_FILTER_ORDER > m_decimator4
Definition: decimators.h:453

◆ decimate4_inf()

template<typename StorageType , typename T, uint SdrBits, uint InputBits>
void Decimators< StorageType, T, SdrBits, InputBits >::decimate4_inf ( SampleVector::iterator *  it,
const T *  buf,
qint32  len 
)

Definition at line 582 of file decimators.h.

Referenced by Bladerf1InputThread::callback(), SDRPlayThread::callback(), AirspyThread::callback(), BladeRF2InputThread::callbackSI(), SoapySDRInputThread::callbackSI12(), SoapySDRInputThread::callbackSI16(), SoapySDRInputThread::callbackSI8(), PlutoSDRInputThread::convert(), TestMIThread::convert_12(), TestSourceThread::convert_12(), TestMIThread::convert_16(), TestSourceThread::convert_16(), TestMIThread::convert_8(), TestSourceThread::convert_8(), MainBench::decimateInfII(), FCDProThread::work(), and FCDProPlusThread::work().

583 {
584  StorageType buf2[8], buf4[4];
585 
586  for (int pos = 0; pos < len - 15; pos += 16)
587  {
597  &buf2[0]);
598 
608  &buf2[4]);
609 
611  buf2[0],
612  buf2[1],
613  buf2[2],
614  buf2[3],
615  buf2[4],
616  buf2[5],
617  buf2[6],
618  buf2[7],
619  &buf4[0]);
620 
621  (**it).setReal(buf4[0] >> decimation_shifts<SdrBits, InputBits>::post4);
622  (**it).setImag(buf4[1] >> decimation_shifts<SdrBits, InputBits>::post4);
623  ++(*it);
624 
625  (**it).setReal(buf4[2] >> decimation_shifts<SdrBits, InputBits>::post4);
626  (**it).setImag(buf4[3] >> decimation_shifts<SdrBits, InputBits>::post4);
627  ++(*it);
628  }
629 }
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)
IntHalfbandFilterEO< qint32, qint32, DECIMATORS_HB_FILTER_ORDER > m_decimator2
Definition: decimators.h:452
IntHalfbandFilterEO< qint32, qint32, DECIMATORS_HB_FILTER_ORDER > m_decimator4
Definition: decimators.h:453
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)
+ Here is the caller graph for this function:

◆ decimate4_inf_txsync()

template<typename StorageType , typename T, uint SdrBits, uint InputBits>
void Decimators< StorageType, T, SdrBits, InputBits >::decimate4_inf_txsync ( SampleVector::iterator *  it,
const T *  buf,
qint32  len 
)

Definition at line 632 of file decimators.h.

Referenced by HackRFInputThread::callback().

633 {
634  StorageType buf2[8], buf4[4];
635 
636  for (int pos = 0; pos < len - 15; pos += 16)
637  {
647  &buf2[0]);
648 
658  &buf2[4]);
659 
661  buf2[0],
662  buf2[1],
663  buf2[2],
664  buf2[3],
665  buf2[4],
666  buf2[5],
667  buf2[6],
668  buf2[7],
669  &buf4[0]);
670 
671  (**it).setReal(buf4[0] >> decimation_shifts<SdrBits, InputBits>::post4);
672  (**it).setImag(buf4[1] >> decimation_shifts<SdrBits, InputBits>::post4);
673  ++(*it);
674 
675  (**it).setReal(buf4[2] >> decimation_shifts<SdrBits, InputBits>::post4);
676  (**it).setImag(buf4[3] >> decimation_shifts<SdrBits, InputBits>::post4);
677  ++(*it);
678  }
679 }
IntHalfbandFilterEO< qint32, qint32, DECIMATORS_HB_FILTER_ORDER > m_decimator2
Definition: decimators.h:452
IntHalfbandFilterEO< qint32, qint32, DECIMATORS_HB_FILTER_ORDER > m_decimator4
Definition: decimators.h:453
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)
+ Here is the caller graph for this function:

◆ decimate4_sup()

template<typename StorageType , typename T, uint SdrBits, uint InputBits>
void Decimators< StorageType, T, SdrBits, InputBits >::decimate4_sup ( SampleVector::iterator *  it,
const T *  buf,
qint32  len 
)

Definition at line 682 of file decimators.h.

Referenced by Bladerf1InputThread::callback(), SDRPlayThread::callback(), AirspyThread::callback(), BladeRF2InputThread::callbackSI(), SoapySDRInputThread::callbackSI12(), SoapySDRInputThread::callbackSI16(), SoapySDRInputThread::callbackSI8(), PlutoSDRInputThread::convert(), TestMIThread::convert_12(), TestSourceThread::convert_12(), TestMIThread::convert_16(), TestSourceThread::convert_16(), TestMIThread::convert_8(), TestSourceThread::convert_8(), MainBench::decimateSupII(), FCDProThread::work(), and FCDProPlusThread::work().

683 {
684  StorageType buf2[8], buf4[4];
685 
686  for (int pos = 0; pos < len - 15; pos += 16)
687  {
697  &buf2[0]);
698 
708  &buf2[4]);
709 
711  buf2[0],
712  buf2[1],
713  buf2[2],
714  buf2[3],
715  buf2[4],
716  buf2[5],
717  buf2[6],
718  buf2[7],
719  &buf4[0]);
720 
721  (**it).setReal(buf4[0] >> decimation_shifts<SdrBits, InputBits>::post4);
722  (**it).setImag(buf4[1] >> decimation_shifts<SdrBits, InputBits>::post4);
723  ++(*it);
724 
725  (**it).setReal(buf4[2] >> decimation_shifts<SdrBits, InputBits>::post4);
726  (**it).setImag(buf4[3] >> decimation_shifts<SdrBits, InputBits>::post4);
727  ++(*it);
728  }
729 }
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)
IntHalfbandFilterEO< qint32, qint32, DECIMATORS_HB_FILTER_ORDER > m_decimator2
Definition: decimators.h:452
IntHalfbandFilterEO< qint32, qint32, DECIMATORS_HB_FILTER_ORDER > m_decimator4
Definition: decimators.h:453
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)
+ Here is the caller graph for this function:

◆ decimate4_sup_txsync()

template<typename StorageType , typename T, uint SdrBits, uint InputBits>
void Decimators< StorageType, T, SdrBits, InputBits >::decimate4_sup_txsync ( SampleVector::iterator *  it,
const T *  buf,
qint32  len 
)

Definition at line 732 of file decimators.h.

Referenced by HackRFInputThread::callback().

733 {
734  StorageType buf2[8], buf4[4];
735 
736  for (int pos = 0; pos < len - 15; pos += 16)
737  {
747  &buf2[0]);
748 
758  &buf2[4]);
759 
761  buf2[0],
762  buf2[1],
763  buf2[2],
764  buf2[3],
765  buf2[4],
766  buf2[5],
767  buf2[6],
768  buf2[7],
769  &buf4[0]);
770 
771  (**it).setReal(buf4[0] >> decimation_shifts<SdrBits, InputBits>::post4);
772  (**it).setImag(buf4[1] >> decimation_shifts<SdrBits, InputBits>::post4);
773  ++(*it);
774 
775  (**it).setReal(buf4[2] >> decimation_shifts<SdrBits, InputBits>::post4);
776  (**it).setImag(buf4[3] >> decimation_shifts<SdrBits, InputBits>::post4);
777  ++(*it);
778  }
779 }
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)
IntHalfbandFilterEO< qint32, qint32, DECIMATORS_HB_FILTER_ORDER > m_decimator2
Definition: decimators.h:452
IntHalfbandFilterEO< qint32, qint32, DECIMATORS_HB_FILTER_ORDER > m_decimator4
Definition: decimators.h:453
+ Here is the caller graph for this function:

◆ decimate64_cen() [1/2]

template<typename StorageType , typename T, uint SdrBits, uint InputBits>
void Decimators< StorageType, T, SdrBits, InputBits >::decimate64_cen ( SampleVector::iterator *  it,
const T *  buf,
qint32  len 
)

Definition at line 3040 of file decimators.h.

Referenced by Bladerf1InputThread::callback(), SDRPlayThread::callback(), HackRFInputThread::callback(), AirspyThread::callback(), LimeSDRInputThread::callback(), XTRXInputThread::callbackSI(), BladeRF2InputThread::callbackSI(), SoapySDRInputThread::callbackSI12(), SoapySDRInputThread::callbackSI16(), SoapySDRInputThread::callbackSI8(), PlutoSDRInputThread::convert(), TestMIThread::convert_12(), TestSourceThread::convert_12(), TestMIThread::convert_16(), TestSourceThread::convert_16(), TestMIThread::convert_8(), TestSourceThread::convert_8(), MainBench::decimateII(), FCDProThread::work(), and FCDProPlusThread::work().

3041 {
3042  StorageType intbuf[64];
3043 
3044  for (int pos = 0; pos < len - 127; pos += 128)
3045  {
3046  intbuf[0] = buf[pos+2] << decimation_shifts<SdrBits, InputBits>::pre64;
3047  intbuf[1] = buf[pos+3] << decimation_shifts<SdrBits, InputBits>::pre64;
3048  intbuf[2] = buf[pos+6] << decimation_shifts<SdrBits, InputBits>::pre64;
3049  intbuf[3] = buf[pos+7] << decimation_shifts<SdrBits, InputBits>::pre64;
3050  intbuf[4] = buf[pos+10] << decimation_shifts<SdrBits, InputBits>::pre64;
3051  intbuf[5] = buf[pos+11] << decimation_shifts<SdrBits, InputBits>::pre64;
3052  intbuf[6] = buf[pos+14] << decimation_shifts<SdrBits, InputBits>::pre64;
3053  intbuf[7] = buf[pos+15] << decimation_shifts<SdrBits, InputBits>::pre64;
3054  intbuf[8] = buf[pos+18] << decimation_shifts<SdrBits, InputBits>::pre64;
3055  intbuf[9] = buf[pos+19] << decimation_shifts<SdrBits, InputBits>::pre64;
3056  intbuf[10] = buf[pos+22] << decimation_shifts<SdrBits, InputBits>::pre64;
3057  intbuf[11] = buf[pos+23] << decimation_shifts<SdrBits, InputBits>::pre64;
3058  intbuf[12] = buf[pos+26] << decimation_shifts<SdrBits, InputBits>::pre64;
3059  intbuf[13] = buf[pos+27] << decimation_shifts<SdrBits, InputBits>::pre64;
3060  intbuf[14] = buf[pos+30] << decimation_shifts<SdrBits, InputBits>::pre64;
3061  intbuf[15] = buf[pos+31] << decimation_shifts<SdrBits, InputBits>::pre64;
3062  intbuf[16] = buf[pos+34] << decimation_shifts<SdrBits, InputBits>::pre64;
3063  intbuf[17] = buf[pos+35] << decimation_shifts<SdrBits, InputBits>::pre64;
3064  intbuf[18] = buf[pos+38] << decimation_shifts<SdrBits, InputBits>::pre64;
3065  intbuf[19] = buf[pos+39] << decimation_shifts<SdrBits, InputBits>::pre64;
3066  intbuf[20] = buf[pos+42] << decimation_shifts<SdrBits, InputBits>::pre64;
3067  intbuf[21] = buf[pos+43] << decimation_shifts<SdrBits, InputBits>::pre64;
3068  intbuf[22] = buf[pos+46] << decimation_shifts<SdrBits, InputBits>::pre64;
3069  intbuf[23] = buf[pos+47] << decimation_shifts<SdrBits, InputBits>::pre64;
3070  intbuf[24] = buf[pos+50] << decimation_shifts<SdrBits, InputBits>::pre64;
3071  intbuf[25] = buf[pos+51] << decimation_shifts<SdrBits, InputBits>::pre64;
3072  intbuf[26] = buf[pos+54] << decimation_shifts<SdrBits, InputBits>::pre64;
3073  intbuf[27] = buf[pos+55] << decimation_shifts<SdrBits, InputBits>::pre64;
3074  intbuf[28] = buf[pos+58] << decimation_shifts<SdrBits, InputBits>::pre64;
3075  intbuf[29] = buf[pos+59] << decimation_shifts<SdrBits, InputBits>::pre64;
3076  intbuf[30] = buf[pos+62] << decimation_shifts<SdrBits, InputBits>::pre64;
3077  intbuf[31] = buf[pos+63] << decimation_shifts<SdrBits, InputBits>::pre64;
3078 
3079  intbuf[32] = buf[pos+66] << decimation_shifts<SdrBits, InputBits>::pre64;
3080  intbuf[33] = buf[pos+67] << decimation_shifts<SdrBits, InputBits>::pre64;
3081  intbuf[34] = buf[pos+70] << decimation_shifts<SdrBits, InputBits>::pre64;
3082  intbuf[35] = buf[pos+71] << decimation_shifts<SdrBits, InputBits>::pre64;
3083  intbuf[36] = buf[pos+74] << decimation_shifts<SdrBits, InputBits>::pre64;
3084  intbuf[37] = buf[pos+75] << decimation_shifts<SdrBits, InputBits>::pre64;
3085  intbuf[38] = buf[pos+78] << decimation_shifts<SdrBits, InputBits>::pre64;
3086  intbuf[39] = buf[pos+79] << decimation_shifts<SdrBits, InputBits>::pre64;
3087  intbuf[40] = buf[pos+82] << decimation_shifts<SdrBits, InputBits>::pre64;
3088  intbuf[41] = buf[pos+83] << decimation_shifts<SdrBits, InputBits>::pre64;
3089  intbuf[42] = buf[pos+86] << decimation_shifts<SdrBits, InputBits>::pre64;
3090  intbuf[43] = buf[pos+87] << decimation_shifts<SdrBits, InputBits>::pre64;
3091  intbuf[44] = buf[pos+90] << decimation_shifts<SdrBits, InputBits>::pre64;
3092  intbuf[45] = buf[pos+91] << decimation_shifts<SdrBits, InputBits>::pre64;
3093  intbuf[46] = buf[pos+94] << decimation_shifts<SdrBits, InputBits>::pre64;
3094  intbuf[47] = buf[pos+95] << decimation_shifts<SdrBits, InputBits>::pre64;
3095  intbuf[48] = buf[pos+98] << decimation_shifts<SdrBits, InputBits>::pre64;
3096  intbuf[49] = buf[pos+99] << decimation_shifts<SdrBits, InputBits>::pre64;
3097  intbuf[50] = buf[pos+102] << decimation_shifts<SdrBits, InputBits>::pre64;
3098  intbuf[51] = buf[pos+103] << decimation_shifts<SdrBits, InputBits>::pre64;
3099  intbuf[52] = buf[pos+106] << decimation_shifts<SdrBits, InputBits>::pre64;
3100  intbuf[53] = buf[pos+107] << decimation_shifts<SdrBits, InputBits>::pre64;
3101  intbuf[54] = buf[pos+110] << decimation_shifts<SdrBits, InputBits>::pre64;
3102  intbuf[55] = buf[pos+111] << decimation_shifts<SdrBits, InputBits>::pre64;
3103  intbuf[56] = buf[pos+114] << decimation_shifts<SdrBits, InputBits>::pre64;
3104  intbuf[57] = buf[pos+115] << decimation_shifts<SdrBits, InputBits>::pre64;
3105  intbuf[58] = buf[pos+118] << decimation_shifts<SdrBits, InputBits>::pre64;
3106  intbuf[59] = buf[pos+119] << decimation_shifts<SdrBits, InputBits>::pre64;
3107  intbuf[60] = buf[pos+122] << decimation_shifts<SdrBits, InputBits>::pre64;
3108  intbuf[61] = buf[pos+123] << decimation_shifts<SdrBits, InputBits>::pre64;
3109  intbuf[62] = buf[pos+126] << decimation_shifts<SdrBits, InputBits>::pre64;
3110  intbuf[63] = buf[pos+127] << decimation_shifts<SdrBits, InputBits>::pre64;
3111 
3113  buf[pos+0] << decimation_shifts<SdrBits, InputBits>::pre64,
3114  buf[pos+1] << decimation_shifts<SdrBits, InputBits>::pre64,
3115  &intbuf[0],
3116  &intbuf[1]);
3118  buf[pos+4] << decimation_shifts<SdrBits, InputBits>::pre64,
3119  buf[pos+5] << decimation_shifts<SdrBits, InputBits>::pre64,
3120  &intbuf[2],
3121  &intbuf[3]);
3123  buf[pos+8] << decimation_shifts<SdrBits, InputBits>::pre64,
3124  buf[pos+9] << decimation_shifts<SdrBits, InputBits>::pre64,
3125  &intbuf[4],
3126  &intbuf[5]);
3128  buf[pos+12] << decimation_shifts<SdrBits, InputBits>::pre64,
3129  buf[pos+13] << decimation_shifts<SdrBits, InputBits>::pre64,
3130  &intbuf[6],
3131  &intbuf[7]);
3133  buf[pos+16] << decimation_shifts<SdrBits, InputBits>::pre64,
3134  buf[pos+17] << decimation_shifts<SdrBits, InputBits>::pre64,
3135  &intbuf[8],
3136  &intbuf[9]);
3138  buf[pos+20] << decimation_shifts<SdrBits, InputBits>::pre64,
3139  buf[pos+21] << decimation_shifts<SdrBits, InputBits>::pre64,
3140  &intbuf[10],
3141  &intbuf[11]);
3143  buf[pos+24] << decimation_shifts<SdrBits, InputBits>::pre64,
3144  buf[pos+25] << decimation_shifts<SdrBits, InputBits>::pre64,
3145  &intbuf[12],
3146  &intbuf[13]);
3148  buf[pos+28] << decimation_shifts<SdrBits, InputBits>::pre64,
3149  buf[pos+29] << decimation_shifts<SdrBits, InputBits>::pre64,
3150  &intbuf[14],
3151  &intbuf[15]);
3153  buf[pos+32] << decimation_shifts<SdrBits, InputBits>::pre64,
3154  buf[pos+33] << decimation_shifts<SdrBits, InputBits>::pre64,
3155  &intbuf[16],
3156  &intbuf[17]);
3158  buf[pos+36] << decimation_shifts<SdrBits, InputBits>::pre64,
3159  buf[pos+37] << decimation_shifts<SdrBits, InputBits>::pre64,
3160  &intbuf[18],
3161  &intbuf[19]);
3163  buf[pos+40] << decimation_shifts<SdrBits, InputBits>::pre64,
3164  buf[pos+41] << decimation_shifts<SdrBits, InputBits>::pre64,
3165  &intbuf[20],
3166  &intbuf[21]);
3168  buf[pos+44] << decimation_shifts<SdrBits, InputBits>::pre64,
3169  buf[pos+45] << decimation_shifts<SdrBits, InputBits>::pre64,
3170  &intbuf[22],
3171  &intbuf[23]);
3173  buf[pos+48] << decimation_shifts<SdrBits, InputBits>::pre64,
3174  buf[pos+49] << decimation_shifts<SdrBits, InputBits>::pre64,
3175  &intbuf[24],
3176  &intbuf[25]);
3178  buf[pos+52] << decimation_shifts<SdrBits, InputBits>::pre64,
3179  buf[pos+53] << decimation_shifts<SdrBits, InputBits>::pre64,
3180  &intbuf[26],
3181  &intbuf[27]);
3183  buf[pos+56] << decimation_shifts<SdrBits, InputBits>::pre64,
3184  buf[pos+57] << decimation_shifts<SdrBits, InputBits>::pre64,
3185  &intbuf[28],
3186  &intbuf[29]);
3188  buf[pos+60] << decimation_shifts<SdrBits, InputBits>::pre64,
3189  buf[pos+61] << decimation_shifts<SdrBits, InputBits>::pre64,
3190  &intbuf[30],
3191  &intbuf[31]);
3193  buf[pos+64] << decimation_shifts<SdrBits, InputBits>::pre64,
3194  buf[pos+65] << decimation_shifts<SdrBits, InputBits>::pre64,
3195  &intbuf[32],
3196  &intbuf[33]);
3198  buf[pos+68] << decimation_shifts<SdrBits, InputBits>::pre64,
3199  buf[pos+69] << decimation_shifts<SdrBits, InputBits>::pre64,
3200  &intbuf[34],
3201  &intbuf[35]);
3203  buf[pos+72] << decimation_shifts<SdrBits, InputBits>::pre64,
3204  buf[pos+73] << decimation_shifts<SdrBits, InputBits>::pre64,
3205  &intbuf[36],
3206  &intbuf[37]);
3208  buf[pos+76] << decimation_shifts<SdrBits, InputBits>::pre64,
3209  buf[pos+77] << decimation_shifts<SdrBits, InputBits>::pre64,
3210  &intbuf[38],
3211  &intbuf[39]);
3213  buf[pos+80] << decimation_shifts<SdrBits, InputBits>::pre64,
3214  buf[pos+81] << decimation_shifts<SdrBits, InputBits>::pre64,
3215  &intbuf[40],
3216  &intbuf[41]);
3218  buf[pos+84] << decimation_shifts<SdrBits, InputBits>::pre64,
3219  buf[pos+85] << decimation_shifts<SdrBits, InputBits>::pre64,
3220  &intbuf[42],
3221  &intbuf[43]);
3223  buf[pos+88] << decimation_shifts<SdrBits, InputBits>::pre64,
3224  buf[pos+89] << decimation_shifts<SdrBits, InputBits>::pre64,
3225  &intbuf[44],
3226  &intbuf[45]);
3228  buf[pos+92] << decimation_shifts<SdrBits, InputBits>::pre64,
3229  buf[pos+93] << decimation_shifts<SdrBits, InputBits>::pre64,
3230  &intbuf[46],
3231  &intbuf[47]);
3233  buf[pos+96] << decimation_shifts<SdrBits, InputBits>::pre64,
3234  buf[pos+97] << decimation_shifts<SdrBits, InputBits>::pre64,
3235  &intbuf[48],
3236  &intbuf[49]);
3238  buf[pos+100] << decimation_shifts<SdrBits, InputBits>::pre64,
3239  buf[pos+101] << decimation_shifts<SdrBits, InputBits>::pre64,
3240  &intbuf[50],
3241  &intbuf[51]);
3243  buf[pos+104] << decimation_shifts<SdrBits, InputBits>::pre64,
3244  buf[pos+105] << decimation_shifts<SdrBits, InputBits>::pre64,
3245  &intbuf[52],
3246  &intbuf[53]);
3248  buf[pos+108] << decimation_shifts<SdrBits, InputBits>::pre64,
3249  buf[pos+109] << decimation_shifts<SdrBits, InputBits>::pre64,
3250  &intbuf[54],
3251  &intbuf[55]);
3253  buf[pos+112] << decimation_shifts<SdrBits, InputBits>::pre64,
3254  buf[pos+113] << decimation_shifts<SdrBits, InputBits>::pre64,
3255  &intbuf[56],
3256  &intbuf[57]);
3258  buf[pos+116] << decimation_shifts<SdrBits, InputBits>::pre64,
3259  buf[pos+117] << decimation_shifts<SdrBits, InputBits>::pre64,
3260  &intbuf[58],
3261  &intbuf[59]);
3263  buf[pos+120] << decimation_shifts<SdrBits, InputBits>::pre64,
3264  buf[pos+121] << decimation_shifts<SdrBits, InputBits>::pre64,
3265  &intbuf[60],
3266  &intbuf[61]);
3268  buf[pos+124] << decimation_shifts<SdrBits, InputBits>::pre64,
3269  buf[pos+125] << decimation_shifts<SdrBits, InputBits>::pre64,
3270  &intbuf[62],
3271  &intbuf[63]);
3272 
3274  intbuf[0],
3275  intbuf[1],
3276  &intbuf[2],
3277  &intbuf[3]);
3279  intbuf[4],
3280  intbuf[5],
3281  &intbuf[6],
3282  &intbuf[7]);
3284  intbuf[8],
3285  intbuf[9],
3286  &intbuf[10],
3287  &intbuf[11]);
3289  intbuf[12],
3290  intbuf[13],
3291  &intbuf[14],
3292  &intbuf[15]);
3294  intbuf[16],
3295  intbuf[17],
3296  &intbuf[18],
3297  &intbuf[19]);
3299  intbuf[20],
3300  intbuf[21],
3301  &intbuf[22],
3302  &intbuf[23]);
3304  intbuf[24],
3305  intbuf[25],
3306  &intbuf[26],
3307  &intbuf[27]);
3309  intbuf[28],
3310  intbuf[29],
3311  &intbuf[30],
3312  &intbuf[31]);
3314  intbuf[32],
3315  intbuf[33],
3316  &intbuf[34],
3317  &intbuf[35]);
3319  intbuf[36],
3320  intbuf[37],
3321  &intbuf[38],
3322  &intbuf[39]);
3324  intbuf[40],
3325  intbuf[41],
3326  &intbuf[42],
3327  &intbuf[43]);
3329  intbuf[44],
3330  intbuf[45],
3331  &intbuf[46],
3332  &intbuf[47]);
3334  intbuf[48],
3335  intbuf[49],
3336  &intbuf[50],
3337  &intbuf[51]);
3339  intbuf[52],
3340  intbuf[53],
3341  &intbuf[54],
3342  &intbuf[55]);
3344  intbuf[56],
3345  intbuf[57],
3346  &intbuf[58],
3347  &intbuf[59]);
3349  intbuf[60],
3350  intbuf[61],
3351  &intbuf[62],
3352  &intbuf[63]);
3353 
3355  intbuf[2],
3356  intbuf[3],
3357  &intbuf[6],
3358  &intbuf[7]);
3360  intbuf[10],
3361  intbuf[11],
3362  &intbuf[14],
3363  &intbuf[15]);
3365  intbuf[18],
3366  intbuf[19],
3367  &intbuf[22],
3368  &intbuf[23]);
3370  intbuf[26],
3371  intbuf[27],
3372  &intbuf[30],
3373  &intbuf[31]);
3375  intbuf[34],
3376  intbuf[35],
3377  &intbuf[38],
3378  &intbuf[39]);
3380  intbuf[42],
3381  intbuf[43],
3382  &intbuf[46],
3383  &intbuf[47]);
3385  intbuf[50],
3386  intbuf[51],
3387  &intbuf[54],
3388  &intbuf[55]);
3390  intbuf[58],
3391  intbuf[59],
3392  &intbuf[62],
3393  &intbuf[63]);
3394 
3396  intbuf[6],
3397  intbuf[7],
3398  &intbuf[14],
3399  &intbuf[15]);
3401  intbuf[22],
3402  intbuf[23],
3403  &intbuf[30],
3404  &intbuf[31]);
3406  intbuf[38],
3407  intbuf[39],
3408  &intbuf[46],
3409  &intbuf[47]);
3411  intbuf[54],
3412  intbuf[55],
3413  &intbuf[62],
3414  &intbuf[63]);
3415 
3417  intbuf[14],
3418  intbuf[15],
3419  &intbuf[30],
3420  &intbuf[31]);
3422  intbuf[46],
3423  intbuf[47],
3424  &intbuf[62],
3425  &intbuf[63]);
3426 
3428  intbuf[30],
3429  intbuf[31],
3430  &intbuf[62],
3431  &intbuf[63]);
3432 
3433  (**it).setReal(intbuf[62] >> decimation_shifts<SdrBits, InputBits>::post64);
3434  (**it).setImag(intbuf[63] >> decimation_shifts<SdrBits, InputBits>::post64);
3435  ++(*it);
3436  }
3437 }
IntHalfbandFilterEO< qint32, qint32, DECIMATORS_HB_FILTER_ORDER > m_decimator2
Definition: decimators.h:452
IntHalfbandFilterEO< qint32, qint32, DECIMATORS_HB_FILTER_ORDER > m_decimator16
Definition: decimators.h:455
IntHalfbandFilterEO< qint32, qint32, DECIMATORS_HB_FILTER_ORDER > m_decimator8
Definition: decimators.h:454
IntHalfbandFilterEO< qint32, qint32, DECIMATORS_HB_FILTER_ORDER > m_decimator64
Definition: decimators.h:457
void myDecimate(const Sample *sample1, Sample *sample2)
IntHalfbandFilterEO< qint32, qint32, DECIMATORS_HB_FILTER_ORDER > m_decimator4
Definition: decimators.h:453
IntHalfbandFilterEO< qint32, qint32, DECIMATORS_HB_FILTER_ORDER > m_decimator32
Definition: decimators.h:456
+ Here is the caller graph for this function:

◆ decimate64_cen() [2/2]

template<typename StorageType , typename T, uint SdrBits, uint InputBits>
void Decimators< StorageType, T, SdrBits, InputBits >::decimate64_cen ( SampleVector::iterator *  it,
const T *  bufI,
const T *  bufQ,
qint32  len 
)

Definition at line 3978 of file decimators.h.

3979 {
3980  StorageType intbuf[64];
3981 
3982  for (int pos = 0; pos < len - 63; pos += 64)
3983  {
3984  intbuf[0] = bufI[pos+1] << decimation_shifts<SdrBits, InputBits>::pre64;
3985  intbuf[1] = bufQ[pos+1] << decimation_shifts<SdrBits, InputBits>::pre64;
3986  intbuf[2] = bufI[pos+3] << decimation_shifts<SdrBits, InputBits>::pre64;
3987  intbuf[3] = bufQ[pos+3] << decimation_shifts<SdrBits, InputBits>::pre64;
3988  intbuf[4] = bufI[pos+5] << decimation_shifts<SdrBits, InputBits>::pre64;
3989  intbuf[5] = bufQ[pos+5] << decimation_shifts<SdrBits, InputBits>::pre64;
3990  intbuf[6] = bufI[pos+7] << decimation_shifts<SdrBits, InputBits>::pre64;
3991  intbuf[7] = bufQ[pos+7] << decimation_shifts<SdrBits, InputBits>::pre64;
3992  intbuf[8] = bufI[pos+9] << decimation_shifts<SdrBits, InputBits>::pre64;
3993  intbuf[9] = bufQ[pos+9] << decimation_shifts<SdrBits, InputBits>::pre64;
3994  intbuf[10] = bufI[pos+11] << decimation_shifts<SdrBits, InputBits>::pre64;
3995  intbuf[11] = bufQ[pos+11] << decimation_shifts<SdrBits, InputBits>::pre64;
3996  intbuf[12] = bufI[pos+13] << decimation_shifts<SdrBits, InputBits>::pre64;
3997  intbuf[13] = bufQ[pos+13] << decimation_shifts<SdrBits, InputBits>::pre64;
3998  intbuf[14] = bufI[pos+15] << decimation_shifts<SdrBits, InputBits>::pre64;
3999  intbuf[15] = bufQ[pos+15] << decimation_shifts<SdrBits, InputBits>::pre64;
4000  intbuf[16] = bufI[pos+17] << decimation_shifts<SdrBits, InputBits>::pre64;
4001  intbuf[17] = bufQ[pos+17] << decimation_shifts<SdrBits, InputBits>::pre64;
4002  intbuf[18] = bufI[pos+19] << decimation_shifts<SdrBits, InputBits>::pre64;
4003  intbuf[19] = bufQ[pos+19] << decimation_shifts<SdrBits, InputBits>::pre64;
4004  intbuf[20] = bufI[pos+21] << decimation_shifts<SdrBits, InputBits>::pre64;
4005  intbuf[21] = bufQ[pos+21] << decimation_shifts<SdrBits, InputBits>::pre64;
4006  intbuf[22] = bufI[pos+23] << decimation_shifts<SdrBits, InputBits>::pre64;
4007  intbuf[23] = bufQ[pos+23] << decimation_shifts<SdrBits, InputBits>::pre64;
4008  intbuf[24] = bufI[pos+25] << decimation_shifts<SdrBits, InputBits>::pre64;
4009  intbuf[25] = bufQ[pos+25] << decimation_shifts<SdrBits, InputBits>::pre64;
4010  intbuf[26] = bufI[pos+27] << decimation_shifts<SdrBits, InputBits>::pre64;
4011  intbuf[27] = bufQ[pos+27] << decimation_shifts<SdrBits, InputBits>::pre64;
4012  intbuf[28] = bufI[pos+29] << decimation_shifts<SdrBits, InputBits>::pre64;
4013  intbuf[29] = bufQ[pos+29] << decimation_shifts<SdrBits, InputBits>::pre64;
4014  intbuf[30] = bufI[pos+31] << decimation_shifts<SdrBits, InputBits>::pre64;
4015  intbuf[31] = bufQ[pos+31] << decimation_shifts<SdrBits, InputBits>::pre64;
4016 
4017  intbuf[32] = bufI[pos+33] << decimation_shifts<SdrBits, InputBits>::pre64;
4018  intbuf[33] = bufQ[pos+33] << decimation_shifts<SdrBits, InputBits>::pre64;
4019  intbuf[34] = bufI[pos+35] << decimation_shifts<SdrBits, InputBits>::pre64;
4020  intbuf[35] = bufQ[pos+35] << decimation_shifts<SdrBits, InputBits>::pre64;
4021  intbuf[36] = bufI[pos+37] << decimation_shifts<SdrBits, InputBits>::pre64;
4022  intbuf[37] = bufQ[pos+37] << decimation_shifts<SdrBits, InputBits>::pre64;
4023  intbuf[38] = bufI[pos+39] << decimation_shifts<SdrBits, InputBits>::pre64;
4024  intbuf[39] = bufQ[pos+39] << decimation_shifts<SdrBits, InputBits>::pre64;
4025  intbuf[40] = bufI[pos+41] << decimation_shifts<SdrBits, InputBits>::pre64;
4026  intbuf[41] = bufQ[pos+41] << decimation_shifts<SdrBits, InputBits>::pre64;
4027  intbuf[42] = bufI[pos+43] << decimation_shifts<SdrBits, InputBits>::pre64;
4028  intbuf[43] = bufQ[pos+43] << decimation_shifts<SdrBits, InputBits>::pre64;
4029  intbuf[44] = bufI[pos+45] << decimation_shifts<SdrBits, InputBits>::pre64;
4030  intbuf[45] = bufQ[pos+45] << decimation_shifts<SdrBits, InputBits>::pre64;
4031  intbuf[46] = bufI[pos+47] << decimation_shifts<SdrBits, InputBits>::pre64;
4032  intbuf[47] = bufQ[pos+47] << decimation_shifts<SdrBits, InputBits>::pre64;
4033  intbuf[48] = bufI[pos+49] << decimation_shifts<SdrBits, InputBits>::pre64;
4034  intbuf[49] = bufQ[pos+49] << decimation_shifts<SdrBits, InputBits>::pre64;
4035  intbuf[50] = bufI[pos+51] << decimation_shifts<SdrBits, InputBits>::pre64;
4036  intbuf[51] = bufQ[pos+51] << decimation_shifts<SdrBits, InputBits>::pre64;
4037  intbuf[52] = bufI[pos+53] << decimation_shifts<SdrBits, InputBits>::pre64;
4038  intbuf[53] = bufQ[pos+53] << decimation_shifts<SdrBits, InputBits>::pre64;
4039  intbuf[54] = bufI[pos+55] << decimation_shifts<SdrBits, InputBits>::pre64;
4040  intbuf[55] = bufQ[pos+55] << decimation_shifts<SdrBits, InputBits>::pre64;
4041  intbuf[56] = bufI[pos+57] << decimation_shifts<SdrBits, InputBits>::pre64;
4042  intbuf[57] = bufQ[pos+57] << decimation_shifts<SdrBits, InputBits>::pre64;
4043  intbuf[58] = bufI[pos+59] << decimation_shifts<SdrBits, InputBits>::pre64;
4044  intbuf[59] = bufQ[pos+59] << decimation_shifts<SdrBits, InputBits>::pre64;
4045  intbuf[60] = bufI[pos+61] << decimation_shifts<SdrBits, InputBits>::pre64;
4046  intbuf[61] = bufQ[pos+61] << decimation_shifts<SdrBits, InputBits>::pre64;
4047  intbuf[62] = bufI[pos+63] << decimation_shifts<SdrBits, InputBits>::pre64;
4048  intbuf[63] = bufQ[pos+63] << decimation_shifts<SdrBits, InputBits>::pre64;
4049 
4051  bufI[pos+0] << decimation_shifts<SdrBits, InputBits>::pre64,
4052  bufQ[pos+0] << decimation_shifts<SdrBits, InputBits>::pre64,
4053  &intbuf[0],
4054  &intbuf[1]);
4056  bufI[pos+2] << decimation_shifts<SdrBits, InputBits>::pre64,
4057  bufQ[pos+2] << decimation_shifts<SdrBits, InputBits>::pre64,
4058  &intbuf[2],
4059  &intbuf[3]);
4061  bufI[pos+4] << decimation_shifts<SdrBits, InputBits>::pre64,
4062  bufQ[pos+4] << decimation_shifts<SdrBits, InputBits>::pre64,
4063  &intbuf[4],
4064  &intbuf[5]);
4066  bufI[pos+6] << decimation_shifts<SdrBits, InputBits>::pre64,
4067  bufQ[pos+6] << decimation_shifts<SdrBits, InputBits>::pre64,
4068  &intbuf[6],
4069  &intbuf[7]);
4071  bufI[pos+8] << decimation_shifts<SdrBits, InputBits>::pre64,
4072  bufQ[pos+8] << decimation_shifts<SdrBits, InputBits>::pre64,
4073  &intbuf[8],
4074  &intbuf[9]);
4076  bufI[pos+10] << decimation_shifts<SdrBits, InputBits>::pre64,
4077  bufQ[pos+10] << decimation_shifts<SdrBits, InputBits>::pre64,
4078  &intbuf[10],
4079  &intbuf[11]);
4081  bufI[pos+12] << decimation_shifts<SdrBits, InputBits>::pre64,
4082  bufQ[pos+12] << decimation_shifts<SdrBits, InputBits>::pre64,
4083  &intbuf[12],
4084  &intbuf[13]);
4086  bufI[pos+14] << decimation_shifts<SdrBits, InputBits>::pre64,
4087  bufQ[pos+14] << decimation_shifts<SdrBits, InputBits>::pre64,
4088  &intbuf[14],
4089  &intbuf[15]);
4091  bufI[pos+16] << decimation_shifts<SdrBits, InputBits>::pre64,
4092  bufQ[pos+16] << decimation_shifts<SdrBits, InputBits>::pre64,
4093  &intbuf[16],
4094  &intbuf[17]);
4096  bufI[pos+18] << decimation_shifts<SdrBits, InputBits>::pre64,
4097  bufQ[pos+18] << decimation_shifts<SdrBits, InputBits>::pre64,
4098  &intbuf[18],
4099  &intbuf[19]);
4101  bufI[pos+20] << decimation_shifts<SdrBits, InputBits>::pre64,
4102  bufQ[pos+20] << decimation_shifts<SdrBits, InputBits>::pre64,
4103  &intbuf[20],
4104  &intbuf[21]);
4106  bufI[pos+22] << decimation_shifts<SdrBits, InputBits>::pre64,
4107  bufQ[pos+22] << decimation_shifts<SdrBits, InputBits>::pre64,
4108  &intbuf[22],
4109  &intbuf[23]);
4111  bufI[pos+24] << decimation_shifts<SdrBits, InputBits>::pre64,
4112  bufQ[pos+24] << decimation_shifts<SdrBits, InputBits>::pre64,
4113  &intbuf[24],
4114  &intbuf[25]);
4116  bufI[pos+26] << decimation_shifts<SdrBits, InputBits>::pre64,
4117  bufQ[pos+26] << decimation_shifts<SdrBits, InputBits>::pre64,
4118  &intbuf[26],
4119  &intbuf[27]);
4121  bufI[pos+28] << decimation_shifts<SdrBits, InputBits>::pre64,
4122  bufQ[pos+28] << decimation_shifts<SdrBits, InputBits>::pre64,
4123  &intbuf[28],
4124  &intbuf[29]);
4126  bufI[pos+30] << decimation_shifts<SdrBits, InputBits>::pre64,
4127  bufQ[pos+30] << decimation_shifts<SdrBits, InputBits>::pre64,
4128  &intbuf[30],
4129  &intbuf[31]);
4131  bufI[pos+32] << decimation_shifts<SdrBits, InputBits>::pre64,
4132  bufQ[pos+32] << decimation_shifts<SdrBits, InputBits>::pre64,
4133  &intbuf[32],
4134  &intbuf[33]);
4136  bufI[pos+34] << decimation_shifts<SdrBits, InputBits>::pre64,
4137  bufQ[pos+34] << decimation_shifts<SdrBits, InputBits>::pre64,
4138  &intbuf[34],
4139  &intbuf[35]);
4141  bufI[pos+36] << decimation_shifts<SdrBits, InputBits>::pre64,
4142  bufQ[pos+36] << decimation_shifts<SdrBits, InputBits>::pre64,
4143  &intbuf[36],
4144  &intbuf[37]);
4146  bufI[pos+38] << decimation_shifts<SdrBits, InputBits>::pre64,
4147  bufQ[pos+38] << decimation_shifts<SdrBits, InputBits>::pre64,
4148  &intbuf[38],
4149  &intbuf[39]);
4151  bufI[pos+40] << decimation_shifts<SdrBits, InputBits>::pre64,
4152  bufQ[pos+40] << decimation_shifts<SdrBits, InputBits>::pre64,
4153  &intbuf[40],
4154  &intbuf[41]);
4156  bufI[pos+42] << decimation_shifts<SdrBits, InputBits>::pre64,
4157  bufQ[pos+42] << decimation_shifts<SdrBits, InputBits>::pre64,
4158  &intbuf[42],
4159  &intbuf[43]);
4161  bufI[pos+44] << decimation_shifts<SdrBits, InputBits>::pre64,
4162  bufQ[pos+44] << decimation_shifts<SdrBits, InputBits>::pre64,
4163  &intbuf[44],
4164  &intbuf[45]);
4166  bufI[pos+46] << decimation_shifts<SdrBits, InputBits>::pre64,
4167  bufQ[pos+46] << decimation_shifts<SdrBits, InputBits>::pre64,
4168  &intbuf[46],
4169  &intbuf[47]);
4171  bufI[pos+48] << decimation_shifts<SdrBits, InputBits>::pre64,
4172  bufQ[pos+48] << decimation_shifts<SdrBits, InputBits>::pre64,
4173  &intbuf[48],
4174  &intbuf[49]);
4176  bufI[pos+50] << decimation_shifts<SdrBits, InputBits>::pre64,
4177  bufQ[pos+50] << decimation_shifts<SdrBits, InputBits>::pre64,
4178  &intbuf[50],
4179  &intbuf[51]);
4181  bufI[pos+52] << decimation_shifts<SdrBits, InputBits>::pre64,
4182  bufQ[pos+52] << decimation_shifts<SdrBits, InputBits>::pre64,
4183  &intbuf[52],
4184  &intbuf[53]);
4186  bufI[pos+54] << decimation_shifts<SdrBits, InputBits>::pre64,
4187  bufQ[pos+54] << decimation_shifts<SdrBits, InputBits>::pre64,
4188  &intbuf[54],
4189  &intbuf[55]);
4191  bufI[pos+56] << decimation_shifts<SdrBits, InputBits>::pre64,
4192  bufQ[pos+56] << decimation_shifts<SdrBits, InputBits>::pre64,
4193  &intbuf[56],
4194  &intbuf[57]);
4196  bufI[pos+58] << decimation_shifts<SdrBits, InputBits>::pre64,
4197  bufQ[pos+58] << decimation_shifts<SdrBits, InputBits>::pre64,
4198  &intbuf[58],
4199  &intbuf[59]);
4201  bufI[pos+60] << decimation_shifts<SdrBits, InputBits>::pre64,
4202  bufQ[pos+60] << decimation_shifts<SdrBits, InputBits>::pre64,
4203  &intbuf[60],
4204  &intbuf[61]);
4206  bufI[pos+62] << decimation_shifts<SdrBits, InputBits>::pre64,
4207  bufQ[pos+62] << decimation_shifts<SdrBits, InputBits>::pre64,
4208  &intbuf[62],
4209  &intbuf[63]);
4210 
4212  intbuf[0],
4213  intbuf[1],
4214  &intbuf[2],
4215  &intbuf[3]);
4217  intbuf[4],
4218  intbuf[5],
4219  &intbuf[6],
4220  &intbuf[7]);
4222  intbuf[8],
4223  intbuf[9],
4224  &intbuf[10],
4225  &intbuf[11]);
4227  intbuf[12],
4228  intbuf[13],
4229  &intbuf[14],
4230  &intbuf[15]);
4232  intbuf[16],
4233  intbuf[17],
4234  &intbuf[18],
4235  &intbuf[19]);
4237  intbuf[20],
4238  intbuf[21],
4239  &intbuf[22],
4240  &intbuf[23]);
4242  intbuf[24],
4243  intbuf[25],
4244  &intbuf[26],
4245  &intbuf[27]);
4247  intbuf[28],
4248  intbuf[29],
4249  &intbuf[30],
4250  &intbuf[31]);
4252  intbuf[32],
4253  intbuf[33],
4254  &intbuf[34],
4255  &intbuf[35]);
4257  intbuf[36],
4258  intbuf[37],
4259  &intbuf[38],
4260  &intbuf[39]);
4262  intbuf[40],
4263  intbuf[41],
4264  &intbuf[42],
4265  &intbuf[43]);
4267  intbuf[44],
4268  intbuf[45],
4269  &intbuf[46],
4270  &intbuf[47]);
4272  intbuf[48],
4273  intbuf[49],
4274  &intbuf[50],
4275  &intbuf[51]);
4277  intbuf[52],
4278  intbuf[53],
4279  &intbuf[54],
4280  &intbuf[55]);
4282  intbuf[56],
4283  intbuf[57],
4284  &intbuf[58],
4285  &intbuf[59]);
4287  intbuf[60],
4288  intbuf[61],
4289  &intbuf[62],
4290  &intbuf[63]);
4291 
4293  intbuf[2],
4294  intbuf[3],
4295  &intbuf[6],
4296  &intbuf[7]);
4298  intbuf[10],
4299  intbuf[11],
4300  &intbuf[14],
4301  &intbuf[15]);
4303  intbuf[18],
4304  intbuf[19],
4305  &intbuf[22],
4306  &intbuf[23]);
4308  intbuf[26],
4309  intbuf[27],
4310  &intbuf[30],
4311  &intbuf[31]);
4313  intbuf[34],
4314  intbuf[35],
4315  &intbuf[38],
4316  &intbuf[39]);
4318  intbuf[42],
4319  intbuf[43],
4320  &intbuf[46],
4321  &intbuf[47]);
4323  intbuf[50],
4324  intbuf[51],
4325  &intbuf[54],
4326  &intbuf[55]);
4328  intbuf[58],
4329  intbuf[59],
4330  &intbuf[62],
4331  &intbuf[63]);
4332 
4334  intbuf[6],
4335  intbuf[7],
4336  &intbuf[14],
4337  &intbuf[15]);
4339  intbuf[22],
4340  intbuf[23],
4341  &intbuf[30],
4342  &intbuf[31]);
4344  intbuf[38],
4345  intbuf[39],
4346  &intbuf[46],
4347  &intbuf[47]);
4349  intbuf[54],
4350  intbuf[55],
4351  &intbuf[62],
4352  &intbuf[63]);
4353 
4355  intbuf[14],
4356  intbuf[15],
4357  &intbuf[30],
4358  &intbuf[31]);
4360  intbuf[46],
4361  intbuf[47],
4362  &intbuf[62],
4363  &intbuf[63]);
4364 
4366  intbuf[30],
4367  intbuf[31],
4368  &intbuf[62],
4369  &intbuf[63]);
4370 
4371  (**it).setReal(intbuf[62] >> decimation_shifts<SdrBits, InputBits>::post64);
4372  (**it).setImag(intbuf[63] >> decimation_shifts<SdrBits, InputBits>::post64);
4373  ++(*it);
4374  }
4375 }
IntHalfbandFilterEO< qint32, qint32, DECIMATORS_HB_FILTER_ORDER > m_decimator2
Definition: decimators.h:452
IntHalfbandFilterEO< qint32, qint32, DECIMATORS_HB_FILTER_ORDER > m_decimator16
Definition: decimators.h:455
IntHalfbandFilterEO< qint32, qint32, DECIMATORS_HB_FILTER_ORDER > m_decimator8
Definition: decimators.h:454
IntHalfbandFilterEO< qint32, qint32, DECIMATORS_HB_FILTER_ORDER > m_decimator64
Definition: decimators.h:457
void myDecimate(const Sample *sample1, Sample *sample2)
IntHalfbandFilterEO< qint32, qint32, DECIMATORS_HB_FILTER_ORDER > m_decimator4
Definition: decimators.h:453
IntHalfbandFilterEO< qint32, qint32, DECIMATORS_HB_FILTER_ORDER > m_decimator32
Definition: decimators.h:456

◆ decimate64_inf()

template<typename StorageType , typename T, uint SdrBits, uint InputBits>
void Decimators< StorageType, T, SdrBits, InputBits >::decimate64_inf ( SampleVector::iterator *  it,
const T *  buf,
qint32  len 
)

Definition at line 2418 of file decimators.h.

Referenced by Bladerf1InputThread::callback(), SDRPlayThread::callback(), AirspyThread::callback(), BladeRF2InputThread::callbackSI(), SoapySDRInputThread::callbackSI12(), SoapySDRInputThread::callbackSI16(), SoapySDRInputThread::callbackSI8(), PlutoSDRInputThread::convert(), TestMIThread::convert_12(), TestSourceThread::convert_12(), TestMIThread::convert_16(), TestSourceThread::convert_16(), TestMIThread::convert_8(), TestSourceThread::convert_8(), MainBench::decimateInfII(), FCDProThread::work(), and FCDProPlusThread::work().

2419 {
2420  StorageType buf2[128], buf4[64], buf8[32], buf16[16], buf32[8], buf64[4];
2421 
2422  for (int pos = 0; pos < len - 255; pos += 256)
2423  {
2433  &buf2[0]);
2434 
2444  &buf2[4]);
2445 
2455  &buf2[8]);
2456 
2466  &buf2[12]);
2467 
2477  &buf2[16]);
2478 
2488  &buf2[20]);
2489 
2499  &buf2[24]);
2500 
2510  &buf2[28]);
2511 
2521  &buf2[32]);
2522 
2532  &buf2[36]);
2533 
2543  &buf2[40]);
2544 
2554  &buf2[44]);
2555 
2565  &buf2[48]);
2566 
2576  &buf2[52]);
2577 
2587  &buf2[56]);
2588 
2598  &buf2[60]);
2599 
2609  &buf2[64]);
2610 
2620  &buf2[68]);
2621 
2631  &buf2[72]);
2632 
2642  &buf2[76]);
2643 
2653  &buf2[80]);
2654 
2664  &buf2[84]);
2665 
2675  &buf2[88]);
2676 
2686  &buf2[92]);
2687 
2697  &buf2[96]);
2698 
2708  &buf2[100]);
2709 
2719  &buf2[104]);
2720 
2730  &buf2[108]);
2731 
2741  &buf2[112]);
2742 
2752  &buf2[116]);
2753 
2763  &buf2[120]);
2764 
2774  &buf2[124]);
2775 
2777  &buf2[0],
2778  &buf4[0]);
2779 
2781  &buf2[8],
2782  &buf4[4]);
2783 
2785  &buf2[16],
2786  &buf4[8]);
2787 
2789  &buf2[24],
2790  &buf4[12]);
2791 
2793  &buf2[32],
2794  &buf4[16]);
2795 
2797  &buf2[40],
2798  &buf4[20]);
2799 
2801  &buf2[48],
2802  &buf4[24]);
2803 
2805  &buf2[56],
2806  &buf4[28]);
2807 
2809  &buf2[64],
2810  &buf4[32]);
2811 
2813  &buf2[72],
2814  &buf4[36]);
2815 
2817  &buf2[80],
2818  &buf4[40]);
2819 
2821  &buf2[88],
2822  &buf4[44]);
2823 
2825  &buf2[96],
2826  &buf4[48]);
2827 
2829  &buf2[104],
2830  &buf4[52]);
2831 
2833  &buf2[112],
2834  &buf4[56]);
2835 
2837  &buf2[120],
2838  &buf4[60]);
2839 
2841  &buf4[0],
2842  &buf8[0]);
2843 
2845  &buf4[8],
2846  &buf8[4]);
2847 
2849  &buf4[16],
2850  &buf8[8]);
2851 
2853  &buf4[24],
2854  &buf8[12]);
2855 
2857  &buf4[32],
2858  &buf8[16]);
2859 
2861  &buf4[40],
2862  &buf8[20]);
2863 
2865  &buf4[48],
2866  &buf8[24]);
2867 
2869  &buf4[56],
2870  &buf8[28]);
2871 
2873  &buf8[0],
2874  &buf16[0]);
2875 
2877  &buf8[8],
2878  &buf16[4]);
2879 
2881  &buf8[16],
2882  &buf16[8]);
2883 
2885  &buf8[24],
2886  &buf16[12]);
2887 
2889  &buf16[0],
2890  &buf32[0]);
2891 
2893  &buf16[8],
2894  &buf32[4]);
2895 
2897  &buf32[0],
2898  &buf64[0]);
2899 
2900  (**it).setReal(buf64[0] >> decimation_shifts<SdrBits, InputBits>::post64);
2901  (**it).setImag(buf64[1] >> decimation_shifts<SdrBits, InputBits>::post64);
2902  ++(*it);
2903 
2904  (**it).setReal(buf64[2] >> decimation_shifts<SdrBits, InputBits>::post64);
2905  (**it).setImag(buf64[3] >> decimation_shifts<SdrBits, InputBits>::post64);
2906  ++(*it);
2907  }
2908 }
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)
IntHalfbandFilterEO< qint32, qint32, DECIMATORS_HB_FILTER_ORDER > m_decimator2
Definition: decimators.h:452
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)
IntHalfbandFilterEO< qint32, qint32, DECIMATORS_HB_FILTER_ORDER > m_decimator16
Definition: decimators.h:455
IntHalfbandFilterEO< qint32, qint32, DECIMATORS_HB_FILTER_ORDER > m_decimator8
Definition: decimators.h:454
IntHalfbandFilterEO< qint32, qint32, DECIMATORS_HB_FILTER_ORDER > m_decimator64
Definition: decimators.h:457
IntHalfbandFilterEO< qint32, qint32, DECIMATORS_HB_FILTER_ORDER > m_decimator4
Definition: decimators.h:453
IntHalfbandFilterEO< qint32, qint32, DECIMATORS_HB_FILTER_ORDER > m_decimator32
Definition: decimators.h:456
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)
+ Here is the caller graph for this function:

◆ decimate64_inf_txsync()

template<typename StorageType , typename T, uint SdrBits, uint InputBits>
void Decimators< StorageType, T, SdrBits, InputBits >::decimate64_inf_txsync ( SampleVector::iterator *  it,
const T *  buf,
qint32  len 
)

Definition at line 2911 of file decimators.h.

Referenced by HackRFInputThread::callback().

2912 {
2913  StorageType buf2[128], buf4[64], buf8[32], buf16[16], buf32[8], buf64[4];
2914 
2915  for (int pos = 0; pos < len - 255; pos += 256)
2916  {
2917  for (int i = 0; i < 32; i++)
2918  {
2928  &buf2[4*i]);
2929  }
2930 
2931  for (int i = 0; i < 16; i++)
2932  {
2934  &buf2[8*i],
2935  &buf4[4*i]);
2936  }
2937 
2938  for (int i = 0; i < 8; i++)
2939  {
2941  &buf4[8*i],
2942  &buf8[4*i]);
2943  }
2944 
2945  for (int i = 0; i < 4; i++)
2946  {
2948  &buf8[8*i],
2949  &buf16[4*i]);
2950  }
2951 
2953  &buf16[0],
2954  &buf32[0]);
2955 
2957  &buf16[8],
2958  &buf32[4]);
2959 
2961  &buf32[0],
2962  &buf64[0]);
2963 
2964  (**it).setReal(buf64[0] >> decimation_shifts<SdrBits, InputBits>::post64);
2965  (**it).setImag(buf64[1] >> decimation_shifts<SdrBits, InputBits>::post64);
2966  ++(*it);
2967 
2968  (**it).setReal(buf64[2] >> decimation_shifts<SdrBits, InputBits>::post64);
2969  (**it).setImag(buf64[3] >> decimation_shifts<SdrBits, InputBits>::post64);
2970  ++(*it);
2971  }
2972 }
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)
IntHalfbandFilterEO< qint32, qint32, DECIMATORS_HB_FILTER_ORDER > m_decimator2
Definition: decimators.h:452
IntHalfbandFilterEO< qint32, qint32, DECIMATORS_HB_FILTER_ORDER > m_decimator16
Definition: decimators.h:455
IntHalfbandFilterEO< qint32, qint32, DECIMATORS_HB_FILTER_ORDER > m_decimator8
Definition: decimators.h:454
IntHalfbandFilterEO< qint32, qint32, DECIMATORS_HB_FILTER_ORDER > m_decimator64
Definition: decimators.h:457
int32_t i
Definition: decimators.h:244
IntHalfbandFilterEO< qint32, qint32, DECIMATORS_HB_FILTER_ORDER > m_decimator4
Definition: decimators.h:453
IntHalfbandFilterEO< qint32, qint32, DECIMATORS_HB_FILTER_ORDER > m_decimator32
Definition: decimators.h:456
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)
+ Here is the caller graph for this function:

◆ decimate64_sup()

template<typename StorageType , typename T, uint SdrBits, uint InputBits>
void Decimators< StorageType, T, SdrBits, InputBits >::decimate64_sup ( SampleVector::iterator *  it,
const T *  buf,
qint32  len 
)

Definition at line 2975 of file decimators.h.

Referenced by Bladerf1InputThread::callback(), SDRPlayThread::callback(), AirspyThread::callback(), BladeRF2InputThread::callbackSI(), SoapySDRInputThread::callbackSI12(), SoapySDRInputThread::callbackSI16(), SoapySDRInputThread::callbackSI8(), PlutoSDRInputThread::convert(), TestMIThread::convert_12(), TestSourceThread::convert_12(), TestMIThread::convert_16(), TestSourceThread::convert_16(), TestMIThread::convert_8(), TestSourceThread::convert_8(), MainBench::decimateSupII(), FCDProThread::work(), and FCDProPlusThread::work().

2976 {
2977  StorageType buf2[128], buf4[64], buf8[32], buf16[16], buf32[8], buf64[4];
2978 
2979  for (int pos = 0; pos < len - 255; pos += 256)
2980  {
2981  for (int i = 0; i < 32; i++)
2982  {
2992  &buf2[4*i]);
2993  }
2994 
2995  for (int i = 0; i < 16; i++)
2996  {
2998  &buf2[8*i],
2999  &buf4[4*i]);
3000  }
3001 
3002  for (int i = 0; i < 8; i++)
3003  {
3005  &buf4[8*i],
3006  &buf8[4*i]);
3007  }
3008 
3009  for (int i = 0; i < 4; i++)
3010  {
3012  &buf8[8*i],
3013  &buf16[4*i]);
3014  }
3015 
3017  &buf16[0],
3018  &buf32[0]);
3019 
3021  &buf16[8],
3022  &buf32[4]);
3023 
3025  &buf32[0],
3026  &buf64[0]);
3027 
3028 
3029  (**it).setReal(buf64[0] >> decimation_shifts<SdrBits, InputBits>::post64);
3030  (**it).setImag(buf64[1] >> decimation_shifts<SdrBits, InputBits>::post64);
3031  ++(*it);
3032 
3033  (**it).setReal(buf64[2] >> decimation_shifts<SdrBits, InputBits>::post64);
3034  (**it).setImag(buf64[3] >> decimation_shifts<SdrBits, InputBits>::post64);
3035  ++(*it);
3036  }
3037 }
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)
IntHalfbandFilterEO< qint32, qint32, DECIMATORS_HB_FILTER_ORDER > m_decimator2
Definition: decimators.h:452
IntHalfbandFilterEO< qint32, qint32, DECIMATORS_HB_FILTER_ORDER > m_decimator16
Definition: decimators.h:455
IntHalfbandFilterEO< qint32, qint32, DECIMATORS_HB_FILTER_ORDER > m_decimator8
Definition: decimators.h:454
IntHalfbandFilterEO< qint32, qint32, DECIMATORS_HB_FILTER_ORDER > m_decimator64
Definition: decimators.h:457
int32_t i
Definition: decimators.h:244
IntHalfbandFilterEO< qint32, qint32, DECIMATORS_HB_FILTER_ORDER > m_decimator4
Definition: decimators.h:453
IntHalfbandFilterEO< qint32, qint32, DECIMATORS_HB_FILTER_ORDER > m_decimator32
Definition: decimators.h:456
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)
+ Here is the caller graph for this function:

◆ decimate64_sup_txsync()

template<typename StorageType , typename T, uint SdrBits, uint InputBits>
void Decimators< StorageType, T, SdrBits, InputBits >::decimate64_sup_txsync ( SampleVector::iterator *  it,
const T *  buf,
qint32  len 
)

Definition at line 3440 of file decimators.h.

Referenced by HackRFInputThread::callback().

3441 {
3442  StorageType buf2[128], buf4[64], buf8[32], buf16[16], buf32[8], buf64[4];
3443 
3444  for (int pos = 0; pos < len - 255; pos += 256)
3445  {
3446  for (int i = 0; i < 32; i++)
3447  {
3457  &buf2[4*i]);
3458  }
3459 
3460  for (int i = 0; i < 16; i++)
3461  {
3463  &buf2[8*i],
3464  &buf4[4*i]);
3465  }
3466 
3467  for (int i = 0; i < 8; i++)
3468  {
3470  &buf4[8*i],
3471  &buf8[4*i]);
3472  }
3473 
3474  for (int i = 0; i < 4; i++)
3475  {
3477  &buf8[8*i],
3478  &buf16[4*i]);
3479  }
3480 
3482  &buf16[0],
3483  &buf32[0]);
3484 
3486  &buf16[8],
3487  &buf32[4]);
3488 
3490  &buf32[0],
3491  &buf64[0]);
3492 
3493  (**it).setReal(buf64[0] >> decimation_shifts<SdrBits, InputBits>::post64);
3494  (**it).setImag(buf64[1] >> decimation_shifts<SdrBits, InputBits>::post64);
3495  ++(*it);
3496 
3497  (**it).setReal(buf64[2] >> decimation_shifts<SdrBits, InputBits>::post64);
3498  (**it).setImag(buf64[3] >> decimation_shifts<SdrBits, InputBits>::post64);
3499  ++(*it);
3500  }
3501 }
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)
IntHalfbandFilterEO< qint32, qint32, DECIMATORS_HB_FILTER_ORDER > m_decimator2
Definition: decimators.h:452
IntHalfbandFilterEO< qint32, qint32, DECIMATORS_HB_FILTER_ORDER > m_decimator16
Definition: decimators.h:455
IntHalfbandFilterEO< qint32, qint32, DECIMATORS_HB_FILTER_ORDER > m_decimator8
Definition: decimators.h:454
IntHalfbandFilterEO< qint32, qint32, DECIMATORS_HB_FILTER_ORDER > m_decimator64
Definition: decimators.h:457
int32_t i
Definition: decimators.h:244
IntHalfbandFilterEO< qint32, qint32, DECIMATORS_HB_FILTER_ORDER > m_decimator4
Definition: decimators.h:453
IntHalfbandFilterEO< qint32, qint32, DECIMATORS_HB_FILTER_ORDER > m_decimator32
Definition: decimators.h:456
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)
+ Here is the caller graph for this function:

◆ decimate8_cen() [1/2]

template<typename StorageType , typename T, uint SdrBits, uint InputBits>
void Decimators< StorageType, T, SdrBits, InputBits >::decimate8_cen ( SampleVector::iterator *  it,
const T *  buf,
qint32  len 
)

Definition at line 1057 of file decimators.h.

Referenced by Bladerf1InputThread::callback(), SDRPlayThread::callback(), HackRFInputThread::callback(), AirspyThread::callback(), LimeSDRInputThread::callback(), XTRXInputThread::callbackSI(), BladeRF2InputThread::callbackSI(), SoapySDRInputThread::callbackSI12(), SoapySDRInputThread::callbackSI16(), SoapySDRInputThread::callbackSI8(), PlutoSDRInputThread::convert(), TestMIThread::convert_12(), TestSourceThread::convert_12(), TestMIThread::convert_16(), TestSourceThread::convert_16(), TestMIThread::convert_8(), TestSourceThread::convert_8(), MainBench::decimateII(), FCDProThread::work(), and FCDProPlusThread::work().

1058 {
1059  StorageType intbuf[8];
1060 
1061  for (int pos = 0; pos < len - 15; pos += 16)
1062  {
1063  intbuf[0] = buf[pos+2] << decimation_shifts<SdrBits, InputBits>::pre8;
1064  intbuf[1] = buf[pos+3] << decimation_shifts<SdrBits, InputBits>::pre8;
1065  intbuf[2] = buf[pos+6] << decimation_shifts<SdrBits, InputBits>::pre8;
1066  intbuf[3] = buf[pos+7] << decimation_shifts<SdrBits, InputBits>::pre8;
1067  intbuf[4] = buf[pos+10] << decimation_shifts<SdrBits, InputBits>::pre8;
1068  intbuf[5] = buf[pos+11] << decimation_shifts<SdrBits, InputBits>::pre8;
1069  intbuf[6] = buf[pos+14] << decimation_shifts<SdrBits, InputBits>::pre8;
1070  intbuf[7] = buf[pos+15] << decimation_shifts<SdrBits, InputBits>::pre8;
1071 
1073  buf[pos+0] << decimation_shifts<SdrBits, InputBits>::pre8,
1074  buf[pos+1] << decimation_shifts<SdrBits, InputBits>::pre8,
1075  &intbuf[0],
1076  &intbuf[1]);
1078  buf[pos+4] << decimation_shifts<SdrBits, InputBits>::pre8,
1079  buf[pos+5] << decimation_shifts<SdrBits, InputBits>::pre8,
1080  &intbuf[2],
1081  &intbuf[3]);
1083  buf[pos+8] << decimation_shifts<SdrBits, InputBits>::pre8,
1084  buf[pos+9] << decimation_shifts<SdrBits, InputBits>::pre8,
1085  &intbuf[4],
1086  &intbuf[5]);
1088  buf[pos+12] << decimation_shifts<SdrBits, InputBits>::pre8,
1089  buf[pos+13] << decimation_shifts<SdrBits, InputBits>::pre8,
1090  &intbuf[6],
1091  &intbuf[7]);
1092 
1094  intbuf[0],
1095  intbuf[1],
1096  &intbuf[2],
1097  &intbuf[3]);
1099  intbuf[4],
1100  intbuf[5],
1101  &intbuf[6],
1102  &intbuf[7]);
1103 
1105  intbuf[2],
1106  intbuf[3],
1107  &intbuf[6],
1108  &intbuf[7]);
1109 
1110  (**it).setReal(intbuf[6] >> decimation_shifts<SdrBits, InputBits>::post8);
1111  (**it).setImag(intbuf[7] >> decimation_shifts<SdrBits, InputBits>::post8);
1112  ++(*it);
1113  }
1114 }
IntHalfbandFilterEO< qint32, qint32, DECIMATORS_HB_FILTER_ORDER > m_decimator2
Definition: decimators.h:452
IntHalfbandFilterEO< qint32, qint32, DECIMATORS_HB_FILTER_ORDER > m_decimator8
Definition: decimators.h:454
void myDecimate(const Sample *sample1, Sample *sample2)
IntHalfbandFilterEO< qint32, qint32, DECIMATORS_HB_FILTER_ORDER > m_decimator4
Definition: decimators.h:453
+ Here is the caller graph for this function:

◆ decimate8_cen() [2/2]

template<typename StorageType , typename T, uint SdrBits, uint InputBits>
void Decimators< StorageType, T, SdrBits, InputBits >::decimate8_cen ( SampleVector::iterator *  it,
const T *  bufI,
const T *  bufQ,
qint32  len 
)

Definition at line 3602 of file decimators.h.

3603 {
3604  StorageType intbuf[8];
3605 
3606  for (int pos = 0; pos < len - 7; pos += 8)
3607  {
3608  intbuf[0] = bufI[pos+1] << decimation_shifts<SdrBits, InputBits>::pre8;
3609  intbuf[1] = bufQ[pos+1] << decimation_shifts<SdrBits, InputBits>::pre8;
3610  intbuf[2] = bufI[pos+3] << decimation_shifts<SdrBits, InputBits>::pre8;
3611  intbuf[3] = bufQ[pos+3] << decimation_shifts<SdrBits, InputBits>::pre8;
3612  intbuf[4] = bufI[pos+5] << decimation_shifts<SdrBits, InputBits>::pre8;
3613  intbuf[5] = bufQ[pos+5] << decimation_shifts<SdrBits, InputBits>::pre8;
3614  intbuf[6] = bufI[pos+7] << decimation_shifts<SdrBits, InputBits>::pre8;
3615  intbuf[7] = bufQ[pos+7] << decimation_shifts<SdrBits, InputBits>::pre8;
3616 
3618  bufI[pos+0] << decimation_shifts<SdrBits, InputBits>::pre8,
3619  bufQ[pos+0] << decimation_shifts<SdrBits, InputBits>::pre8,
3620  &intbuf[0],
3621  &intbuf[1]);
3623  bufI[pos+2] << decimation_shifts<SdrBits, InputBits>::pre8,
3624  bufQ[pos+2] << decimation_shifts<SdrBits, InputBits>::pre8,
3625  &intbuf[2],
3626  &intbuf[3]);
3628  bufI[pos+4] << decimation_shifts<SdrBits, InputBits>::pre8,
3629  bufQ[pos+4] << decimation_shifts<SdrBits, InputBits>::pre8,
3630  &intbuf[4],
3631  &intbuf[5]);
3633  bufI[pos+6] << decimation_shifts<SdrBits, InputBits>::pre8,
3634  bufQ[pos+6] << decimation_shifts<SdrBits, InputBits>::pre8,
3635  &intbuf[6],
3636  &intbuf[7]);
3637 
3639  intbuf[0],
3640  intbuf[1],
3641  &intbuf[2],
3642  &intbuf[3]);
3644  intbuf[4],
3645  intbuf[5],
3646  &intbuf[6],
3647  &intbuf[7]);
3648 
3650  intbuf[2],
3651  intbuf[3],
3652  &intbuf[6],
3653  &intbuf[7]);
3654 
3655  (**it).setReal(intbuf[6] >> decimation_shifts<SdrBits, InputBits>::post8);
3656  (**it).setImag(intbuf[7] >> decimation_shifts<SdrBits, InputBits>::post8);
3657  ++(*it);
3658  }
3659 }
IntHalfbandFilterEO< qint32, qint32, DECIMATORS_HB_FILTER_ORDER > m_decimator2
Definition: decimators.h:452
IntHalfbandFilterEO< qint32, qint32, DECIMATORS_HB_FILTER_ORDER > m_decimator8
Definition: decimators.h:454
void myDecimate(const Sample *sample1, Sample *sample2)
IntHalfbandFilterEO< qint32, qint32, DECIMATORS_HB_FILTER_ORDER > m_decimator4
Definition: decimators.h:453

◆ decimate8_inf()

template<typename StorageType , typename T, uint SdrBits, uint InputBits>
void Decimators< StorageType, T, SdrBits, InputBits >::decimate8_inf ( SampleVector::iterator *  it,
const T *  buf,
qint32  len 
)

Definition at line 825 of file decimators.h.

Referenced by Bladerf1InputThread::callback(), SDRPlayThread::callback(), AirspyThread::callback(), BladeRF2InputThread::callbackSI(), SoapySDRInputThread::callbackSI12(), SoapySDRInputThread::callbackSI16(), SoapySDRInputThread::callbackSI8(), PlutoSDRInputThread::convert(), TestMIThread::convert_12(), TestSourceThread::convert_12(), TestMIThread::convert_16(), TestSourceThread::convert_16(), TestMIThread::convert_8(), TestSourceThread::convert_8(), MainBench::decimateInfII(), FCDProThread::work(), and FCDProPlusThread::work().

826 {
827  StorageType buf2[16], buf4[8], buf8[4];
828 
829  for (int pos = 0; pos < len - 31; pos += 32)
830  {
840  &buf2[0]);
841 
851  &buf2[4]);
852 
862  &buf2[8]);
863 
873  &buf2[12]);
874 
876  &buf2[0],
877  &buf4[0]);
878 
880  &buf2[8],
881  &buf4[4]);
882 
884  &buf4[0],
885  &buf8[0]);
886 
887  (**it).setReal(buf8[0] >> decimation_shifts<SdrBits, InputBits>::post8);
888  (**it).setImag(buf8[1] >> decimation_shifts<SdrBits, InputBits>::post8);
889  ++(*it);
890 
891  (**it).setReal(buf8[2] >> decimation_shifts<SdrBits, InputBits>::post8);
892  (**it).setImag(buf8[3] >> decimation_shifts<SdrBits, InputBits>::post8);
893  ++(*it);
894  }
895 }
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)
IntHalfbandFilterEO< qint32, qint32, DECIMATORS_HB_FILTER_ORDER > m_decimator2
Definition: decimators.h:452
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)
IntHalfbandFilterEO< qint32, qint32, DECIMATORS_HB_FILTER_ORDER > m_decimator8
Definition: decimators.h:454
IntHalfbandFilterEO< qint32, qint32, DECIMATORS_HB_FILTER_ORDER > m_decimator4
Definition: decimators.h:453
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)
+ Here is the caller graph for this function:

◆ decimate8_inf_txsync()

template<typename StorageType , typename T, uint SdrBits, uint InputBits>
void Decimators< StorageType, T, SdrBits, InputBits >::decimate8_inf_txsync ( SampleVector::iterator *  it,
const T *  buf,
qint32  len 
)

Definition at line 898 of file decimators.h.

Referenced by HackRFInputThread::callback().

899 {
900  StorageType buf2[16], buf4[8], buf8[4];
901 
902  for (int pos = 0; pos < len - 31; pos += 32)
903  {
904  for (int i = 0; i < 4; i++)
905  {
915  &buf2[4*i]);
916  }
917 
919  &buf2[0],
920  &buf4[0]);
921 
923  &buf2[8],
924  &buf4[4]);
925 
927  &buf4[0],
928  &buf8[0]);
929 
930  (**it).setReal(buf8[0] >> decimation_shifts<SdrBits, InputBits>::post8);
931  (**it).setImag(buf8[1] >> decimation_shifts<SdrBits, InputBits>::post8);
932  ++(*it);
933 
934  (**it).setReal(buf8[2] >> decimation_shifts<SdrBits, InputBits>::post8);
935  (**it).setImag(buf8[3] >> decimation_shifts<SdrBits, InputBits>::post8);
936  ++(*it);
937  }
938 }
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)
IntHalfbandFilterEO< qint32, qint32, DECIMATORS_HB_FILTER_ORDER > m_decimator2
Definition: decimators.h:452
IntHalfbandFilterEO< qint32, qint32, DECIMATORS_HB_FILTER_ORDER > m_decimator8
Definition: decimators.h:454
int32_t i
Definition: decimators.h:244
IntHalfbandFilterEO< qint32, qint32, DECIMATORS_HB_FILTER_ORDER > m_decimator4
Definition: decimators.h:453
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)
+ Here is the caller graph for this function:

◆ decimate8_sup()

template<typename StorageType , typename T, uint SdrBits, uint InputBits>
void Decimators< StorageType, T, SdrBits, InputBits >::decimate8_sup ( SampleVector::iterator *  it,
const T *  buf,
qint32  len 
)

Definition at line 941 of file decimators.h.

Referenced by Bladerf1InputThread::callback(), SDRPlayThread::callback(), AirspyThread::callback(), BladeRF2InputThread::callbackSI(), SoapySDRInputThread::callbackSI12(), SoapySDRInputThread::callbackSI16(), SoapySDRInputThread::callbackSI8(), PlutoSDRInputThread::convert(), TestMIThread::convert_12(), TestSourceThread::convert_12(), TestMIThread::convert_16(), TestSourceThread::convert_16(), TestMIThread::convert_8(), TestSourceThread::convert_8(), MainBench::decimateSupII(), FCDProThread::work(), and FCDProPlusThread::work().

942 {
943  StorageType buf2[16], buf4[8], buf8[4];
944 
945  for (int pos = 0; pos < len - 31; pos += 32)
946  {
956  &buf2[0]);
957 
967  &buf2[4]);
968 
978  &buf2[8]);
979 
989  &buf2[12]);
990 
992  &buf2[0],
993  &buf4[0]);
994 
996  &buf2[8],
997  &buf4[4]);
998 
1000  &buf4[0],
1001  &buf8[0]);
1002 
1003  (**it).setReal(buf8[0] >> decimation_shifts<SdrBits, InputBits>::post8);
1004  (**it).setImag(buf8[1] >> decimation_shifts<SdrBits, InputBits>::post8);
1005  ++(*it);
1006 
1007  (**it).setReal(buf8[2] >> decimation_shifts<SdrBits, InputBits>::post8);
1008  (**it).setImag(buf8[3] >> decimation_shifts<SdrBits, InputBits>::post8);
1009  ++(*it);
1010  }
1011 }
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)
IntHalfbandFilterEO< qint32, qint32, DECIMATORS_HB_FILTER_ORDER > m_decimator2
Definition: decimators.h:452
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)
IntHalfbandFilterEO< qint32, qint32, DECIMATORS_HB_FILTER_ORDER > m_decimator8
Definition: decimators.h:454
IntHalfbandFilterEO< qint32, qint32, DECIMATORS_HB_FILTER_ORDER > m_decimator4
Definition: decimators.h:453
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)
+ Here is the caller graph for this function:

◆ decimate8_sup_txsync()

template<typename StorageType , typename T, uint SdrBits, uint InputBits>
void Decimators< StorageType, T, SdrBits, InputBits >::decimate8_sup_txsync ( SampleVector::iterator *  it,
const T *  buf,
qint32  len 
)

Definition at line 1014 of file decimators.h.

Referenced by HackRFInputThread::callback().

1015 {
1016  StorageType buf2[16], buf4[8], buf8[4];
1017 
1018  for (int pos = 0; pos < len - 31; pos += 32)
1019  {
1020  for (int i = 0; i < 4; i++)
1021  {
1031  &buf2[4*i]);
1032  }
1033 
1035  &buf2[0],
1036  &buf4[0]);
1037 
1039  &buf2[8],
1040  &buf4[4]);
1041 
1043  &buf4[0],
1044  &buf8[0]);
1045 
1046  (**it).setReal(buf8[0] >> decimation_shifts<SdrBits, InputBits>::post8);
1047  (**it).setImag(buf8[1] >> decimation_shifts<SdrBits, InputBits>::post8);
1048  ++(*it);
1049 
1050  (**it).setReal(buf8[2] >> decimation_shifts<SdrBits, InputBits>::post8);
1051  (**it).setImag(buf8[3] >> decimation_shifts<SdrBits, InputBits>::post8);
1052  ++(*it);
1053  }
1054 }
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)
IntHalfbandFilterEO< qint32, qint32, DECIMATORS_HB_FILTER_ORDER > m_decimator2
Definition: decimators.h:452
IntHalfbandFilterEO< qint32, qint32, DECIMATORS_HB_FILTER_ORDER > m_decimator8
Definition: decimators.h:454
int32_t i
Definition: decimators.h:244
IntHalfbandFilterEO< qint32, qint32, DECIMATORS_HB_FILTER_ORDER > m_decimator4
Definition: decimators.h:453
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)
+ Here is the caller graph for this function:

Member Data Documentation

◆ m_decimator16

template<typename StorageType, typename T, uint SdrBits, uint InputBits>
IntHalfbandFilterEO<qint32, qint32, DECIMATORS_HB_FILTER_ORDER> Decimators< StorageType, T, SdrBits, InputBits >::m_decimator16
private

Definition at line 455 of file decimators.h.

◆ m_decimator2

template<typename StorageType, typename T, uint SdrBits, uint InputBits>
IntHalfbandFilterEO<qint32, qint32, DECIMATORS_HB_FILTER_ORDER> Decimators< StorageType, T, SdrBits, InputBits >::m_decimator2
private

Definition at line 452 of file decimators.h.

◆ m_decimator32

template<typename StorageType, typename T, uint SdrBits, uint InputBits>
IntHalfbandFilterEO<qint32, qint32, DECIMATORS_HB_FILTER_ORDER> Decimators< StorageType, T, SdrBits, InputBits >::m_decimator32
private

Definition at line 456 of file decimators.h.

◆ m_decimator4

template<typename StorageType, typename T, uint SdrBits, uint InputBits>
IntHalfbandFilterEO<qint32, qint32, DECIMATORS_HB_FILTER_ORDER> Decimators< StorageType, T, SdrBits, InputBits >::m_decimator4
private

Definition at line 453 of file decimators.h.

◆ m_decimator64

template<typename StorageType, typename T, uint SdrBits, uint InputBits>
IntHalfbandFilterEO<qint32, qint32, DECIMATORS_HB_FILTER_ORDER> Decimators< StorageType, T, SdrBits, InputBits >::m_decimator64
private

Definition at line 457 of file decimators.h.

◆ m_decimator8

template<typename StorageType, typename T, uint SdrBits, uint InputBits>
IntHalfbandFilterEO<qint32, qint32, DECIMATORS_HB_FILTER_ORDER> Decimators< StorageType, T, SdrBits, InputBits >::m_decimator8
private

Definition at line 454 of file decimators.h.


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