diff --git a/devices/hackrf/devicehackrfshared.cpp b/devices/hackrf/devicehackrfshared.cpp index aa7092369..c29372074 100644 --- a/devices/hackrf/devicehackrfshared.cpp +++ b/devices/hackrf/devicehackrfshared.cpp @@ -18,4 +18,5 @@ MESSAGE_CLASS_DEFINITION(DeviceHackRFShared::MsgConfigureFrequencyDelta, Message) - +const float DeviceHackRFShared::m_sampleFifoLengthInSeconds = 0.25; +const int DeviceHackRFShared::m_sampleFifoMinSize = 150000; // 600kS/s knee diff --git a/devices/hackrf/devicehackrfshared.h b/devices/hackrf/devicehackrfshared.h index 824d97798..f9106a8d3 100644 --- a/devices/hackrf/devicehackrfshared.h +++ b/devices/hackrf/devicehackrfshared.h @@ -42,6 +42,9 @@ public: m_frequencyDelta(frequencyDelta) { } }; + + static const float m_sampleFifoLengthInSeconds; + static const int m_sampleFifoMinSize; }; diff --git a/devices/limesdr/devicelimesdrshared.cpp b/devices/limesdr/devicelimesdrshared.cpp index ed445e271..0dd63bbea 100644 --- a/devices/limesdr/devicelimesdrshared.cpp +++ b/devices/limesdr/devicelimesdrshared.cpp @@ -20,4 +20,4 @@ MESSAGE_CLASS_DEFINITION(DeviceLimeSDRShared::MsgCrossReportToGUI, Message) MESSAGE_CLASS_DEFINITION(DeviceLimeSDRShared::MsgReportDeviceInfo, Message) const float DeviceLimeSDRShared::m_sampleFifoLengthInSeconds = 0.25; -const int DeviceLimeSDRShared::m_sampleFifoMinSize = 48000; +const int DeviceLimeSDRShared::m_sampleFifoMinSize = 48000; // 192kS/s knee diff --git a/plugins/samplesink/hackrfoutput/hackrfoutput.cpp b/plugins/samplesink/hackrfoutput/hackrfoutput.cpp index 32ab87fa9..c228ca4e5 100644 --- a/plugins/samplesink/hackrfoutput/hackrfoutput.cpp +++ b/plugins/samplesink/hackrfoutput/hackrfoutput.cpp @@ -25,7 +25,7 @@ #include "dsp/dspengine.h" #include "device/devicesourceapi.h" #include "device/devicesinkapi.h" - +#include "hackrf/devicehackrfshared.h" #include "hackrfoutputgui.h" #include "hackrfoutputthread.h" @@ -242,11 +242,10 @@ bool HackRFOutput::applySettings(const HackRFOutputSettings& settings, bool forc if ((m_settings.m_devSampleRate != settings.m_devSampleRate) || (m_settings.m_log2Interp != settings.m_log2Interp) || force) { forwardChange = true; - - // FIFO size: - // 1 s length up to interpolation by 16 - // 2 s for interpolation by 32 - m_sampleSourceFifo.resize(settings.m_devSampleRate/(1<<(settings.m_log2Interp <= 4 ? settings.m_log2Interp : 4))); + int fifoSize = std::max( + (int) ((settings.m_devSampleRate/(1<