diff --git a/plugins/samplesource/airspyhf/airspyhfgui.cpp b/plugins/samplesource/airspyhf/airspyhfgui.cpp
index 791569a2c..93da0660d 100644
--- a/plugins/samplesource/airspyhf/airspyhfgui.cpp
+++ b/plugins/samplesource/airspyhf/airspyhfgui.cpp
@@ -292,7 +292,7 @@ void AirspyHFGui::on_sampleRate_currentIndexChanged(int index)
void AirspyHFGui::on_decim_currentIndexChanged(int index)
{
- if ((index < 0) || (index > 6))
+ if ((index < 0) || (index > 8))
return;
m_settings.m_log2Decim = index;
sendSettings();
diff --git a/plugins/samplesource/airspyhf/airspyhfgui.ui b/plugins/samplesource/airspyhf/airspyhfgui.ui
index 1d0e2455a..40463d73b 100644
--- a/plugins/samplesource/airspyhf/airspyhfgui.ui
+++ b/plugins/samplesource/airspyhf/airspyhfgui.ui
@@ -395,6 +395,16 @@
64
+ -
+
+ 128
+
+
+ -
+
+ 256
+
+
-
@@ -591,17 +601,17 @@
+
+ ButtonSwitch
+ QToolButton
+
+
ValueDial
QWidget
1
-
- ButtonSwitch
- QToolButton
-
-
TransverterButton
QPushButton
diff --git a/plugins/samplesource/airspyhf/airspyhfworker.cpp b/plugins/samplesource/airspyhf/airspyhfworker.cpp
index a7227528a..22fdc1b1b 100644
--- a/plugins/samplesource/airspyhf/airspyhfworker.cpp
+++ b/plugins/samplesource/airspyhf/airspyhfworker.cpp
@@ -111,6 +111,12 @@ void AirspyHFWorker::callbackIQ(const float* buf, qint32 len)
case 6:
m_decimatorsIQ.decimate64_cen(&it, buf, len);
break;
+ case 7:
+ m_decimatorsIQ.decimate128_cen(&it, buf, len);
+ break;
+ case 8:
+ m_decimatorsIQ.decimate256_cen(&it, buf, len);
+ break;
default:
break;
}
@@ -145,6 +151,12 @@ void AirspyHFWorker::callbackQI(const float* buf, qint32 len)
case 6:
m_decimatorsQI.decimate64_cen(&it, buf, len);
break;
+ case 7:
+ m_decimatorsQI.decimate128_cen(&it, buf, len);
+ break;
+ case 8:
+ m_decimatorsQI.decimate256_cen(&it, buf, len);
+ break;
default:
break;
}
diff --git a/plugins/samplesource/airspyhf/readme.md b/plugins/samplesource/airspyhf/readme.md
index d43807468..b4df31de0 100644
--- a/plugins/samplesource/airspyhf/readme.md
+++ b/plugins/samplesource/airspyhf/readme.md
@@ -71,7 +71,7 @@ Although the combo box is there to present a choice of sample rates at present t
8: Decimation factor
-The I/Q stream from the AirspyHF to host is downsampled by a power of two before being sent to the passband. Possible values are increasing powers of two: 1 (no decimation), 2, 4, 8, 16, 32, 64. When using audio channel plugins (AM, DSD, NFM, SSB...) please make sure that the sample rate is not less than the audio sample rate.
+The I/Q stream from the AirspyHF to host is downsampled by a power of two before being sent to the passband. Possible values are increasing powers of two: 1 (no decimation), 2, 4, 8, 16, 32, 64, 128, 256. When using audio channel plugins (AM, DSD, NFM, SSB...) please make sure that the sample rate is not less than the audio sample rate.
9: Transverter mode open dialog
diff --git a/sdrbase/dsp/decimatorsfi.h b/sdrbase/dsp/decimatorsfi.h
index 67babc61e..c5b84c946 100644
--- a/sdrbase/dsp/decimatorsfi.h
+++ b/sdrbase/dsp/decimatorsfi.h
@@ -47,6 +47,8 @@ public:
void decimate64_inf(SampleVector::iterator* it, const float* buf, qint32 nbIAndQ);
void decimate64_sup(SampleVector::iterator* it, const float* buf, qint32 nbIAndQ);
void decimate64_cen(SampleVector::iterator* it, const float* buf, qint32 nbIAndQ);
+ void decimate128_cen(SampleVector::iterator* it, const float* buf, qint32 nbIAndQ);
+ void decimate256_cen(SampleVector::iterator* it, const float* buf, qint32 nbIAndQ);
IntHalfbandFilterEOF m_decimator2; // 1st stages
IntHalfbandFilterEOF m_decimator2s; // 1st stages - straight
@@ -55,6 +57,8 @@ public:
IntHalfbandFilterEOF m_decimator16; // 4th stages
IntHalfbandFilterEOF m_decimator32; // 5th stages
IntHalfbandFilterEOF m_decimator64; // 6th stages
+ IntHalfbandFilterEOF m_decimator128; // 7th stages
+ IntHalfbandFilterEOF m_decimator256; // 8th stages
};
@@ -1135,4 +1139,845 @@ void DecimatorsFI::decimate64_cen(SampleVector::iterator* it, const flo
}
}
+template
+void DecimatorsFI::decimate128_cen(SampleVector::iterator* it, const float* buf, qint32 nbIAndQ)
+{
+ float intbuf[128];
+
+ for (int pos = 0; pos < nbIAndQ - 255; pos += 256)
+ {
+ float *intbufp;
+ int posi;
+
+ intbufp = intbuf;
+ posi = pos;
+ for (int i = 0; i < 4; i++)
+ {
+ intbufp[0] = buf[posi+2];
+ intbufp[1] = buf[posi+3];
+ intbufp[2] = buf[posi+6];
+ intbufp[3] = buf[posi+7];
+ intbufp[4] = buf[posi+10];
+ intbufp[5] = buf[posi+11];
+ intbufp[6] = buf[posi+14];
+ intbufp[7] = buf[posi+15];
+ intbufp[8] = buf[posi+18];
+ intbufp[9] = buf[posi+19];
+ intbufp[10] = buf[posi+22];
+ intbufp[11] = buf[posi+23];
+ intbufp[12] = buf[posi+26];
+ intbufp[13] = buf[posi+27];
+ intbufp[14] = buf[posi+30];
+ intbufp[15] = buf[posi+31];
+ intbufp[16] = buf[posi+34];
+ intbufp[17] = buf[posi+35];
+ intbufp[18] = buf[posi+38];
+ intbufp[19] = buf[posi+39];
+ intbufp[20] = buf[posi+42];
+ intbufp[21] = buf[posi+43];
+ intbufp[22] = buf[posi+46];
+ intbufp[23] = buf[posi+47];
+ intbufp[24] = buf[posi+50];
+ intbufp[25] = buf[posi+51];
+ intbufp[26] = buf[posi+54];
+ intbufp[27] = buf[posi+55];
+ intbufp[28] = buf[posi+58];
+ intbufp[29] = buf[posi+59];
+ intbufp[30] = buf[posi+62];
+ intbufp[31] = buf[posi+63];
+ intbufp += 32;
+ posi += 64;
+ }
+
+ intbufp = intbuf;
+ posi = pos;
+ for (int i = 0; i < 2; i++)
+ {
+ m_decimator2.myDecimate(
+ buf[posi+0],
+ buf[posi+1],
+ &intbufp[0],
+ &intbufp[1]);
+ m_decimator2.myDecimate(
+ buf[posi+4],
+ buf[posi+5],
+ &intbufp[2],
+ &intbufp[3]);
+ m_decimator2.myDecimate(
+ buf[posi+8],
+ buf[posi+9],
+ &intbufp[4],
+ &intbufp[5]);
+ m_decimator2.myDecimate(
+ buf[posi+12],
+ buf[posi+13],
+ &intbufp[6],
+ &intbufp[7]);
+ m_decimator2.myDecimate(
+ buf[posi+16],
+ buf[posi+17],
+ &intbufp[8],
+ &intbufp[9]);
+ m_decimator2.myDecimate(
+ buf[posi+20],
+ buf[posi+21],
+ &intbufp[10],
+ &intbufp[11]);
+ m_decimator2.myDecimate(
+ buf[posi+24],
+ buf[posi+25],
+ &intbufp[12],
+ &intbufp[13]);
+ m_decimator2.myDecimate(
+ buf[posi+28],
+ buf[posi+29],
+ &intbufp[14],
+ &intbufp[15]);
+ m_decimator2.myDecimate(
+ buf[posi+32],
+ buf[posi+33],
+ &intbufp[16],
+ &intbufp[17]);
+ m_decimator2.myDecimate(
+ buf[posi+36],
+ buf[posi+37],
+ &intbufp[18],
+ &intbufp[19]);
+ m_decimator2.myDecimate(
+ buf[posi+40],
+ buf[posi+41],
+ &intbufp[20],
+ &intbufp[21]);
+ m_decimator2.myDecimate(
+ buf[posi+44],
+ buf[posi+45],
+ &intbufp[22],
+ &intbufp[23]);
+ m_decimator2.myDecimate(
+ buf[posi+48],
+ buf[posi+49],
+ &intbufp[24],
+ &intbufp[25]);
+ m_decimator2.myDecimate(
+ buf[posi+52],
+ buf[posi+53],
+ &intbufp[26],
+ &intbufp[27]);
+ m_decimator2.myDecimate(
+ buf[posi+56],
+ buf[posi+57],
+ &intbufp[28],
+ &intbufp[29]);
+ m_decimator2.myDecimate(
+ buf[posi+60],
+ buf[posi+61],
+ &intbufp[30],
+ &intbufp[31]);
+ m_decimator2.myDecimate(
+ buf[posi+64],
+ buf[posi+65],
+ &intbufp[32],
+ &intbufp[33]);
+ m_decimator2.myDecimate(
+ buf[posi+68],
+ buf[posi+69],
+ &intbufp[34],
+ &intbufp[35]);
+ m_decimator2.myDecimate(
+ buf[posi+72],
+ buf[posi+73],
+ &intbufp[36],
+ &intbufp[37]);
+ m_decimator2.myDecimate(
+ buf[posi+76],
+ buf[posi+77],
+ &intbufp[38],
+ &intbufp[39]);
+ m_decimator2.myDecimate(
+ buf[posi+80],
+ buf[posi+81],
+ &intbufp[40],
+ &intbufp[41]);
+ m_decimator2.myDecimate(
+ buf[posi+84],
+ buf[posi+85],
+ &intbufp[42],
+ &intbufp[43]);
+ m_decimator2.myDecimate(
+ buf[posi+88],
+ buf[posi+89],
+ &intbufp[44],
+ &intbufp[45]);
+ m_decimator2.myDecimate(
+ buf[posi+92],
+ buf[posi+93],
+ &intbufp[46],
+ &intbufp[47]);
+ m_decimator2.myDecimate(
+ buf[posi+96],
+ buf[posi+97],
+ &intbufp[48],
+ &intbufp[49]);
+ m_decimator2.myDecimate(
+ buf[posi+100],
+ buf[posi+101],
+ &intbufp[50],
+ &intbufp[51]);
+ m_decimator2.myDecimate(
+ buf[posi+104],
+ buf[posi+105],
+ &intbufp[52],
+ &intbufp[53]);
+ m_decimator2.myDecimate(
+ buf[posi+108],
+ buf[posi+109],
+ &intbufp[54],
+ &intbufp[55]);
+ m_decimator2.myDecimate(
+ buf[posi+112],
+ buf[posi+113],
+ &intbufp[56],
+ &intbufp[57]);
+ m_decimator2.myDecimate(
+ buf[posi+116],
+ buf[posi+117],
+ &intbufp[58],
+ &intbufp[59]);
+ m_decimator2.myDecimate(
+ buf[posi+120],
+ buf[posi+121],
+ &intbufp[60],
+ &intbufp[61]);
+ m_decimator2.myDecimate(
+ buf[posi+124],
+ buf[posi+125],
+ &intbufp[62],
+ &intbufp[63]);
+ intbufp += 64;
+ posi += 128;
+ }
+
+ intbufp = intbuf;
+ for (int i = 0; i < 2; i++)
+ {
+ m_decimator4.myDecimate(
+ intbufp[0],
+ intbufp[1],
+ &intbufp[2],
+ &intbufp[3]);
+ m_decimator4.myDecimate(
+ intbufp[4],
+ intbufp[5],
+ &intbufp[6],
+ &intbufp[7]);
+ m_decimator4.myDecimate(
+ intbufp[8],
+ intbufp[9],
+ &intbufp[10],
+ &intbufp[11]);
+ m_decimator4.myDecimate(
+ intbufp[12],
+ intbufp[13],
+ &intbufp[14],
+ &intbufp[15]);
+ m_decimator4.myDecimate(
+ intbufp[16],
+ intbufp[17],
+ &intbufp[18],
+ &intbufp[19]);
+ m_decimator4.myDecimate(
+ intbufp[20],
+ intbufp[21],
+ &intbufp[22],
+ &intbufp[23]);
+ m_decimator4.myDecimate(
+ intbufp[24],
+ intbufp[25],
+ &intbufp[26],
+ &intbufp[27]);
+ m_decimator4.myDecimate(
+ intbufp[28],
+ intbufp[29],
+ &intbufp[30],
+ &intbufp[31]);
+ m_decimator4.myDecimate(
+ intbufp[32],
+ intbufp[33],
+ &intbufp[34],
+ &intbufp[35]);
+ m_decimator4.myDecimate(
+ intbufp[36],
+ intbufp[37],
+ &intbufp[38],
+ &intbufp[39]);
+ m_decimator4.myDecimate(
+ intbufp[40],
+ intbufp[41],
+ &intbufp[42],
+ &intbufp[43]);
+ m_decimator4.myDecimate(
+ intbufp[44],
+ intbufp[45],
+ &intbufp[46],
+ &intbufp[47]);
+ m_decimator4.myDecimate(
+ intbufp[48],
+ intbufp[49],
+ &intbufp[50],
+ &intbufp[51]);
+ m_decimator4.myDecimate(
+ intbufp[52],
+ intbufp[53],
+ &intbufp[54],
+ &intbufp[55]);
+ m_decimator4.myDecimate(
+ intbufp[56],
+ intbufp[57],
+ &intbufp[58],
+ &intbufp[59]);
+ m_decimator4.myDecimate(
+ intbufp[60],
+ intbufp[61],
+ &intbufp[62],
+ &intbufp[63]);
+ intbufp += 64;
+ }
+
+ intbufp = intbuf;
+ for (int i = 0; i < 2; i++)
+ {
+ m_decimator8.myDecimate(
+ intbufp[2],
+ intbufp[3],
+ &intbufp[6],
+ &intbufp[7]);
+ m_decimator8.myDecimate(
+ intbufp[10],
+ intbufp[11],
+ &intbufp[14],
+ &intbufp[15]);
+ m_decimator8.myDecimate(
+ intbufp[18],
+ intbufp[19],
+ &intbufp[22],
+ &intbufp[23]);
+ m_decimator8.myDecimate(
+ intbufp[26],
+ intbufp[27],
+ &intbufp[30],
+ &intbufp[31]);
+ m_decimator8.myDecimate(
+ intbufp[34],
+ intbufp[35],
+ &intbufp[38],
+ &intbufp[39]);
+ m_decimator8.myDecimate(
+ intbufp[42],
+ intbufp[43],
+ &intbufp[46],
+ &intbufp[47]);
+ m_decimator8.myDecimate(
+ intbufp[50],
+ intbufp[51],
+ &intbufp[54],
+ &intbufp[55]);
+ m_decimator8.myDecimate(
+ intbufp[58],
+ intbufp[59],
+ &intbufp[62],
+ &intbufp[63]);
+ intbufp += 64;
+ }
+
+ intbufp = intbuf;
+ for (int i = 0; i < 2; i++)
+ {
+ m_decimator16.myDecimate(
+ intbufp[6],
+ intbufp[7],
+ &intbufp[14],
+ &intbufp[15]);
+ m_decimator16.myDecimate(
+ intbufp[22],
+ intbufp[23],
+ &intbufp[30],
+ &intbufp[31]);
+ m_decimator16.myDecimate(
+ intbufp[38],
+ intbufp[39],
+ &intbufp[46],
+ &intbufp[47]);
+ m_decimator16.myDecimate(
+ intbufp[54],
+ intbufp[55],
+ &intbufp[62],
+ &intbufp[63]);
+ intbufp += 64;
+ }
+
+ intbufp = intbuf;
+ for (int i = 0; i < 2; i++)
+ {
+ m_decimator32.myDecimate(
+ intbufp[14],
+ intbufp[15],
+ &intbufp[30],
+ &intbufp[31]);
+ m_decimator32.myDecimate(
+ intbufp[46],
+ intbufp[47],
+ &intbufp[62],
+ &intbufp[63]);
+ intbufp += 64;
+ }
+
+ intbufp = intbuf;
+ for (int i = 0; i < 2; i++)
+ {
+ m_decimator64.myDecimate(
+ intbufp[30],
+ intbufp[31],
+ &intbufp[62],
+ &intbufp[63]);
+ intbufp += 64;
+ }
+
+ m_decimator128.myDecimate(
+ intbuf[62],
+ intbuf[63],
+ &intbuf[126],
+ &intbuf[127]);
+
+ (**it).setReal(intbuf[126] * SDR_RX_SCALED);
+ (**it).setImag(intbuf[127] * SDR_RX_SCALED);
+ ++(*it);
+ }
+}
+
+template
+void DecimatorsFI::decimate256_cen(SampleVector::iterator* it, const float* buf, qint32 nbIAndQ)
+{
+ float intbuf[256];
+
+ for (int pos = 0; pos < nbIAndQ - 511; pos += 512)
+ {
+ float *intbufp;
+ int posi;
+
+ intbufp = intbuf;
+ posi = pos;
+ for (int i = 0; i < 8; i++)
+ {
+ intbufp[0] = buf[posi+2];
+ intbufp[1] = buf[posi+3];
+ intbufp[2] = buf[posi+6];
+ intbufp[3] = buf[posi+7];
+ intbufp[4] = buf[posi+10];
+ intbufp[5] = buf[posi+11];
+ intbufp[6] = buf[posi+14];
+ intbufp[7] = buf[posi+15];
+ intbufp[8] = buf[posi+18];
+ intbufp[9] = buf[posi+19];
+ intbufp[10] = buf[posi+22];
+ intbufp[11] = buf[posi+23];
+ intbufp[12] = buf[posi+26];
+ intbufp[13] = buf[posi+27];
+ intbufp[14] = buf[posi+30];
+ intbufp[15] = buf[posi+31];
+ intbufp[16] = buf[posi+34];
+ intbufp[17] = buf[posi+35];
+ intbufp[18] = buf[posi+38];
+ intbufp[19] = buf[posi+39];
+ intbufp[20] = buf[posi+42];
+ intbufp[21] = buf[posi+43];
+ intbufp[22] = buf[posi+46];
+ intbufp[23] = buf[posi+47];
+ intbufp[24] = buf[posi+50];
+ intbufp[25] = buf[posi+51];
+ intbufp[26] = buf[posi+54];
+ intbufp[27] = buf[posi+55];
+ intbufp[28] = buf[posi+58];
+ intbufp[29] = buf[posi+59];
+ intbufp[30] = buf[posi+62];
+ intbufp[31] = buf[posi+63];
+ intbufp += 32;
+ posi += 64;
+ }
+
+ intbufp = intbuf;
+ posi = pos;
+ for (int i = 0; i < 4; i++)
+ {
+ m_decimator2.myDecimate(
+ buf[posi+0],
+ buf[posi+1],
+ &intbufp[0],
+ &intbufp[1]);
+ m_decimator2.myDecimate(
+ buf[posi+4],
+ buf[posi+5],
+ &intbufp[2],
+ &intbufp[3]);
+ m_decimator2.myDecimate(
+ buf[posi+8],
+ buf[posi+9],
+ &intbufp[4],
+ &intbufp[5]);
+ m_decimator2.myDecimate(
+ buf[posi+12],
+ buf[posi+13],
+ &intbufp[6],
+ &intbufp[7]);
+ m_decimator2.myDecimate(
+ buf[posi+16],
+ buf[posi+17],
+ &intbufp[8],
+ &intbufp[9]);
+ m_decimator2.myDecimate(
+ buf[posi+20],
+ buf[posi+21],
+ &intbufp[10],
+ &intbufp[11]);
+ m_decimator2.myDecimate(
+ buf[posi+24],
+ buf[posi+25],
+ &intbufp[12],
+ &intbufp[13]);
+ m_decimator2.myDecimate(
+ buf[posi+28],
+ buf[posi+29],
+ &intbufp[14],
+ &intbufp[15]);
+ m_decimator2.myDecimate(
+ buf[posi+32],
+ buf[posi+33],
+ &intbufp[16],
+ &intbufp[17]);
+ m_decimator2.myDecimate(
+ buf[posi+36],
+ buf[posi+37],
+ &intbufp[18],
+ &intbufp[19]);
+ m_decimator2.myDecimate(
+ buf[posi+40],
+ buf[posi+41],
+ &intbufp[20],
+ &intbufp[21]);
+ m_decimator2.myDecimate(
+ buf[posi+44],
+ buf[posi+45],
+ &intbufp[22],
+ &intbufp[23]);
+ m_decimator2.myDecimate(
+ buf[posi+48],
+ buf[posi+49],
+ &intbufp[24],
+ &intbufp[25]);
+ m_decimator2.myDecimate(
+ buf[posi+52],
+ buf[posi+53],
+ &intbufp[26],
+ &intbufp[27]);
+ m_decimator2.myDecimate(
+ buf[posi+56],
+ buf[posi+57],
+ &intbufp[28],
+ &intbufp[29]);
+ m_decimator2.myDecimate(
+ buf[posi+60],
+ buf[posi+61],
+ &intbufp[30],
+ &intbufp[31]);
+ m_decimator2.myDecimate(
+ buf[posi+64],
+ buf[posi+65],
+ &intbufp[32],
+ &intbufp[33]);
+ m_decimator2.myDecimate(
+ buf[posi+68],
+ buf[posi+69],
+ &intbufp[34],
+ &intbufp[35]);
+ m_decimator2.myDecimate(
+ buf[posi+72],
+ buf[posi+73],
+ &intbufp[36],
+ &intbufp[37]);
+ m_decimator2.myDecimate(
+ buf[posi+76],
+ buf[posi+77],
+ &intbufp[38],
+ &intbufp[39]);
+ m_decimator2.myDecimate(
+ buf[posi+80],
+ buf[posi+81],
+ &intbufp[40],
+ &intbufp[41]);
+ m_decimator2.myDecimate(
+ buf[posi+84],
+ buf[posi+85],
+ &intbufp[42],
+ &intbufp[43]);
+ m_decimator2.myDecimate(
+ buf[posi+88],
+ buf[posi+89],
+ &intbufp[44],
+ &intbufp[45]);
+ m_decimator2.myDecimate(
+ buf[posi+92],
+ buf[posi+93],
+ &intbufp[46],
+ &intbufp[47]);
+ m_decimator2.myDecimate(
+ buf[posi+96],
+ buf[posi+97],
+ &intbufp[48],
+ &intbufp[49]);
+ m_decimator2.myDecimate(
+ buf[posi+100],
+ buf[posi+101],
+ &intbufp[50],
+ &intbufp[51]);
+ m_decimator2.myDecimate(
+ buf[posi+104],
+ buf[posi+105],
+ &intbufp[52],
+ &intbufp[53]);
+ m_decimator2.myDecimate(
+ buf[posi+108],
+ buf[posi+109],
+ &intbufp[54],
+ &intbufp[55]);
+ m_decimator2.myDecimate(
+ buf[posi+112],
+ buf[posi+113],
+ &intbufp[56],
+ &intbufp[57]);
+ m_decimator2.myDecimate(
+ buf[posi+116],
+ buf[posi+117],
+ &intbufp[58],
+ &intbufp[59]);
+ m_decimator2.myDecimate(
+ buf[posi+120],
+ buf[posi+121],
+ &intbufp[60],
+ &intbufp[61]);
+ m_decimator2.myDecimate(
+ buf[posi+124],
+ buf[posi+125],
+ &intbufp[62],
+ &intbufp[63]);
+ intbufp += 64;
+ posi += 128;
+ }
+
+ intbufp = intbuf;
+ for (int i = 0; i < 4; i++)
+ {
+ m_decimator4.myDecimate(
+ intbufp[0],
+ intbufp[1],
+ &intbufp[2],
+ &intbufp[3]);
+ m_decimator4.myDecimate(
+ intbufp[4],
+ intbufp[5],
+ &intbufp[6],
+ &intbufp[7]);
+ m_decimator4.myDecimate(
+ intbufp[8],
+ intbufp[9],
+ &intbufp[10],
+ &intbufp[11]);
+ m_decimator4.myDecimate(
+ intbufp[12],
+ intbufp[13],
+ &intbufp[14],
+ &intbufp[15]);
+ m_decimator4.myDecimate(
+ intbufp[16],
+ intbufp[17],
+ &intbufp[18],
+ &intbufp[19]);
+ m_decimator4.myDecimate(
+ intbufp[20],
+ intbufp[21],
+ &intbufp[22],
+ &intbufp[23]);
+ m_decimator4.myDecimate(
+ intbufp[24],
+ intbufp[25],
+ &intbufp[26],
+ &intbufp[27]);
+ m_decimator4.myDecimate(
+ intbufp[28],
+ intbufp[29],
+ &intbufp[30],
+ &intbufp[31]);
+ m_decimator4.myDecimate(
+ intbufp[32],
+ intbufp[33],
+ &intbufp[34],
+ &intbufp[35]);
+ m_decimator4.myDecimate(
+ intbufp[36],
+ intbufp[37],
+ &intbufp[38],
+ &intbufp[39]);
+ m_decimator4.myDecimate(
+ intbufp[40],
+ intbufp[41],
+ &intbufp[42],
+ &intbufp[43]);
+ m_decimator4.myDecimate(
+ intbufp[44],
+ intbufp[45],
+ &intbufp[46],
+ &intbufp[47]);
+ m_decimator4.myDecimate(
+ intbufp[48],
+ intbufp[49],
+ &intbufp[50],
+ &intbufp[51]);
+ m_decimator4.myDecimate(
+ intbufp[52],
+ intbufp[53],
+ &intbufp[54],
+ &intbufp[55]);
+ m_decimator4.myDecimate(
+ intbufp[56],
+ intbufp[57],
+ &intbufp[58],
+ &intbufp[59]);
+ m_decimator4.myDecimate(
+ intbufp[60],
+ intbufp[61],
+ &intbufp[62],
+ &intbufp[63]);
+ intbufp += 64;
+ }
+
+ intbufp = intbuf;
+ for (int i = 0; i < 4; i++)
+ {
+ m_decimator8.myDecimate(
+ intbufp[2],
+ intbufp[3],
+ &intbufp[6],
+ &intbufp[7]);
+ m_decimator8.myDecimate(
+ intbufp[10],
+ intbufp[11],
+ &intbufp[14],
+ &intbufp[15]);
+ m_decimator8.myDecimate(
+ intbufp[18],
+ intbufp[19],
+ &intbufp[22],
+ &intbufp[23]);
+ m_decimator8.myDecimate(
+ intbufp[26],
+ intbufp[27],
+ &intbufp[30],
+ &intbufp[31]);
+ m_decimator8.myDecimate(
+ intbufp[34],
+ intbufp[35],
+ &intbufp[38],
+ &intbufp[39]);
+ m_decimator8.myDecimate(
+ intbufp[42],
+ intbufp[43],
+ &intbufp[46],
+ &intbufp[47]);
+ m_decimator8.myDecimate(
+ intbufp[50],
+ intbufp[51],
+ &intbufp[54],
+ &intbufp[55]);
+ m_decimator8.myDecimate(
+ intbufp[58],
+ intbufp[59],
+ &intbufp[62],
+ &intbufp[63]);
+ intbufp += 64;
+ }
+
+ intbufp = intbuf;
+ for (int i = 0; i < 4; i++)
+ {
+ m_decimator16.myDecimate(
+ intbufp[6],
+ intbufp[7],
+ &intbufp[14],
+ &intbufp[15]);
+ m_decimator16.myDecimate(
+ intbufp[22],
+ intbufp[23],
+ &intbufp[30],
+ &intbufp[31]);
+ m_decimator16.myDecimate(
+ intbufp[38],
+ intbufp[39],
+ &intbufp[46],
+ &intbufp[47]);
+ m_decimator16.myDecimate(
+ intbufp[54],
+ intbufp[55],
+ &intbufp[62],
+ &intbufp[63]);
+ intbufp += 64;
+ }
+
+ intbufp = intbuf;
+ for (int i = 0; i < 4; i++)
+ {
+ m_decimator32.myDecimate(
+ intbufp[14],
+ intbufp[15],
+ &intbufp[30],
+ &intbufp[31]);
+ m_decimator32.myDecimate(
+ intbufp[46],
+ intbufp[47],
+ &intbufp[62],
+ &intbufp[63]);
+ intbufp += 64;
+ }
+
+ intbufp = intbuf;
+ for (int i = 0; i < 4; i++)
+ {
+ m_decimator64.myDecimate(
+ intbufp[30],
+ intbufp[31],
+ &intbufp[62],
+ &intbufp[63]);
+ intbufp += 64;
+ }
+
+ intbufp = intbuf;
+ for (int i = 0; i < 2; i++)
+ {
+ m_decimator128.myDecimate(
+ intbufp[62],
+ intbufp[63],
+ &intbufp[126],
+ &intbufp[127]);
+ intbufp += 128;
+ }
+
+ m_decimator256.myDecimate(
+ intbuf[126],
+ intbuf[127],
+ &intbuf[254],
+ &intbuf[255]);
+
+ (**it).setReal(intbuf[254] * SDR_RX_SCALED);
+ (**it).setImag(intbuf[255] * SDR_RX_SCALED);
+ ++(*it);
+ }
+}
+
#endif /* SDRBASE_DSP_DECIMATORSFI_H_ */