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;