From 5771ef4783e222d75be5c728f58923acec85e708 Mon Sep 17 00:00:00 2001 From: f4exb Date: Wed, 12 Sep 2018 15:30:53 +0200 Subject: [PATCH] Foolproof AudioFifo to try fix issue #210. Consequently removed useless timeout parameter on read and write methods --- plugins/channelrx/demodam/amdemod.cpp | 4 +- plugins/channelrx/demodam/amdemodplugin.cpp | 2 +- plugins/channelrx/demodbfm/bfmdemod.cpp | 4 +- plugins/channelrx/demodbfm/bfmplugin.cpp | 2 +- plugins/channelrx/demoddsd/dsddemod.cpp | 4 +- plugins/channelrx/demoddsd/dsddemodplugin.cpp | 2 +- plugins/channelrx/demodnfm/nfmdemod.cpp | 4 +- plugins/channelrx/demodnfm/nfmplugin.cpp | 2 +- plugins/channelrx/demodssb/ssbdemod.cpp | 4 +- plugins/channelrx/demodssb/ssbplugin.cpp | 2 +- plugins/channelrx/demodwfm/wfmdemod.cpp | 4 +- plugins/channelrx/demodwfm/wfmplugin.cpp | 2 +- plugins/channelrx/udpsink/udpsink.cpp | 6 +- plugins/channeltx/modam/ammod.cpp | 2 +- plugins/channeltx/modam/ammodplugin.cpp | 2 +- plugins/channeltx/modnfm/nfmmod.cpp | 2 +- plugins/channeltx/modnfm/nfmmodplugin.cpp | 2 +- plugins/channeltx/modssb/ssbmod.cpp | 2 +- plugins/channeltx/modssb/ssbmodplugin.cpp | 2 +- plugins/channeltx/modwfm/wfmmod.cpp | 2 +- plugins/channeltx/modwfm/wfmmodplugin.cpp | 2 +- sdrbase/audio/audiofifo.cpp | 116 ++---------------- sdrbase/audio/audiofifo.h | 9 +- sdrbase/audio/audioinput.cpp | 2 +- sdrbase/audio/audiooutput.cpp | 2 +- sdrbase/dsp/dvserialworker.cpp | 2 +- 26 files changed, 47 insertions(+), 142 deletions(-) diff --git a/plugins/channelrx/demodam/amdemod.cpp b/plugins/channelrx/demodam/amdemod.cpp index 50c1caa88..29a01559f 100644 --- a/plugins/channelrx/demodam/amdemod.cpp +++ b/plugins/channelrx/demodam/amdemod.cpp @@ -136,7 +136,7 @@ void AMDemod::feed(const SampleVector::const_iterator& begin, const SampleVector if (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); if (res != m_audioBufferFill) { @@ -263,7 +263,7 @@ void AMDemod::processOneSample(Complex &ci) if (m_audioBufferFill >= m_audioBuffer.size()) { - 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); if (res != m_audioBufferFill) { diff --git a/plugins/channelrx/demodam/amdemodplugin.cpp b/plugins/channelrx/demodam/amdemodplugin.cpp index 76a6b95bb..28a4b640c 100644 --- a/plugins/channelrx/demodam/amdemodplugin.cpp +++ b/plugins/channelrx/demodam/amdemodplugin.cpp @@ -9,7 +9,7 @@ const PluginDescriptor AMDemodPlugin::m_pluginDescriptor = { QString("AM Demodulator"), - QString("4.0.6"), + QString("4.1.0"), QString("(c) Edouard Griffiths, F4EXB"), QString("https://github.com/f4exb/sdrangel"), true, diff --git a/plugins/channelrx/demodbfm/bfmdemod.cpp b/plugins/channelrx/demodbfm/bfmdemod.cpp index f17ae25d3..1d056771d 100644 --- a/plugins/channelrx/demodbfm/bfmdemod.cpp +++ b/plugins/channelrx/demodbfm/bfmdemod.cpp @@ -246,7 +246,7 @@ void BFMDemod::feed(const SampleVector::const_iterator& begin, const SampleVecto if (m_audioBufferFill >= m_audioBuffer.size()) { - uint res = m_audioFifo.write((const quint8*)&m_audioBuffer[0], m_audioBufferFill, 1); + uint res = m_audioFifo.write((const quint8*)&m_audioBuffer[0], m_audioBufferFill); if(res != m_audioBufferFill) { qDebug("BFMDemod::feed: %u/%u audio samples written", res, m_audioBufferFill); @@ -262,7 +262,7 @@ void BFMDemod::feed(const SampleVector::const_iterator& begin, const SampleVecto if (m_audioBufferFill > 0) { - uint res = m_audioFifo.write((const quint8*)&m_audioBuffer[0], m_audioBufferFill, 1); + uint res = m_audioFifo.write((const quint8*)&m_audioBuffer[0], m_audioBufferFill); if (res != m_audioBufferFill) { qDebug("BFMDemod::feed: %u/%u tail samples written", res, m_audioBufferFill); diff --git a/plugins/channelrx/demodbfm/bfmplugin.cpp b/plugins/channelrx/demodbfm/bfmplugin.cpp index 0d813d9ef..b6af176e5 100644 --- a/plugins/channelrx/demodbfm/bfmplugin.cpp +++ b/plugins/channelrx/demodbfm/bfmplugin.cpp @@ -27,7 +27,7 @@ const PluginDescriptor BFMPlugin::m_pluginDescriptor = { QString("Broadcast FM Demodulator"), - QString("4.0.6"), + QString("4.1.0"), QString("(c) Edouard Griffiths, F4EXB"), QString("https://github.com/f4exb/sdrangel"), true, diff --git a/plugins/channelrx/demoddsd/dsddemod.cpp b/plugins/channelrx/demoddsd/dsddemod.cpp index edce8becd..04a9169e3 100644 --- a/plugins/channelrx/demoddsd/dsddemod.cpp +++ b/plugins/channelrx/demoddsd/dsddemod.cpp @@ -296,7 +296,7 @@ void DSDDemod::feed(const SampleVector::const_iterator& begin, const SampleVecto if (nbAudioSamples > 0) { if (!m_settings.m_audioMute) { - m_audioFifo1.write((const quint8*) dsdAudio, nbAudioSamples, 10); + m_audioFifo1.write((const quint8*) dsdAudio, nbAudioSamples); } m_dsdDecoder.resetAudio1(); @@ -311,7 +311,7 @@ void DSDDemod::feed(const SampleVector::const_iterator& begin, const SampleVecto if (nbAudioSamples > 0) { if (!m_settings.m_audioMute) { - m_audioFifo2.write((const quint8*) dsdAudio, nbAudioSamples, 10); + m_audioFifo2.write((const quint8*) dsdAudio, nbAudioSamples); } m_dsdDecoder.resetAudio2(); diff --git a/plugins/channelrx/demoddsd/dsddemodplugin.cpp b/plugins/channelrx/demoddsd/dsddemodplugin.cpp index 32c365ae0..d10957be0 100644 --- a/plugins/channelrx/demoddsd/dsddemodplugin.cpp +++ b/plugins/channelrx/demoddsd/dsddemodplugin.cpp @@ -27,7 +27,7 @@ const PluginDescriptor DSDDemodPlugin::m_pluginDescriptor = { QString("DSD Demodulator"), - QString("4.0.6"), + QString("4.1.0"), QString("(c) Edouard Griffiths, F4EXB"), QString("https://github.com/f4exb/sdrangel"), true, diff --git a/plugins/channelrx/demodnfm/nfmdemod.cpp b/plugins/channelrx/demodnfm/nfmdemod.cpp index 29c1de46f..85a6e9263 100644 --- a/plugins/channelrx/demodnfm/nfmdemod.cpp +++ b/plugins/channelrx/demodnfm/nfmdemod.cpp @@ -302,7 +302,7 @@ void NFMDemod::feed(const SampleVector::const_iterator& begin, const SampleVecto if (m_audioBufferFill >= m_audioBuffer.size()) { - 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); if (res != m_audioBufferFill) { @@ -318,7 +318,7 @@ void NFMDemod::feed(const SampleVector::const_iterator& begin, const SampleVecto if (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); if (res != m_audioBufferFill) { diff --git a/plugins/channelrx/demodnfm/nfmplugin.cpp b/plugins/channelrx/demodnfm/nfmplugin.cpp index e23e7fa6b..97ef60aae 100644 --- a/plugins/channelrx/demodnfm/nfmplugin.cpp +++ b/plugins/channelrx/demodnfm/nfmplugin.cpp @@ -9,7 +9,7 @@ const PluginDescriptor NFMPlugin::m_pluginDescriptor = { QString("NFM Demodulator"), - QString("4.0.6"), + QString("4.1.0"), QString("(c) Edouard Griffiths, F4EXB"), QString("https://github.com/f4exb/sdrangel"), true, diff --git a/plugins/channelrx/demodssb/ssbdemod.cpp b/plugins/channelrx/demodssb/ssbdemod.cpp index 82749468c..0b0aa6b21 100644 --- a/plugins/channelrx/demodssb/ssbdemod.cpp +++ b/plugins/channelrx/demodssb/ssbdemod.cpp @@ -253,7 +253,7 @@ void SSBDemod::feed(const SampleVector::const_iterator& begin, const SampleVecto if (m_audioBufferFill >= m_audioBuffer.size()) { - 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); if (res != m_audioBufferFill) { @@ -265,7 +265,7 @@ void SSBDemod::feed(const SampleVector::const_iterator& begin, const SampleVecto } } - 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); if (res != m_audioBufferFill) { diff --git a/plugins/channelrx/demodssb/ssbplugin.cpp b/plugins/channelrx/demodssb/ssbplugin.cpp index 04281096d..9a9ab8e9c 100644 --- a/plugins/channelrx/demodssb/ssbplugin.cpp +++ b/plugins/channelrx/demodssb/ssbplugin.cpp @@ -10,7 +10,7 @@ const PluginDescriptor SSBPlugin::m_pluginDescriptor = { QString("SSB Demodulator"), - QString("4.0.6"), + QString("4.1.0"), QString("(c) Edouard Griffiths, F4EXB"), QString("https://github.com/f4exb/sdrangel"), true, diff --git a/plugins/channelrx/demodwfm/wfmdemod.cpp b/plugins/channelrx/demodwfm/wfmdemod.cpp index e4354a331..741a16706 100644 --- a/plugins/channelrx/demodwfm/wfmdemod.cpp +++ b/plugins/channelrx/demodwfm/wfmdemod.cpp @@ -152,7 +152,7 @@ void WFMDemod::feed(const SampleVector::const_iterator& begin, const SampleVecto if(m_audioBufferFill >= m_audioBuffer.size()) { - uint res = m_audioFifo.write((const quint8*)&m_audioBuffer[0], m_audioBufferFill, 1); + uint res = m_audioFifo.write((const quint8*)&m_audioBuffer[0], m_audioBufferFill); if (res != m_audioBufferFill) { qDebug("WFMDemod::feed: %u/%u audio samples written", res, m_audioBufferFill); @@ -168,7 +168,7 @@ void WFMDemod::feed(const SampleVector::const_iterator& begin, const SampleVecto if (m_audioBufferFill > 0) { - uint res = m_audioFifo.write((const quint8*)&m_audioBuffer[0], m_audioBufferFill, 1); + uint res = m_audioFifo.write((const quint8*)&m_audioBuffer[0], m_audioBufferFill); if (res != m_audioBufferFill) { qDebug("WFMDemod::feed: %u/%u tail samples written", res, m_audioBufferFill); diff --git a/plugins/channelrx/demodwfm/wfmplugin.cpp b/plugins/channelrx/demodwfm/wfmplugin.cpp index 8d2836832..55c366b16 100644 --- a/plugins/channelrx/demodwfm/wfmplugin.cpp +++ b/plugins/channelrx/demodwfm/wfmplugin.cpp @@ -10,7 +10,7 @@ const PluginDescriptor WFMPlugin::m_pluginDescriptor = { QString("WFM Demodulator"), - QString("4.0.6"), + QString("4.1.0"), QString("(c) Edouard Griffiths, F4EXB"), QString("https://github.com/f4exb/sdrangel"), true, diff --git a/plugins/channelrx/udpsink/udpsink.cpp b/plugins/channelrx/udpsink/udpsink.cpp index 1e2e2a235..945c35a88 100644 --- a/plugins/channelrx/udpsink/udpsink.cpp +++ b/plugins/channelrx/udpsink/udpsink.cpp @@ -414,7 +414,7 @@ void UDPSink::audioReadyRead() if (m_audioBufferFill >= m_audioBuffer.size()) { - uint res = m_audioFifo.write((const quint8*)&m_audioBuffer[0], m_audioBufferFill, 1); + uint res = m_audioFifo.write((const quint8*)&m_audioBuffer[0], m_audioBufferFill); if (res != m_audioBufferFill) { @@ -436,7 +436,7 @@ void UDPSink::audioReadyRead() if (m_audioBufferFill >= m_audioBuffer.size()) { - uint res = m_audioFifo.write((const quint8*)&m_audioBuffer[0], m_audioBufferFill, 1); + uint res = m_audioFifo.write((const quint8*)&m_audioBuffer[0], m_audioBufferFill); if (res != m_audioBufferFill) { @@ -448,7 +448,7 @@ void UDPSink::audioReadyRead() } } - if (m_audioFifo.write((const quint8*)&m_audioBuffer[0], m_audioBufferFill, 0) != m_audioBufferFill) + if (m_audioFifo.write((const quint8*)&m_audioBuffer[0], m_audioBufferFill) != m_audioBufferFill) { qDebug("UDPSink::audioReadyRead: lost samples"); } diff --git a/plugins/channeltx/modam/ammod.cpp b/plugins/channeltx/modam/ammod.cpp index 8fed8d862..6fe798e1c 100644 --- a/plugins/channeltx/modam/ammod.cpp +++ b/plugins/channeltx/modam/ammod.cpp @@ -150,7 +150,7 @@ void AMMod::pullAudio(int nbSamples) m_audioBuffer.resize(nbAudioSamples); } - m_audioFifo.read(reinterpret_cast(&m_audioBuffer[0]), nbAudioSamples, 10); + m_audioFifo.read(reinterpret_cast(&m_audioBuffer[0]), nbAudioSamples); m_audioBufferFill = 0; } diff --git a/plugins/channeltx/modam/ammodplugin.cpp b/plugins/channeltx/modam/ammodplugin.cpp index 2aa1bd0f5..23d880d4e 100644 --- a/plugins/channeltx/modam/ammodplugin.cpp +++ b/plugins/channeltx/modam/ammodplugin.cpp @@ -25,7 +25,7 @@ const PluginDescriptor AMModPlugin::m_pluginDescriptor = { QString("AM Modulator"), - QString("4.0.7"), + QString("4.1.0"), QString("(c) Edouard Griffiths, F4EXB"), QString("https://github.com/f4exb/sdrangel"), true, diff --git a/plugins/channeltx/modnfm/nfmmod.cpp b/plugins/channeltx/modnfm/nfmmod.cpp index 6dc2c7b1e..894d4ffb5 100644 --- a/plugins/channeltx/modnfm/nfmmod.cpp +++ b/plugins/channeltx/modnfm/nfmmod.cpp @@ -155,7 +155,7 @@ void NFMMod::pullAudio(int nbSamples) m_audioBuffer.resize(nbSamplesAudio); } - m_audioFifo.read(reinterpret_cast(&m_audioBuffer[0]), nbSamplesAudio, 10); + m_audioFifo.read(reinterpret_cast(&m_audioBuffer[0]), nbSamplesAudio); m_audioBufferFill = 0; } diff --git a/plugins/channeltx/modnfm/nfmmodplugin.cpp b/plugins/channeltx/modnfm/nfmmodplugin.cpp index 4b628a709..8f231d52c 100644 --- a/plugins/channeltx/modnfm/nfmmodplugin.cpp +++ b/plugins/channeltx/modnfm/nfmmodplugin.cpp @@ -25,7 +25,7 @@ const PluginDescriptor NFMModPlugin::m_pluginDescriptor = { QString("NFM Modulator"), - QString("4.0.7"), + QString("4.1.0"), QString("(c) Edouard Griffiths, F4EXB"), QString("https://github.com/f4exb/sdrangel"), true, diff --git a/plugins/channeltx/modssb/ssbmod.cpp b/plugins/channeltx/modssb/ssbmod.cpp index 17eb07625..2efda0df5 100644 --- a/plugins/channeltx/modssb/ssbmod.cpp +++ b/plugins/channeltx/modssb/ssbmod.cpp @@ -179,7 +179,7 @@ void SSBMod::pullAudio(int nbSamples) m_audioBuffer.resize(nbSamplesAudio); } - m_audioFifo.read(reinterpret_cast(&m_audioBuffer[0]), nbSamplesAudio, 10); + m_audioFifo.read(reinterpret_cast(&m_audioBuffer[0]), nbSamplesAudio); m_audioBufferFill = 0; } diff --git a/plugins/channeltx/modssb/ssbmodplugin.cpp b/plugins/channeltx/modssb/ssbmodplugin.cpp index f8b146068..cfd279871 100644 --- a/plugins/channeltx/modssb/ssbmodplugin.cpp +++ b/plugins/channeltx/modssb/ssbmodplugin.cpp @@ -25,7 +25,7 @@ const PluginDescriptor SSBModPlugin::m_pluginDescriptor = { QString("SSB Modulator"), - QString("4.0.7"), + QString("4.1.0"), QString("(c) Edouard Griffiths, F4EXB"), QString("https://github.com/f4exb/sdrangel"), true, diff --git a/plugins/channeltx/modwfm/wfmmod.cpp b/plugins/channeltx/modwfm/wfmmod.cpp index d8929546f..916781f0d 100644 --- a/plugins/channeltx/modwfm/wfmmod.cpp +++ b/plugins/channeltx/modwfm/wfmmod.cpp @@ -177,7 +177,7 @@ void WFMMod::pullAudio(int nbSamples) m_audioBuffer.resize(nbSamplesAudio); } - m_audioFifo.read(reinterpret_cast(&m_audioBuffer[0]), nbSamplesAudio, 10); + m_audioFifo.read(reinterpret_cast(&m_audioBuffer[0]), nbSamplesAudio); m_audioBufferFill = 0; } diff --git a/plugins/channeltx/modwfm/wfmmodplugin.cpp b/plugins/channeltx/modwfm/wfmmodplugin.cpp index afa3545d6..b526dc703 100644 --- a/plugins/channeltx/modwfm/wfmmodplugin.cpp +++ b/plugins/channeltx/modwfm/wfmmodplugin.cpp @@ -25,7 +25,7 @@ const PluginDescriptor WFMModPlugin::m_pluginDescriptor = { QString("WFM Modulator"), - QString("4.0.7"), + QString("4.1.0"), QString("(c) Edouard Griffiths, F4EXB"), QString("https://github.com/f4exb/sdrangel"), true, diff --git a/sdrbase/audio/audiofifo.cpp b/sdrbase/audio/audiofifo.cpp index 2cade6829..26ca348dc 100644 --- a/sdrbase/audio/audiofifo.cpp +++ b/sdrbase/audio/audiofifo.cpp @@ -52,9 +52,6 @@ AudioFifo::~AudioFifo() m_fifo = 0; } - m_writeWaitCondition.wakeOne(); - m_readWaitCondition.wakeOne(); - m_size = 0; } @@ -65,68 +62,27 @@ bool AudioFifo::setSize(uint32_t numSamples) return create(numSamples); } -uint AudioFifo::write(const quint8* data, uint32_t numSamples, int timeout_ms) +uint AudioFifo::write(const quint8* data, uint32_t numSamples) { - QTime time; uint32_t total; uint32_t remaining; uint32_t copyLen; - if(m_fifo == 0) - { + if (m_fifo == 0) { return 0; } - time.start(); m_mutex.lock(); - if(timeout_ms == 0) - { - total = MIN(numSamples, m_size - m_fill); - } - else - { - total = numSamples; - } - + total = MIN(numSamples, m_size - m_fill); remaining = total; - while (remaining > 0) + while (remaining != 0) { if (isFull()) { - if (time.elapsed() < timeout_ms) - { - m_writeWaitLock.lock(); - m_mutex.unlock(); - int ms = timeout_ms - time.elapsed(); - - if(ms < 1) - { - ms = 1; - } - - bool ok = m_writeWaitCondition.wait(&m_writeWaitLock, ms); - m_writeWaitLock.unlock(); - - if(!ok) - { - return total - remaining; - } - - m_mutex.lock(); - - if(m_fifo == 0) - { - m_mutex.unlock(); - return 0; - } - } - else - { - m_mutex.unlock(); - return total - remaining; - } + m_mutex.unlock(); + return total - remaining; // written so far } copyLen = MIN(remaining, m_size - m_fill); @@ -137,75 +93,33 @@ uint AudioFifo::write(const quint8* data, uint32_t numSamples, int timeout_ms) m_fill += copyLen; data += copyLen * m_sampleSize; remaining -= copyLen; - m_readWaitCondition.wakeOne(); } m_mutex.unlock(); return total; } -uint AudioFifo::read(quint8* data, uint32_t numSamples, int timeout_ms) +uint AudioFifo::read(quint8* data, uint32_t numSamples) { - QTime time; uint32_t total; uint32_t remaining; uint32_t copyLen; - if(m_fifo == 0) - { + if (m_fifo == 0) { return 0; } - time.start(); m_mutex.lock(); - if(timeout_ms == 0) - { - total = MIN(numSamples, m_fill); - } - else - { - total = numSamples; - } - + total = MIN(numSamples, m_fill); remaining = total; - while(remaining > 0) + while (remaining != 0) { - if(isEmpty()) + if (isEmpty()) { - if(time.elapsed() < timeout_ms) - { - m_readWaitLock.lock(); - m_mutex.unlock(); - int ms = timeout_ms - time.elapsed(); - - if(ms < 1) - { - ms = 1; - } - - bool ok = m_readWaitCondition.wait(&m_readWaitLock, ms); - m_readWaitLock.unlock(); - - if(!ok) - { - return total - remaining; - } - - m_mutex.lock(); - - if(m_fifo == 0) - { - m_mutex.unlock(); - return 0; - } - } - else - { - m_mutex.unlock(); - return total - remaining; - } + m_mutex.unlock(); + return total - remaining; // read so far } copyLen = MIN(remaining, m_fill); @@ -217,7 +131,6 @@ uint AudioFifo::read(quint8* data, uint32_t numSamples, int timeout_ms) m_fill -= copyLen; data += copyLen * m_sampleSize; remaining -= copyLen; - m_writeWaitCondition.wakeOne(); } m_mutex.unlock(); @@ -236,7 +149,6 @@ uint AudioFifo::drain(uint32_t numSamples) m_head = (m_head + numSamples) % m_size; m_fill -= numSamples; - m_writeWaitCondition.wakeOne(); return numSamples; } @@ -247,8 +159,6 @@ void AudioFifo::clear() m_fill = 0; m_head = 0; m_tail = 0; - - m_writeWaitCondition.wakeOne(); } bool AudioFifo::create(uint32_t numSamples) diff --git a/sdrbase/audio/audiofifo.h b/sdrbase/audio/audiofifo.h index defdd3658..bab5d0177 100644 --- a/sdrbase/audio/audiofifo.h +++ b/sdrbase/audio/audiofifo.h @@ -34,8 +34,8 @@ public: bool setSize(uint32_t numSamples); - uint32_t write(const quint8* data, uint32_t numSamples, int timeout_ms = INT_MAX); - uint32_t read(quint8* data, uint32_t numSamples, int timeout_ms = INT_MAX); + uint32_t write(const quint8* data, uint32_t numSamples); + uint32_t read(quint8* data, uint32_t numSamples); uint32_t drain(uint32_t numSamples); void clear(); @@ -58,11 +58,6 @@ private: uint32_t m_head; uint32_t m_tail; - QMutex m_writeWaitLock; - QMutex m_readWaitLock; - QWaitCondition m_writeWaitCondition; - QWaitCondition m_readWaitCondition; - bool create(uint32_t numSamples); }; diff --git a/sdrbase/audio/audioinput.cpp b/sdrbase/audio/audioinput.cpp index d94b2ffbf..17362b640 100644 --- a/sdrbase/audio/audioinput.cpp +++ b/sdrbase/audio/audioinput.cpp @@ -181,7 +181,7 @@ qint64 AudioInput::writeData(const char *data, qint64 len) for (std::list::iterator it = m_audioFifos.begin(); it != m_audioFifos.end(); ++it) { - (*it)->write(reinterpret_cast(data), len/4, 10); + (*it)->write(reinterpret_cast(data), len/4); } return len; diff --git a/sdrbase/audio/audiooutput.cpp b/sdrbase/audio/audiooutput.cpp index c7ddf62e0..d6d2d107d 100644 --- a/sdrbase/audio/audiooutput.cpp +++ b/sdrbase/audio/audiooutput.cpp @@ -241,7 +241,7 @@ qint64 AudioOutput::readData(char* data, qint64 maxLen) for (std::list::iterator it = m_audioFifos.begin(); it != m_audioFifos.end(); ++it) { // use outputBuffer as temp - yes, one memcpy could be saved - unsigned int samples = (*it)->read((quint8*) data, samplesPerBuffer, 1); + unsigned int samples = (*it)->read((quint8*) data, samplesPerBuffer); const qint16* src = (const qint16*) data; std::vector::iterator dst = m_mixBuffer.begin(); diff --git a/sdrbase/dsp/dvserialworker.cpp b/sdrbase/dsp/dvserialworker.cpp index 6c5e28e4c..e72f0f5db 100644 --- a/sdrbase/dsp/dvserialworker.cpp +++ b/sdrbase/dsp/dvserialworker.cpp @@ -118,7 +118,7 @@ void DVSerialWorker::handleInputMessages() if (audioFifo) { - uint res = audioFifo->write((const quint8*)&m_audioBuffer[0], m_audioBufferFill, 10); + uint res = audioFifo->write((const quint8*)&m_audioBuffer[0], m_audioBufferFill); if (res != m_audioBufferFill) {