diff --git a/sdrbase/dsp/glspectrumsettings.cpp b/sdrbase/dsp/glspectrumsettings.cpp index cc139ad14..9592815ef 100644 --- a/sdrbase/dsp/glspectrumsettings.cpp +++ b/sdrbase/dsp/glspectrumsettings.cpp @@ -60,7 +60,7 @@ QByteArray GLSpectrumSettings::serialize() const { SimpleSerializer s(1); - s.writeU32(1, m_fftSize); + s.writeS32(1, m_fftSize); s.writeS32(2, m_fftOverlap); s.writeS32(3, (int) m_fftWindow); s.writeReal(4, m_refLevel); @@ -102,7 +102,7 @@ bool GLSpectrumSettings::deserialize(const QByteArray& data) if (d.getVersion() == 1) { - d.readU32(1, &m_fftSize, 1024); + d.readS32(1, &m_fftSize, 1024); d.readS32(2, &m_fftOverlap, 0); d.readS32(3, &tmp, (int) FFTWindow::Hanning); m_fftWindow = (FFTWindow::Function) tmp; diff --git a/sdrbase/dsp/glspectrumsettings.h b/sdrbase/dsp/glspectrumsettings.h index 4bdfd08d4..a3a734c7a 100644 --- a/sdrbase/dsp/glspectrumsettings.h +++ b/sdrbase/dsp/glspectrumsettings.h @@ -36,7 +36,7 @@ public: AvgModeMax }; - unsigned int m_fftSize; + int m_fftSize; int m_fftOverlap; FFTWindow::Function m_fftWindow; Real m_refLevel; diff --git a/sdrbase/dsp/spectrumvis.cpp b/sdrbase/dsp/spectrumvis.cpp index 5b7f07211..7107bd7e8 100644 --- a/sdrbase/dsp/spectrumvis.cpp +++ b/sdrbase/dsp/spectrumvis.cpp @@ -123,9 +123,9 @@ void SpectrumVis::feed(const Complex *begin, unsigned int length) if (m_settings.m_averagingMode == GLSpectrumSettings::AvgModeNone) { - for (unsigned int i = 0; i < m_settings.m_fftSize; i++) + for (int i = 0; i < m_settings.m_fftSize; i++) { - if (i < length) { + if (i < (int) length) { c = begin[i]; } else { c = Complex{0,0}; @@ -157,9 +157,9 @@ void SpectrumVis::feed(const Complex *begin, unsigned int length) } else if (m_settings.m_averagingMode == GLSpectrumSettings::AvgModeMoving) { - for (unsigned int i = 0; i < m_settings.m_fftSize; i++) + for (int i = 0; i < m_settings.m_fftSize; i++) { - if (i < length) { + if (i < (int) length) { c = begin[i]; } else { c = Complex{0,0}; @@ -196,9 +196,9 @@ void SpectrumVis::feed(const Complex *begin, unsigned int length) { double avg; - for (unsigned int i = 0; i < m_settings.m_fftSize; i++) + for (int i = 0; i < m_settings.m_fftSize; i++) { - if (i < length) { + if (i < (int) length) { c = begin[i]; } else { c = Complex{0,0}; @@ -241,9 +241,9 @@ void SpectrumVis::feed(const Complex *begin, unsigned int length) { double max; - for (unsigned int i = 0; i < m_settings.m_fftSize; i++) + for (int i = 0; i < m_settings.m_fftSize; i++) { - if (i < length) { + if (i < (int) length) { c = begin[i]; } else { c = Complex{0,0}; @@ -690,22 +690,16 @@ void SpectrumVis::applySettings(const GLSpectrumSettings& settings, bool force) { QMutexLocker mutexLocker(&m_mutex); - unsigned int fftSize = settings.m_fftSize > MAX_FFT_SIZE ? + int fftSize = settings.m_fftSize > MAX_FFT_SIZE ? MAX_FFT_SIZE : settings.m_fftSize < 64 ? 64 : settings.m_fftSize; - int overlapPercent = settings.m_fftOverlap > 100 ? - 100 : - settings.m_fftOverlap < 0 ? - 0 : - settings.m_fftOverlap; - qDebug() << "SpectrumVis::applySettings:" << " m_fftSize: " << fftSize << " m_fftWindow: " << settings.m_fftWindow - << " m_fftOverlap: " << overlapPercent + << " m_fftOverlap: " << settings.m_fftOverlap << " m_averagingIndex: " << settings.m_averagingIndex << " m_averagingMode: " << settings.m_averagingMode << " m_refLevel: " << settings.m_refLevel @@ -738,9 +732,10 @@ void SpectrumVis::applySettings(const GLSpectrumSettings& settings, bool force) } if ((fftSize != m_settings.m_fftSize) - || (overlapPercent != m_settings.m_fftOverlap) || force) + || (settings.m_fftOverlap != m_settings.m_fftOverlap) || force) { - m_overlapSize = (fftSize * overlapPercent) / 100; + m_overlapSize = settings.m_fftOverlap >= fftSize ? fftSize - 1 : + settings.m_fftOverlap < 0 ? 0 : settings.m_fftOverlap; m_refillSize = fftSize - m_overlapSize; m_fftBufferFill = m_overlapSize; } @@ -762,7 +757,6 @@ void SpectrumVis::applySettings(const GLSpectrumSettings& settings, bool force) m_settings = settings; m_settings.m_fftSize = fftSize; - m_settings.m_fftOverlap = overlapPercent; } void SpectrumVis::handleConfigureDSP(uint64_t centerFrequency, int sampleRate) diff --git a/sdrbase/dsp/spectrumvis.h b/sdrbase/dsp/spectrumvis.h index cbe1facc1..ac26d4d7f 100644 --- a/sdrbase/dsp/spectrumvis.h +++ b/sdrbase/dsp/spectrumvis.h @@ -190,9 +190,9 @@ private: std::vector m_powerSpectrum; GLSpectrumSettings m_settings; - std::size_t m_overlapSize; - std::size_t m_refillSize; - std::size_t m_fftBufferFill; + int m_overlapSize; + int m_refillSize; + int m_fftBufferFill; bool m_needMoreSamples; Real m_scalef;