From eb70b92aed4bb85d06afbd1e32e2e4f34aa07005 Mon Sep 17 00:00:00 2001 From: Phil Taylor Date: Fri, 4 Jun 2021 14:25:07 +0100 Subject: [PATCH] Change udpserver to use new audiosetup struct properly. --- udpserver.cpp | 60 +++++++++++++++++++++------------------------------ udpserver.h | 5 ++++- wfmain.cpp | 15 ++++--------- 3 files changed, 33 insertions(+), 47 deletions(-) diff --git a/udpserver.cpp b/udpserver.cpp index dd84af8..86c574b 100644 --- a/udpserver.cpp +++ b/udpserver.cpp @@ -2,9 +2,10 @@ #include "logcategories.h" #define STALE_CONNECTION 15 - -udpServer::udpServer(SERVERCONFIG config) : - config(config) +udpServer::udpServer(SERVERCONFIG config, audioSetup outAudio, audioSetup inAudio) : + config(config), + outAudio(outAudio), + inAudio(inAudio) { qInfo(logUdpServer()) << "Starting udp server"; } @@ -373,29 +374,23 @@ void udpServer::controlReceived() if (txaudio == Q_NULLPTR) { - bool uLaw = false; - quint8 channels = 1; - quint8 samples = 8; - txSampleRate = current->txSampleRate; - txCodec = current->txCodec; + outAudio.ulaw = false; + outAudio.radioChan = 1; + outAudio.bits = 8; + outAudio.codec = current->txCodec; if (current->txCodec == 0x01 || current->txCodec == 0x20) { - uLaw = true; + outAudio.ulaw = true; } if (current->txCodec == 0x08 || current->txCodec == 0x10 || current->txCodec == 0x20) { - channels = 2; + outAudio.radioChan = 2; } if (current->txCodec == 0x04 || current->txCodec == 0x10) { - samples = 16; + outAudio.bits = 16; } - //setup.port = config.audioOutput; - setup.bits = samples; - setup.radioChan = channels; - setup.ulaw = uLaw; - setup.samplerate = current->txSampleRate; - setup.latency = current->txBufferLen; - setup.isinput = false; + outAudio.samplerate = current->txSampleRate; + outAudio.latency = current->txBufferLen; txaudio = new audioHandler(); txAudioThread = new QThread(this); @@ -407,7 +402,7 @@ void udpServer::controlReceived() connect(txAudioThread, SIGNAL(finished()), txaudio, SLOT(deleteLater())); - emit setupTxAudio(setup); + emit setupTxAudio(outAudio); hasTxAudio = datagram.senderAddress(); connect(this, SIGNAL(haveAudioData(audioPacket)), txaudio, SLOT(incomingAudio(audioPacket))); @@ -415,22 +410,26 @@ void udpServer::controlReceived() } if (rxaudio == Q_NULLPTR) { - bool uLaw = false; - quint8 channels = 1; - quint8 samples = 8; + inAudio.ulaw = false; + inAudio.radioChan = 1; + inAudio.bits = 8; + inAudio.codec = current->txCodec; + rxSampleRate = current->rxSampleRate; rxCodec = current->rxCodec; if (current->rxCodec == 0x01 || current->rxCodec == 0x20) { - uLaw = true; + inAudio.ulaw = true; } if (current->rxCodec == 0x08 || current->rxCodec == 0x10 || current->rxCodec == 0x20) { - channels = 2; + inAudio.radioChan = 2; } if (current->rxCodec == 0x04 || current->rxCodec == 0x10) { - samples = 16; + inAudio.bits = 16; } + inAudio.samplerate = current->rxSampleRate; + rxaudio = new audioHandler(); rxAudioThread = new QThread(this); rxaudio->moveToThread(rxAudioThread); @@ -439,16 +438,7 @@ void udpServer::controlReceived() connect(this, SIGNAL(setupRxAudio(audioSetup)), rxaudio, SLOT(init(audioSetup))); connect(rxAudioThread, SIGNAL(finished()), rxaudio, SLOT(deleteLater())); - setup.bits = samples; - setup.radioChan = channels; - setup.ulaw = uLaw; - setup.samplerate = current->rxSampleRate; - setup.latency = 150; - setup.isinput = true; - //setup.port = config.audioInput; - setup.resampleQuality = config.resampleQuality; - - emit setupRxAudio(setup); + emit setupRxAudio(inAudio); rxAudioTimer = new QTimer(); rxAudioTimer->setTimerType(Qt::PreciseTimer); diff --git a/udpserver.h b/udpserver.h index 2d6127f..16ea3b2 100644 --- a/udpserver.h +++ b/udpserver.h @@ -39,7 +39,7 @@ class udpServer : public QObject Q_OBJECT public: - udpServer(SERVERCONFIG config); + udpServer(SERVERCONFIG config,audioSetup outAudio, audioSetup inAudio); ~udpServer(); public slots: @@ -163,6 +163,9 @@ private: audioHandler* txaudio = Q_NULLPTR; QThread* txAudioThread = Q_NULLPTR; + audioSetup inAudio; + audioSetup outAudio; + QTimer* rxAudioTimer=Q_NULLPTR; quint16 rxSampleRate = 0; quint16 txSampleRate = 0; diff --git a/wfmain.cpp b/wfmain.cpp index 672eb61..0882db9 100644 --- a/wfmain.cpp +++ b/wfmain.cpp @@ -764,17 +764,8 @@ void wfmain::setServerToPrefs() // Start server if enabled in config if (serverConfig.enabled) { serverConfig.lan = prefs.enableLAN; - if (!serverConfig.lan) { - // How do we setup the audio for server???? - serverConfig.resampleQuality = udpPrefs.resampleQuality; - serverConfig.audioInput = udpPrefs.audioInput; - serverConfig.audioOutput = udpPrefs.audioOutput; - serverConfig.baudRate = prefs.serialPortBaud; - serverConfig.audioInput = udpPrefs.audioInput; - serverConfig.audioOutput = udpPrefs.audioOutput; - } - udp = new udpServer(serverConfig); + udp = new udpServer(serverConfig,rxSetup,txSetup); serverThread = new QThread(this); @@ -1306,7 +1297,7 @@ void wfmain::loadSettings() txSetup.port = v.value(); #endif } - ui->audioOutputCombo->blockSignals(false); + ui->audioInputCombo->blockSignals(false); rxSetup.resampleQuality = settings->value("ResampleQuality", udpDefPrefs.resampleQuality).toInt(); txSetup.resampleQuality = rxSetup.resampleQuality; @@ -3736,6 +3727,7 @@ void wfmain::on_audioOutputCombo_currentIndexChanged(int value) rxSetup.port = v.value(); #endif rxSetup.name = ui->audioOutputCombo->itemText(value); + qDebug(logGui()) << "Changed default audio output to:" << rxSetup.name; } void wfmain::on_audioInputCombo_currentIndexChanged(int value) @@ -3748,6 +3740,7 @@ void wfmain::on_audioInputCombo_currentIndexChanged(int value) txSetup.port = v.value(); #endif txSetup.name = ui->audioInputCombo->itemText(value); + qDebug(logGui()) << "Changed default audio input to:" << txSetup.name; } void wfmain::on_audioSampleRateCombo_currentIndexChanged(QString text)