From c984dcc63209bde70fadaf66c84adebfcccb4f2e Mon Sep 17 00:00:00 2001 From: f4exb Date: Wed, 3 Mar 2021 01:45:59 +0100 Subject: [PATCH] In some audio demods. Reapply audio sample rate only if channel sample rate effectively changes. Implements #791 --- plugins/channelrx/demodam/amdemodbaseband.cpp | 16 ++++++++++++++-- plugins/channelrx/demodam/amdemodbaseband.h | 1 + plugins/channelrx/demodbfm/bfmdemodbaseband.cpp | 16 ++++++++++++++-- plugins/channelrx/demodbfm/bfmdemodbaseband.h | 1 + plugins/channelrx/demoddsd/dsddemodbaseband.cpp | 16 ++++++++++++++-- plugins/channelrx/demoddsd/dsddemodbaseband.h | 1 + plugins/channelrx/demodnfm/nfmdemodbaseband.cpp | 16 ++++++++++++++-- plugins/channelrx/demodnfm/nfmdemodbaseband.h | 1 + plugins/channelrx/demodssb/ssbdemodbaseband.cpp | 16 ++++++++++++++-- plugins/channelrx/demodssb/ssbdemodbaseband.h | 1 + .../channelrx/demodvorsc/vordemodscbaseband.cpp | 16 ++++++++++++++-- .../channelrx/demodvorsc/vordemodscbaseband.h | 1 + plugins/channelrx/demodwfm/wfmdemodbaseband.cpp | 16 ++++++++++++++-- plugins/channelrx/demodwfm/wfmdemodbaseband.h | 1 + 14 files changed, 105 insertions(+), 14 deletions(-) diff --git a/plugins/channelrx/demodam/amdemodbaseband.cpp b/plugins/channelrx/demodam/amdemodbaseband.cpp index 76088bbd7..e252665f9 100644 --- a/plugins/channelrx/demodam/amdemodbaseband.cpp +++ b/plugins/channelrx/demodam/amdemodbaseband.cpp @@ -36,6 +36,7 @@ AMDemodBaseband::AMDemodBaseband() : DSPEngine::instance()->getAudioDeviceManager()->addAudioSink(m_sink.getAudioFifo(), getInputMessageQueue()); m_sink.applyAudioSampleRate(DSPEngine::instance()->getAudioDeviceManager()->getOutputSampleRate()); + m_channelSampleRate = 0; } AMDemodBaseband::~AMDemodBaseband() @@ -50,6 +51,7 @@ void AMDemodBaseband::reset() QMutexLocker mutexLocker(&m_mutex); m_inputMessageQueue.clear(); m_sampleFifo.reset(); + m_channelSampleRate = 0; } void AMDemodBaseband::startWork() @@ -148,7 +150,12 @@ bool AMDemodBaseband::handleMessage(const Message& cmd) m_sampleFifo.setSize(SampleSinkFifo::getSizePolicy(notif.getSampleRate())); m_channelizer->setBasebandSampleRate(notif.getSampleRate()); m_sink.applyChannelSettings(m_channelizer->getChannelSampleRate(), m_channelizer->getChannelFrequencyOffset()); - m_sink.applyAudioSampleRate(m_sink.getAudioSampleRate()); // reapply in case of channel sample rate change + + if (m_channelSampleRate != m_channelizer->getChannelSampleRate()) + { + m_sink.applyAudioSampleRate(m_sink.getAudioSampleRate()); // reapply when channel sample rate changes + m_channelSampleRate = m_channelizer->getChannelSampleRate(); + } return true; } @@ -164,7 +171,12 @@ void AMDemodBaseband::applySettings(const AMDemodSettings& settings, bool force) { m_channelizer->setChannelization(m_sink.getAudioSampleRate(), settings.m_inputFrequencyOffset); m_sink.applyChannelSettings(m_channelizer->getChannelSampleRate(), m_channelizer->getChannelFrequencyOffset()); - m_sink.applyAudioSampleRate(m_sink.getAudioSampleRate()); // reapply in case of channel sample rate change + + if (m_channelSampleRate != m_channelizer->getChannelSampleRate()) + { + m_sink.applyAudioSampleRate(m_sink.getAudioSampleRate()); // reapply when channel sample rate changes + m_channelSampleRate = m_channelizer->getChannelSampleRate(); + } } if ((settings.m_audioDeviceName != m_settings.m_audioDeviceName) || force) diff --git a/plugins/channelrx/demodam/amdemodbaseband.h b/plugins/channelrx/demodam/amdemodbaseband.h index 2b360f6fa..9c6c82578 100644 --- a/plugins/channelrx/demodam/amdemodbaseband.h +++ b/plugins/channelrx/demodam/amdemodbaseband.h @@ -78,6 +78,7 @@ public: private: SampleSinkFifo m_sampleFifo; DownChannelizer *m_channelizer; + int m_channelSampleRate; AMDemodSink m_sink; MessageQueue m_inputMessageQueue; //!< Queue for asynchronous inbound communication AMDemodSettings m_settings; diff --git a/plugins/channelrx/demodbfm/bfmdemodbaseband.cpp b/plugins/channelrx/demodbfm/bfmdemodbaseband.cpp index 17b6f3f20..bd362e048 100644 --- a/plugins/channelrx/demodbfm/bfmdemodbaseband.cpp +++ b/plugins/channelrx/demodbfm/bfmdemodbaseband.cpp @@ -46,6 +46,7 @@ BFMDemodBaseband::BFMDemodBaseband() : DSPEngine::instance()->getAudioDeviceManager()->addAudioSink(m_sink.getAudioFifo(), getInputMessageQueue()); m_sink.applyAudioSampleRate(DSPEngine::instance()->getAudioDeviceManager()->getOutputSampleRate()); + m_channelSampleRate = 0; connect(&m_inputMessageQueue, SIGNAL(messageEnqueued()), this, SLOT(handleInputMessages())); } @@ -60,6 +61,7 @@ void BFMDemodBaseband::reset() { QMutexLocker mutexLocker(&m_mutex); m_sampleFifo.reset(); + m_channelSampleRate = 0; } void BFMDemodBaseband::feed(const SampleVector::const_iterator& begin, const SampleVector::const_iterator& end) @@ -126,7 +128,12 @@ bool BFMDemodBaseband::handleMessage(const Message& cmd) m_sampleFifo.setSize(SampleSinkFifo::getSizePolicy(notif.getSampleRate())); m_channelizer->setBasebandSampleRate(notif.getSampleRate()); m_sink.applyChannelSettings(m_channelizer->getChannelSampleRate(), m_channelizer->getChannelFrequencyOffset()); - m_sink.applyAudioSampleRate(m_sink.getAudioSampleRate()); // reapply in case of channel sample rate change + + if (m_channelSampleRate != m_channelizer->getChannelSampleRate()) + { + m_sink.applyAudioSampleRate(m_sink.getAudioSampleRate()); // reapply when channel sample rate changes + m_channelSampleRate = m_channelizer->getChannelSampleRate(); + } if (getMessageQueueToGUI()) { @@ -155,7 +162,12 @@ void BFMDemodBaseband::applySettings(const BFMDemodSettings& settings, bool forc { m_channelizer->setChannelization(BFMDemodSettings::requiredBW(settings.m_rfBandwidth), settings.m_inputFrequencyOffset); m_sink.applyChannelSettings(m_channelizer->getChannelSampleRate(), m_channelizer->getChannelFrequencyOffset()); - m_sink.applyAudioSampleRate(m_sink.getAudioSampleRate()); // reapply in case of channel sample rate change + + if (m_channelSampleRate != m_channelizer->getChannelSampleRate()) + { + m_sink.applyAudioSampleRate(m_sink.getAudioSampleRate()); // reapply when channel sample rate changea + m_channelSampleRate = m_channelizer->getChannelSampleRate(); + } if (getMessageQueueToGUI()) { diff --git a/plugins/channelrx/demodbfm/bfmdemodbaseband.h b/plugins/channelrx/demodbfm/bfmdemodbaseband.h index 2a416e5d0..d95ffeb5d 100644 --- a/plugins/channelrx/demodbfm/bfmdemodbaseband.h +++ b/plugins/channelrx/demodbfm/bfmdemodbaseband.h @@ -83,6 +83,7 @@ public: private: SampleSinkFifo m_sampleFifo; DownChannelizer *m_channelizer; + int m_channelSampleRate; BFMDemodSink m_sink; MessageQueue m_inputMessageQueue; //!< Queue for asynchronous inbound communication BFMDemodSettings m_settings; diff --git a/plugins/channelrx/demoddsd/dsddemodbaseband.cpp b/plugins/channelrx/demoddsd/dsddemodbaseband.cpp index 85fffbccf..233964100 100644 --- a/plugins/channelrx/demoddsd/dsddemodbaseband.cpp +++ b/plugins/channelrx/demoddsd/dsddemodbaseband.cpp @@ -44,6 +44,7 @@ DSDDemodBaseband::DSDDemodBaseband() : m_sink.applyAudioSampleRate(DSPEngine::instance()->getAudioDeviceManager()->getOutputSampleRate()); DSPEngine::instance()->getAudioDeviceManager()->addAudioSink(m_sink.getAudioFifo2(), getInputMessageQueue()); m_sink.applyAudioSampleRate(DSPEngine::instance()->getAudioDeviceManager()->getOutputSampleRate()); + m_channelSampleRate = 0; connect(&m_inputMessageQueue, SIGNAL(messageEnqueued()), this, SLOT(handleInputMessages())); } @@ -59,6 +60,7 @@ void DSDDemodBaseband::reset() { QMutexLocker mutexLocker(&m_mutex); m_sampleFifo.reset(); + m_channelSampleRate = 0; } void DSDDemodBaseband::setChannel(ChannelAPI *channel) @@ -130,7 +132,12 @@ bool DSDDemodBaseband::handleMessage(const Message& cmd) m_sampleFifo.setSize(SampleSinkFifo::getSizePolicy(notif.getSampleRate())); m_channelizer->setBasebandSampleRate(notif.getSampleRate()); m_sink.applyChannelSettings(m_channelizer->getChannelSampleRate(), m_channelizer->getChannelFrequencyOffset()); - m_sink.applyAudioSampleRate(m_sink.getAudioSampleRate()); // reapply in case of channel sample rate change + + if (m_channelSampleRate != m_channelizer->getChannelSampleRate()) + { + m_sink.applyAudioSampleRate(m_sink.getAudioSampleRate()); // reapply when channel sample rate changes + m_channelSampleRate = m_channelizer->getChannelSampleRate(); + } return true; } @@ -146,7 +153,12 @@ void DSDDemodBaseband::applySettings(const DSDDemodSettings& settings, bool forc { m_channelizer->setChannelization(m_sink.getAudioSampleRate(), settings.m_inputFrequencyOffset); m_sink.applyChannelSettings(m_channelizer->getChannelSampleRate(), m_channelizer->getChannelFrequencyOffset()); - m_sink.applyAudioSampleRate(m_sink.getAudioSampleRate()); // reapply in case of channel sample rate change + + if (m_channelSampleRate != m_channelizer->getChannelSampleRate()) + { + m_sink.applyAudioSampleRate(m_sink.getAudioSampleRate()); // reapply when channel sample rate changes + m_channelSampleRate = m_channelizer->getChannelSampleRate(); + } } if ((settings.m_audioDeviceName != m_settings.m_audioDeviceName) || force) diff --git a/plugins/channelrx/demoddsd/dsddemodbaseband.h b/plugins/channelrx/demoddsd/dsddemodbaseband.h index dbdc25d13..97b18eba5 100644 --- a/plugins/channelrx/demoddsd/dsddemodbaseband.h +++ b/plugins/channelrx/demoddsd/dsddemodbaseband.h @@ -77,6 +77,7 @@ public: private: SampleSinkFifo m_sampleFifo; DownChannelizer *m_channelizer; + int m_channelSampleRate; DSDDemodSink m_sink; MessageQueue m_inputMessageQueue; //!< Queue for asynchronous inbound communication DSDDemodSettings m_settings; diff --git a/plugins/channelrx/demodnfm/nfmdemodbaseband.cpp b/plugins/channelrx/demodnfm/nfmdemodbaseband.cpp index c82e2d342..35e0e2c5e 100644 --- a/plugins/channelrx/demodnfm/nfmdemodbaseband.cpp +++ b/plugins/channelrx/demodnfm/nfmdemodbaseband.cpp @@ -42,6 +42,7 @@ NFMDemodBaseband::NFMDemodBaseband() : DSPEngine::instance()->getAudioDeviceManager()->addAudioSink(m_sink.getAudioFifo(), getInputMessageQueue()); m_sink.applyAudioSampleRate(DSPEngine::instance()->getAudioDeviceManager()->getOutputSampleRate()); + m_channelSampleRate = 0; connect(&m_inputMessageQueue, SIGNAL(messageEnqueued()), this, SLOT(handleInputMessages())); } @@ -56,6 +57,7 @@ void NFMDemodBaseband::reset() { QMutexLocker mutexLocker(&m_mutex); m_sampleFifo.reset(); + m_channelSampleRate = 0; } void NFMDemodBaseband::setChannel(ChannelAPI *channel) @@ -127,7 +129,12 @@ bool NFMDemodBaseband::handleMessage(const Message& cmd) m_sampleFifo.setSize(SampleSinkFifo::getSizePolicy(notif.getSampleRate())); m_channelizer->setBasebandSampleRate(notif.getSampleRate()); m_sink.applyChannelSettings(m_channelizer->getChannelSampleRate(), m_channelizer->getChannelFrequencyOffset()); - m_sink.applyAudioSampleRate(m_sink.getAudioSampleRate()); // reapply in case of channel sample rate change + + if (m_channelSampleRate != m_channelizer->getChannelSampleRate()) + { + m_sink.applyAudioSampleRate(m_sink.getAudioSampleRate()); // reapply when channel sample rate changes + m_channelSampleRate = m_channelizer->getChannelSampleRate(); + } return true; } @@ -143,7 +150,12 @@ void NFMDemodBaseband::applySettings(const NFMDemodSettings& settings, bool forc { m_channelizer->setChannelization(m_sink.getAudioSampleRate(), settings.m_inputFrequencyOffset); m_sink.applyChannelSettings(m_channelizer->getChannelSampleRate(), m_channelizer->getChannelFrequencyOffset()); - m_sink.applyAudioSampleRate(m_sink.getAudioSampleRate()); // reapply in case of channel sample rate change + + if (m_channelSampleRate != m_channelizer->getChannelSampleRate()) + { + m_sink.applyAudioSampleRate(m_sink.getAudioSampleRate()); // reapply when channel sample rate changes + m_channelSampleRate = m_channelizer->getChannelSampleRate(); + } } if ((settings.m_audioDeviceName != m_settings.m_audioDeviceName) || force) diff --git a/plugins/channelrx/demodnfm/nfmdemodbaseband.h b/plugins/channelrx/demodnfm/nfmdemodbaseband.h index 3a68c5992..0db79323c 100644 --- a/plugins/channelrx/demodnfm/nfmdemodbaseband.h +++ b/plugins/channelrx/demodnfm/nfmdemodbaseband.h @@ -75,6 +75,7 @@ public: private: SampleSinkFifo m_sampleFifo; DownChannelizer *m_channelizer; + int m_channelSampleRate; NFMDemodSink m_sink; MessageQueue m_inputMessageQueue; //!< Queue for asynchronous inbound communication NFMDemodSettings m_settings; diff --git a/plugins/channelrx/demodssb/ssbdemodbaseband.cpp b/plugins/channelrx/demodssb/ssbdemodbaseband.cpp index 7f19ee1e1..8f8c1a8fc 100644 --- a/plugins/channelrx/demodssb/ssbdemodbaseband.cpp +++ b/plugins/channelrx/demodssb/ssbdemodbaseband.cpp @@ -46,6 +46,7 @@ SSBDemodBaseband::SSBDemodBaseband() : DSPEngine::instance()->getAudioDeviceManager()->addAudioSink(m_sink.getAudioFifo(), getInputMessageQueue()); m_audioSampleRate = DSPEngine::instance()->getAudioDeviceManager()->getOutputSampleRate(); m_sink.applyAudioSampleRate(m_audioSampleRate); + m_channelSampleRate = 0; connect(&m_inputMessageQueue, SIGNAL(messageEnqueued()), this, SLOT(handleInputMessages())); } @@ -61,6 +62,7 @@ void SSBDemodBaseband::reset() QMutexLocker mutexLocker(&m_mutex); m_sink.applyAudioSampleRate(DSPEngine::instance()->getAudioDeviceManager()->getOutputSampleRate()); m_sampleFifo.reset(); + m_channelSampleRate = 0; } void SSBDemodBaseband::setChannel(ChannelAPI *channel) @@ -132,7 +134,12 @@ bool SSBDemodBaseband::handleMessage(const Message& cmd) m_sampleFifo.setSize(SampleSinkFifo::getSizePolicy(notif.getSampleRate())); m_channelizer->setBasebandSampleRate(notif.getSampleRate()); m_sink.applyChannelSettings(m_channelizer->getChannelSampleRate(), m_channelizer->getChannelFrequencyOffset()); - m_sink.applyAudioSampleRate(m_audioSampleRate); // reapply in case of channel sample rate change + + if (m_channelSampleRate != m_channelizer->getChannelSampleRate()) + { + m_sink.applyAudioSampleRate(m_audioSampleRate); // reapply when channel sample rate changes + m_channelSampleRate = m_channelizer->getChannelSampleRate(); + } return true; } @@ -148,7 +155,12 @@ void SSBDemodBaseband::applySettings(const SSBDemodSettings& settings, bool forc { m_channelizer->setChannelization(m_audioSampleRate, settings.m_inputFrequencyOffset); m_sink.applyChannelSettings(m_channelizer->getChannelSampleRate(), m_channelizer->getChannelFrequencyOffset()); - m_sink.applyAudioSampleRate(m_audioSampleRate); // reapply in case of channel sample rate change + + if (m_channelSampleRate != m_channelizer->getChannelSampleRate()) + { + m_sink.applyAudioSampleRate(m_audioSampleRate); // reapply when channel sample rate changes + m_channelSampleRate = m_channelizer->getChannelSampleRate(); + } } if ((settings.m_spanLog2 != m_settings.m_spanLog2) || force) diff --git a/plugins/channelrx/demodssb/ssbdemodbaseband.h b/plugins/channelrx/demodssb/ssbdemodbaseband.h index 2d5402b53..9a05a20b3 100644 --- a/plugins/channelrx/demodssb/ssbdemodbaseband.h +++ b/plugins/channelrx/demodssb/ssbdemodbaseband.h @@ -79,6 +79,7 @@ private: MessageQueue m_inputMessageQueue; //!< Queue for asynchronous inbound communication SSBDemodSettings m_settings; unsigned int m_audioSampleRate; + int m_channelSampleRate; MessageQueue *m_messageQueueToGUI; SpectrumVis *m_spectrumVis; QMutex m_mutex; diff --git a/plugins/channelrx/demodvorsc/vordemodscbaseband.cpp b/plugins/channelrx/demodvorsc/vordemodscbaseband.cpp index a04706171..a5715cd97 100644 --- a/plugins/channelrx/demodvorsc/vordemodscbaseband.cpp +++ b/plugins/channelrx/demodvorsc/vordemodscbaseband.cpp @@ -38,6 +38,7 @@ VORDemodSCBaseband::VORDemodSCBaseband() : DSPEngine::instance()->getAudioDeviceManager()->addAudioSink(m_sink.getAudioFifo(), getInputMessageQueue()); m_sink.applyAudioSampleRate(DSPEngine::instance()->getAudioDeviceManager()->getOutputSampleRate()); + m_channelSampleRate = 0; } VORDemodSCBaseband::~VORDemodSCBaseband() @@ -52,6 +53,7 @@ void VORDemodSCBaseband::reset() QMutexLocker mutexLocker(&m_mutex); m_inputMessageQueue.clear(); m_sampleFifo.reset(); + m_channelSampleRate = 0; } void VORDemodSCBaseband::startWork() @@ -145,7 +147,12 @@ bool VORDemodSCBaseband::handleMessage(const Message& cmd) m_sampleFifo.setSize(SampleSinkFifo::getSizePolicy(notif.getSampleRate())); m_channelizer->setBasebandSampleRate(notif.getSampleRate()); m_sink.applyChannelSettings(m_channelizer->getChannelSampleRate(), m_channelizer->getChannelFrequencyOffset()); - m_sink.applyAudioSampleRate(m_sink.getAudioSampleRate()); // reapply in case of channel sample rate change + + if (m_channelSampleRate != m_channelizer->getChannelSampleRate()) + { + m_sink.applyAudioSampleRate(m_sink.getAudioSampleRate()); // reapply when channel sample rate changes + m_channelSampleRate = m_channelizer->getChannelSampleRate(); + } return true; } @@ -161,7 +168,12 @@ void VORDemodSCBaseband::applySettings(const VORDemodSCSettings& settings, bool { m_channelizer->setChannelization(m_sink.getAudioSampleRate(), settings.m_inputFrequencyOffset); m_sink.applyChannelSettings(m_channelizer->getChannelSampleRate(), m_channelizer->getChannelFrequencyOffset()); - m_sink.applyAudioSampleRate(m_sink.getAudioSampleRate()); // reapply in case of channel sample rate change + + if (m_channelSampleRate != m_channelizer->getChannelSampleRate()) + { + m_sink.applyAudioSampleRate(m_sink.getAudioSampleRate()); // reapply when channel sample rate changes + m_channelSampleRate = m_channelizer->getChannelSampleRate(); + } } if ((settings.m_audioDeviceName != m_settings.m_audioDeviceName) || force) diff --git a/plugins/channelrx/demodvorsc/vordemodscbaseband.h b/plugins/channelrx/demodvorsc/vordemodscbaseband.h index 67ebc0d08..ab03f8bc7 100644 --- a/plugins/channelrx/demodvorsc/vordemodscbaseband.h +++ b/plugins/channelrx/demodvorsc/vordemodscbaseband.h @@ -74,6 +74,7 @@ public: private: SampleSinkFifo m_sampleFifo; DownChannelizer * m_channelizer; + int m_channelSampleRate; VORDemodSCSink m_sink; MessageQueue m_inputMessageQueue; //!< Queue for asynchronous inbound communication VORDemodSCSettings m_settings; diff --git a/plugins/channelrx/demodwfm/wfmdemodbaseband.cpp b/plugins/channelrx/demodwfm/wfmdemodbaseband.cpp index dd78d933d..586df00fb 100644 --- a/plugins/channelrx/demodwfm/wfmdemodbaseband.cpp +++ b/plugins/channelrx/demodwfm/wfmdemodbaseband.cpp @@ -42,6 +42,7 @@ WFMDemodBaseband::WFMDemodBaseband() : DSPEngine::instance()->getAudioDeviceManager()->addAudioSink(m_sink.getAudioFifo(), getInputMessageQueue()); m_sink.applyAudioSampleRate(DSPEngine::instance()->getAudioDeviceManager()->getOutputSampleRate()); + m_channelSampleRate = 0; connect(&m_inputMessageQueue, SIGNAL(messageEnqueued()), this, SLOT(handleInputMessages())); } @@ -56,6 +57,7 @@ void WFMDemodBaseband::reset() { QMutexLocker mutexLocker(&m_mutex); m_sampleFifo.reset(); + m_channelSampleRate = 0; } void WFMDemodBaseband::setChannel(ChannelAPI *channel) @@ -127,7 +129,12 @@ bool WFMDemodBaseband::handleMessage(const Message& cmd) m_sampleFifo.setSize(SampleSinkFifo::getSizePolicy(notif.getSampleRate())); m_channelizer->setBasebandSampleRate(notif.getSampleRate()); m_sink.applyChannelSettings(m_channelizer->getChannelSampleRate(), m_channelizer->getChannelFrequencyOffset()); - m_sink.applyAudioSampleRate(m_sink.getAudioSampleRate()); // reapply in case of channel sample rate change + + if (m_channelSampleRate != m_channelizer->getChannelSampleRate()) + { + m_sink.applyAudioSampleRate(m_sink.getAudioSampleRate()); // reapply when channel sample rate changes + m_channelSampleRate = m_channelizer->getChannelSampleRate(); + } return true; } @@ -144,7 +151,12 @@ void WFMDemodBaseband::applySettings(const WFMDemodSettings& settings, bool forc { m_channelizer->setChannelization(WFMDemodSettings::requiredBW(settings.m_rfBandwidth), settings.m_inputFrequencyOffset); m_sink.applyChannelSettings(m_channelizer->getChannelSampleRate(), m_channelizer->getChannelFrequencyOffset()); - m_sink.applyAudioSampleRate(m_sink.getAudioSampleRate()); // reapply in case of channel sample rate change + + if (m_channelSampleRate != m_channelizer->getChannelSampleRate()) + { + m_sink.applyAudioSampleRate(m_sink.getAudioSampleRate()); // reapply when channel sample rate changes + m_channelSampleRate = m_channelizer->getChannelSampleRate(); + } } if ((settings.m_audioDeviceName != m_settings.m_audioDeviceName) || force) diff --git a/plugins/channelrx/demodwfm/wfmdemodbaseband.h b/plugins/channelrx/demodwfm/wfmdemodbaseband.h index 5a5a5b561..606686031 100644 --- a/plugins/channelrx/demodwfm/wfmdemodbaseband.h +++ b/plugins/channelrx/demodwfm/wfmdemodbaseband.h @@ -75,6 +75,7 @@ public: private: SampleSinkFifo m_sampleFifo; DownChannelizer *m_channelizer; + int m_channelSampleRate; WFMDemodSink m_sink; MessageQueue m_inputMessageQueue; //!< Queue for asynchronous inbound communication WFMDemodSettings m_settings;