From 578b993f70a8311b972aae27007ac697ed79b7cb Mon Sep 17 00:00:00 2001 From: Phil Taylor Date: Thu, 12 May 2022 12:24:27 +0100 Subject: [PATCH] Various fixes --- rthandler.cpp | 2 +- servermain.cpp | 377 ++++++++++++++++++++++----------------- servermain.h | 1 + wfmain.cpp | 4 +- wfserver.vcxproj | 310 ++++++++++++++++++++++---------- wfserver.vcxproj.filters | 92 +++++++++- 6 files changed, 513 insertions(+), 273 deletions(-) diff --git a/rthandler.cpp b/rthandler.cpp index 44674c6..41ad6c1 100644 --- a/rthandler.cpp +++ b/rthandler.cpp @@ -74,7 +74,7 @@ bool rtHandler::init(audioSetup setup) audio = new RtAudio(RtAudio::Api::MACOSX_CORE); #endif - options.numberOfBuffers = setup.latency/setup.blockSize; + options.numberOfBuffers = int(setup.latency/setup.blockSize); if (setup.portInt > 0) { aParams.deviceId = setup.portInt; diff --git a/servermain.cpp b/servermain.cpp index 2db93d3..adaef67 100644 --- a/servermain.cpp +++ b/servermain.cpp @@ -265,7 +265,7 @@ void servermain::receiveCommReady() void servermain::connectToRig(RIGCONFIG* rig) { if (!rig->rigAvailable) { - //qDebug(logSystem()) << "Searching for rig on" << rig->serialPort; + qDebug(logSystem()) << "Searching for rig on" << rig->serialPort; QMetaObject::invokeMethod(rig->rig, [=]() { rig->rig->findRigs(); }, Qt::QueuedConnection); @@ -421,6 +421,9 @@ void servermain::setDefPrefs() defPrefs.serialPortBaud = 115200; defPrefs.localAFgain = 255; defPrefs.tcpPort = 0; + defPrefs.audioSystem = qtAudio; + defPrefs.rxAudio.name = QString("default"); + defPrefs.txAudio.name = QString("default"); udpDefPrefs.ipAddress = QString(""); udpDefPrefs.controlLANPort = 50001; @@ -434,86 +437,58 @@ void servermain::setDefPrefs() void servermain::loadSettings() { qInfo(logSystem()) << "Loading settings from " << settings->fileName(); + prefs.audioSystem = static_cast(settings->value("AudioSystem", defPrefs.audioSystem).toInt()); - int numRadios=settings->beginReadArray("Radios"); - int tempNum = numRadios; + int numRadios = settings->beginReadArray("Radios"); if (numRadios == 0) { settings->endArray(); + + // We assume that QSettings is empty as there are no radios configured, create new: + qInfo(logSystem()) << "Creating new settings file " << settings->fileName(); + settings->setValue("AudioSystem", defPrefs.audioSystem); numRadios = 1; - } - -#if defined(RTAUDIO) - -#if defined(Q_OS_LINUX) - RtAudio* audio = new RtAudio(RtAudio::Api::LINUX_ALSA); -#elif defined(Q_OS_WIN) - RtAudio* audio = new RtAudio(RtAudio::Api::WINDOWS_WASAPI); -#elif defined(Q_OS_MACX) - RtAudio* audio = new RtAudio(RtAudio::Api::MACOSX_CORE); -#endif - - // Enumerate audio devices, need to do before settings are loaded. - std::map apiMap; - apiMap[RtAudio::MACOSX_CORE] = "OS-X Core Audio"; - apiMap[RtAudio::WINDOWS_ASIO] = "Windows ASIO"; - apiMap[RtAudio::WINDOWS_DS] = "Windows DirectSound"; - apiMap[RtAudio::WINDOWS_WASAPI] = "Windows WASAPI"; - apiMap[RtAudio::UNIX_JACK] = "Jack Client"; - apiMap[RtAudio::LINUX_ALSA] = "Linux ALSA"; - apiMap[RtAudio::LINUX_PULSE] = "Linux PulseAudio"; - apiMap[RtAudio::LINUX_OSS] = "Linux OSS"; - apiMap[RtAudio::RTAUDIO_DUMMY] = "RtAudio Dummy"; - - std::vector< RtAudio::Api > apis; - RtAudio::getCompiledApi(apis); - - qInfo(logAudio()) << "RtAudio Version " << QString::fromStdString(RtAudio::getVersion()); - - qInfo(logAudio()) << "Compiled APIs:"; - for (unsigned int i = 0; i < apis.size(); i++) { - qInfo(logAudio()) << " " << QString::fromStdString(apiMap[apis[i]]); - } - - RtAudio::DeviceInfo info; - - qInfo(logAudio()) << "Current API: " << QString::fromStdString(apiMap[audio->getCurrentApi()]); - - unsigned int devices = audio->getDeviceCount(); - qInfo(logAudio()) << "Found " << devices << " audio device(s) *=default"; - -#elif defined(PORTAUDIO) - // Use PortAudio device enumeration - - PaError err; - - err = Pa_Initialize(); - - if (err != paNoError) - { - qInfo(logAudio()) << "ERROR: Cannot initialize Portaudio"; - } - - qInfo(logAudio()) << "PortAudio version: " << Pa_GetVersionInfo()->versionText; - - int numDevices; - numDevices = Pa_GetDeviceCount(); - qInfo(logAudio()) << "Pa_CountDevices returned" << numDevices; - - const PaDeviceInfo* info; - -#else - - const auto audioOutputs = QAudioDeviceInfo::availableDevices(QAudio::AudioOutput); - const auto audioInputs = QAudioDeviceInfo::availableDevices(QAudio::AudioInput); - -#endif - for (int i = 0; i < numRadios; i++) { - if (tempNum == 0) { - settings->beginGroup("Radio"); - } - else { + settings->beginWriteArray("Radios"); + for (int i = 0; i < numRadios; i++) + { settings->setArrayIndex(i); + settings->setValue("RigCIVuInt", defPrefs.radioCIVAddr); + settings->setValue("ForceRTSasPTT", defPrefs.forceRTSasPTT); + settings->setValue("SerialPortRadio", defPrefs.serialPortRadio); + settings->setValue("RigName", ""); + settings->setValue("SerialPortBaud", defPrefs.serialPortBaud); + settings->setValue("AudioInput", defPrefs.rxAudio.name); + settings->setValue("AudioOutput", defPrefs.txAudio.name); } + settings->endArray(); + + settings->beginGroup("Server"); + settings->setValue("ServerEnabled", true); + settings->setValue("ServerControlPort", serverConfig.controlPort); + settings->setValue("ServerCivPort", serverConfig.civPort); + settings->setValue("ServerAudioPort", serverConfig.audioPort); + + settings->beginWriteArray("Users"); + settings->setArrayIndex(0); + settings->setValue("Username", "user"); + QByteArray pass; + passcode("password", pass); + settings->setValue("Password", QString(pass)); + settings->setValue("UserType", 0); + + settings->endArray(); + + settings->endGroup(); + settings->sync(); + + } else { + settings->endArray(); + } + + numRadios = settings->beginReadArray("Radios"); + int tempNum = numRadios; + + for (int i = 0; i < numRadios; i++) { + settings->setArrayIndex(i); RIGCONFIG* tempPrefs = new RIGCONFIG(); tempPrefs->civAddr = (unsigned char)settings->value("RigCIVuInt", defPrefs.radioCIVAddr).toInt(); tempPrefs->forceRTSasPTT = (bool)settings->value("ForceRTSasPTT", defPrefs.forceRTSasPTT).toBool(); @@ -521,17 +496,23 @@ void servermain::loadSettings() tempPrefs->rigName = settings->value("RigName", "").toString(); tempPrefs->baudRate = (quint32)settings->value("SerialPortBaud", defPrefs.serialPortBaud).toInt(); + QString tempPort = "auto"; if (tempPrefs->rigName=="") { foreach(const QSerialPortInfo & serialPortInfo, QSerialPortInfo::availablePorts()) { qDebug(logSystem()) << "Serial Port found: " << serialPortInfo.portName() << "Manufacturer:" << serialPortInfo.manufacturer() << "Product ID" << serialPortInfo.description() << "S/N" << serialPortInfo.serialNumber(); - if (serialPortInfo.portName() == tempPrefs->serialPort && !serialPortInfo.serialNumber().isEmpty()) + if ((serialPortInfo.portName() == tempPrefs->serialPort || tempPrefs->serialPort == "auto") && !serialPortInfo.serialNumber().isEmpty()) { - tempPrefs->rigName = serialPortInfo.serialNumber(); + if (serialPortInfo.serialNumber().startsWith("IC-")) { + tempPrefs->rigName = serialPortInfo.serialNumber(); + tempPort = serialPortInfo.portName(); + } } } } + tempPrefs->serialPort = tempPort; + QString guid = settings->value("GUID", "").toString(); if (guid.isEmpty()) { guid = QUuid::createUuid().toString(); @@ -549,83 +530,6 @@ void servermain::loadSettings() tempPrefs->rxAudioSetup.name = settings->value("AudioInput", "").toString(); tempPrefs->txAudioSetup.name = settings->value("AudioOutput", "").toString(); - bool rxDeviceFound = false; - bool txDeviceFound = false; - // Find the actual audio devices -#if defined(RTAUDIO) - for (unsigned int i = 1; i < devices; i++) { - info = audio->getDeviceInfo(i); - if (info.outputChannels > 0) { - if (tempPrefs->txAudioSetup.name == info->name) { - tempPrefs->txAudioSetup.port = i; - txDeviceFound = true; - } - } - if (info.inputChannels > 0) { - if (tempPrefs->rxAudioSetup.name == info->name) { - tempPrefs->rxAudioSetup.port = i; - rxDeviceFound = true; - } - } - } -#elif defined(PORTAUDIO) - for (int i = 0; i < numDevices; i++) - { - info = Pa_GetDeviceInfo(i); - if (info->maxInputChannels > 0) { - if (tempPrefs->txAudioSetup.name == info->name) { - tempPrefs->txAudioSetup.port = i; - txDeviceFound = true; - } - } - if (info->maxOutputChannels > 0) { - if (tempPrefs->rxAudioSetup.name == info->name) { - tempPrefs->rxAudioSetup.port = i; - rxDeviceFound = true; - } - } - } -#else - - /* If no external library is configured, use QTMultimedia - // Set these to default audio devices initially. - */ - - //qInfo(logAudio()) << "Looking for audio output devices"; - for (const QAudioDeviceInfo& deviceInfo : audioOutputs) { - qDebug(logSystem()) << "Found Audio output: " << deviceInfo.deviceName(); - if (deviceInfo.deviceName() == tempPrefs->txAudioSetup.name -#ifdef Q_OS_WIN - && deviceInfo.realm() == "wasapi" -#endif - ) { - qDebug(logSystem()) << "Audio output: " << deviceInfo.deviceName(); - tempPrefs->txAudioSetup.port = deviceInfo; - txDeviceFound = true; - } - } - - //qInfo(logAudio()) << "Looking for audio input devices"; - for (const QAudioDeviceInfo& deviceInfo : audioInputs) { - qDebug(logSystem()) << "Found Audio input: " << deviceInfo.deviceName(); - if (deviceInfo.deviceName() == tempPrefs->rxAudioSetup.name -#ifdef Q_OS_WIN - && deviceInfo.realm() == "wasapi" -#endif - ) { - qDebug(logSystem()) << "Audio input: " << deviceInfo.deviceName(); - tempPrefs->rxAudioSetup.port = deviceInfo; - rxDeviceFound = true; - } - } -#endif - - if (!txDeviceFound) { - qInfo() << "Cannot find txAudioDevice" << tempPrefs->txAudioSetup.name; - } - if (!rxDeviceFound) { - qInfo() << "Cannot find rxAudioDevice" << tempPrefs->rxAudioSetup.name; - } tempPrefs->rig = Q_NULLPTR; tempPrefs->rigThread = Q_NULLPTR; serverConfig.rigs.append(tempPrefs); @@ -638,6 +542,157 @@ void servermain::loadSettings() } + /* + Now we have an array of rig objects, we need to match the configured audio devices with physical devices + */ + switch (prefs.audioSystem) + { + case rtAudio: + { +#if defined(Q_OS_LINUX) + RtAudio* audio = new RtAudio(RtAudio::Api::LINUX_ALSA); +#elif defined(Q_OS_WIN) + RtAudio* audio = new RtAudio(RtAudio::Api::WINDOWS_WASAPI); +#elif defined(Q_OS_MACX) + RtAudio* audio = new RtAudio(RtAudio::Api::MACOSX_CORE); +#endif + + // Enumerate audio devices, need to do before settings are loaded. + std::map apiMap; + apiMap[RtAudio::MACOSX_CORE] = "OS-X Core Audio"; + apiMap[RtAudio::WINDOWS_ASIO] = "Windows ASIO"; + apiMap[RtAudio::WINDOWS_DS] = "Windows DirectSound"; + apiMap[RtAudio::WINDOWS_WASAPI] = "Windows WASAPI"; + apiMap[RtAudio::UNIX_JACK] = "Jack Client"; + apiMap[RtAudio::LINUX_ALSA] = "Linux ALSA"; + apiMap[RtAudio::LINUX_PULSE] = "Linux PulseAudio"; + apiMap[RtAudio::LINUX_OSS] = "Linux OSS"; + apiMap[RtAudio::RTAUDIO_DUMMY] = "RtAudio Dummy"; + + std::vector< RtAudio::Api > apis; + RtAudio::getCompiledApi(apis); + + qInfo(logAudio()) << "RtAudio Version " << QString::fromStdString(RtAudio::getVersion()); + + qInfo(logAudio()) << "Compiled APIs:"; + for (unsigned int i = 0; i < apis.size(); i++) { + qInfo(logAudio()) << " " << QString::fromStdString(apiMap[apis[i]]); + } + + RtAudio::DeviceInfo info; + + qInfo(logAudio()) << "Current API: " << QString::fromStdString(apiMap[audio->getCurrentApi()]); + + unsigned int devices = audio->getDeviceCount(); + qInfo(logAudio()) << "Found " << devices << " audio device(s) *=default"; + + for (unsigned int i = 1; i < devices; i++) { + info = audio->getDeviceInfo(i); + for (RIGCONFIG* rig : serverConfig.rigs) + { + if (info.outputChannels > 0) + { + qInfo(logAudio()) << (info.isDefaultOutput ? "*" : " ") << "(" << i << ") Output Device : " << QString::fromStdString(info.name); + if (rig->txAudioSetup.name.toStdString() == info.name) { + rig->txAudioSetup.portInt = i; + } + } + if (info.inputChannels > 0) + { + qInfo(logAudio()) << (info.isDefaultInput ? "*" : " ") << "(" << i << ") Input Device : " << QString::fromStdString(info.name); + if (rig->rxAudioSetup.name.toStdString() == info.name) { + rig->rxAudioSetup.portInt = i; + } + } + } + } + break; + } + case portAudio: + { + // Use PortAudio device enumeration + + PaError err; + + err = Pa_Initialize(); + + if (err != paNoError) + { + qInfo(logAudio()) << "ERROR: Cannot initialize Portaudio"; + } + + qInfo(logAudio()) << "PortAudio version: " << Pa_GetVersionInfo()->versionText; + + int numDevices; + numDevices = Pa_GetDeviceCount(); + qInfo(logAudio()) << "Pa_CountDevices returned" << numDevices; + + const PaDeviceInfo* info; + for (int i = 0; i < numDevices; i++) + { + info = Pa_GetDeviceInfo(i); + for (RIGCONFIG* rig : serverConfig.rigs) + { + if (info->maxInputChannels > 0) { + qDebug(logAudio()) << (i == Pa_GetDefaultInputDevice() ? "*" : " ") << "(" << i << ") Input Device : " << info->name; + + if (rig->txAudioSetup.name == info->name) { + rig->txAudioSetup.portInt = i; + } + } + if (info->maxOutputChannels > 0) { + qDebug(logAudio()) << (i == Pa_GetDefaultOutputDevice() ? "*" : " ") << "(" << i << ") Output Device : " << info->name; + if (rig->rxAudioSetup.name == info->name) { + rig->rxAudioSetup.portInt = i; + } + } + } + } + break; + } + case qtAudio: + { + const auto audioOutputs = QAudioDeviceInfo::availableDevices(QAudio::AudioOutput); + const auto audioInputs = QAudioDeviceInfo::availableDevices(QAudio::AudioInput); + //qInfo(logAudio()) << "Looking for audio input devices"; + for (const QAudioDeviceInfo& deviceInfo : audioInputs) { + qDebug(logSystem()) << "Found Audio input: " << deviceInfo.deviceName(); + for (RIGCONFIG* rig : serverConfig.rigs) + { + if (deviceInfo.deviceName() == rig->rxAudioSetup.name +#ifdef Q_OS_WIN + && deviceInfo.realm() == "wasapi" +#endif + ) + { + qDebug(logSystem()) << "Audio input: " << deviceInfo.deviceName(); + rig->rxAudioSetup.port = deviceInfo; + } + } + } + + //qInfo(logAudio()) << "Looking for audio output devices"; + for (const QAudioDeviceInfo& deviceInfo : audioOutputs) { + qDebug(logSystem()) << "Found Audio output: " << deviceInfo.deviceName(); + for (RIGCONFIG* rig : serverConfig.rigs) + { + if (deviceInfo.deviceName() == rig->txAudioSetup.name +#ifdef Q_OS_WIN + && deviceInfo.realm() == "wasapi" +#endif + ) + { + qDebug(logSystem()) << "Audio output: " << deviceInfo.deviceName(); + rig->txAudioSetup.port = deviceInfo; + } + } + } + break; + } + } + + + settings->beginGroup("Server"); serverConfig.enabled = settings->value("ServerEnabled", false).toBool(); serverConfig.controlPort = settings->value("ServerControlPort", 50001).toInt(); @@ -657,24 +712,10 @@ void servermain::loadSettings() user.password = settings->value("Password", "").toString(); user.userType = settings->value("UserType", 0).toInt(); serverConfig.users.append(user); - } } settings->endArray(); } - else { - /* Support old way of storing users just to get them loaded*/ - settings->endArray(); - numUsers = settings->value("ServerNumUsers", 2).toInt(); - for (int f = 0; f < numUsers; f++) - { - SERVERUSER user; - user.username = settings->value("ServerUsername_" + QString::number(f), "").toString(); - user.password = settings->value("ServerPassword_" + QString::number(f), "").toString(); - user.userType = settings->value("ServerUserType_" + QString::number(f), 0).toInt(); - serverConfig.users.append(user); - } - } settings->endGroup(); settings->sync(); diff --git a/servermain.h b/servermain.h index af9150c..a3af388 100644 --- a/servermain.h +++ b/servermain.h @@ -243,6 +243,7 @@ private: rigCapabilities rigCaps; bool haveRigCaps = false; quint16 tcpPort; + audioType audioSystem; } prefs; preferences defPrefs; diff --git a/wfmain.cpp b/wfmain.cpp index 3789bf1..aea3a07 100644 --- a/wfmain.cpp +++ b/wfmain.cpp @@ -5842,13 +5842,13 @@ void wfmain::setAudioDevicesUI() { info = Pa_GetDeviceInfo(i); if (info->maxInputChannels > 0) { - qInfo(logAudio()) << (i == Pa_GetDefaultInputDevice() ? "*" : " ") << "(" << i << ") Output Device : " << info->name; + qDebug(logAudio()) << (i == Pa_GetDefaultInputDevice() ? "*" : " ") << "(" << i << ") Input Device : " << info->name; ui->audioInputCombo->addItem(info->name, i); ui->serverRXAudioInputCombo->addItem(info->name, i); } if (info->maxOutputChannels > 0) { - qInfo(logAudio()) << (i == Pa_GetDefaultOutputDevice() ? "*" : " ") << "(" << i << ") Input Device : " << info->name; + qDebug(logAudio()) << (i == Pa_GetDefaultOutputDevice() ? "*" : " ") << "(" << i << ") Output Device : " << info->name; ui->audioOutputCombo->addItem(info->name, i); ui->serverTXAudioOutputCombo->addItem(info->name, i); } diff --git a/wfserver.vcxproj b/wfserver.vcxproj index e619017..471461b 100644 --- a/wfserver.vcxproj +++ b/wfserver.vcxproj @@ -16,12 +16,11 @@ QtVS_v304 10.0.19041.0 10.0.19041.0 - $(MSBuildProjectDirectory)\QtMsBuild - + $(MSBuildProjectDirectory)\QtMsBuild v142 - release\ + wfview-release\ false NotSet Application @@ -30,17 +29,14 @@ v142 - debug\ + wfview-debug\ false NotSet Application debug\ wfserver - - - - + @@ -48,37 +44,11 @@ - - - - - - debug\ - debug\ - wfserver - true - - - release\ - release\ - wfserver - true - false - - - msvc2019 - core;network;gui;multimedia;widgets;serialport;printsupport - - - msvc2019 - core;network;gui;multimedia;widgets;serialport;printsupport - - - - + wfview-debug\debug\wfservertruewfview-release\release\wfservertruefalsemsvc2019core;network;gui;multimedia;widgets;serialport;printsupportmsvc2019core;network;gui;multimedia;widgets;serialport;printsupport + - .;..\opus\include;..\eigen;..\r8brain-free-src;resampler;release;/include;%(AdditionalIncludeDirectories) + .;..\rtaudio;..\portaudio\include;..\opus\include;..\eigen;..\r8brain-free-src;resampler;release;/include;%(AdditionalIncludeDirectories) -Zc:rvalueCast -Zc:inline -Zc:strictStrings -Zc:throwingNew -Zc:referenceBinding -Zc:__cplusplus -w34100 -w34189 -w44996 -w44456 -w44457 -w44458 %(AdditionalOptions) release\ false @@ -87,19 +57,17 @@ Sync release\ MaxSpeed - _CONSOLE;UNICODE;_UNICODE;WIN32;_ENABLE_EXTENDED_ALIGNED_STORAGE;WFVIEW_VERSION="1.2d";BUILD_WFSERVER;QT_DEPRECATED_WARNINGS;QCUSTOMPLOT_COMPILE_LIBRARY;USE_SSE;USE_SSE2;OUTSIDE_SPEEX;RANDOM_PREFIX=wf;EIGEN_MPL2_ONLY;EIGEN_DONT_VECTORIZE;EIGEN_VECTORIZE_SSE3;PREFIX="/usr/local";GITSHORT="47772a4";HOST="wfview.org";UNAME="build";NDEBUG;QT_NO_DEBUG;%(PreprocessorDefinitions) + _CONSOLE;UNICODE;_UNICODE;WIN32;_ENABLE_EXTENDED_ALIGNED_STORAGE;WFVIEW_VERSION="1.2e";BUILD_WFSERVER;__WINDOWS_WASAPI__;QT_DEPRECATED_WARNINGS;QCUSTOMPLOT_COMPILE_LIBRARY;USE_SSE;USE_SSE2;OUTSIDE_SPEEX;RANDOM_PREFIX=wf;EIGEN_MPL2_ONLY;EIGEN_DONT_VECTORIZE;EIGEN_VECTORIZE_SSE3;PREFIX="/usr/local";GITSHORT="44f6ec2";HOST="wfview.org";UNAME="build";NDEBUG;QT_NO_DEBUG;%(PreprocessorDefinitions) false - - + MultiThreadedDLL true true Level3 - true - + true - ..\opus\win32\VS2015\Win32\Release\opus.lib;%(AdditionalDependencies) - ..\opus\win32\VS2015\Win32\Release;%(AdditionalLibraryDirectories) + ..\portaudio\msvc\Win32\Release\portaudio_x86.lib;..\opus\win32\VS2015\Win32\Release\opus.lib;%(AdditionalDependencies) + ..\portaudio\msvc\Win32\Release;..\opus\win32\VS2015\Win32\Release;%(AdditionalLibraryDirectories) "/MANIFESTDEPENDENCY:type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' publicKeyToken='6595b64144ccf1df' language='*' processorArchitecture='*'" %(AdditionalOptions) true false @@ -117,26 +85,12 @@ 0 - _CONSOLE;UNICODE;_UNICODE;WIN32;_ENABLE_EXTENDED_ALIGNED_STORAGE;WFVIEW_VERSION=\"1.2d\";BUILD_WFSERVER;QT_DEPRECATED_WARNINGS;QCUSTOMPLOT_COMPILE_LIBRARY;USE_SSE;USE_SSE2;OUTSIDE_SPEEX;RANDOM_PREFIX=wf;EIGEN_MPL2_ONLY;EIGEN_DONT_VECTORIZE;EIGEN_VECTORIZE_SSE3;PREFIX=\"/usr/local\";GITSHORT=\"47772a4\";HOST=\"wfview.org\";UNAME=\"build\";NDEBUG;QT_NO_DEBUG;QT_MULTIMEDIA_LIB;QT_PRINTSUPPORT_LIB;QT_WIDGETS_LIB;QT_GUI_LIB;QT_SERIALPORT_LIB;QT_NETWORK_LIB;QT_CORE_LIB;%(PreprocessorDefinitions) + _CONSOLE;UNICODE;_UNICODE;WIN32;_ENABLE_EXTENDED_ALIGNED_STORAGE;WFVIEW_VERSION=\"1.2e\";BUILD_WFSERVER;__WINDOWS_WASAPI__;QT_DEPRECATED_WARNINGS;QCUSTOMPLOT_COMPILE_LIBRARY;USE_SSE;USE_SSE2;OUTSIDE_SPEEX;RANDOM_PREFIX=wf;EIGEN_MPL2_ONLY;EIGEN_DONT_VECTORIZE;EIGEN_VECTORIZE_SSE3;PREFIX=\"/usr/local\";GITSHORT=\"44f6ec2\";HOST=\"wfview.org\";UNAME=\"build\";NDEBUG;QT_NO_DEBUG;QT_MULTIMEDIA_LIB;QT_PRINTSUPPORT_LIB;QT_WIDGETS_LIB;QT_GUI_LIB;QT_SERIALPORT_LIB;QT_NETWORK_LIB;QT_CORE_LIB;%(PreprocessorDefinitions) - - msvc - ./$(Configuration)/moc_predefs.h - Moc'ing %(Identity)... - output - $(Configuration) - moc_%(Filename).cpp - - - default - Rcc'ing %(Identity)... - $(Configuration) - qrc_%(Filename).cpp - - + msvc./$(Configuration)/moc_predefs.hMoc'ing %(Identity)...output$(Configuration)moc_%(Filename).cppdefaultRcc'ing %(Identity)...$(Configuration)qrc_%(Filename).cpp - .;..\opus\include;..\eigen;..\r8brain-free-src;resampler;debug;/include;%(AdditionalIncludeDirectories) + .;..\rtaudio;..\portaudio\include;..\opus\include;..\eigen;..\r8brain-free-src;resampler;debug;/include;%(AdditionalIncludeDirectories) -Zc:rvalueCast -Zc:inline -Zc:strictStrings -Zc:throwingNew -Zc:referenceBinding -Zc:__cplusplus -w34100 -w34189 -w44996 -w44456 -w44457 -w44458 %(AdditionalOptions) debug\ false @@ -145,17 +99,16 @@ Sync debug\ Disabled - _CONSOLE;UNICODE;_UNICODE;WIN32;_ENABLE_EXTENDED_ALIGNED_STORAGE;WFVIEW_VERSION="1.2d";BUILD_WFSERVER;QT_DEPRECATED_WARNINGS;QCUSTOMPLOT_COMPILE_LIBRARY;USE_SSE;USE_SSE2;OUTSIDE_SPEEX;RANDOM_PREFIX=wf;EIGEN_MPL2_ONLY;EIGEN_DONT_VECTORIZE;EIGEN_VECTORIZE_SSE3;PREFIX="/usr/local";GITSHORT="47772a4";HOST="wfview.org";UNAME="build";%(PreprocessorDefinitions) + _CONSOLE;UNICODE;_UNICODE;WIN32;_ENABLE_EXTENDED_ALIGNED_STORAGE;WFVIEW_VERSION="1.2e";BUILD_WFSERVER;__WINDOWS_WASAPI__;QT_DEPRECATED_WARNINGS;QCUSTOMPLOT_COMPILE_LIBRARY;USE_SSE;USE_SSE2;OUTSIDE_SPEEX;RANDOM_PREFIX=wf;EIGEN_MPL2_ONLY;EIGEN_DONT_VECTORIZE;EIGEN_VECTORIZE_SSE3;PREFIX="/usr/local";GITSHORT="44f6ec2";HOST="wfview.org";UNAME="build";%(PreprocessorDefinitions) false MultiThreadedDebugDLL true true Level3 - true - + true - ..\opus\win32\VS2015\Win32\Debug\opus.lib;%(AdditionalDependencies) - ..\opus\win32\VS2015\Win32\Debug;%(AdditionalLibraryDirectories) + ..\portaudio\msvc\Win32\Debug\portaudio_x86.lib;..\opus\win32\VS2015\Win32\Debug\opus.lib;%(AdditionalDependencies) + ..\portaudio\msvc\Win32\Debug;..\opus\win32\VS2015\Win32\Debug;%(AdditionalLibraryDirectories) "/MANIFESTDEPENDENCY:type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' publicKeyToken='6595b64144ccf1df' language='*' processorArchitecture='*'" %(AdditionalOptions) true true @@ -171,72 +124,208 @@ 0 - _CONSOLE;UNICODE;_UNICODE;WIN32;_ENABLE_EXTENDED_ALIGNED_STORAGE;WFVIEW_VERSION=\"1.2d\";BUILD_WFSERVER;QT_DEPRECATED_WARNINGS;QCUSTOMPLOT_COMPILE_LIBRARY;USE_SSE;USE_SSE2;OUTSIDE_SPEEX;RANDOM_PREFIX=wf;EIGEN_MPL2_ONLY;EIGEN_DONT_VECTORIZE;EIGEN_VECTORIZE_SSE3;PREFIX=\"/usr/local\";GITSHORT=\"47772a4\";HOST=\"wfview.org\";UNAME=\"build\";QT_MULTIMEDIA_LIB;QT_PRINTSUPPORT_LIB;QT_WIDGETS_LIB;QT_GUI_LIB;QT_SERIALPORT_LIB;QT_NETWORK_LIB;QT_CORE_LIB;_DEBUG;%(PreprocessorDefinitions) + _CONSOLE;UNICODE;_UNICODE;WIN32;_ENABLE_EXTENDED_ALIGNED_STORAGE;WFVIEW_VERSION=\"1.2e\";BUILD_WFSERVER;__WINDOWS_WASAPI__;QT_DEPRECATED_WARNINGS;QCUSTOMPLOT_COMPILE_LIBRARY;USE_SSE;USE_SSE2;OUTSIDE_SPEEX;RANDOM_PREFIX=wf;EIGEN_MPL2_ONLY;EIGEN_DONT_VECTORIZE;EIGEN_VECTORIZE_SSE3;PREFIX=\"/usr/local\";GITSHORT=\"44f6ec2\";HOST=\"wfview.org\";UNAME=\"build\";QT_MULTIMEDIA_LIB;QT_PRINTSUPPORT_LIB;QT_WIDGETS_LIB;QT_GUI_LIB;QT_SERIALPORT_LIB;QT_NETWORK_LIB;QT_CORE_LIB;_DEBUG;%(PreprocessorDefinitions) - - msvc - ./$(Configuration)/moc_predefs.h - Moc'ing %(Identity)... - output - $(Configuration) - moc_%(Filename).cpp - - - default - Rcc'ing %(Identity)... - $(Configuration) - qrc_%(Filename).cpp - - + msvc./$(Configuration)/moc_predefs.hMoc'ing %(Identity)...output$(Configuration)moc_%(Filename).cppdefaultRcc'ing %(Identity)...$(Configuration)qrc_%(Filename).cpp + + + + + + + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Document true @@ -253,6 +342,30 @@ release\moc_predefs.h;%(Outputs) true + + + + + + + + + + + + + + + + + + + + + + + + @@ -285,16 +398,30 @@ - resources - resources - + + + + + + + + + + resourcesresources - style - style - + + + + + + + + + + stylestyle @@ -308,9 +435,6 @@ - - - - + \ No newline at end of file diff --git a/wfserver.vcxproj.filters b/wfserver.vcxproj.filters index 1a18943..b378c08 100644 --- a/wfserver.vcxproj.filters +++ b/wfserver.vcxproj.filters @@ -37,6 +37,12 @@ + + Source Files + + + Source Files + Source Files @@ -46,12 +52,18 @@ Source Files + + Source Files + Source Files Source Files + + Source Files + Source Files @@ -67,26 +79,41 @@ Source Files + + Source Files + Source Files Source Files + + Source Files + + + Source Files + + + Source Files + Source Files Source Files - - Source Files - + + Header Files + Header Files + + Header Files + Header Files @@ -99,12 +126,18 @@ Header Files + + Header Files + Header Files Header Files + + Header Files + Header Files @@ -123,6 +156,9 @@ Header Files + + Header Files + Header Files @@ -132,6 +168,15 @@ Header Files + + Header Files + + + Header Files + + + Header Files + Header Files @@ -143,12 +188,46 @@ + + + + + + + + + + Generated Files Generated Files + + + + + + + + + + + + + + + + + + + + + + + + @@ -282,11 +361,6 @@ - - - - - Header Files - + \ No newline at end of file