diff --git a/audiohandler.cpp b/audiohandler.cpp index d05b102..b274545 100644 --- a/audiohandler.cpp +++ b/audiohandler.cpp @@ -61,10 +61,6 @@ audioHandler::~audioHandler() inFormat = toQAudioFormat(setup.codec, setup.sampleRate); - if(!setup.isinput) - { - this->setVolume(setup.localAFgain); - } outFormat = setup.port.preferredFormat(); qDebug(logAudio()) << (setup.isinput ? "Input" : "Output") << "Preferred Format: SampleSize" << outFormat.sampleSize() << "Channel Count" << outFormat.channelCount() << @@ -171,6 +167,8 @@ audioHandler::~audioHandler() underTimer->setSingleShot(true); connect(underTimer, SIGNAL(timeout()), this, SLOT(clearUnderrun())); + this->setVolume(setup.localAFgain); + this->start(); return true; diff --git a/pahandler.cpp b/pahandler.cpp index 7014ce2..ee2736f 100644 --- a/pahandler.cpp +++ b/pahandler.cpp @@ -164,6 +164,8 @@ bool paHandler::init(audioSetup setup) qInfo(logAudio()) << (setup.isinput ? "Input" : "Output") << "failed to open device" << Pa_GetErrorText(err); } + this->setVolume(setup.localAFgain); + return isInitialized; } diff --git a/rthandler.cpp b/rthandler.cpp index ce4ff83..9d298d1 100644 --- a/rthandler.cpp +++ b/rthandler.cpp @@ -215,10 +215,7 @@ bool rtHandler::init(audioSetup setup) qCritical(logAudio()) << (setup.isinput ? "Input" : "Output") << QString::fromStdString(info.name) << "(" << aParams.deviceId << ") could not be probed, check audio configuration!"; } - if (!setup.isinput) - { - this->setVolume(setup.localAFgain); - } + this->setVolume(setup.localAFgain); return isInitialized; diff --git a/wfmain.cpp b/wfmain.cpp index 2b9ba68..6d71ad8 100644 --- a/wfmain.cpp +++ b/wfmain.cpp @@ -5787,24 +5787,16 @@ void wfmain::setAudioDevicesUI() qDebug(logSystem()) << "Finding audio devices, output=" << rxSetup.name << "input="<audioOutputCombo->addItem(deviceInfo.deviceName(), QVariant::fromValue(deviceInfo)); - ui->serverTXAudioOutputCombo->addItem(deviceInfo.deviceName(), QVariant::fromValue(deviceInfo)); -#ifdef Q_OS_WIN - } - #endif - } - const auto audioInputs = QAudioDeviceInfo::availableDevices(QAudio::AudioInput); for (const QAudioDeviceInfo& deviceInfo : audioInputs) { #ifdef Q_OS_WIN @@ -5812,13 +5804,26 @@ void wfmain::setAudioDevicesUI() #endif ui->audioInputCombo->addItem(deviceInfo.deviceName(), QVariant::fromValue(deviceInfo)); ui->serverRXAudioInputCombo->addItem(deviceInfo.deviceName(), QVariant::fromValue(deviceInfo)); + inCount++; #ifdef Q_OS_WIN } #endif } + const auto audioOutputs = QAudioDeviceInfo::availableDevices(QAudio::AudioOutput); + for (const QAudioDeviceInfo& deviceInfo : audioOutputs) { +#ifdef Q_OS_WIN + if (deviceInfo.realm() == "wasapi") { +#endif + ui->audioOutputCombo->addItem(deviceInfo.deviceName(), QVariant::fromValue(deviceInfo)); + ui->serverTXAudioOutputCombo->addItem(deviceInfo.deviceName(), QVariant::fromValue(deviceInfo)); + outCount++; +#ifdef Q_OS_WIN + } +#endif + } + break; } - break; case portAudio: { PaError err; @@ -5833,11 +5838,10 @@ void wfmain::setAudioDevicesUI() qInfo(logAudio()) << "PortAudio version: " << Pa_GetVersionInfo()->versionText; - int numDevices; - numDevices = Pa_GetDeviceCount(); + int numDevices = Pa_GetDeviceCount(); qInfo(logAudio()) << "Pa_CountDevices returned" << numDevices; - const PaDeviceInfo* info; + const PaDeviceInfo* info; for (int i = 0; i < numDevices; i++) { info = Pa_GetDeviceInfo(i); @@ -5846,15 +5850,23 @@ void wfmain::setAudioDevicesUI() ui->audioInputCombo->addItem(info->name, i); ui->serverRXAudioInputCombo->addItem(info->name, i); + if (i == Pa_GetDefaultInputDevice()) { + defaultAudioInputIndex = inCount; + } + inCount++; } if (info->maxOutputChannels > 0) { qDebug(logAudio()) << (i == Pa_GetDefaultOutputDevice() ? "*" : " ") << "(" << i << ") Output Device : " << info->name; ui->audioOutputCombo->addItem(info->name, i); ui->serverTXAudioOutputCombo->addItem(info->name, i); + if (i == Pa_GetDefaultOutputDevice()) { + defaultAudioOutputIndex = outCount; + } + outCount++; } } + break; } - break; case rtAudio: { Pa_Terminate(); @@ -5899,22 +5911,29 @@ void wfmain::setAudioDevicesUI() for (unsigned int i = 1; i < devices; i++) { info = audio->getDeviceInfo(i); - if (info.outputChannels > 0) { - qInfo(logAudio()) << (info.isDefaultOutput ? "*" : " ") << "(" << i << ") Output Device : " << QString::fromStdString(info.name); - ui->audioOutputCombo->addItem(QString::fromStdString(info.name), i); - ui->serverTXAudioOutputCombo->addItem(QString::fromStdString(info.name), i); - } if (info.inputChannels > 0) { qInfo(logAudio()) << (info.isDefaultInput ? "*" : " ") << "(" << i << ") Input Device : " << QString::fromStdString(info.name); ui->audioInputCombo->addItem(QString::fromStdString(info.name), i); ui->serverRXAudioInputCombo->addItem(QString::fromStdString(info.name), i); + if (info.isDefaultInput) { + defaultAudioInputIndex = inCount; + } + inCount++; + } + if (info.outputChannels > 0) { + qInfo(logAudio()) << (info.isDefaultOutput ? "*" : " ") << "(" << i << ") Output Device : " << QString::fromStdString(info.name); + ui->audioOutputCombo->addItem(QString::fromStdString(info.name), i); + ui->serverTXAudioOutputCombo->addItem(QString::fromStdString(info.name), i); + if (info.isDefaultOutput) { + defaultAudioOutputIndex = outCount; + } + outCount++; } } delete audio; - + break; } - break; } @@ -5935,6 +5954,7 @@ void wfmain::setAudioDevicesUI() } else { qDebug(logSystem()) << "Audio input not found"; + ui->audioInputCombo->setCurrentIndex(defaultAudioInputIndex); } int audioOutputIndex = ui->audioOutputCombo->findText(rxSetup.name); @@ -5943,24 +5963,36 @@ void wfmain::setAudioDevicesUI() } else { qDebug(logSystem()) << "Audio output not found"; + ui->audioOutputCombo->setCurrentIndex(defaultAudioOutputIndex); } if (!serverConfig.rigs.isEmpty()) { qInfo(logGui()) << "Got Server Audio Input: " << serverConfig.rigs.first()->rxAudioSetup.name; + + serverConfig.rigs.first()->rxAudioSetup.type = prefs.audioSystem; + serverConfig.rigs.first()->txAudioSetup.type = prefs.audioSystem; + int serverAudioInputIndex = ui->serverRXAudioInputCombo->findText(serverConfig.rigs.first()->rxAudioSetup.name); if (serverAudioInputIndex != -1) { ui->serverRXAudioInputCombo->setCurrentIndex(serverAudioInputIndex); } + else { + // Set to default + ui->serverRXAudioInputCombo->setCurrentIndex(defaultAudioInputIndex); + } qInfo(logGui()) << "Got Server Audio Output: " << serverConfig.rigs.first()->txAudioSetup.name; int serverAudioOutputIndex = ui->serverTXAudioOutputCombo->findText(serverConfig.rigs.first()->txAudioSetup.name); if (serverAudioOutputIndex != -1) { ui->serverTXAudioOutputCombo->setCurrentIndex(serverAudioOutputIndex); } + else { + ui->serverTXAudioOutputCombo->setCurrentIndex(defaultAudioOutputIndex); + } } - // Set these to default audio devices initially. + qDebug(logSystem()) << "Audio devices done."; }