1
0
mirror of https://github.com/f4exb/sdrangel.git synced 2026-06-01 13:47:01 -04:00

Spectrum averaging: added a no averaging mode that disables averaging completely

This commit is contained in:
f4exb
2018-07-01 22:36:36 +02:00
parent e88a0d6b57
commit 024fbf5525
5 changed files with 47 additions and 8 deletions
+35 -3
View File
@@ -26,12 +26,12 @@ SpectrumVis::SpectrumVis(Real scalef, GLSpectrum* glSpectrum) :
m_scalef(scalef),
m_glSpectrum(glSpectrum),
m_averageNb(0),
m_averagingMode(AvgModeMoving),
m_averagingMode(AvgModeNone),
m_ofs(0),
m_mutex(QMutex::Recursive)
{
setObjectName("SpectrumVis");
handleConfigure(1024, 0, 0, AvgModeMoving, FFTWindow::BlackmanHarris);
handleConfigure(1024, 0, 0, AvgModeNone, FFTWindow::BlackmanHarris);
}
SpectrumVis::~SpectrumVis()
@@ -111,7 +111,39 @@ void SpectrumVis::feed(const SampleVector::const_iterator& cbegin, const SampleV
Real v;
std::size_t halfSize = m_fftSize / 2;
if (m_averagingMode == AvgModeMoving)
if (m_averagingMode == AvgModeNone)
{
if ( positiveOnly )
{
for (std::size_t i = 0; i < halfSize; i++)
{
c = fftOut[i];
v = c.real() * c.real() + c.imag() * c.imag();
v = m_mult * log2f(v) + m_ofs;
m_logPowerSpectrum[i * 2] = v;
m_logPowerSpectrum[i * 2 + 1] = v;
}
}
else
{
for (std::size_t i = 0; i < halfSize; i++)
{
c = fftOut[i + halfSize];
v = c.real() * c.real() + c.imag() * c.imag();
v = m_mult * log2f(v) + m_ofs;
m_logPowerSpectrum[i] = v;
c = fftOut[i];
v = c.real() * c.real() + c.imag() * c.imag();
v = m_mult * log2f(v) + m_ofs;
m_logPowerSpectrum[i + halfSize] = v;
}
}
// send new data to visualisation
m_glSpectrum->newSpectrum(m_logPowerSpectrum, m_fftSize);
}
else if (m_averagingMode == AvgModeMoving)
{
if ( positiveOnly )
{