1
0
mirror of https://github.com/f4exb/sdrangel.git synced 2025-08-05 07:22:24 -04:00

Channel Analyzer NG: implemented channel interpolator

This commit is contained in:
f4exb 2017-02-28 22:11:13 +01:00
parent ce15d78e55
commit f67bfb4121
2 changed files with 19 additions and 0 deletions

View File

@ -37,6 +37,8 @@ ChannelAnalyzerNG::ChannelAnalyzerNG(BasebandSampleSink* sampleSink) :
m_usb = true; m_usb = true;
m_ssb = true; m_ssb = true;
m_magsq = 0; m_magsq = 0;
m_interpolatorDistance = 1.0f;
m_interpolatorDistanceRemain = 0.0f;
SSBFilter = new fftfilt(m_LowCutoff / m_running.m_inputSampleRate, m_Bandwidth / m_running.m_inputSampleRate, ssbFftLen); SSBFilter = new fftfilt(m_LowCutoff / m_running.m_inputSampleRate, m_Bandwidth / m_running.m_inputSampleRate, ssbFftLen);
DSBFilter = new fftfilt(m_Bandwidth / m_running.m_inputSampleRate, 2*ssbFftLen); DSBFilter = new fftfilt(m_Bandwidth / m_running.m_inputSampleRate, 2*ssbFftLen);
} }
@ -214,6 +216,17 @@ void ChannelAnalyzerNG::apply(bool force)
m_nco.setFreq(-m_config.m_frequency, m_config.m_inputSampleRate); m_nco.setFreq(-m_config.m_frequency, m_config.m_inputSampleRate);
} }
if ((m_running.m_inputSampleRate != m_config.m_inputSampleRate) ||
(m_running.m_channelSampleRate != m_config.m_channelSampleRate) ||
force)
{
m_settingsMutex.lock();
m_interpolator.create(16, m_config.m_inputSampleRate, m_config.m_inputSampleRate / 2.2);
m_interpolatorDistanceRemain = 0.0f;
m_interpolatorDistance = (Real) m_config.m_inputSampleRate / (Real) m_config.m_channelSampleRate;
m_settingsMutex.unlock();
}
if ((m_running.m_channelSampleRate != m_config.m_channelSampleRate) || if ((m_running.m_channelSampleRate != m_config.m_channelSampleRate) ||
force) force)
{ {

View File

@ -20,6 +20,8 @@
#include <dsp/basebandsamplesink.h> #include <dsp/basebandsamplesink.h>
#include <QMutex> #include <QMutex>
#include <vector> #include <vector>
#include "dsp/interpolator.h"
#include "dsp/ncof.h" #include "dsp/ncof.h"
#include "dsp/fftfilt.h" #include "dsp/fftfilt.h"
#include "audio/audiofifo.h" #include "audio/audiofifo.h"
@ -115,6 +117,10 @@ private:
Real m_magsq; Real m_magsq;
NCOF m_nco; NCOF m_nco;
Interpolator m_interpolator;
Real m_interpolatorDistance;
Real m_interpolatorDistanceRemain;
fftfilt* SSBFilter; fftfilt* SSBFilter;
fftfilt* DSBFilter; fftfilt* DSBFilter;