diff --git a/plugins/channelrx/demoddsd/dsddemod.h b/plugins/channelrx/demoddsd/dsddemod.h index 5c47cb5fe..d4b91e568 100644 --- a/plugins/channelrx/demoddsd/dsddemod.h +++ b/plugins/channelrx/demoddsd/dsddemod.h @@ -125,6 +125,8 @@ public: m_magsqCount = 0; } + bool isAudioNetSinkRTPCapable() const { return false; } + static const QString m_channelIdURI; static const QString m_channelId; diff --git a/plugins/channelrx/demoddsd/dsddemodgui.cpp b/plugins/channelrx/demoddsd/dsddemodgui.cpp index 7471d988f..066b470e1 100644 --- a/plugins/channelrx/demoddsd/dsddemodgui.cpp +++ b/plugins/channelrx/demoddsd/dsddemodgui.cpp @@ -219,6 +219,12 @@ void DSDDemodGUI::on_udpOutput_toggled(bool checked) applySettings(); } +void DSDDemodGUI::on_useRTP_toggled(bool checked) +{ + m_settings.m_copyAudioUseRTP = checked; + applySettings(); +} + void DSDDemodGUI::onWidgetRolled(QWidget* widget __attribute__((unused)), bool rollDown __attribute__((unused))) { /* @@ -385,6 +391,10 @@ void DSDDemodGUI::displaySettings() ui->udpOutput->setChecked(m_settings.m_copyAudioToUDP); ui->symbolPLLLock->setChecked(m_settings.m_pllLock); + if (m_dsdDemod->isAudioNetSinkRTPCapable()) { + ui->useRTP->setChecked(m_settings.m_copyAudioUseRTP); + } + ui->baudRate->setCurrentIndex(DSDDemodBaudRates::getRateIndex(m_settings.m_baudRate)); blockApplySettings(false); diff --git a/plugins/channelrx/demoddsd/dsddemodgui.h b/plugins/channelrx/demoddsd/dsddemodgui.h index 40fa8e18d..c79648b44 100644 --- a/plugins/channelrx/demoddsd/dsddemodgui.h +++ b/plugins/channelrx/demoddsd/dsddemodgui.h @@ -128,6 +128,7 @@ private slots: void on_audioMute_toggled(bool checked); void on_symbolPLLLock_toggled(bool checked); void on_udpOutput_toggled(bool checked); + void on_useRTP_toggled(bool checked); void onWidgetRolled(QWidget* widget, bool rollDown); void onMenuDialogCalled(const QPoint& p); void tick(); diff --git a/plugins/channelrx/demoddsd/dsddemodgui.ui b/plugins/channelrx/demoddsd/dsddemodgui.ui index 81dae5996..c05e60e6f 100644 --- a/plugins/channelrx/demoddsd/dsddemodgui.ui +++ b/plugins/channelrx/demoddsd/dsddemodgui.ui @@ -867,6 +867,16 @@ + + + + Use RTP protocol for audio copy to UDP + + + R + + + diff --git a/plugins/channelrx/demoddsd/dsddemodsettings.cpp b/plugins/channelrx/demoddsd/dsddemodsettings.cpp index c7404ee77..bd0d23c91 100644 --- a/plugins/channelrx/demoddsd/dsddemodsettings.cpp +++ b/plugins/channelrx/demoddsd/dsddemodsettings.cpp @@ -47,6 +47,7 @@ void DSDDemodSettings::resetToDefaults() m_tdmaStereo = false; m_pllLock = true; m_copyAudioToUDP = false; + m_copyAudioUseRTP = false; m_udpAddress = "127.0.0.1"; m_udpPort = 9999; m_rgbColor = QColor(0, 255, 255).rgb(); @@ -83,6 +84,7 @@ QByteArray DSDDemodSettings::serialize() const s.writeString(18, m_title); s.writeBool(19, m_highPassFilter); + s.writeBool(20, m_copyAudioUseRTP); return s.final(); } @@ -136,6 +138,7 @@ bool DSDDemodSettings::deserialize(const QByteArray& data) d.readBool(16, &m_tdmaStereo, false); d.readString(18, &m_title, "DSD Demodulator"); d.readBool(19, &m_highPassFilter, false); + d.readBool(20, &m_copyAudioUseRTP, false); return true; } diff --git a/plugins/channelrx/demoddsd/dsddemodsettings.h b/plugins/channelrx/demoddsd/dsddemodsettings.h index f60a4d6c2..58cb08c65 100644 --- a/plugins/channelrx/demoddsd/dsddemodsettings.h +++ b/plugins/channelrx/demoddsd/dsddemodsettings.h @@ -40,6 +40,7 @@ struct DSDDemodSettings bool m_tdmaStereo; bool m_pllLock; bool m_copyAudioToUDP; + bool m_copyAudioUseRTP; QString m_udpAddress; quint16 m_udpPort; quint32 m_rgbColor;