From 46f80e2a15a8f0d6cbe9b4b5a19d4a6650ad95d5 Mon Sep 17 00:00:00 2001 From: f4exb Date: Fri, 9 Mar 2018 06:54:45 +0100 Subject: [PATCH] DSD demod: implement RTP over UDP for audio copy final --- plugins/channelrx/demoddsd/dsddemodgui.cpp | 4 ++++ sdrbase/audio/audiofifo.cpp | 17 +++++++++++------ 2 files changed, 15 insertions(+), 6 deletions(-) diff --git a/plugins/channelrx/demoddsd/dsddemodgui.cpp b/plugins/channelrx/demoddsd/dsddemodgui.cpp index 066b470e1..ec6966bd4 100644 --- a/plugins/channelrx/demoddsd/dsddemodgui.cpp +++ b/plugins/channelrx/demoddsd/dsddemodgui.cpp @@ -308,6 +308,10 @@ DSDDemodGUI::DSDDemodGUI(PluginAPI* pluginAPI, DeviceUISet *deviceUISet, Baseban m_deviceUISet->addChannelMarker(&m_channelMarker); m_deviceUISet->addRollupWidget(this); + if (!m_dsdDemod->isAudioNetSinkRTPCapable()) { + ui->useRTP->hide(); + } + connect(&m_channelMarker, SIGNAL(changedByCursor()), this, SLOT(channelMarkerChangedByCursor())); connect(&m_channelMarker, SIGNAL(highlightedByCursor()), this, SLOT(channelMarkerHighlightedByCursor())); diff --git a/sdrbase/audio/audiofifo.cpp b/sdrbase/audio/audiofifo.cpp index 1a412d454..efd24a9e6 100644 --- a/sdrbase/audio/audiofifo.cpp +++ b/sdrbase/audio/audiofifo.cpp @@ -78,12 +78,6 @@ uint AudioFifo::write(const quint8* data, uint32_t numSamples, int timeout_ms) uint32_t remaining; uint32_t copyLen; - if (m_copyToUDP && m_audioNetSink) - { - //m_udpSink->write((AudioSample *) data, numSamples); - m_audioNetSink->write((AudioSample *) data, numSamples); - } - if(m_fifo == 0) { return 0; @@ -223,6 +217,17 @@ uint AudioFifo::read(quint8* data, uint32_t numSamples, int timeout_ms) copyLen = MIN(remaining, m_fill); copyLen = MIN(copyLen, m_size - m_head); memcpy(data, m_fifo + (m_head * m_sampleSize), copyLen * m_sampleSize); + + if (m_copyToUDP && m_audioNetSink) + { + for (quint8 *p = data; p < data + copyLen* m_sampleSize;) + { + AudioSample *a = (AudioSample *) p; + m_audioNetSink->write((a->l + a->r)/2); + p += m_sampleSize; + } + } + m_head += copyLen; m_head %= m_size; m_fill -= copyLen;