diff --git a/plugins/channelrx/demodam/amdemod.cpp b/plugins/channelrx/demodam/amdemod.cpp index 3743be9db..e3a9fbccc 100644 --- a/plugins/channelrx/demodam/amdemod.cpp +++ b/plugins/channelrx/demodam/amdemod.cpp @@ -41,6 +41,7 @@ AMDemod::AMDemod(DeviceSourceAPI *deviceAPI) : m_deviceAPI(deviceAPI), m_inputSampleRate(48000), m_inputFrequencyOffset(0), + m_running(false), m_squelchOpen(false), m_magsqSum(0.0f), m_magsqPeak(0.0f), @@ -110,7 +111,7 @@ void AMDemod::feed(const SampleVector::const_iterator& begin, const SampleVector } } - if (m_audioBufferFill > 0) + if (m_running && (m_audioBufferFill > 0)) { uint res = m_audioFifo.write((const quint8*)&m_audioBuffer[0], m_audioBufferFill, 10); @@ -131,10 +132,13 @@ void AMDemod::start() m_squelchCount = 0; m_audioFifo.clear(); applyChannelSettings(m_inputSampleRate, m_inputFrequencyOffset, true); + m_running = true; } void AMDemod::stop() { + qDebug("AMDemod::stop"); + m_running = false; } bool AMDemod::handleMessage(const Message& cmd) diff --git a/plugins/channelrx/demodam/amdemod.h b/plugins/channelrx/demodam/amdemod.h index e42688151..3dccaeec1 100644 --- a/plugins/channelrx/demodam/amdemod.h +++ b/plugins/channelrx/demodam/amdemod.h @@ -129,6 +129,7 @@ private: int m_inputSampleRate; int m_inputFrequencyOffset; AMDemodSettings m_settings; + bool m_running; NCO m_nco; Interpolator m_interpolator; @@ -227,7 +228,8 @@ private: if (res != m_audioBufferFill) { - qDebug("AMDemod::feed: %u/%u audio samples written", res, m_audioBufferFill); + qDebug("AMDemod::processOneSample: %u/%u audio samples written", res, m_audioBufferFill); + m_audioFifo.clear(); } m_audioBufferFill = 0; diff --git a/plugins/channelrx/demodnfm/nfmdemod.cpp b/plugins/channelrx/demodnfm/nfmdemod.cpp index 1a266b212..2f8daebc7 100644 --- a/plugins/channelrx/demodnfm/nfmdemod.cpp +++ b/plugins/channelrx/demodnfm/nfmdemod.cpp @@ -50,6 +50,7 @@ NFMDemod::NFMDemod(DeviceSourceAPI *devieAPI) : m_deviceAPI(devieAPI), m_inputSampleRate(48000), m_inputFrequencyOffset(0), + m_running(false), m_ctcssIndex(0), m_sampleCount(0), m_squelchCount(0), @@ -307,7 +308,7 @@ void NFMDemod::feed(const SampleVector::const_iterator& begin, const SampleVecto } } - if (m_audioBufferFill > 0) + if (m_running && (m_audioBufferFill > 0)) { uint res = m_audioFifo.write((const quint8*)&m_audioBuffer[0], m_audioBufferFill, 10); @@ -329,10 +330,13 @@ void NFMDemod::start() m_audioFifo.clear(); m_phaseDiscri.reset(); applyChannelSettings(m_inputSampleRate, m_inputFrequencyOffset, true); + m_running = true; } void NFMDemod::stop() { + qDebug() << "NFMDemod::stop"; + m_running = false; } bool NFMDemod::handleMessage(const Message& cmd) diff --git a/plugins/channelrx/demodnfm/nfmdemod.h b/plugins/channelrx/demodnfm/nfmdemod.h index ac5bfeae7..21668b4a6 100644 --- a/plugins/channelrx/demodnfm/nfmdemod.h +++ b/plugins/channelrx/demodnfm/nfmdemod.h @@ -175,6 +175,7 @@ private: int m_inputSampleRate; int m_inputFrequencyOffset; NFMDemodSettings m_settings; + bool m_running; NCO m_nco; Interpolator m_interpolator;