1
0
mirror of https://github.com/cookiengineer/audacity synced 2025-06-15 15:49:36 +02:00

Fix WASAPI state reporting and add WASAPI loopback support.

This commit is contained in:
lllucius 2013-02-27 02:17:21 +00:00
parent 8c93f13b1d
commit 548983fd02
6 changed files with 5450 additions and 5194 deletions

View File

@ -178,6 +178,14 @@ Patches:
Integration by upstream in progress. Will need updating as upstream
portaudio moves
portaudio-v19/wasapi-fix.patch Patch to WASAPI hostapi that corrects incorrect
reporting of stream open/running/closed state.
portaudio-v19/wasapi-loopback.patch Patch to add loopback devices to the WASAPI
hostapi.
portaudio-v19/jack.patch Patch to add JACK support to Windows.
?portaudio/libtool22.patch Patch from Gentoo to ensure that static libraries
are always built, not shared ones, otherwise the assumptions elsewhere in the
build system break. Not suitable for upstream, what is needed is more

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,39 @@
diff -wruN portaudio/src/hostapi/wasapi/pa_win_wasapi.c portaudio-v19/src/hostapi/wasapi/pa_win_wasapi.c
--- portaudio/src/hostapi/wasapi/pa_win_wasapi.c 2012-06-29 06:44:12.000000000 -0500
+++ portaudio-v19/src/hostapi/wasapi/pa_win_wasapi.c 2012-12-31 14:46:16.533923600 -0600
@@ -481,6 +481,9 @@
// thread is being started
volatile BOOL running;
+ // stream has not or is no longer started
+ BOOL stopped;
+
PA_THREAD_ID dwThreadId;
HANDLE hThread;
HANDLE hCloseRequest;
@@ -2687,6 +2742,9 @@
if (framesPerBuffer == 0)
framesPerBuffer = ((UINT32)sampleRate / 100) * 2;
+ stream->stopped = TRUE;
+ stream->running = FALSE;
+
// Try create device: Input
if (inputParameters != NULL)
{
@@ -3337,6 +3398,7 @@
// Signal: stream running.
stream->running = TRUE;
}
+ stream->stopped = FALSE;
return result;
@@ -3378,6 +3440,7 @@
_StreamCleanup(stream);
stream->running = FALSE;
+ stream->stopped = TRUE;
}
// ------------------------------------------------------------------------------------------

View File

@ -0,0 +1,138 @@
diff -wruN portaudio/src/hostapi/wasapi/pa_win_wasapi.c portaudio-v19/src/hostapi/wasapi/pa_win_wasapi.c
--- portaudio/src/hostapi/wasapi/pa_win_wasapi.c 2012-06-29 06:44:12.000000000 -0500
+++ portaudio-v19/src/hostapi/wasapi/pa_win_wasapi.c 2012-12-31 14:46:16.533923600 -0600
@@ -1052,6 +1055,8 @@
HRESULT hr = S_OK;
IMMDeviceCollection* pEndPoints = NULL;
UINT i;
+ UINT renderCount;
+ UINT devIndex;
if (!SetupAVRT())
{
@@ -1148,6 +1153,19 @@
}
}
+ hr = IMMDeviceEnumerator_EnumAudioEndpoints(paWasapi->enumerator, eRender, DEVICE_STATE_ACTIVE, &pEndPoints);
+ // We need to set the result to a value otherwise we will return paNoError
+ // [IF_FAILED_JUMP(hResult, error);]
+ IF_FAILED_INTERNAL_ERROR_JUMP(hr, result, error);
+
+ hr = IMMDeviceCollection_GetCount(pEndPoints, &renderCount);
+ // We need to set the result to a value otherwise we will return paNoError
+ // [IF_FAILED_JUMP(hResult, error);]
+ IF_FAILED_INTERNAL_ERROR_JUMP(hr, result, error);
+
+ SAFE_RELEASE(pEndPoints);
+ pEndPoints = NULL;
+
hr = IMMDeviceEnumerator_EnumAudioEndpoints(paWasapi->enumerator, eAll, DEVICE_STATE_ACTIVE, &pEndPoints);
// We need to set the result to a value otherwise we will return paNoError
// [IF_FAILED_JUMP(hResult, error);]
@@ -1158,6 +1176,8 @@
// [IF_FAILED_JUMP(hResult, error);]
IF_FAILED_INTERNAL_ERROR_JUMP(hr, result, error);
+ paWasapi->deviceCount += renderCount;
+
paWasapi->devInfo = (PaWasapiDeviceInfo *)PaUtil_AllocateMemory(sizeof(PaWasapiDeviceInfo) * paWasapi->deviceCount);
for (i = 0; i < paWasapi->deviceCount; ++i)
memset(&paWasapi->devInfo[i], 0, sizeof(PaWasapiDeviceInfo));
@@ -1181,7 +1201,7 @@
goto error;
}
- for (i = 0; i < paWasapi->deviceCount; ++i)
+ for (devIndex = 0, i = 0; i < paWasapi->deviceCount; ++i, ++devIndex)
{
DWORD state = 0;
PaDeviceInfo *deviceInfo = &deviceInfoArray[i];
@@ -1191,7 +1211,7 @@
PA_DEBUG(("WASAPI: device idx: %02d\n", i));
PA_DEBUG(("WASAPI: ---------------\n"));
- hr = IMMDeviceCollection_Item(pEndPoints, i, &paWasapi->devInfo[i].device);
+ hr = IMMDeviceCollection_Item(pEndPoints, devIndex, &paWasapi->devInfo[i].device);
// We need to set the result to a value otherwise we will return paNoError
// [IF_FAILED_JUMP(hResult, error);]
IF_FAILED_INTERNAL_ERROR_JUMP(hr, result, error);
@@ -1373,6 +1393,41 @@
(*hostApi)->deviceInfos[i] = deviceInfo;
++(*hostApi)->info.deviceCount;
+
+ if (paWasapi->devInfo[i].flow == eRender)
+ {
+ char *deviceName;
+ UINT deviceNameLen;
+
+ memcpy(&deviceInfoArray[i + 1], deviceInfo, sizeof(*deviceInfo));
+ memcpy(&paWasapi->devInfo[i + 1], &paWasapi->devInfo[i], sizeof(*paWasapi->devInfo));
+
+ i++;
+ deviceInfo = &deviceInfoArray[i];
+
+ deviceInfo->maxInputChannels = deviceInfo->maxOutputChannels;
+ deviceInfo->defaultHighInputLatency = deviceInfo->defaultHighOutputLatency;
+ deviceInfo->defaultLowInputLatency = deviceInfo->defaultLowOutputLatency;
+ deviceInfo->maxOutputChannels = 0;
+ deviceInfo->defaultHighOutputLatency = 0;
+ deviceInfo->defaultLowOutputLatency = 0;
+ PA_DEBUG(("WASAPI:%d| def.SR[%d] max.CH[%d] latency{hi[%f] lo[%f]}\n", i, (UINT32)deviceInfo->defaultSampleRate,
+ deviceInfo->maxInputChannels, (float)deviceInfo->defaultHighInputLatency, (float)deviceInfo->defaultLowInputLatency));
+
+ IMMDevice_AddRef(paWasapi->devInfo[i].device);
+
+ deviceName = (char *)PaUtil_GroupAllocateMemory(paWasapi->allocations, MAX_STR_LEN + 1);
+ if (deviceName == NULL)
+ {
+ result = paInsufficientMemory;
+ goto error;
+ }
+ _snprintf(deviceName, MAX_STR_LEN-1, "%s (loopback)", deviceInfo->name);
+ deviceInfo->name = deviceName;
+
+ (*hostApi)->deviceInfos[i] = deviceInfo;
+ ++(*hostApi)->info.deviceCount;
+ }
}
}
@@ -2170,7 +2225,7 @@
}*/
// select mixer
- pSub->monoMixer = _GetMonoToStereoMixer(WaveToPaFormat(&pSub->wavex), (pInfo->flow == eRender ? MIX_DIR__1TO2 : MIX_DIR__2TO1_L));
+ pSub->monoMixer = _GetMonoToStereoMixer(WaveToPaFormat(&pSub->wavex), (output ? MIX_DIR__1TO2 : MIX_DIR__2TO1_L));
if (pSub->monoMixer == NULL)
{
(*pa_error) = paInvalidChannelCount;
@@ -2423,7 +2478,7 @@
}*/
// Select mixer
- pSub->monoMixer = _GetMonoToStereoMixer(WaveToPaFormat(&pSub->wavex), (pInfo->flow == eRender ? MIX_DIR__1TO2 : MIX_DIR__2TO1_L));
+ pSub->monoMixer = _GetMonoToStereoMixer(WaveToPaFormat(&pSub->wavex), (output ? MIX_DIR__1TO2 : MIX_DIR__2TO1_L));
if (pSub->monoMixer == NULL)
{
(*pa_error) = paInvalidChannelCount;
@@ -2728,6 +2786,9 @@
if (fullDuplex)
stream->in.streamFlags = 0; // polling interface is implemented for full-duplex mode also
+ if (info->flow == eRender)
+ stream->in.streamFlags |= AUDCLNT_STREAMFLAGS_LOOPBACK;
+
// Fill parameters for Audio Client creation
stream->in.params.device_info = info;
stream->in.params.stream_params = (*inputParameters);
@@ -3411,7 +3474,7 @@
// ------------------------------------------------------------------------------------------
static PaError IsStreamStopped( PaStream *s )
{
- return !((PaWasapiStream *)s)->running;
+ return ((PaWasapiStream *)s)->stopped;
}
// ------------------------------------------------------------------------------------------

View File

@ -38,11 +38,11 @@
#define CINTERFACE 1
#define COBJMACROS 1
#include <initguid.h>
#include <windows.h>
#include <tchar.h>
#include <strsafe.h>
#include <mmdeviceapi.h>
#include <initguid.h>
#include <endpointvolume.h>
#include "portaudio.h"

View File

@ -25,7 +25,7 @@
>
<Tool
Name="VCPreBuildEventTool"
CommandLine="echo // Automatically generated file &gt;&quot;$(InputDir)/$(ConfigurationName)/config.h&quot;&#x0D;&#x0A;echo #define PA_USE_WMME 1 &gt;&gt;&quot;$(InputDir)/$(ConfigurationName)/config.h&quot;&#x0D;&#x0A;IF NOT &quot;%DXSDK_DIR%&quot; == &quot;&quot; echo #define PA_USE_DS 1 &gt;&gt;&quot;$(InputDir)/$(ConfigurationName)/config.h&quot;&#x0D;&#x0A;IF NOT &quot;%ASIOSDK_DIR%&quot; == &quot;&quot; echo #define PA_USE_ASIO 1 &gt;&gt;&quot;$(InputDir)/$(ConfigurationName)/config.h&quot;&#x0D;&#x0A;"
CommandLine="echo on&#x0D;&#x0A;set CFG=&quot;$(ProjectDir)/$(ConfigurationName)/config.h&quot;&#x0D;&#x0A;&#x0D;&#x0A;echo // Automatically generated file &gt;%CFG%&#x0D;&#x0A;IF NOT &quot;%DXSDK_DIR%&quot; == &quot;&quot; echo #define PA_USE_DS 1 &gt;&gt;%CFG%&#x0D;&#x0A;IF NOT &quot;%ASIOSDK_DIR%&quot; == &quot;&quot; echo #define PA_USE_ASIO 1 &gt;&gt;%CFG%&#x0D;&#x0A;rem echo #define PA_USE_WDMKS 1 &gt;&gt;%CFG%&#x0D;&#x0A;echo #define PA_USE_WASAPI 1 &gt;&gt;%CFG%&#x0D;&#x0A;echo #define PA_USE_WMME 1 &gt;&gt;%CFG%&#x0D;&#x0A;"
/>
<Tool
Name="VCCustomBuildTool"
@ -42,7 +42,7 @@
<Tool
Name="VCCLCompilerTool"
Optimization="2"
AdditionalIncludeDirectories="..\..\..\lib-src\portaudio-v19\include;..\..\..\lib-src\portaudio-v19\src\common"
AdditionalIncludeDirectories="&quot;..\..\..\lib-src\portaudio-v19\include&quot;;&quot;..\..\..\lib-src\portaudio-v19\src\common&quot;;&quot;..\..\..\lib-src\portaudio-v19\src\os\win&quot;"
PreprocessorDefinitions="WIN32;NDEBUG;_LIB"
StringPooling="true"
RuntimeLibrary="2"
@ -79,7 +79,7 @@
/>
<Tool
Name="VCPostBuildEventTool"
CommandLine="set BASE=&quot;../../../lib-src/portaudio-v19&quot;&#x0D;&#x0A;set CFLAGS=/O2 /GL /I &quot;%BASE%/include&quot; /I &quot;%BASE%/src/common&quot; /I &quot;%BASE%/src/os/win&quot; /D &quot;WIN32&quot; /D &quot;NDEBUG&quot; /D &quot;_LIB&quot; /D &quot;_MBCS&quot; /GF /FD /EHsc /MD /Gy /Fo&quot;$(IntDir)/&quot; /Fd&quot;$(IntDir)/&quot; /W3 /nologo /c /wd4996 /FI &quot;$(InputDir)/$(ConfigurationName)/config.h&quot; /errorReport:prompt&#x0D;&#x0A;set LIBS=&#x0D;&#x0A;&#x0D;&#x0A;if &quot;%DXSDK_DIR%&quot;==&quot;&quot; goto NoDX&#x0D;&#x0A;&#x0D;&#x0A;cl %CFLAGS% /I &quot;%DXSDK_DIR%/include&quot; &quot;%BASE%/src/hostapi/dsound/pa_win_ds.c&quot;&#x0D;&#x0A;cl %CFLAGS% /I &quot;%DXSDK_DIR%/include&quot; &quot;%BASE%/src/hostapi/dsound/pa_win_ds_dynlink.c&quot;&#x0D;&#x0A;&#x0D;&#x0A;set LIBS=&quot;%DXSDK_DIR%/lib/x86\dxguid.lib&quot;&#x0D;&#x0A;&#x0D;&#x0A;:NoDX&#x0D;&#x0A;&#x0D;&#x0A;if &quot;%ASIOSDK_DIR%&quot;==&quot;&quot; goto NoASIO&#x0D;&#x0A;&#x0D;&#x0A;cl %CFLAGS% /I &quot;%ASIOSDK_DIR%/common&quot; /I &quot;%ASIOSDK_DIR%/host&quot; /I &quot;%ASIOSDK_DIR%/host/pc&quot; &quot;%BASE%/src/hostapi/asio/pa_asio.cpp&quot;&#x0D;&#x0A;cl %CFLAGS% /I &quot;%ASIOSDK_DIR%/common&quot; /I &quot;%ASIOSDK_DIR%/host&quot; /I &quot;%ASIOSDK_DIR%/host/pc&quot; &quot;%BASE%/src/hostapi/asio/iasiothiscallresolver.cpp&quot;&#x0D;&#x0A;cl %CFLAGS% /I &quot;%ASIOSDK_DIR%/common&quot; /I &quot;%ASIOSDK_DIR%/host&quot; /I &quot;%ASIOSDK_DIR%/host/pc&quot; &quot;%ASIOSDK_DIR%/common/asio.cpp&quot;&#x0D;&#x0A;cl %CFLAGS% /I &quot;%ASIOSDK_DIR%/common&quot; /I &quot;%ASIOSDK_DIR%/host&quot; /I &quot;%ASIOSDK_DIR%/host/pc&quot; &quot;%ASIOSDK_DIR%/host/asiodrivers.cpp&quot;&#x0D;&#x0A;cl %CFLAGS% /I &quot;%ASIOSDK_DIR%/common&quot; /I &quot;%ASIOSDK_DIR%/host&quot; /I &quot;%ASIOSDK_DIR%/host/pc&quot; &quot;%ASIOSDK_DIR%/host/pc/asiolist.cpp&quot;&#x0D;&#x0A;&#x0D;&#x0A;:NoASIO&#x0D;&#x0A;&#x0D;&#x0A;lib /OUT:&quot;$(TargetPath)&quot; &quot;$(IntDir)/*.obj&quot; %LIBS%&#x0D;&#x0A;"
CommandLine="echo on&#x0D;&#x0A;set BASE=&quot;../../../lib-src/portaudio-v19&quot;&#x0D;&#x0A;set CFG=$(ProjectDir)$(ConfigurationName)\config.h&#x0D;&#x0A;set INTDIR=$(ConfigurationName)&#x0D;&#x0A;set CFLAGS=/O2 /GL /I &quot;%BASE%/include&quot; /I &quot;%BASE%/src/common&quot; /I &quot;%BASE%/src/os/win&quot; /D &quot;WIN32&quot; /D &quot;NDEBUG&quot; /D &quot;_LIB&quot; /D &quot;_MBCS&quot; /GF /FD /EHsc /MD /Gy /Fo&quot;%INTDIR%/&quot; /Fd&quot;%INTDIR%&quot; /W3 /nologo /c /wd4996 /FI &quot;%CFG%&quot; /errorReport:prompt&#x0D;&#x0A;set LIBS=&#x0D;&#x0A;&#x0D;&#x0A;find &quot;PA_USE_DS 1&quot; &quot;%CFG%&quot;&#x0D;&#x0A;IF ERRORLEVEL 1 goto NoDS&#x0D;&#x0A;&#x0D;&#x0A;cl %CFLAGS% /I &quot;%DXSDK_DIR%/include&quot; &quot;%BASE%/src/hostapi/dsound/pa_win_ds.c&quot;&#x0D;&#x0A;cl %CFLAGS% /I &quot;%DXSDK_DIR%/include&quot; &quot;%BASE%/src/hostapi/dsound/pa_win_ds_dynlink.c&quot;&#x0D;&#x0A;&#x0D;&#x0A;set LIBS=&quot;%DXSDK_DIR%/lib/x86\dxguid.lib&quot;&#x0D;&#x0A;&#x0D;&#x0A;:NoDS&#x0D;&#x0A;&#x0D;&#x0A;find &quot;PA_USE_WASAPI 1&quot; &quot;%CFG%&quot;&#x0D;&#x0A;IF ERRORLEVEL 1 goto NoWASAPI&#x0D;&#x0A;&#x0D;&#x0A;cl %CFLAGS% &quot;%BASE%/src/hostapi/wasapi/pa_win_wasapi.c&quot;&#x0D;&#x0A;&#x0D;&#x0A;:NoWASAPI&#x0D;&#x0A;&#x0D;&#x0A;find &quot;PA_USE_WDMKS 1&quot; &quot;%CFG%&quot;&#x0D;&#x0A;IF ERRORLEVEL 1 goto NoWDMKS&#x0D;&#x0A;&#x0D;&#x0A;cl %CFLAGS% &quot;%BASE%/src/hostapi/wdmks/pa_win_wdmks.c&quot;&#x0D;&#x0A;&#x0D;&#x0A;:NoWDMKS&#x0D;&#x0A;&#x0D;&#x0A;find &quot;PA_USE_ASIO 1&quot; &quot;%CFG%&quot;&#x0D;&#x0A;IF ERRORLEVEL 1 goto NoASIO&#x0D;&#x0A;&#x0D;&#x0A;cl %CFLAGS% /I &quot;%ASIOSDK_DIR%/common&quot; /I &quot;%ASIOSDK_DIR%/host&quot; /I &quot;%ASIOSDK_DIR%/host/pc&quot; &quot;%BASE%/src/hostapi/asio/pa_asio.cpp&quot;&#x0D;&#x0A;cl %CFLAGS% /I &quot;%ASIOSDK_DIR%/common&quot; /I &quot;%ASIOSDK_DIR%/host&quot; /I &quot;%ASIOSDK_DIR%/host/pc&quot; &quot;%BASE%/src/hostapi/asio/iasiothiscallresolver.cpp&quot;&#x0D;&#x0A;cl %CFLAGS% /I &quot;%ASIOSDK_DIR%/common&quot; /I &quot;%ASIOSDK_DIR%/host&quot; /I &quot;%ASIOSDK_DIR%/host/pc&quot; &quot;%ASIOSDK_DIR%/common/asio.cpp&quot;&#x0D;&#x0A;cl %CFLAGS% /I &quot;%ASIOSDK_DIR%/common&quot; /I &quot;%ASIOSDK_DIR%/host&quot; /I &quot;%ASIOSDK_DIR%/host/pc&quot; &quot;%ASIOSDK_DIR%/host/asiodrivers.cpp&quot;&#x0D;&#x0A;cl %CFLAGS% /I &quot;%ASIOSDK_DIR%/common&quot; /I &quot;%ASIOSDK_DIR%/host&quot; /I &quot;%ASIOSDK_DIR%/host/pc&quot; &quot;%ASIOSDK_DIR%/host/pc/asiolist.cpp&quot;&#x0D;&#x0A;&#x0D;&#x0A;:NoASIO&#x0D;&#x0A;&#x0D;&#x0A;lib /OUT:&quot;$(TargetPath)&quot; &quot;%INTDIR%/*.obj&quot; %LIBS%&#x0D;&#x0A;"
/>
</Configuration>
<Configuration
@ -92,7 +92,7 @@
>
<Tool
Name="VCPreBuildEventTool"
CommandLine="echo // Automatically generated file &gt;&quot;$(InputDir)/$(ConfigurationName)/config.h&quot;&#x0D;&#x0A;echo #define PA_USE_WMME 1 &gt;&gt;&quot;$(InputDir)/$(ConfigurationName)/config.h&quot;&#x0D;&#x0A;IF NOT &quot;%DXSDK_DIR%&quot; == &quot;&quot; echo #define PA_USE_DS 1 &gt;&gt;&quot;$(InputDir)/$(ConfigurationName)/config.h&quot;&#x0D;&#x0A;IF NOT &quot;%ASIOSDK_DIR%&quot; == &quot;&quot; echo #define PA_USE_ASIO 1 &gt;&gt;&quot;$(InputDir)/$(ConfigurationName)/config.h&quot;&#x0D;&#x0A;"
CommandLine="echo on&#x0D;&#x0A;set CFG=&quot;$(ProjectDir)/$(ConfigurationName)/config.h&quot;&#x0D;&#x0A;&#x0D;&#x0A;echo // Automatically generated file &gt;%CFG%&#x0D;&#x0A;IF NOT &quot;%DXSDK_DIR%&quot; == &quot;&quot; echo #define PA_USE_DS 1 &gt;&gt;%CFG%&#x0D;&#x0A;IF NOT &quot;%ASIOSDK_DIR%&quot; == &quot;&quot; echo #define PA_USE_ASIO 1 &gt;&gt;%CFG%&#x0D;&#x0A;rem echo #define PA_USE_WDMKS 1 &gt;&gt;%CFG%&#x0D;&#x0A;echo #define PA_USE_WASAPI 1 &gt;&gt;%CFG%&#x0D;&#x0A;echo #define PA_USE_WMME 1 &gt;&gt;%CFG%&#x0D;&#x0A;"
/>
<Tool
Name="VCCustomBuildTool"
@ -109,7 +109,7 @@
<Tool
Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories="..\..\..\lib-src\portaudio-v19\include;..\..\..\lib-src\portaudio-v19\src\common"
AdditionalIncludeDirectories="&quot;..\..\..\lib-src\portaudio-v19\include&quot;;&quot;..\..\..\lib-src\portaudio-v19\src\common&quot;;&quot;..\..\..\lib-src\portaudio-v19\src\os\win&quot;"
PreprocessorDefinitions="WIN32;_DEBUG;_LIB"
StringPooling="true"
BasicRuntimeChecks="3"
@ -148,7 +148,7 @@
/>
<Tool
Name="VCPostBuildEventTool"
CommandLine="set BASE=&quot;../../../lib-src/portaudio-v19&quot;&#x0D;&#x0A;set CFLAGS=/Od /I &quot;%BASE%/include&quot; /I &quot;%BASE%/src/common&quot; /I &quot;%BASE%/src/os/win&quot; /D &quot;WIN32&quot; /D &quot;_DEBUG&quot; /D &quot;_LIB&quot; /D &quot;_MBCS&quot; /GF /FD /EHsc /RTC1 /MDd /Gy /Fo&quot;$(IntDir)/&quot; /Fd&quot;$(IntDir)/&quot; /W3 /nologo /c /ZI /wd4996 /FI &quot;$(InputDir)/$(ConfigurationName)/config.h&quot; /errorReport:prompt&#x0D;&#x0A;set LIBS=&#x0D;&#x0A;&#x0D;&#x0A;if &quot;%DXSDK_DIR%&quot;==&quot;&quot; goto NoDX&#x0D;&#x0A;&#x0D;&#x0A;cl %CFLAGS% /I &quot;%DXSDK_DIR%/include&quot; &quot;%BASE%/src/hostapi/dsound/pa_win_ds.c&quot;&#x0D;&#x0A;cl %CFLAGS% /I &quot;%DXSDK_DIR%/include&quot; &quot;%BASE%/src/hostapi/dsound/pa_win_ds_dynlink.c&quot;&#x0D;&#x0A;&#x0D;&#x0A;set LIBS=&quot;%DXSDK_DIR%/lib/x86\dxguid.lib&quot;&#x0D;&#x0A;&#x0D;&#x0A;:NoDX&#x0D;&#x0A;&#x0D;&#x0A;if &quot;%ASIOSDK_DIR%&quot;==&quot;&quot; goto NoASIO&#x0D;&#x0A;&#x0D;&#x0A;cl %CFLAGS% /I &quot;%ASIOSDK_DIR%/common&quot; /I &quot;%ASIOSDK_DIR%/host&quot; /I &quot;%ASIOSDK_DIR%/host/pc&quot; &quot;%BASE%/src/hostapi/asio/pa_asio.cpp&quot;&#x0D;&#x0A;cl %CFLAGS% /I &quot;%ASIOSDK_DIR%/common&quot; /I &quot;%ASIOSDK_DIR%/host&quot; /I &quot;%ASIOSDK_DIR%/host/pc&quot; &quot;%BASE%/src/hostapi/asio/iasiothiscallresolver.cpp&quot;&#x0D;&#x0A;cl %CFLAGS% /I &quot;%ASIOSDK_DIR%/common&quot; /I &quot;%ASIOSDK_DIR%/host&quot; /I &quot;%ASIOSDK_DIR%/host/pc&quot; &quot;%ASIOSDK_DIR%/common/asio.cpp&quot;&#x0D;&#x0A;cl %CFLAGS% /I &quot;%ASIOSDK_DIR%/common&quot; /I &quot;%ASIOSDK_DIR%/host&quot; /I &quot;%ASIOSDK_DIR%/host/pc&quot; &quot;%ASIOSDK_DIR%/host/asiodrivers.cpp&quot;&#x0D;&#x0A;cl %CFLAGS% /I &quot;%ASIOSDK_DIR%/common&quot; /I &quot;%ASIOSDK_DIR%/host&quot; /I &quot;%ASIOSDK_DIR%/host/pc&quot; &quot;%ASIOSDK_DIR%/host/pc/asiolist.cpp&quot;&#x0D;&#x0A;&#x0D;&#x0A;:NoASIO&#x0D;&#x0A;&#x0D;&#x0A;lib /OUT:&quot;$(TargetPath)&quot; &quot;$(IntDir)/*.obj&quot; %LIBS%&#x0D;&#x0A;"
CommandLine="echo on&#x0D;&#x0A;set BASE=../../../lib-src/portaudio-v19&#x0D;&#x0A;set CFG=$(ProjectDir)$(ConfigurationName)\config.h&#x0D;&#x0A;set INTDIR=$(ConfigurationName)&#x0D;&#x0A;set CFLAGS=/Od /I &quot;%BASE%/include&quot; /I &quot;%BASE%/src/common&quot; /I &quot;%BASE%/src/os/win&quot; /D &quot;WIN32&quot; /D &quot;_DEBUG&quot; /D &quot;_LIB&quot; /D &quot;_MBCS&quot; /GF /FD /EHsc /RTC1 /MDd /Gy /W3 /nologo /c /ZI /wd4996 /Fo&quot;%INTDIR%/&quot; /FI &quot;%CFG%&quot; /errorReport:prompt&#x0D;&#x0A;set LIBS=&#x0D;&#x0A;&#x0D;&#x0A;find &quot;PA_USE_DS 1&quot; &quot;%CFG%&quot;&#x0D;&#x0A;IF ERRORLEVEL 1 goto NoDS&#x0D;&#x0A;&#x0D;&#x0A;cl %CFLAGS% /I &quot;%DXSDK_DIR%/include&quot; &quot;%BASE%/src/hostapi/dsound/pa_win_ds.c&quot;&#x0D;&#x0A;cl %CFLAGS% /I &quot;%DXSDK_DIR%/include&quot; &quot;%BASE%/src/hostapi/dsound/pa_win_ds_dynlink.c&quot;&#x0D;&#x0A;&#x0D;&#x0A;set LIBS=&quot;%DXSDK_DIR%/lib/x86\dxguid.lib&quot;&#x0D;&#x0A;&#x0D;&#x0A;:NoDS&#x0D;&#x0A;&#x0D;&#x0A;find &quot;PA_USE_WASAPI 1&quot; &quot;%CFG%&quot;&#x0D;&#x0A;IF ERRORLEVEL 1 goto NoWASAPI&#x0D;&#x0A;&#x0D;&#x0A;cl %CFLAGS% &quot;%BASE%/src/hostapi/wasapi/pa_win_wasapi.c&quot;&#x0D;&#x0A;&#x0D;&#x0A;:NoWASAPI&#x0D;&#x0A;&#x0D;&#x0A;find &quot;PA_USE_WDMKS 1&quot; &quot;%CFG%&quot;&#x0D;&#x0A;IF ERRORLEVEL 1 goto NoWDMKS&#x0D;&#x0A;&#x0D;&#x0A;cl %CFLAGS% &quot;%BASE%/src/hostapi/wdmks/pa_win_wdmks.c&quot;&#x0D;&#x0A;&#x0D;&#x0A;:NoWDMKS&#x0D;&#x0A;&#x0D;&#x0A;find &quot;PA_USE_ASIO 1&quot; &quot;%CFG%&quot;&#x0D;&#x0A;IF ERRORLEVEL 1 goto NoASIO&#x0D;&#x0A;&#x0D;&#x0A;cl %CFLAGS% /I &quot;%ASIOSDK_DIR%/common&quot; /I &quot;%ASIOSDK_DIR%/host&quot; /I &quot;%ASIOSDK_DIR%/host/pc&quot; &quot;%BASE%/src/hostapi/asio/pa_asio.cpp&quot;&#x0D;&#x0A;cl %CFLAGS% /I &quot;%ASIOSDK_DIR%/common&quot; /I &quot;%ASIOSDK_DIR%/host&quot; /I &quot;%ASIOSDK_DIR%/host/pc&quot; &quot;%BASE%/src/hostapi/asio/iasiothiscallresolver.cpp&quot;&#x0D;&#x0A;cl %CFLAGS% /I &quot;%ASIOSDK_DIR%/common&quot; /I &quot;%ASIOSDK_DIR%/host&quot; /I &quot;%ASIOSDK_DIR%/host/pc&quot; &quot;%ASIOSDK_DIR%/common/asio.cpp&quot;&#x0D;&#x0A;cl %CFLAGS% /I &quot;%ASIOSDK_DIR%/common&quot; /I &quot;%ASIOSDK_DIR%/host&quot; /I &quot;%ASIOSDK_DIR%/host/pc&quot; &quot;%ASIOSDK_DIR%/host/asiodrivers.cpp&quot;&#x0D;&#x0A;cl %CFLAGS% /I &quot;%ASIOSDK_DIR%/common&quot; /I &quot;%ASIOSDK_DIR%/host&quot; /I &quot;%ASIOSDK_DIR%/host/pc&quot; &quot;%ASIOSDK_DIR%/host/pc/asiolist.cpp&quot;&#x0D;&#x0A;&#x0D;&#x0A;:NoASIO&#x0D;&#x0A;&#x0D;&#x0A;lib /OUT:&quot;$(TargetPath)&quot; &quot;%INTDIR%/*.obj&quot; %LIBS%&#x0D;&#x0A;"
/>
</Configuration>
<Configuration
@ -161,7 +161,7 @@
>
<Tool
Name="VCPreBuildEventTool"
CommandLine="echo // Automatically generated file &gt;&quot;$(InputDir)/$(ConfigurationName)/config.h&quot;&#x0D;&#x0A;echo #define PA_USE_WMME 1 &gt;&gt;&quot;$(InputDir)/$(ConfigurationName)/config.h&quot;&#x0D;&#x0A;IF NOT &quot;%DXSDK_DIR%&quot; == &quot;&quot; echo #define PA_USE_DS 1 &gt;&gt;&quot;$(InputDir)/$(ConfigurationName)/config.h&quot;&#x0D;&#x0A;IF NOT &quot;%ASIOSDK_DIR%&quot; == &quot;&quot; echo #define PA_USE_ASIO 1 &gt;&gt;&quot;$(InputDir)/$(ConfigurationName)/config.h&quot;&#x0D;&#x0A;"
CommandLine="echo on&#x0D;&#x0A;set CFG=&quot;$(ProjectDir)/$(ConfigurationName)/config.h&quot;&#x0D;&#x0A;&#x0D;&#x0A;echo // Automatically generated file &gt;%CFG%&#x0D;&#x0A;IF NOT &quot;%DXSDK_DIR%&quot; == &quot;&quot; echo #define PA_USE_DS 1 &gt;&gt;%CFG%&#x0D;&#x0A;IF NOT &quot;%ASIOSDK_DIR%&quot; == &quot;&quot; echo #define PA_USE_ASIO 1 &gt;&gt;%CFG%&#x0D;&#x0A;rem echo #define PA_USE_WDMKS 1 &gt;&gt;%CFG%&#x0D;&#x0A;echo #define PA_USE_WASAPI 1 &gt;&gt;%CFG%&#x0D;&#x0A;echo #define PA_USE_WMME 1 &gt;&gt;%CFG%&#x0D;&#x0A;"
/>
<Tool
Name="VCCustomBuildTool"
@ -178,7 +178,7 @@
<Tool
Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories="..\..\..\lib-src\portaudio-v19\include;..\..\..\lib-src\portaudio-v19\src\common"
AdditionalIncludeDirectories="&quot;..\..\..\lib-src\portaudio-v19\include&quot;;&quot;..\..\..\lib-src\portaudio-v19\src\common&quot;;&quot;..\..\..\lib-src\portaudio-v19\src\os\win&quot;"
PreprocessorDefinitions="WIN32;_DEBUG;_LIB"
StringPooling="true"
BasicRuntimeChecks="3"
@ -217,7 +217,7 @@
/>
<Tool
Name="VCPostBuildEventTool"
CommandLine="set BASE=&quot;../../../lib-src/portaudio-v19&quot;&#x0D;&#x0A;set CFLAGS=/Od /I &quot;%BASE%/include&quot; /I &quot;%BASE%/src/common&quot; /I &quot;%BASE%/src/os/win&quot; /D &quot;WIN32&quot; /D &quot;_DEBUG&quot; /D &quot;_LIB&quot; /D &quot;_MBCS&quot; /GF /FD /EHsc /RTC1 /MDd /Gy /Fo&quot;$(IntDir)/&quot; /Fd&quot;$(IntDir)/&quot; /W3 /nologo /c /ZI /wd4996 /FI &quot;$(InputDir)/$(ConfigurationName)/config.h&quot; /errorReport:prompt&#x0D;&#x0A;set LIBS=&#x0D;&#x0A;&#x0D;&#x0A;if &quot;%DXSDK_DIR%&quot;==&quot;&quot; goto NoDX&#x0D;&#x0A;&#x0D;&#x0A;cl %CFLAGS% /I &quot;%DXSDK_DIR%/include&quot; &quot;%BASE%/src/hostapi/dsound/pa_win_ds.c&quot;&#x0D;&#x0A;cl %CFLAGS% /I &quot;%DXSDK_DIR%/include&quot; &quot;%BASE%/src/hostapi/dsound/pa_win_ds_dynlink.c&quot;&#x0D;&#x0A;&#x0D;&#x0A;set LIBS=&quot;%DXSDK_DIR%/lib/x86\dxguid.lib&quot;&#x0D;&#x0A;&#x0D;&#x0A;:NoDX&#x0D;&#x0A;&#x0D;&#x0A;if &quot;%ASIOSDK_DIR%&quot;==&quot;&quot; goto NoASIO&#x0D;&#x0A;&#x0D;&#x0A;cl %CFLAGS% /I &quot;%ASIOSDK_DIR%/common&quot; /I &quot;%ASIOSDK_DIR%/host&quot; /I &quot;%ASIOSDK_DIR%/host/pc&quot; &quot;%BASE%/src/hostapi/asio/pa_asio.cpp&quot;&#x0D;&#x0A;cl %CFLAGS% /I &quot;%ASIOSDK_DIR%/common&quot; /I &quot;%ASIOSDK_DIR%/host&quot; /I &quot;%ASIOSDK_DIR%/host/pc&quot; &quot;%BASE%/src/hostapi/asio/iasiothiscallresolver.cpp&quot;&#x0D;&#x0A;cl %CFLAGS% /I &quot;%ASIOSDK_DIR%/common&quot; /I &quot;%ASIOSDK_DIR%/host&quot; /I &quot;%ASIOSDK_DIR%/host/pc&quot; &quot;%ASIOSDK_DIR%/common/asio.cpp&quot;&#x0D;&#x0A;cl %CFLAGS% /I &quot;%ASIOSDK_DIR%/common&quot; /I &quot;%ASIOSDK_DIR%/host&quot; /I &quot;%ASIOSDK_DIR%/host/pc&quot; &quot;%ASIOSDK_DIR%/host/asiodrivers.cpp&quot;&#x0D;&#x0A;cl %CFLAGS% /I &quot;%ASIOSDK_DIR%/common&quot; /I &quot;%ASIOSDK_DIR%/host&quot; /I &quot;%ASIOSDK_DIR%/host/pc&quot; &quot;%ASIOSDK_DIR%/host/pc/asiolist.cpp&quot;&#x0D;&#x0A;&#x0D;&#x0A;:NoASIO&#x0D;&#x0A;&#x0D;&#x0A;lib /OUT:&quot;$(TargetPath)&quot; &quot;$(IntDir)/*.obj&quot; %LIBS%&#x0D;&#x0A;"
CommandLine="echo on&#x0D;&#x0A;set BASE=../../../lib-src/portaudio-v19&#x0D;&#x0A;set CFG=$(ProjectDir)$(ConfigurationName)\config.h&#x0D;&#x0A;set INTDIR=$(ConfigurationName)&#x0D;&#x0A;set CFLAGS=/Od /I &quot;%BASE%/include&quot; /I &quot;%BASE%/src/common&quot; /I &quot;%BASE%/src/os/win&quot; /D &quot;WIN32&quot; /D &quot;_DEBUG&quot; /D &quot;_LIB&quot; /D &quot;_MBCS&quot; /GF /FD /EHsc /RTC1 /MDd /Gy /W3 /nologo /c /ZI /wd4996 /Fo&quot;%INTDIR%/&quot; /FI &quot;%CFG%&quot; /errorReport:prompt&#x0D;&#x0A;set LIBS=&#x0D;&#x0A;&#x0D;&#x0A;find &quot;PA_USE_DS 1&quot; &quot;%CFG%&quot;&#x0D;&#x0A;IF ERRORLEVEL 1 goto NoDS&#x0D;&#x0A;&#x0D;&#x0A;cl %CFLAGS% /I &quot;%DXSDK_DIR%/include&quot; &quot;%BASE%/src/hostapi/dsound/pa_win_ds.c&quot;&#x0D;&#x0A;cl %CFLAGS% /I &quot;%DXSDK_DIR%/include&quot; &quot;%BASE%/src/hostapi/dsound/pa_win_ds_dynlink.c&quot;&#x0D;&#x0A;&#x0D;&#x0A;set LIBS=&quot;%DXSDK_DIR%/lib/x86\dxguid.lib&quot;&#x0D;&#x0A;&#x0D;&#x0A;:NoDS&#x0D;&#x0A;&#x0D;&#x0A;find &quot;PA_USE_WASAPI 1&quot; &quot;%CFG%&quot;&#x0D;&#x0A;IF ERRORLEVEL 1 goto NoWASAPI&#x0D;&#x0A;&#x0D;&#x0A;cl %CFLAGS% &quot;%BASE%/src/hostapi/wasapi/pa_win_wasapi.c&quot;&#x0D;&#x0A;&#x0D;&#x0A;:NoWASAPI&#x0D;&#x0A;&#x0D;&#x0A;find &quot;PA_USE_WDMKS 1&quot; &quot;%CFG%&quot;&#x0D;&#x0A;IF ERRORLEVEL 1 goto NoWDMKS&#x0D;&#x0A;&#x0D;&#x0A;cl %CFLAGS% &quot;%BASE%/src/hostapi/wdmks/pa_win_wdmks.c&quot;&#x0D;&#x0A;&#x0D;&#x0A;:NoWDMKS&#x0D;&#x0A;&#x0D;&#x0A;find &quot;PA_USE_ASIO 1&quot; &quot;%CFG%&quot;&#x0D;&#x0A;IF ERRORLEVEL 1 goto NoASIO&#x0D;&#x0A;&#x0D;&#x0A;cl %CFLAGS% /I &quot;%ASIOSDK_DIR%/common&quot; /I &quot;%ASIOSDK_DIR%/host&quot; /I &quot;%ASIOSDK_DIR%/host/pc&quot; &quot;%BASE%/src/hostapi/asio/pa_asio.cpp&quot;&#x0D;&#x0A;cl %CFLAGS% /I &quot;%ASIOSDK_DIR%/common&quot; /I &quot;%ASIOSDK_DIR%/host&quot; /I &quot;%ASIOSDK_DIR%/host/pc&quot; &quot;%BASE%/src/hostapi/asio/iasiothiscallresolver.cpp&quot;&#x0D;&#x0A;cl %CFLAGS% /I &quot;%ASIOSDK_DIR%/common&quot; /I &quot;%ASIOSDK_DIR%/host&quot; /I &quot;%ASIOSDK_DIR%/host/pc&quot; &quot;%ASIOSDK_DIR%/common/asio.cpp&quot;&#x0D;&#x0A;cl %CFLAGS% /I &quot;%ASIOSDK_DIR%/common&quot; /I &quot;%ASIOSDK_DIR%/host&quot; /I &quot;%ASIOSDK_DIR%/host/pc&quot; &quot;%ASIOSDK_DIR%/host/asiodrivers.cpp&quot;&#x0D;&#x0A;cl %CFLAGS% /I &quot;%ASIOSDK_DIR%/common&quot; /I &quot;%ASIOSDK_DIR%/host&quot; /I &quot;%ASIOSDK_DIR%/host/pc&quot; &quot;%ASIOSDK_DIR%/host/pc/asiolist.cpp&quot;&#x0D;&#x0A;&#x0D;&#x0A;:NoASIO&#x0D;&#x0A;&#x0D;&#x0A;lib /OUT:&quot;$(TargetPath)&quot; &quot;%INTDIR%/*.obj&quot; %LIBS%&#x0D;&#x0A;"
/>
</Configuration>
<Configuration
@ -230,7 +230,7 @@
>
<Tool
Name="VCPreBuildEventTool"
CommandLine="echo // Automatically generated file &gt;&quot;$(InputDir)/$(ConfigurationName)/config.h&quot;&#x0D;&#x0A;echo #define PA_USE_WMME 1 &gt;&gt;&quot;$(InputDir)/$(ConfigurationName)/config.h&quot;&#x0D;&#x0A;IF NOT &quot;%DXSDK_DIR%&quot; == &quot;&quot; echo #define PA_USE_DS 1 &gt;&gt;&quot;$(InputDir)/$(ConfigurationName)/config.h&quot;&#x0D;&#x0A;IF NOT &quot;%ASIOSDK_DIR%&quot; == &quot;&quot; echo #define PA_USE_ASIO 1 &gt;&gt;&quot;$(InputDir)/$(ConfigurationName)/config.h&quot;&#x0D;&#x0A;"
CommandLine="echo on&#x0D;&#x0A;set CFG=&quot;$(ProjectDir)/$(ConfigurationName)/config.h&quot;&#x0D;&#x0A;&#x0D;&#x0A;echo // Automatically generated file &gt;%CFG%&#x0D;&#x0A;IF NOT &quot;%DXSDK_DIR%&quot; == &quot;&quot; echo #define PA_USE_DS 1 &gt;&gt;%CFG%&#x0D;&#x0A;IF NOT &quot;%ASIOSDK_DIR%&quot; == &quot;&quot; echo #define PA_USE_ASIO 1 &gt;&gt;%CFG%&#x0D;&#x0A;rem echo #define PA_USE_WDMKS 1 &gt;&gt;%CFG%&#x0D;&#x0A;echo #define PA_USE_WASAPI 1 &gt;&gt;%CFG%&#x0D;&#x0A;echo #define PA_USE_WMME 1 &gt;&gt;%CFG%&#x0D;&#x0A;"
/>
<Tool
Name="VCCustomBuildTool"
@ -247,7 +247,7 @@
<Tool
Name="VCCLCompilerTool"
Optimization="2"
AdditionalIncludeDirectories="..\..\..\lib-src\portaudio-v19\include;..\..\..\lib-src\portaudio-v19\src\common"
AdditionalIncludeDirectories="&quot;..\..\..\lib-src\portaudio-v19\include&quot;;&quot;..\..\..\lib-src\portaudio-v19\src\common&quot;;&quot;..\..\..\lib-src\portaudio-v19\src\os\win&quot;"
PreprocessorDefinitions="WIN32;NDEBUG;_LIB"
StringPooling="true"
RuntimeLibrary="2"
@ -284,7 +284,7 @@
/>
<Tool
Name="VCPostBuildEventTool"
CommandLine="set BASE=&quot;../../../lib-src/portaudio-v19&quot;&#x0D;&#x0A;set CFLAGS=/O2 /GL /I &quot;%BASE%/include&quot; /I &quot;%BASE%/src/common&quot; /I &quot;%BASE%/src/os/win&quot; /D &quot;WIN32&quot; /D &quot;NDEBUG&quot; /D &quot;_LIB&quot; /D &quot;_MBCS&quot; /GF /FD /EHsc /MD /Gy /Fo&quot;$(IntDir)/&quot; /Fd&quot;$(IntDir)/&quot; /W3 /nologo /c /wd4996 /FI &quot;$(InputDir)/$(ConfigurationName)/config.h&quot; /errorReport:prompt&#x0D;&#x0A;set LIBS=&#x0D;&#x0A;&#x0D;&#x0A;if &quot;%DXSDK_DIR%&quot;==&quot;&quot; goto NoDX&#x0D;&#x0A;&#x0D;&#x0A;cl %CFLAGS% /I &quot;%DXSDK_DIR%/include&quot; &quot;%BASE%/src/hostapi/dsound/pa_win_ds.c&quot;&#x0D;&#x0A;cl %CFLAGS% /I &quot;%DXSDK_DIR%/include&quot; &quot;%BASE%/src/hostapi/dsound/pa_win_ds_dynlink.c&quot;&#x0D;&#x0A;&#x0D;&#x0A;set LIBS=&quot;%DXSDK_DIR%/lib/x86\dxguid.lib&quot;&#x0D;&#x0A;&#x0D;&#x0A;:NoDX&#x0D;&#x0A;&#x0D;&#x0A;if &quot;%ASIOSDK_DIR%&quot;==&quot;&quot; goto NoASIO&#x0D;&#x0A;&#x0D;&#x0A;cl %CFLAGS% /I &quot;%ASIOSDK_DIR%/common&quot; /I &quot;%ASIOSDK_DIR%/host&quot; /I &quot;%ASIOSDK_DIR%/host/pc&quot; &quot;%BASE%/src/hostapi/asio/pa_asio.cpp&quot;&#x0D;&#x0A;cl %CFLAGS% /I &quot;%ASIOSDK_DIR%/common&quot; /I &quot;%ASIOSDK_DIR%/host&quot; /I &quot;%ASIOSDK_DIR%/host/pc&quot; &quot;%BASE%/src/hostapi/asio/iasiothiscallresolver.cpp&quot;&#x0D;&#x0A;cl %CFLAGS% /I &quot;%ASIOSDK_DIR%/common&quot; /I &quot;%ASIOSDK_DIR%/host&quot; /I &quot;%ASIOSDK_DIR%/host/pc&quot; &quot;%ASIOSDK_DIR%/common/asio.cpp&quot;&#x0D;&#x0A;cl %CFLAGS% /I &quot;%ASIOSDK_DIR%/common&quot; /I &quot;%ASIOSDK_DIR%/host&quot; /I &quot;%ASIOSDK_DIR%/host/pc&quot; &quot;%ASIOSDK_DIR%/host/asiodrivers.cpp&quot;&#x0D;&#x0A;cl %CFLAGS% /I &quot;%ASIOSDK_DIR%/common&quot; /I &quot;%ASIOSDK_DIR%/host&quot; /I &quot;%ASIOSDK_DIR%/host/pc&quot; &quot;%ASIOSDK_DIR%/host/pc/asiolist.cpp&quot;&#x0D;&#x0A;&#x0D;&#x0A;:NoASIO&#x0D;&#x0A;&#x0D;&#x0A;lib /OUT:&quot;$(TargetPath)&quot; &quot;$(IntDir)/*.obj&quot; %LIBS%&#x0D;&#x0A;"
CommandLine="echo on&#x0D;&#x0A;set BASE=&quot;../../../lib-src/portaudio-v19&quot;&#x0D;&#x0A;set CFG=$(ProjectDir)$(ConfigurationName)\config.h&#x0D;&#x0A;set INTDIR=$(ConfigurationName)&#x0D;&#x0A;set CFLAGS=/O2 /GL /I &quot;%BASE%/include&quot; /I &quot;%BASE%/src/common&quot; /I &quot;%BASE%/src/os/win&quot; /D &quot;WIN32&quot; /D &quot;NDEBUG&quot; /D &quot;_LIB&quot; /D &quot;_MBCS&quot; /GF /FD /EHsc /MD /Gy /Fo&quot;%INTDIR%/&quot; /Fd&quot;%INTDIR%&quot; /W3 /nologo /c /wd4996 /FI &quot;%CFG%&quot; /errorReport:prompt&#x0D;&#x0A;set LIBS=&#x0D;&#x0A;&#x0D;&#x0A;find &quot;PA_USE_DS 1&quot; &quot;%CFG%&quot;&#x0D;&#x0A;IF ERRORLEVEL 1 goto NoDS&#x0D;&#x0A;&#x0D;&#x0A;cl %CFLAGS% /I &quot;%DXSDK_DIR%/include&quot; &quot;%BASE%/src/hostapi/dsound/pa_win_ds.c&quot;&#x0D;&#x0A;cl %CFLAGS% /I &quot;%DXSDK_DIR%/include&quot; &quot;%BASE%/src/hostapi/dsound/pa_win_ds_dynlink.c&quot;&#x0D;&#x0A;&#x0D;&#x0A;set LIBS=&quot;%DXSDK_DIR%/lib/x86\dxguid.lib&quot;&#x0D;&#x0A;&#x0D;&#x0A;:NoDS&#x0D;&#x0A;&#x0D;&#x0A;find &quot;PA_USE_WASAPI 1&quot; &quot;%CFG%&quot;&#x0D;&#x0A;IF ERRORLEVEL 1 goto NoWASAPI&#x0D;&#x0A;&#x0D;&#x0A;cl %CFLAGS% &quot;%BASE%/src/hostapi/wasapi/pa_win_wasapi.c&quot;&#x0D;&#x0A;&#x0D;&#x0A;:NoWASAPI&#x0D;&#x0A;&#x0D;&#x0A;find &quot;PA_USE_WDMKS 1&quot; &quot;%CFG%&quot;&#x0D;&#x0A;IF ERRORLEVEL 1 goto NoWDMKS&#x0D;&#x0A;&#x0D;&#x0A;cl %CFLAGS% &quot;%BASE%/src/hostapi/wdmks/pa_win_wdmks.c&quot;&#x0D;&#x0A;&#x0D;&#x0A;:NoWDMKS&#x0D;&#x0A;&#x0D;&#x0A;find &quot;PA_USE_ASIO 1&quot; &quot;%CFG%&quot;&#x0D;&#x0A;IF ERRORLEVEL 1 goto NoASIO&#x0D;&#x0A;&#x0D;&#x0A;cl %CFLAGS% /I &quot;%ASIOSDK_DIR%/common&quot; /I &quot;%ASIOSDK_DIR%/host&quot; /I &quot;%ASIOSDK_DIR%/host/pc&quot; &quot;%BASE%/src/hostapi/asio/pa_asio.cpp&quot;&#x0D;&#x0A;cl %CFLAGS% /I &quot;%ASIOSDK_DIR%/common&quot; /I &quot;%ASIOSDK_DIR%/host&quot; /I &quot;%ASIOSDK_DIR%/host/pc&quot; &quot;%BASE%/src/hostapi/asio/iasiothiscallresolver.cpp&quot;&#x0D;&#x0A;cl %CFLAGS% /I &quot;%ASIOSDK_DIR%/common&quot; /I &quot;%ASIOSDK_DIR%/host&quot; /I &quot;%ASIOSDK_DIR%/host/pc&quot; &quot;%ASIOSDK_DIR%/common/asio.cpp&quot;&#x0D;&#x0A;cl %CFLAGS% /I &quot;%ASIOSDK_DIR%/common&quot; /I &quot;%ASIOSDK_DIR%/host&quot; /I &quot;%ASIOSDK_DIR%/host/pc&quot; &quot;%ASIOSDK_DIR%/host/asiodrivers.cpp&quot;&#x0D;&#x0A;cl %CFLAGS% /I &quot;%ASIOSDK_DIR%/common&quot; /I &quot;%ASIOSDK_DIR%/host&quot; /I &quot;%ASIOSDK_DIR%/host/pc&quot; &quot;%ASIOSDK_DIR%/host/pc/asiolist.cpp&quot;&#x0D;&#x0A;&#x0D;&#x0A;:NoASIO&#x0D;&#x0A;&#x0D;&#x0A;lib /OUT:&quot;$(TargetPath)&quot; &quot;%INTDIR%/*.obj&quot; %LIBS%&#x0D;&#x0A;"
/>
</Configuration>
</Configurations>
@ -669,6 +669,14 @@
</FileConfiguration>
</File>
</Filter>
<Filter
Name="wasapi"
>
<File
RelativePath="..\..\..\lib-src\portaudio-v19\src\hostapi\wasapi\pa_win_wasapi.c"
>
</File>
</Filter>
</Filter>
<Filter
Name="os"