mirror of
https://github.com/f4exb/sdrangel.git
synced 2025-09-02 13:17:48 -04:00
AM and NFM demod: sanitize tail fill audio sink FIFO
This commit is contained in:
parent
1e23bb4ec6
commit
28a4649e2f
@ -41,6 +41,7 @@ AMDemod::AMDemod(DeviceSourceAPI *deviceAPI) :
|
|||||||
m_deviceAPI(deviceAPI),
|
m_deviceAPI(deviceAPI),
|
||||||
m_inputSampleRate(48000),
|
m_inputSampleRate(48000),
|
||||||
m_inputFrequencyOffset(0),
|
m_inputFrequencyOffset(0),
|
||||||
|
m_running(false),
|
||||||
m_squelchOpen(false),
|
m_squelchOpen(false),
|
||||||
m_magsqSum(0.0f),
|
m_magsqSum(0.0f),
|
||||||
m_magsqPeak(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);
|
uint res = m_audioFifo.write((const quint8*)&m_audioBuffer[0], m_audioBufferFill, 10);
|
||||||
|
|
||||||
@ -131,10 +132,13 @@ void AMDemod::start()
|
|||||||
m_squelchCount = 0;
|
m_squelchCount = 0;
|
||||||
m_audioFifo.clear();
|
m_audioFifo.clear();
|
||||||
applyChannelSettings(m_inputSampleRate, m_inputFrequencyOffset, true);
|
applyChannelSettings(m_inputSampleRate, m_inputFrequencyOffset, true);
|
||||||
|
m_running = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
void AMDemod::stop()
|
void AMDemod::stop()
|
||||||
{
|
{
|
||||||
|
qDebug("AMDemod::stop");
|
||||||
|
m_running = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool AMDemod::handleMessage(const Message& cmd)
|
bool AMDemod::handleMessage(const Message& cmd)
|
||||||
|
@ -129,6 +129,7 @@ private:
|
|||||||
int m_inputSampleRate;
|
int m_inputSampleRate;
|
||||||
int m_inputFrequencyOffset;
|
int m_inputFrequencyOffset;
|
||||||
AMDemodSettings m_settings;
|
AMDemodSettings m_settings;
|
||||||
|
bool m_running;
|
||||||
|
|
||||||
NCO m_nco;
|
NCO m_nco;
|
||||||
Interpolator m_interpolator;
|
Interpolator m_interpolator;
|
||||||
@ -227,7 +228,8 @@ private:
|
|||||||
|
|
||||||
if (res != m_audioBufferFill)
|
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;
|
m_audioBufferFill = 0;
|
||||||
|
@ -50,6 +50,7 @@ NFMDemod::NFMDemod(DeviceSourceAPI *devieAPI) :
|
|||||||
m_deviceAPI(devieAPI),
|
m_deviceAPI(devieAPI),
|
||||||
m_inputSampleRate(48000),
|
m_inputSampleRate(48000),
|
||||||
m_inputFrequencyOffset(0),
|
m_inputFrequencyOffset(0),
|
||||||
|
m_running(false),
|
||||||
m_ctcssIndex(0),
|
m_ctcssIndex(0),
|
||||||
m_sampleCount(0),
|
m_sampleCount(0),
|
||||||
m_squelchCount(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);
|
uint res = m_audioFifo.write((const quint8*)&m_audioBuffer[0], m_audioBufferFill, 10);
|
||||||
|
|
||||||
@ -329,10 +330,13 @@ void NFMDemod::start()
|
|||||||
m_audioFifo.clear();
|
m_audioFifo.clear();
|
||||||
m_phaseDiscri.reset();
|
m_phaseDiscri.reset();
|
||||||
applyChannelSettings(m_inputSampleRate, m_inputFrequencyOffset, true);
|
applyChannelSettings(m_inputSampleRate, m_inputFrequencyOffset, true);
|
||||||
|
m_running = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
void NFMDemod::stop()
|
void NFMDemod::stop()
|
||||||
{
|
{
|
||||||
|
qDebug() << "NFMDemod::stop";
|
||||||
|
m_running = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool NFMDemod::handleMessage(const Message& cmd)
|
bool NFMDemod::handleMessage(const Message& cmd)
|
||||||
|
@ -175,6 +175,7 @@ private:
|
|||||||
int m_inputSampleRate;
|
int m_inputSampleRate;
|
||||||
int m_inputFrequencyOffset;
|
int m_inputFrequencyOffset;
|
||||||
NFMDemodSettings m_settings;
|
NFMDemodSettings m_settings;
|
||||||
|
bool m_running;
|
||||||
|
|
||||||
NCO m_nco;
|
NCO m_nco;
|
||||||
Interpolator m_interpolator;
|
Interpolator m_interpolator;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user