From e64ed093080db984d97c427cd0008facddacc0b7 Mon Sep 17 00:00:00 2001 From: f4exb Date: Tue, 27 Mar 2018 08:13:06 +0200 Subject: [PATCH] Option to disable RTP when constructing the AudioNetSink --- plugins/channelrx/demodam/amdemod.cpp | 2 +- sdrbase/audio/audionetsink.cpp | 13 +++++++++---- sdrbase/audio/audionetsink.h | 2 +- 3 files changed, 11 insertions(+), 6 deletions(-) diff --git a/plugins/channelrx/demodam/amdemod.cpp b/plugins/channelrx/demodam/amdemod.cpp index 405f943bb..bb62ff584 100644 --- a/plugins/channelrx/demodam/amdemod.cpp +++ b/plugins/channelrx/demodam/amdemod.cpp @@ -65,7 +65,7 @@ AMDemod::AMDemod(DeviceSourceAPI *deviceAPI) : DSPEngine::instance()->getAudioDeviceManager()->addAudioSink(&m_audioFifo, getInputMessageQueue()); m_audioSampleRate = DSPEngine::instance()->getAudioDeviceManager()->getOutputSampleRate(); - m_audioNetSink = new AudioNetSink(0); // parent thread allocated dynamically + m_audioNetSink = new AudioNetSink(0, false, false); // parent thread allocated dynamically m_audioNetSink->setDestination(m_settings.m_udpAddress, m_settings.m_udpPort); applyChannelSettings(m_inputSampleRate, m_inputFrequencyOffset, true); diff --git a/sdrbase/audio/audionetsink.cpp b/sdrbase/audio/audionetsink.cpp index 580190bc0..43e40ec0a 100644 --- a/sdrbase/audio/audionetsink.cpp +++ b/sdrbase/audio/audionetsink.cpp @@ -23,14 +23,17 @@ const int AudioNetSink::m_udpBlockSize = 512; -AudioNetSink::AudioNetSink(QObject *parent, bool stereo) : +AudioNetSink::AudioNetSink(QObject *parent, bool stereo, bool useRTP) : m_type(SinkUDP), m_rtpBufferAudio(0), m_bufferIndex(0), m_port(9998) { m_udpSocket = new QUdpSocket(parent); - m_rtpBufferAudio = new RTPSink(m_udpSocket, stereo); + + if (useRTP) { + m_rtpBufferAudio = new RTPSink(m_udpSocket, stereo); + } } AudioNetSink::~AudioNetSink() @@ -44,7 +47,7 @@ AudioNetSink::~AudioNetSink() bool AudioNetSink::isRTPCapable() const { - return m_rtpBufferAudio->isValid(); + return m_rtpBufferAudio && m_rtpBufferAudio->isValid(); } bool AudioNetSink::selectType(SinkType type) @@ -91,7 +94,9 @@ void AudioNetSink::deleteDestination(const QString& address, uint16_t port) void AudioNetSink::setParameters(bool stereo, int sampleRate) { - m_rtpBufferAudio->setPayloadInformation(stereo ? RTPSink::PayloadL16Stereo : RTPSink::PayloadL16Mono, sampleRate); + if (m_rtpBufferAudio) { + m_rtpBufferAudio->setPayloadInformation(stereo ? RTPSink::PayloadL16Stereo : RTPSink::PayloadL16Mono, sampleRate); + } } void AudioNetSink::write(qint16 sample) diff --git a/sdrbase/audio/audionetsink.h b/sdrbase/audio/audionetsink.h index a57f83e9e..600c68672 100644 --- a/sdrbase/audio/audionetsink.h +++ b/sdrbase/audio/audionetsink.h @@ -37,7 +37,7 @@ public: SinkRTP } SinkType; - AudioNetSink(QObject *parent, bool stereo = false); + AudioNetSink(QObject *parent, bool stereo = false, bool useRTP = true); ~AudioNetSink(); void setDestination(const QString& address, uint16_t port);