From 50c868562a3326ae62c0fede8fb6369c7d8cef6b Mon Sep 17 00:00:00 2001 From: f4exb Date: Fri, 11 May 2018 00:48:37 +0200 Subject: [PATCH 1/2] Decimators simplification --- sdrbase/dsp/decimators.h | 82 +++++++++++++++++++++------------------- 1 file changed, 44 insertions(+), 38 deletions(-) diff --git a/sdrbase/dsp/decimators.h b/sdrbase/dsp/decimators.h index 18eec7b76..3de3fb5e7 100644 --- a/sdrbase/dsp/decimators.h +++ b/sdrbase/dsp/decimators.h @@ -638,6 +638,7 @@ void Decimators::decimate4_sup(SampleVector: } } +// No filtering: bad for Rx OK for signal tracking //template //void Decimators::decimate4_inf(SampleVector::iterator* it, const T* buf, qint32 len) //{ @@ -655,6 +656,7 @@ void Decimators::decimate4_sup(SampleVector: // } //} +// No filtering: bad for Rx OK for signal tracking //template //void Decimators::decimate4_sup(SampleVector::iterator* it, const T* buf, qint32 len) //{ @@ -2608,31 +2610,27 @@ void Decimators::decimate64_sup(SampleVector template void Decimators::decimate2_cen(SampleVector::iterator* it, const T* buf, qint32 len) { - StorageType xreal[2], yimag[2]; + StorageType buf2[4]; for (int pos = 0; pos < len - 7; pos += 8) { - xreal[0] = buf[pos+2] << decimation_shifts::pre2; - yimag[0] = buf[pos+3] << decimation_shifts::pre2; - xreal[1] = buf[pos+6] << decimation_shifts::pre2; - yimag[1] = buf[pos+7] << decimation_shifts::pre2; - m_decimator2.myDecimateCen( buf[pos+0] << decimation_shifts::pre2, buf[pos+1] << decimation_shifts::pre2, - &xreal[0], - &yimag[0], + buf[pos+2] << decimation_shifts::pre2, + buf[pos+3] << decimation_shifts::pre2, buf[pos+4] << decimation_shifts::pre2, buf[pos+5] << decimation_shifts::pre2, - &xreal[1], - &yimag[1]); + buf[pos+6] << decimation_shifts::pre2, + buf[pos+7] << decimation_shifts::pre2, + &buf2[0]); - (**it).setReal(xreal[0] >> decimation_shifts::post2); - (**it).setImag(yimag[0] >> decimation_shifts::post2); + (**it).setReal(buf2[0] >> decimation_shifts::post2); + (**it).setImag(buf2[1] >> decimation_shifts::post2); ++(*it); - (**it).setReal(xreal[1] >> decimation_shifts::post2); - (**it).setImag(yimag[1] >> decimation_shifts::post2); + (**it).setReal(buf2[2] >> decimation_shifts::post2); + (**it).setImag(buf2[3] >> decimation_shifts::post2); ++(*it); } } @@ -2662,35 +2660,43 @@ void Decimators::decimate2_cen(SampleVector: template void Decimators::decimate4_cen(SampleVector::iterator* it, const T* buf, qint32 len) { - StorageType intbuf[4]; + StorageType buf2[8], buf4[4]; - for (int pos = 0; pos < len - 7; pos += 8) + for (int pos = 0; pos < len - 15; pos += 16) { - intbuf[0] = buf[pos+2] << decimation_shifts::pre4; - intbuf[1] = buf[pos+3] << decimation_shifts::pre4; - intbuf[2] = buf[pos+6] << decimation_shifts::pre4; - intbuf[3] = buf[pos+7] << decimation_shifts::pre4; + m_decimator2.myDecimateCen( + buf[pos+0] << decimation_shifts::pre4, + buf[pos+1] << decimation_shifts::pre4, + buf[pos+2] << decimation_shifts::pre4, + buf[pos+3] << decimation_shifts::pre4, + buf[pos+4] << decimation_shifts::pre4, + buf[pos+5] << decimation_shifts::pre4, + buf[pos+6] << decimation_shifts::pre4, + buf[pos+7] << decimation_shifts::pre4, + &buf2[0]); - m_decimator2.myDecimate( - buf[pos+0] << decimation_shifts::pre4, - buf[pos+1] << decimation_shifts::pre4, - &intbuf[0], - &intbuf[1]); - m_decimator2.myDecimate( - buf[pos+4] << decimation_shifts::pre4, - buf[pos+5] << decimation_shifts::pre4, - &intbuf[2], - &intbuf[3]); + m_decimator2.myDecimateCen( + buf[pos+8] << decimation_shifts::pre4, + buf[pos+9] << decimation_shifts::pre4, + buf[pos+10] << decimation_shifts::pre4, + buf[pos+11] << decimation_shifts::pre4, + buf[pos+12] << decimation_shifts::pre4, + buf[pos+13] << decimation_shifts::pre4, + buf[pos+14] << decimation_shifts::pre4, + buf[pos+15] << decimation_shifts::pre4, + &buf2[4]); - m_decimator4.myDecimate( - intbuf[0], - intbuf[1], - &intbuf[2], - &intbuf[3]); + m_decimator4.myDecimateCen( + &buf2[0], + &buf4[0]); - (**it).setReal(intbuf[2] >> decimation_shifts::post4); - (**it).setImag(intbuf[3] >> decimation_shifts::post4); - ++(*it); + (**it).setReal(buf4[0] >> decimation_shifts::post4); + (**it).setImag(buf4[1] >> decimation_shifts::post4); + ++(*it); + + (**it).setReal(buf4[2] >> decimation_shifts::post4); + (**it).setImag(buf4[3] >> decimation_shifts::post4); + ++(*it); } } From b0f7063e92f0728c137625c7d40cc23e0ec2e7e6 Mon Sep 17 00:00:00 2001 From: f4exb Date: Fri, 11 May 2018 09:40:11 +0200 Subject: [PATCH 2/2] Default record file name: removed colons to break ISO date compatibility and cope with Windows compatibility --- plugins/samplesource/airspy/airspyinput.cpp | 2 +- plugins/samplesource/airspyhf/airspyhfinput.cpp | 2 +- plugins/samplesource/bladerfinput/bladerfinput.cpp | 2 +- plugins/samplesource/fcdpro/fcdproinput.cpp | 2 +- plugins/samplesource/fcdproplus/fcdproplusinput.cpp | 2 +- plugins/samplesource/hackrfinput/hackrfinput.cpp | 2 +- plugins/samplesource/limesdrinput/limesdrinput.cpp | 2 +- plugins/samplesource/perseus/perseusinput.cpp | 2 +- plugins/samplesource/plutosdrinput/plutosdrinput.cpp | 2 +- plugins/samplesource/rtlsdr/rtlsdrinput.cpp | 2 +- plugins/samplesource/sdrdaemonsource/sdrdaemonsourceinput.cpp | 2 +- plugins/samplesource/sdrplay/sdrplayinput.cpp | 2 +- plugins/samplesource/testsource/testsourceinput.cpp | 2 +- 13 files changed, 13 insertions(+), 13 deletions(-) diff --git a/plugins/samplesource/airspy/airspyinput.cpp b/plugins/samplesource/airspy/airspyinput.cpp index 72e062830..dde26e172 100644 --- a/plugins/samplesource/airspy/airspyinput.cpp +++ b/plugins/samplesource/airspy/airspyinput.cpp @@ -308,7 +308,7 @@ bool AirspyInput::handleMessage(const Message& message) if (m_settings.m_fileRecordName.size() != 0) { m_fileSink->setFileName(m_settings.m_fileRecordName); } else { - m_fileSink->setFileName(QString("rec%1_%2.sdriq").arg(m_deviceAPI->getDeviceUID()).arg(QDateTime::currentDateTimeUtc().toString("yyyy-MM-ddThh:mm:ss"))); + m_fileSink->setFileName(QString("rec%1_%2.sdriq").arg(m_deviceAPI->getDeviceUID()).arg(QDateTime::currentDateTimeUtc().toString("yyyy-MM-ddThhmmss"))); } m_fileSink->startRecording(); diff --git a/plugins/samplesource/airspyhf/airspyhfinput.cpp b/plugins/samplesource/airspyhf/airspyhfinput.cpp index a8fb0f1d3..d9cc7f767 100644 --- a/plugins/samplesource/airspyhf/airspyhfinput.cpp +++ b/plugins/samplesource/airspyhf/airspyhfinput.cpp @@ -325,7 +325,7 @@ bool AirspyHFInput::handleMessage(const Message& message) if (m_settings.m_fileRecordName.size() != 0) { m_fileSink->setFileName(m_settings.m_fileRecordName); } else { - m_fileSink->setFileName(QString("rec%1_%2.sdriq").arg(m_deviceAPI->getDeviceUID()).arg(QDateTime::currentDateTimeUtc().toString("yyyy-MM-ddThh:mm:ss"))); + m_fileSink->setFileName(QString("rec%1_%2.sdriq").arg(m_deviceAPI->getDeviceUID()).arg(QDateTime::currentDateTimeUtc().toString("yyyy-MM-ddThhmmss"))); } m_fileSink->startRecording(); diff --git a/plugins/samplesource/bladerfinput/bladerfinput.cpp b/plugins/samplesource/bladerfinput/bladerfinput.cpp index 5fa0dbafd..ba44e51d3 100644 --- a/plugins/samplesource/bladerfinput/bladerfinput.cpp +++ b/plugins/samplesource/bladerfinput/bladerfinput.cpp @@ -280,7 +280,7 @@ bool BladerfInput::handleMessage(const Message& message) if (m_settings.m_fileRecordName.size() != 0) { m_fileSink->setFileName(m_settings.m_fileRecordName); } else { - m_fileSink->setFileName(QString("rec%1_%2.sdriq").arg(m_deviceAPI->getDeviceUID()).arg(QDateTime::currentDateTimeUtc().toString("yyyy-MM-ddThh:mm:ss"))); + m_fileSink->setFileName(QString("rec%1_%2.sdriq").arg(m_deviceAPI->getDeviceUID()).arg(QDateTime::currentDateTimeUtc().toString("yyyy-MM-ddThhmmss"))); } m_fileSink->startRecording(); diff --git a/plugins/samplesource/fcdpro/fcdproinput.cpp b/plugins/samplesource/fcdpro/fcdproinput.cpp index 2660f2bfc..945ae0adc 100644 --- a/plugins/samplesource/fcdpro/fcdproinput.cpp +++ b/plugins/samplesource/fcdpro/fcdproinput.cpp @@ -250,7 +250,7 @@ bool FCDProInput::handleMessage(const Message& message) if (m_settings.m_fileRecordName.size() != 0) { m_fileSink->setFileName(m_settings.m_fileRecordName); } else { - m_fileSink->setFileName(QString("rec%1_%2.sdriq").arg(m_deviceAPI->getDeviceUID()).arg(QDateTime::currentDateTimeUtc().toString("yyyy-MM-ddThh:mm:ss"))); + m_fileSink->setFileName(QString("rec%1_%2.sdriq").arg(m_deviceAPI->getDeviceUID()).arg(QDateTime::currentDateTimeUtc().toString("yyyy-MM-ddThhmmss"))); } m_fileSink->startRecording(); diff --git a/plugins/samplesource/fcdproplus/fcdproplusinput.cpp b/plugins/samplesource/fcdproplus/fcdproplusinput.cpp index b6dee89dc..233eda8b9 100644 --- a/plugins/samplesource/fcdproplus/fcdproplusinput.cpp +++ b/plugins/samplesource/fcdproplus/fcdproplusinput.cpp @@ -244,7 +244,7 @@ bool FCDProPlusInput::handleMessage(const Message& message) if (m_settings.m_fileRecordName.size() != 0) { m_fileSink->setFileName(m_settings.m_fileRecordName); } else { - m_fileSink->setFileName(QString("rec%1_%2.sdriq").arg(m_deviceAPI->getDeviceUID()).arg(QDateTime::currentDateTimeUtc().toString("yyyy-MM-ddThh:mm:ss"))); + m_fileSink->setFileName(QString("rec%1_%2.sdriq").arg(m_deviceAPI->getDeviceUID()).arg(QDateTime::currentDateTimeUtc().toString("yyyy-MM-ddThhmmss"))); } m_fileSink->startRecording(); diff --git a/plugins/samplesource/hackrfinput/hackrfinput.cpp b/plugins/samplesource/hackrfinput/hackrfinput.cpp index dee2fe047..06f5ac9c5 100644 --- a/plugins/samplesource/hackrfinput/hackrfinput.cpp +++ b/plugins/samplesource/hackrfinput/hackrfinput.cpp @@ -263,7 +263,7 @@ bool HackRFInput::handleMessage(const Message& message) if (m_settings.m_fileRecordName.size() != 0) { m_fileSink->setFileName(m_settings.m_fileRecordName); } else { - m_fileSink->setFileName(QString("rec%1_%2.sdriq").arg(m_deviceAPI->getDeviceUID()).arg(QDateTime::currentDateTimeUtc().toString("yyyy-MM-ddThh:mm:ss"))); + m_fileSink->setFileName(QString("rec%1_%2.sdriq").arg(m_deviceAPI->getDeviceUID()).arg(QDateTime::currentDateTimeUtc().toString("yyyy-MM-ddThhmmss"))); } m_fileSink->startRecording(); diff --git a/plugins/samplesource/limesdrinput/limesdrinput.cpp b/plugins/samplesource/limesdrinput/limesdrinput.cpp index 73aca76e5..6d4adacbc 100644 --- a/plugins/samplesource/limesdrinput/limesdrinput.cpp +++ b/plugins/samplesource/limesdrinput/limesdrinput.cpp @@ -692,7 +692,7 @@ bool LimeSDRInput::handleMessage(const Message& message) if (m_settings.m_fileRecordName.size() != 0) { m_fileSink->setFileName(m_settings.m_fileRecordName); } else { - m_fileSink->setFileName(QString("rec%1_%2.sdriq").arg(m_deviceAPI->getDeviceUID()).arg(QDateTime::currentDateTimeUtc().toString("yyyy-MM-ddThh:mm:ss"))); + m_fileSink->setFileName(QString("rec%1_%2.sdriq").arg(m_deviceAPI->getDeviceUID()).arg(QDateTime::currentDateTimeUtc().toString("yyyy-MM-ddThhmmss"))); } m_fileSink->startRecording(); diff --git a/plugins/samplesource/perseus/perseusinput.cpp b/plugins/samplesource/perseus/perseusinput.cpp index 8d8a80452..847c16d62 100644 --- a/plugins/samplesource/perseus/perseusinput.cpp +++ b/plugins/samplesource/perseus/perseusinput.cpp @@ -197,7 +197,7 @@ bool PerseusInput::handleMessage(const Message& message) if (m_settings.m_fileRecordName.size() != 0) { m_fileSink->setFileName(m_settings.m_fileRecordName); } else { - m_fileSink->setFileName(QString("rec%1_%2.sdriq").arg(m_deviceAPI->getDeviceUID()).arg(QDateTime::currentDateTimeUtc().toString("yyyy-MM-ddThh:mm:ss"))); + m_fileSink->setFileName(QString("rec%1_%2.sdriq").arg(m_deviceAPI->getDeviceUID()).arg(QDateTime::currentDateTimeUtc().toString("yyyy-MM-ddThhmmss"))); } m_fileSink->startRecording(); diff --git a/plugins/samplesource/plutosdrinput/plutosdrinput.cpp b/plugins/samplesource/plutosdrinput/plutosdrinput.cpp index 740c86706..b913cd7c8 100644 --- a/plugins/samplesource/plutosdrinput/plutosdrinput.cpp +++ b/plugins/samplesource/plutosdrinput/plutosdrinput.cpp @@ -195,7 +195,7 @@ bool PlutoSDRInput::handleMessage(const Message& message) if (m_settings.m_fileRecordName.size() != 0) { m_fileSink->setFileName(m_settings.m_fileRecordName); } else { - m_fileSink->setFileName(QString("rec%1_%2.sdriq").arg(m_deviceAPI->getDeviceUID()).arg(QDateTime::currentDateTimeUtc().toString("yyyy-MM-ddThh:mm:ss"))); + m_fileSink->setFileName(QString("rec%1_%2.sdriq").arg(m_deviceAPI->getDeviceUID()).arg(QDateTime::currentDateTimeUtc().toString("yyyy-MM-ddThhmmss"))); } m_fileSink->startRecording(); diff --git a/plugins/samplesource/rtlsdr/rtlsdrinput.cpp b/plugins/samplesource/rtlsdr/rtlsdrinput.cpp index 867d53541..23d20f1c5 100644 --- a/plugins/samplesource/rtlsdr/rtlsdrinput.cpp +++ b/plugins/samplesource/rtlsdr/rtlsdrinput.cpp @@ -309,7 +309,7 @@ bool RTLSDRInput::handleMessage(const Message& message) if (m_settings.m_fileRecordName.size() != 0) { m_fileSink->setFileName(m_settings.m_fileRecordName); } else { - m_fileSink->setFileName(QString("rec%1_%2.sdriq").arg(m_deviceAPI->getDeviceUID()).arg(QDateTime::currentDateTimeUtc().toString("yyyy-MM-ddThh:mm:ss"))); + m_fileSink->setFileName(QString("rec%1_%2.sdriq").arg(m_deviceAPI->getDeviceUID()).arg(QDateTime::currentDateTimeUtc().toString("yyyy-MM-ddThhmmss"))); } m_fileSink->startRecording(); diff --git a/plugins/samplesource/sdrdaemonsource/sdrdaemonsourceinput.cpp b/plugins/samplesource/sdrdaemonsource/sdrdaemonsourceinput.cpp index d8af205df..23677f9eb 100644 --- a/plugins/samplesource/sdrdaemonsource/sdrdaemonsourceinput.cpp +++ b/plugins/samplesource/sdrdaemonsource/sdrdaemonsourceinput.cpp @@ -190,7 +190,7 @@ bool SDRdaemonSourceInput::handleMessage(const Message& message) if (m_settings.m_fileRecordName.size() != 0) { m_fileSink->setFileName(m_settings.m_fileRecordName); } else { - m_fileSink->setFileName(QString("rec%1_%2.sdriq").arg(m_deviceAPI->getDeviceUID()).arg(QDateTime::currentDateTimeUtc().toString("yyyy-MM-ddThh:mm:ss"))); + m_fileSink->setFileName(QString("rec%1_%2.sdriq").arg(m_deviceAPI->getDeviceUID()).arg(QDateTime::currentDateTimeUtc().toString("yyyy-MM-ddThhmmss"))); } m_fileSink->startRecording(); diff --git a/plugins/samplesource/sdrplay/sdrplayinput.cpp b/plugins/samplesource/sdrplay/sdrplayinput.cpp index 015f1d1fa..e25e1fc84 100644 --- a/plugins/samplesource/sdrplay/sdrplayinput.cpp +++ b/plugins/samplesource/sdrplay/sdrplayinput.cpp @@ -304,7 +304,7 @@ bool SDRPlayInput::handleMessage(const Message& message) if (m_settings.m_fileRecordName.size() != 0) { m_fileSink->setFileName(m_settings.m_fileRecordName); } else { - m_fileSink->setFileName(QString("rec%1_%2.sdriq").arg(m_deviceAPI->getDeviceUID()).arg(QDateTime::currentDateTimeUtc().toString("yyyy-MM-ddThh:mm:ss"))); + m_fileSink->setFileName(QString("rec%1_%2.sdriq").arg(m_deviceAPI->getDeviceUID()).arg(QDateTime::currentDateTimeUtc().toString("yyyy-MM-ddThhmmss"))); } m_fileSink->startRecording(); diff --git a/plugins/samplesource/testsource/testsourceinput.cpp b/plugins/samplesource/testsource/testsourceinput.cpp index 65e39aa89..48cef3c70 100644 --- a/plugins/samplesource/testsource/testsourceinput.cpp +++ b/plugins/samplesource/testsource/testsourceinput.cpp @@ -182,7 +182,7 @@ bool TestSourceInput::handleMessage(const Message& message) if (m_settings.m_fileRecordName.size() != 0) { m_fileSink->setFileName(m_settings.m_fileRecordName); } else { - m_fileSink->setFileName(QString("rec%1_%2.sdriq").arg(m_deviceAPI->getDeviceUID()).arg(QDateTime::currentDateTimeUtc().toString("yyyy-MM-ddThh:mm:ss"))); + m_fileSink->setFileName(QString("rec%1_%2.sdriq").arg(m_deviceAPI->getDeviceUID()).arg(QDateTime::currentDateTimeUtc().toString("yyyy-MM-ddThhmmss"))); } m_fileSink->startRecording();