From 4fbb8f74c883237c1fe0944675aac7e24d2890f0 Mon Sep 17 00:00:00 2001 From: f4exb Date: Tue, 27 Mar 2018 11:17:11 +0200 Subject: [PATCH] Multiple audio support: SSB demodulator --- plugins/channelrx/demodam/amdemod.cpp | 2 + plugins/channelrx/demodam/amdemodgui.ui | 4 +- plugins/channelrx/demodssb/CMakeLists.txt | 2 + plugins/channelrx/demodssb/readme.md | 12 ++-- plugins/channelrx/demodssb/ssbdemod.cpp | 64 +++++++++++++++++-- plugins/channelrx/demodssb/ssbdemod.h | 2 + plugins/channelrx/demodssb/ssbdemodgui.cpp | 52 +++++++++++++-- plugins/channelrx/demodssb/ssbdemodgui.h | 2 + plugins/channelrx/demodssb/ssbdemodgui.ui | 6 +- .../channelrx/demodssb/ssbdemodsettings.cpp | 4 +- plugins/channelrx/demodssb/ssbdemodsettings.h | 2 +- sdrbase/resources/webapi/doc/html2/index.html | 5 +- .../webapi/doc/swagger/include/NFMDemod.yaml | 2 - swagger/sdrangel/code/html2/index.html | 5 +- .../code/qt5/client/SWGNFMDemodSettings.cpp | 21 ------ .../code/qt5/client/SWGNFMDemodSettings.h | 6 -- 16 files changed, 129 insertions(+), 62 deletions(-) diff --git a/plugins/channelrx/demodam/amdemod.cpp b/plugins/channelrx/demodam/amdemod.cpp index 34f0f5a6f..8fab5fb8d 100644 --- a/plugins/channelrx/demodam/amdemod.cpp +++ b/plugins/channelrx/demodam/amdemod.cpp @@ -223,6 +223,8 @@ bool AMDemod::handleMessage(const Message& cmd) void AMDemod::applyAudioSampleRate(int sampleRate) { + qDebug("AMDemod::applyAudioSampleRate: %d", sampleRate); + MsgConfigureChannelizer* channelConfigMsg = MsgConfigureChannelizer::create( sampleRate, m_settings.m_inputFrequencyOffset); m_inputMessageQueue.push(channelConfigMsg); diff --git a/plugins/channelrx/demodam/amdemodgui.ui b/plugins/channelrx/demodam/amdemodgui.ui index a1b34df53..d051597a2 100644 --- a/plugins/channelrx/demodam/amdemodgui.ui +++ b/plugins/channelrx/demodam/amdemodgui.ui @@ -6,7 +6,7 @@ 0 0 - 352 + 396 170 @@ -42,7 +42,7 @@ 0 0 - 350 + 390 131 diff --git a/plugins/channelrx/demodssb/CMakeLists.txt b/plugins/channelrx/demodssb/CMakeLists.txt index f70d0a7e5..355098143 100644 --- a/plugins/channelrx/demodssb/CMakeLists.txt +++ b/plugins/channelrx/demodssb/CMakeLists.txt @@ -1,5 +1,7 @@ project(ssb) +set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11") + set(ssb_SOURCES ssbdemod.cpp ssbdemodgui.cpp diff --git a/plugins/channelrx/demodssb/readme.md b/plugins/channelrx/demodssb/readme.md index 67cacbf59..c92e84b52 100644 --- a/plugins/channelrx/demodssb/readme.md +++ b/plugins/channelrx/demodssb/readme.md @@ -45,13 +45,13 @@ Toggles between SSB (icon with one sideband signal) and DSB (icon with double si

8: Spectrum display frequency span

-The 48 kHz channel sample rate is further decimated by powers of two for the spectrum display and in channel filter limits. This effectively sets the total available bandwidth depending on the decimation: +The audio sample rate SR is further decimated by powers of two for the spectrum display and in channel filter limits. This effectively sets the total available bandwidth depending on the decimation: - - 1 (no decimation): 24 kHz (SSB) or 48 kHz (DSB) - - 2: 12 kHz (SSB) or 24 kHz (DSB) - - 4: 6 kHz (SSB) or 12 kHz (DSB) - - 8: 3 kHz (SSB) or 6 kHz (DSB) - - 16: 1.5 kHz (SSB) or 3 kHz (DSB) + - 1 (no decimation): SR/2 (SSB) or SR (DSB) + - 2: SR/4 (SSB) or SR/2 (DSB) + - 4: SR/8 (SSB) or SR/4 (DSB) + - 8: SR/16 (SSB) or SR/8 (DSB) + - 16: SR/32 (SSB) or SR/16 (DSB) The span value display is set as follows depending on the SSB or DSB mode: diff --git a/plugins/channelrx/demodssb/ssbdemod.cpp b/plugins/channelrx/demodssb/ssbdemod.cpp index 390c3514d..cc355f172 100644 --- a/plugins/channelrx/demodssb/ssbdemod.cpp +++ b/plugins/channelrx/demodssb/ssbdemod.cpp @@ -87,7 +87,6 @@ SSBDemod::SSBDemod(DeviceSourceAPI *deviceAPI) : SSBFilter = new fftfilt(m_LowCutoff / m_audioSampleRate, m_Bandwidth / m_audioSampleRate, ssbFftLen); DSBFilter = new fftfilt((2.0f * m_Bandwidth) / m_audioSampleRate, 2 * ssbFftLen); - DSPEngine::instance()->getAudioDeviceManager()->addAudioSink(&m_audioFifo, getInputMessageQueue()); m_audioNetSink = new AudioNetSink(0); // parent thread allocated dynamically - no RTP m_audioNetSink->setDestination(m_settings.m_udpAddress, m_settings.m_udpPort); @@ -336,6 +335,20 @@ bool SSBDemod::handleMessage(const Message& cmd) m_audioNetSink->moveToThread(const_cast(thread)); // use the thread for udp sinks return true; } + else if (DSPConfigureAudio::match(cmd)) + { + DSPConfigureAudio& cfg = (DSPConfigureAudio&) cmd; + uint32_t sampleRate = cfg.getSampleRate(); + + qDebug() << "SSBDemod::handleMessage: DSPConfigureAudio:" + << " sampleRate: " << sampleRate; + + if (sampleRate != m_audioSampleRate) { + applyAudioSampleRate(sampleRate); + } + + return true; + } else if (DSPSignalNotification::match(cmd)) { return true; @@ -370,7 +383,7 @@ void SSBDemod::applyChannelSettings(int inputSampleRate, int inputFrequencyOffse m_settingsMutex.lock(); m_interpolator.create(16, inputSampleRate, m_Bandwidth * 1.5f, 2.0f); m_interpolatorDistanceRemain = 0; - m_interpolatorDistance = (Real) inputSampleRate / (Real) m_settings.m_audioSampleRate; + m_interpolatorDistance = (Real) inputSampleRate / (Real) m_audioSampleRate; m_settingsMutex.unlock(); } @@ -378,6 +391,31 @@ void SSBDemod::applyChannelSettings(int inputSampleRate, int inputFrequencyOffse m_inputFrequencyOffset = inputFrequencyOffset; } +void SSBDemod::applyAudioSampleRate(int sampleRate) +{ + qDebug("SSBDemod::applyAudioSampleRate: %d", sampleRate); + + MsgConfigureChannelizer* channelConfigMsg = MsgConfigureChannelizer::create( + sampleRate, m_settings.m_inputFrequencyOffset); + m_inputMessageQueue.push(channelConfigMsg); + + m_settingsMutex.lock(); + m_interpolator.create(16, m_inputSampleRate, m_Bandwidth * 1.5f, 2.0f); + m_interpolatorDistanceRemain = 0; + m_interpolatorDistance = (Real) m_inputSampleRate / (Real) sampleRate; + SSBFilter->create_filter(m_LowCutoff / (float) sampleRate, m_Bandwidth / (float) sampleRate); + DSBFilter->create_dsb_filter((2.0f * m_Bandwidth) / (float) sampleRate); + m_settingsMutex.unlock(); + + m_audioSampleRate = sampleRate; + + if (m_guiMessageQueue) // forward to GUI if any + { + DSPConfigureAudio *cfg = new DSPConfigureAudio(m_audioSampleRate); + m_guiMessageQueue->push(cfg); + } +} + void SSBDemod::applySettings(const SSBDemodSettings& settings, bool force) { qDebug() << "SSBDemod::applySettings:" @@ -395,17 +433,17 @@ void SSBDemod::applySettings(const SSBDemodSettings& settings, bool force) << " m_agcClamping: " << settings.m_agcClamping << " m_agcTimeLog2: " << settings.m_agcTimeLog2 << " agcPowerThreshold: " << settings.m_agcPowerThreshold - << " agcThresholdGate: " << settings.m_agcThresholdGate; + << " agcThresholdGate: " << settings.m_agcThresholdGate + << " m_audioDeviceName: " << settings.m_audioDeviceName + << " force: " << force; if((m_settings.m_rfBandwidth != settings.m_rfBandwidth) || - (m_settings.m_lowCutoff != settings.m_lowCutoff) || - (m_settings.m_audioSampleRate != settings.m_audioSampleRate) || force) + (m_settings.m_lowCutoff != settings.m_lowCutoff) || force) { float band, lowCutoff; band = settings.m_rfBandwidth; lowCutoff = settings.m_lowCutoff; - m_audioSampleRate = settings.m_audioSampleRate; if (band < 0) { band = -band; @@ -427,7 +465,7 @@ void SSBDemod::applySettings(const SSBDemodSettings& settings, bool force) m_settingsMutex.lock(); m_interpolator.create(16, m_inputSampleRate, m_Bandwidth * 1.5f, 2.0f); m_interpolatorDistanceRemain = 0; - m_interpolatorDistance = (Real) m_inputSampleRate / (Real) m_settings.m_audioSampleRate; + m_interpolatorDistance = (Real) m_inputSampleRate / (Real) m_audioSampleRate; SSBFilter->create_filter(m_LowCutoff / (float) m_audioSampleRate, m_Bandwidth / (float) m_audioSampleRate); DSBFilter->create_dsb_filter((2.0f * m_Bandwidth) / (float) m_audioSampleRate); m_settingsMutex.unlock(); @@ -490,6 +528,18 @@ void SSBDemod::applySettings(const SSBDemodSettings& settings, bool force) m_audioNetSink->setDestination(settings.m_udpAddress, settings.m_udpPort); } + if ((settings.m_audioDeviceName != m_settings.m_audioDeviceName) || force) + { + AudioDeviceManager *audioDeviceManager = DSPEngine::instance()->getAudioDeviceManager(); + int audioDeviceIndex = audioDeviceManager->getOutputDeviceIndex(settings.m_audioDeviceName); + audioDeviceManager->addAudioSink(&m_audioFifo, getInputMessageQueue(), audioDeviceIndex); + uint32_t audioSampleRate = audioDeviceManager->getOutputSampleRate(audioDeviceIndex); + + if (m_audioSampleRate != audioSampleRate) { + applyAudioSampleRate(audioSampleRate); + } + } + m_spanLog2 = settings.m_spanLog2; m_audioBinaual = settings.m_audioBinaural; m_audioFlipChannels = settings.m_audioFlipChannels; diff --git a/plugins/channelrx/demodssb/ssbdemod.h b/plugins/channelrx/demodssb/ssbdemod.h index b026298dc..77700efb8 100644 --- a/plugins/channelrx/demodssb/ssbdemod.h +++ b/plugins/channelrx/demodssb/ssbdemod.h @@ -120,6 +120,7 @@ public: virtual QByteArray serialize() const; virtual bool deserialize(const QByteArray& data); + uint32_t getAudioSampleRate() const { return m_audioSampleRate; } double getMagSq() const { return m_magsq; } bool getAudioActive() const { return m_audioActive; } @@ -282,6 +283,7 @@ private: void applyChannelSettings(int inputSampleRate, int inputFrequencyOffset, bool force = false); void applySettings(const SSBDemodSettings& settings, bool force = false); + void applyAudioSampleRate(int sampleRate); }; #endif // INCLUDE_SSBDEMOD_H diff --git a/plugins/channelrx/demodssb/ssbdemodgui.cpp b/plugins/channelrx/demodssb/ssbdemodgui.cpp index 2e07bc7c1..7b9438adb 100644 --- a/plugins/channelrx/demodssb/ssbdemodgui.cpp +++ b/plugins/channelrx/demodssb/ssbdemodgui.cpp @@ -9,11 +9,14 @@ #include "ui_ssbdemodgui.h" #include "dsp/spectrumvis.h" #include "dsp/dspengine.h" +#include "dsp/dspcommands.h" #include "gui/glspectrum.h" #include "gui/basicchannelsettingsdialog.h" #include "plugin/pluginapi.h" #include "util/simpleserializer.h" #include "util/db.h" +#include "gui/crightclickenabler.h" +#include "gui/audioselectdialog.h" #include "mainwindow.h" #include "ssbdemod.h" @@ -77,9 +80,31 @@ bool SSBDemodGUI::deserialize(const QByteArray& data) } } -bool SSBDemodGUI::handleMessage(const Message& message __attribute__((unused))) +bool SSBDemodGUI::handleMessage(const Message& message) { - return false; + if (DSPConfigureAudio::match(message)) + { + qDebug("SSBDemodGUI::handleMessage: DSPConfigureAudio: %d", m_ssbDemod->getAudioSampleRate()); + applyBandwidths(); // will update spectrum details with new sample rate + return true; + } + else + { + return false; + } +} + +void SSBDemodGUI::handleInputMessages() +{ + Message* message; + + while ((message = getInputMessageQueue()->pop()) != 0) + { + if (handleMessage(*message)) + { + delete message; + } + } } void SSBDemodGUI::channelMarkerChangedByCursor() @@ -249,6 +274,9 @@ SSBDemodGUI::SSBDemodGUI(PluginAPI* pluginAPI, DeviceUISet *deviceUISet, Baseban m_ssbDemod->setMessageQueueToGUI(getInputMessageQueue()); m_ssbDemod->setSampleSink(m_spectrumVis); + CRightClickEnabler *audioMuteRightClickEnabler = new CRightClickEnabler(ui->audioMute); + connect(audioMuteRightClickEnabler, SIGNAL(rightClick()), this, SLOT(audioSelect())); + ui->deltaFrequencyLabel->setText(QString("%1f").arg(QChar(0x94, 0x03))); ui->deltaFrequency->setColorMapper(ColorMapper(ColorMapper::GrayGold)); ui->deltaFrequency->setValueRange(false, 7, -9999999, 9999999); @@ -284,6 +312,7 @@ SSBDemodGUI::SSBDemodGUI(PluginAPI* pluginAPI, DeviceUISet *deviceUISet, Baseban connect(&m_channelMarker, SIGNAL(changedByCursor()), this, SLOT(channelMarkerChangedByCursor())); connect(&m_channelMarker, SIGNAL(highlightedByCursor()), this, SLOT(channelMarkerHighlightedByCursor())); + connect(getInputMessageQueue(), SIGNAL(messageEnqueued()), this, SLOT(handleInputMessages())); ui->spectrumGUI->setBuddies(m_spectrumVis->getInputMessageQueue(), m_spectrumVis, ui->glSpectrum); @@ -316,7 +345,7 @@ void SSBDemodGUI::applySettings(bool force) if (m_doApplySettings) { SSBDemod::MsgConfigureChannelizer* channelConfigMsg = SSBDemod::MsgConfigureChannelizer::create( - 48000, m_channelMarker.getCenterFrequency()); + m_ssbDemod->getAudioSampleRate(), m_channelMarker.getCenterFrequency()); m_ssbDemod->getInputMessageQueue()->push(channelConfigMsg); SSBDemod::MsgConfigureSSBDemod* message = SSBDemod::MsgConfigureSSBDemod::create( m_settings, force); @@ -328,10 +357,10 @@ void SSBDemodGUI::applyBandwidths(bool force) { bool dsb = ui->dsb->isChecked(); int spanLog2 = ui->spanLog2->value(); - m_spectrumRate = 48000 / (1<getAudioSampleRate() / (1<BW->value(); int lw = ui->lowCut->value(); - int bwMax = 480/(1<getAudioSampleRate() / (100*(1<getAudioDeviceManager(), m_settings.m_audioDeviceName); + audioSelect.exec(); + + if (audioSelect.m_selected) + { + m_settings.m_audioDeviceName = audioSelect.m_audioDeviceName; + applySettings(); + } +} + void SSBDemodGUI::tick() { double magsqAvg, magsqPeak; diff --git a/plugins/channelrx/demodssb/ssbdemodgui.h b/plugins/channelrx/demodssb/ssbdemodgui.h index 79c15f4fa..3e81e9dbb 100644 --- a/plugins/channelrx/demodssb/ssbdemodgui.h +++ b/plugins/channelrx/demodssb/ssbdemodgui.h @@ -98,6 +98,8 @@ private slots: void on_copyAudioToUDP_toggled(bool copy); void onWidgetRolled(QWidget* widget, bool rollDown); void onMenuDialogCalled(const QPoint& p); + void handleInputMessages(); + void audioSelect(); void tick(); }; diff --git a/plugins/channelrx/demodssb/ssbdemodgui.ui b/plugins/channelrx/demodssb/ssbdemodgui.ui index 8530ff19d..f1d2b60bd 100644 --- a/plugins/channelrx/demodssb/ssbdemodgui.ui +++ b/plugins/channelrx/demodssb/ssbdemodgui.ui @@ -6,19 +6,19 @@ 0 0 - 413 + 412 190 - + 0 0 - 400 + 412 0 diff --git a/plugins/channelrx/demodssb/ssbdemodsettings.cpp b/plugins/channelrx/demodssb/ssbdemodsettings.cpp index e01656eb4..6645e0725 100644 --- a/plugins/channelrx/demodssb/ssbdemodsettings.cpp +++ b/plugins/channelrx/demodssb/ssbdemodsettings.cpp @@ -53,11 +53,11 @@ void SSBDemodSettings::resetToDefaults() m_volume = 3.0; m_spanLog2 = 3; m_inputFrequencyOffset = 0; - m_audioSampleRate = DSPEngine::instance()->getDefaultAudioSampleRate(); m_udpAddress = "127.0.0.1"; m_udpPort = 9999; m_rgbColor = QColor(0, 255, 0).rgb(); m_title = "SSB Demodulator"; + m_audioDeviceName = AudioDeviceManager::m_defaultDeviceName; } QByteArray SSBDemodSettings::serialize() const @@ -83,6 +83,7 @@ QByteArray SSBDemodSettings::serialize() const s.writeS32(14, m_agcThresholdGate); s.writeBool(15, m_agcClamping); s.writeString(16, m_title); + s.writeString(17, m_audioDeviceName); return s.final(); } @@ -127,6 +128,7 @@ bool SSBDemodSettings::deserialize(const QByteArray& data) d.readS32(14, &m_agcThresholdGate, 4); d.readBool(15, &m_agcClamping, false); d.readString(16, &m_title, "SSB Demodulator"); + d.readString(17, &m_audioDeviceName, AudioDeviceManager::m_defaultDeviceName); return true; } diff --git a/plugins/channelrx/demodssb/ssbdemodsettings.h b/plugins/channelrx/demodssb/ssbdemodsettings.h index fda0e1fad..16530ec09 100644 --- a/plugins/channelrx/demodssb/ssbdemodsettings.h +++ b/plugins/channelrx/demodssb/ssbdemodsettings.h @@ -24,7 +24,6 @@ class Serializable; struct SSBDemodSettings { qint32 m_inputFrequencyOffset; - quint32 m_audioSampleRate; Real m_rfBandwidth; Real m_lowCutoff; Real m_volume; @@ -43,6 +42,7 @@ struct SSBDemodSettings quint16 m_udpPort; quint32 m_rgbColor; QString m_title; + QString m_audioDeviceName; Serializable *m_channelMarker; Serializable *m_spectrumGUI; diff --git a/sdrbase/resources/webapi/doc/html2/index.html b/sdrbase/resources/webapi/doc/html2/index.html index 683a5ad7b..0b8f92bc4 100644 --- a/sdrbase/resources/webapi/doc/html2/index.html +++ b/sdrbase/resources/webapi/doc/html2/index.html @@ -1539,9 +1539,6 @@ margin-bottom: 20px; "copyAudioToUDP" : { "type" : "integer" }, - "copyAudioUseRTP" : { - "type" : "integer" - }, "udpAddress" : { "type" : "string" }, @@ -18063,7 +18060,7 @@ except ApiException as e:
- Generated 2018-03-27T01:15:44.809+02:00 + Generated 2018-03-27T09:54:41.046+02:00
diff --git a/sdrbase/resources/webapi/doc/swagger/include/NFMDemod.yaml b/sdrbase/resources/webapi/doc/swagger/include/NFMDemod.yaml index 645bcb0a8..f9a7068e7 100644 --- a/sdrbase/resources/webapi/doc/swagger/include/NFMDemod.yaml +++ b/sdrbase/resources/webapi/doc/swagger/include/NFMDemod.yaml @@ -37,8 +37,6 @@ NFMDemodSettings: type: integer copyAudioToUDP: type: integer - copyAudioUseRTP: - type: integer udpAddress: type: string udpPort: diff --git a/swagger/sdrangel/code/html2/index.html b/swagger/sdrangel/code/html2/index.html index 683a5ad7b..0b8f92bc4 100644 --- a/swagger/sdrangel/code/html2/index.html +++ b/swagger/sdrangel/code/html2/index.html @@ -1539,9 +1539,6 @@ margin-bottom: 20px; "copyAudioToUDP" : { "type" : "integer" }, - "copyAudioUseRTP" : { - "type" : "integer" - }, "udpAddress" : { "type" : "string" }, @@ -18063,7 +18060,7 @@ except ApiException as e:
- Generated 2018-03-27T01:15:44.809+02:00 + Generated 2018-03-27T09:54:41.046+02:00
diff --git a/swagger/sdrangel/code/qt5/client/SWGNFMDemodSettings.cpp b/swagger/sdrangel/code/qt5/client/SWGNFMDemodSettings.cpp index 9f96cea64..f7f786b16 100644 --- a/swagger/sdrangel/code/qt5/client/SWGNFMDemodSettings.cpp +++ b/swagger/sdrangel/code/qt5/client/SWGNFMDemodSettings.cpp @@ -54,8 +54,6 @@ SWGNFMDemodSettings::SWGNFMDemodSettings() { m_audio_sample_rate_isSet = false; copy_audio_to_udp = 0; m_copy_audio_to_udp_isSet = false; - copy_audio_use_rtp = 0; - m_copy_audio_use_rtp_isSet = false; udp_address = nullptr; m_udp_address_isSet = false; udp_port = 0; @@ -98,8 +96,6 @@ SWGNFMDemodSettings::init() { m_audio_sample_rate_isSet = false; copy_audio_to_udp = 0; m_copy_audio_to_udp_isSet = false; - copy_audio_use_rtp = 0; - m_copy_audio_use_rtp_isSet = false; udp_address = new QString(""); m_udp_address_isSet = false; udp_port = 0; @@ -125,7 +121,6 @@ SWGNFMDemodSettings::cleanup() { - if(udp_address != nullptr) { delete udp_address; } @@ -173,8 +168,6 @@ SWGNFMDemodSettings::fromJsonObject(QJsonObject &pJson) { ::SWGSDRangel::setValue(©_audio_to_udp, pJson["copyAudioToUDP"], "qint32", ""); - ::SWGSDRangel::setValue(©_audio_use_rtp, pJson["copyAudioUseRTP"], "qint32", ""); - ::SWGSDRangel::setValue(&udp_address, pJson["udpAddress"], "QString", "QString"); ::SWGSDRangel::setValue(&udp_port, pJson["udpPort"], "qint32", ""); @@ -238,9 +231,6 @@ SWGNFMDemodSettings::asJsonObject() { if(m_copy_audio_to_udp_isSet){ obj->insert("copyAudioToUDP", QJsonValue(copy_audio_to_udp)); } - if(m_copy_audio_use_rtp_isSet){ - obj->insert("copyAudioUseRTP", QJsonValue(copy_audio_use_rtp)); - } if(udp_address != nullptr && *udp_address != QString("")){ toJsonValue(QString("udpAddress"), udp_address, obj, QString("QString")); } @@ -387,16 +377,6 @@ SWGNFMDemodSettings::setCopyAudioToUdp(qint32 copy_audio_to_udp) { this->m_copy_audio_to_udp_isSet = true; } -qint32 -SWGNFMDemodSettings::getCopyAudioUseRtp() { - return copy_audio_use_rtp; -} -void -SWGNFMDemodSettings::setCopyAudioUseRtp(qint32 copy_audio_use_rtp) { - this->copy_audio_use_rtp = copy_audio_use_rtp; - this->m_copy_audio_use_rtp_isSet = true; -} - QString* SWGNFMDemodSettings::getUdpAddress() { return udp_address; @@ -455,7 +435,6 @@ SWGNFMDemodSettings::isSet(){ if(m_ctcss_index_isSet){ isObjectUpdated = true; break;} if(m_audio_sample_rate_isSet){ isObjectUpdated = true; break;} if(m_copy_audio_to_udp_isSet){ isObjectUpdated = true; break;} - if(m_copy_audio_use_rtp_isSet){ isObjectUpdated = true; break;} if(udp_address != nullptr && *udp_address != QString("")){ isObjectUpdated = true; break;} if(m_udp_port_isSet){ isObjectUpdated = true; break;} if(m_rgb_color_isSet){ isObjectUpdated = true; break;} diff --git a/swagger/sdrangel/code/qt5/client/SWGNFMDemodSettings.h b/swagger/sdrangel/code/qt5/client/SWGNFMDemodSettings.h index 420934225..fb1c76e8f 100644 --- a/swagger/sdrangel/code/qt5/client/SWGNFMDemodSettings.h +++ b/swagger/sdrangel/code/qt5/client/SWGNFMDemodSettings.h @@ -81,9 +81,6 @@ public: qint32 getCopyAudioToUdp(); void setCopyAudioToUdp(qint32 copy_audio_to_udp); - qint32 getCopyAudioUseRtp(); - void setCopyAudioUseRtp(qint32 copy_audio_use_rtp); - QString* getUdpAddress(); void setUdpAddress(QString* udp_address); @@ -139,9 +136,6 @@ private: qint32 copy_audio_to_udp; bool m_copy_audio_to_udp_isSet; - qint32 copy_audio_use_rtp; - bool m_copy_audio_use_rtp_isSet; - QString* udp_address; bool m_udp_address_isSet;