diff --git a/plugins/channeltx/modssb/ssbmod.cpp b/plugins/channeltx/modssb/ssbmod.cpp index aa00a9ab7..1f195cfe2 100644 --- a/plugins/channeltx/modssb/ssbmod.cpp +++ b/plugins/channeltx/modssb/ssbmod.cpp @@ -201,7 +201,7 @@ void SSBMod::pull(Sample& sample) void SSBMod::pullAudio(int nbSamples) { - unsigned int nbSamplesAudio = nbSamples * m_interpolatorDistance; + unsigned int nbSamplesAudio = nbSamples * ((Real) m_config.m_audioSampleRate / (Real) m_config.m_basebandSampleRate); if (nbSamplesAudio > m_audioBuffer.size()) { @@ -567,13 +567,15 @@ bool SSBMod::handleMessage(const Message& cmd) { UpChannelizer::MsgChannelizerNotification& notif = (UpChannelizer::MsgChannelizerNotification&) cmd; + m_config.m_basebandSampleRate = notif.getBasebandSampleRate(); m_config.m_outputSampleRate = notif.getSampleRate(); m_config.m_inputFrequencyOffset = notif.getFrequencyOffset(); apply(); qDebug() << "SSBMod::handleMessage: MsgChannelizerNotification:" - << " m_outputSampleRate: " << m_config.m_outputSampleRate + << " m_basebandSampleRate: " << m_config.m_basebandSampleRate + << " m_outputSampleRate: " << m_config.m_outputSampleRate << " m_inputFrequencyOffset: " << m_config.m_inputFrequencyOffset; return true; diff --git a/plugins/channeltx/modssb/ssbmod.h b/plugins/channeltx/modssb/ssbmod.h index 08851389d..b81c5f5ef 100644 --- a/plugins/channeltx/modssb/ssbmod.h +++ b/plugins/channeltx/modssb/ssbmod.h @@ -341,6 +341,7 @@ private: }; struct Config { + int m_basebandSampleRate; int m_outputSampleRate; qint64 m_inputFrequencyOffset; Real m_bandwidth; @@ -364,6 +365,7 @@ private: int m_agcThresholdDelay; Config() : + m_basebandSampleRate(0), m_outputSampleRate(0), m_inputFrequencyOffset(0), m_bandwidth(3000.0f), diff --git a/sdrbase/dsp/upchannelizer.cpp b/sdrbase/dsp/upchannelizer.cpp index e31d55487..8a7fae337 100644 --- a/sdrbase/dsp/upchannelizer.cpp +++ b/sdrbase/dsp/upchannelizer.cpp @@ -196,7 +196,7 @@ void UpChannelizer::applyConfiguration() if (m_sampleSource != 0) { - MsgChannelizerNotification notif(m_currentInputSampleRate, m_currentCenterFrequency); + MsgChannelizerNotification notif(m_outputSampleRate, m_currentInputSampleRate, m_currentCenterFrequency); m_sampleSource->handleMessage(notif); } } diff --git a/sdrbase/dsp/upchannelizer.h b/sdrbase/dsp/upchannelizer.h index 55e34d5f4..0f52c84a2 100644 --- a/sdrbase/dsp/upchannelizer.h +++ b/sdrbase/dsp/upchannelizer.h @@ -40,16 +40,19 @@ public: MESSAGE_CLASS_DECLARATION public: - MsgChannelizerNotification(int samplerate, qint64 frequencyOffset) : + MsgChannelizerNotification(int basebandSampleRate, int samplerate, qint64 frequencyOffset) : Message(), + m_basebandSampleRate(basebandSampleRate), m_sampleRate(samplerate), m_frequencyOffset(frequencyOffset) { } + int getBasebandSampleRate() const { return m_basebandSampleRate; } int getSampleRate() const { return m_sampleRate; } qint64 getFrequencyOffset() const { return m_frequencyOffset; } private: + int m_basebandSampleRate; int m_sampleRate; qint64 m_frequencyOffset; };