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:
parent
8c93f13b1d
commit
548983fd02
@ -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
39
lib-src/portaudio-v19/wasapi-fix.patch
Normal file
39
lib-src/portaudio-v19/wasapi-fix.patch
Normal 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;
|
||||
}
|
||||
|
||||
// ------------------------------------------------------------------------------------------
|
138
lib-src/portaudio-v19/wasapi-loopback.patch
Normal file
138
lib-src/portaudio-v19/wasapi-loopback.patch
Normal 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;
|
||||
}
|
||||
|
||||
// ------------------------------------------------------------------------------------------
|
@ -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"
|
||||
|
@ -25,7 +25,7 @@
|
||||
>
|
||||
<Tool
|
||||
Name="VCPreBuildEventTool"
|
||||
CommandLine="echo // Automatically generated file >"$(InputDir)/$(ConfigurationName)/config.h"
echo #define PA_USE_WMME 1 >>"$(InputDir)/$(ConfigurationName)/config.h"
IF NOT "%DXSDK_DIR%" == "" echo #define PA_USE_DS 1 >>"$(InputDir)/$(ConfigurationName)/config.h"
IF NOT "%ASIOSDK_DIR%" == "" echo #define PA_USE_ASIO 1 >>"$(InputDir)/$(ConfigurationName)/config.h"
"
|
||||
CommandLine="echo on
set CFG="$(ProjectDir)/$(ConfigurationName)/config.h"

echo // Automatically generated file >%CFG%
IF NOT "%DXSDK_DIR%" == "" echo #define PA_USE_DS 1 >>%CFG%
IF NOT "%ASIOSDK_DIR%" == "" echo #define PA_USE_ASIO 1 >>%CFG%
rem echo #define PA_USE_WDMKS 1 >>%CFG%
echo #define PA_USE_WASAPI 1 >>%CFG%
echo #define PA_USE_WMME 1 >>%CFG%
"
|
||||
/>
|
||||
<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=""..\..\..\lib-src\portaudio-v19\include";"..\..\..\lib-src\portaudio-v19\src\common";"..\..\..\lib-src\portaudio-v19\src\os\win""
|
||||
PreprocessorDefinitions="WIN32;NDEBUG;_LIB"
|
||||
StringPooling="true"
|
||||
RuntimeLibrary="2"
|
||||
@ -79,7 +79,7 @@
|
||||
/>
|
||||
<Tool
|
||||
Name="VCPostBuildEventTool"
|
||||
CommandLine="set BASE="../../../lib-src/portaudio-v19"
set CFLAGS=/O2 /GL /I "%BASE%/include" /I "%BASE%/src/common" /I "%BASE%/src/os/win" /D "WIN32" /D "NDEBUG" /D "_LIB" /D "_MBCS" /GF /FD /EHsc /MD /Gy /Fo"$(IntDir)/" /Fd"$(IntDir)/" /W3 /nologo /c /wd4996 /FI "$(InputDir)/$(ConfigurationName)/config.h" /errorReport:prompt
set LIBS=

if "%DXSDK_DIR%"=="" goto NoDX

cl %CFLAGS% /I "%DXSDK_DIR%/include" "%BASE%/src/hostapi/dsound/pa_win_ds.c"
cl %CFLAGS% /I "%DXSDK_DIR%/include" "%BASE%/src/hostapi/dsound/pa_win_ds_dynlink.c"

set LIBS="%DXSDK_DIR%/lib/x86\dxguid.lib"

:NoDX

if "%ASIOSDK_DIR%"=="" goto NoASIO

cl %CFLAGS% /I "%ASIOSDK_DIR%/common" /I "%ASIOSDK_DIR%/host" /I "%ASIOSDK_DIR%/host/pc" "%BASE%/src/hostapi/asio/pa_asio.cpp"
cl %CFLAGS% /I "%ASIOSDK_DIR%/common" /I "%ASIOSDK_DIR%/host" /I "%ASIOSDK_DIR%/host/pc" "%BASE%/src/hostapi/asio/iasiothiscallresolver.cpp"
cl %CFLAGS% /I "%ASIOSDK_DIR%/common" /I "%ASIOSDK_DIR%/host" /I "%ASIOSDK_DIR%/host/pc" "%ASIOSDK_DIR%/common/asio.cpp"
cl %CFLAGS% /I "%ASIOSDK_DIR%/common" /I "%ASIOSDK_DIR%/host" /I "%ASIOSDK_DIR%/host/pc" "%ASIOSDK_DIR%/host/asiodrivers.cpp"
cl %CFLAGS% /I "%ASIOSDK_DIR%/common" /I "%ASIOSDK_DIR%/host" /I "%ASIOSDK_DIR%/host/pc" "%ASIOSDK_DIR%/host/pc/asiolist.cpp"

:NoASIO

lib /OUT:"$(TargetPath)" "$(IntDir)/*.obj" %LIBS%
"
|
||||
CommandLine="echo on
set BASE="../../../lib-src/portaudio-v19"
set CFG=$(ProjectDir)$(ConfigurationName)\config.h
set INTDIR=$(ConfigurationName)
set CFLAGS=/O2 /GL /I "%BASE%/include" /I "%BASE%/src/common" /I "%BASE%/src/os/win" /D "WIN32" /D "NDEBUG" /D "_LIB" /D "_MBCS" /GF /FD /EHsc /MD /Gy /Fo"%INTDIR%/" /Fd"%INTDIR%" /W3 /nologo /c /wd4996 /FI "%CFG%" /errorReport:prompt
set LIBS=

find "PA_USE_DS 1" "%CFG%"
IF ERRORLEVEL 1 goto NoDS

cl %CFLAGS% /I "%DXSDK_DIR%/include" "%BASE%/src/hostapi/dsound/pa_win_ds.c"
cl %CFLAGS% /I "%DXSDK_DIR%/include" "%BASE%/src/hostapi/dsound/pa_win_ds_dynlink.c"

set LIBS="%DXSDK_DIR%/lib/x86\dxguid.lib"

:NoDS

find "PA_USE_WASAPI 1" "%CFG%"
IF ERRORLEVEL 1 goto NoWASAPI

cl %CFLAGS% "%BASE%/src/hostapi/wasapi/pa_win_wasapi.c"

:NoWASAPI

find "PA_USE_WDMKS 1" "%CFG%"
IF ERRORLEVEL 1 goto NoWDMKS

cl %CFLAGS% "%BASE%/src/hostapi/wdmks/pa_win_wdmks.c"

:NoWDMKS

find "PA_USE_ASIO 1" "%CFG%"
IF ERRORLEVEL 1 goto NoASIO

cl %CFLAGS% /I "%ASIOSDK_DIR%/common" /I "%ASIOSDK_DIR%/host" /I "%ASIOSDK_DIR%/host/pc" "%BASE%/src/hostapi/asio/pa_asio.cpp"
cl %CFLAGS% /I "%ASIOSDK_DIR%/common" /I "%ASIOSDK_DIR%/host" /I "%ASIOSDK_DIR%/host/pc" "%BASE%/src/hostapi/asio/iasiothiscallresolver.cpp"
cl %CFLAGS% /I "%ASIOSDK_DIR%/common" /I "%ASIOSDK_DIR%/host" /I "%ASIOSDK_DIR%/host/pc" "%ASIOSDK_DIR%/common/asio.cpp"
cl %CFLAGS% /I "%ASIOSDK_DIR%/common" /I "%ASIOSDK_DIR%/host" /I "%ASIOSDK_DIR%/host/pc" "%ASIOSDK_DIR%/host/asiodrivers.cpp"
cl %CFLAGS% /I "%ASIOSDK_DIR%/common" /I "%ASIOSDK_DIR%/host" /I "%ASIOSDK_DIR%/host/pc" "%ASIOSDK_DIR%/host/pc/asiolist.cpp"

:NoASIO

lib /OUT:"$(TargetPath)" "%INTDIR%/*.obj" %LIBS%
"
|
||||
/>
|
||||
</Configuration>
|
||||
<Configuration
|
||||
@ -92,7 +92,7 @@
|
||||
>
|
||||
<Tool
|
||||
Name="VCPreBuildEventTool"
|
||||
CommandLine="echo // Automatically generated file >"$(InputDir)/$(ConfigurationName)/config.h"
echo #define PA_USE_WMME 1 >>"$(InputDir)/$(ConfigurationName)/config.h"
IF NOT "%DXSDK_DIR%" == "" echo #define PA_USE_DS 1 >>"$(InputDir)/$(ConfigurationName)/config.h"
IF NOT "%ASIOSDK_DIR%" == "" echo #define PA_USE_ASIO 1 >>"$(InputDir)/$(ConfigurationName)/config.h"
"
|
||||
CommandLine="echo on
set CFG="$(ProjectDir)/$(ConfigurationName)/config.h"

echo // Automatically generated file >%CFG%
IF NOT "%DXSDK_DIR%" == "" echo #define PA_USE_DS 1 >>%CFG%
IF NOT "%ASIOSDK_DIR%" == "" echo #define PA_USE_ASIO 1 >>%CFG%
rem echo #define PA_USE_WDMKS 1 >>%CFG%
echo #define PA_USE_WASAPI 1 >>%CFG%
echo #define PA_USE_WMME 1 >>%CFG%
"
|
||||
/>
|
||||
<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=""..\..\..\lib-src\portaudio-v19\include";"..\..\..\lib-src\portaudio-v19\src\common";"..\..\..\lib-src\portaudio-v19\src\os\win""
|
||||
PreprocessorDefinitions="WIN32;_DEBUG;_LIB"
|
||||
StringPooling="true"
|
||||
BasicRuntimeChecks="3"
|
||||
@ -148,7 +148,7 @@
|
||||
/>
|
||||
<Tool
|
||||
Name="VCPostBuildEventTool"
|
||||
CommandLine="set BASE="../../../lib-src/portaudio-v19"
set CFLAGS=/Od /I "%BASE%/include" /I "%BASE%/src/common" /I "%BASE%/src/os/win" /D "WIN32" /D "_DEBUG" /D "_LIB" /D "_MBCS" /GF /FD /EHsc /RTC1 /MDd /Gy /Fo"$(IntDir)/" /Fd"$(IntDir)/" /W3 /nologo /c /ZI /wd4996 /FI "$(InputDir)/$(ConfigurationName)/config.h" /errorReport:prompt
set LIBS=

if "%DXSDK_DIR%"=="" goto NoDX

cl %CFLAGS% /I "%DXSDK_DIR%/include" "%BASE%/src/hostapi/dsound/pa_win_ds.c"
cl %CFLAGS% /I "%DXSDK_DIR%/include" "%BASE%/src/hostapi/dsound/pa_win_ds_dynlink.c"

set LIBS="%DXSDK_DIR%/lib/x86\dxguid.lib"

:NoDX

if "%ASIOSDK_DIR%"=="" goto NoASIO

cl %CFLAGS% /I "%ASIOSDK_DIR%/common" /I "%ASIOSDK_DIR%/host" /I "%ASIOSDK_DIR%/host/pc" "%BASE%/src/hostapi/asio/pa_asio.cpp"
cl %CFLAGS% /I "%ASIOSDK_DIR%/common" /I "%ASIOSDK_DIR%/host" /I "%ASIOSDK_DIR%/host/pc" "%BASE%/src/hostapi/asio/iasiothiscallresolver.cpp"
cl %CFLAGS% /I "%ASIOSDK_DIR%/common" /I "%ASIOSDK_DIR%/host" /I "%ASIOSDK_DIR%/host/pc" "%ASIOSDK_DIR%/common/asio.cpp"
cl %CFLAGS% /I "%ASIOSDK_DIR%/common" /I "%ASIOSDK_DIR%/host" /I "%ASIOSDK_DIR%/host/pc" "%ASIOSDK_DIR%/host/asiodrivers.cpp"
cl %CFLAGS% /I "%ASIOSDK_DIR%/common" /I "%ASIOSDK_DIR%/host" /I "%ASIOSDK_DIR%/host/pc" "%ASIOSDK_DIR%/host/pc/asiolist.cpp"

:NoASIO

lib /OUT:"$(TargetPath)" "$(IntDir)/*.obj" %LIBS%
"
|
||||
CommandLine="echo on
set BASE=../../../lib-src/portaudio-v19
set CFG=$(ProjectDir)$(ConfigurationName)\config.h
set INTDIR=$(ConfigurationName)
set CFLAGS=/Od /I "%BASE%/include" /I "%BASE%/src/common" /I "%BASE%/src/os/win" /D "WIN32" /D "_DEBUG" /D "_LIB" /D "_MBCS" /GF /FD /EHsc /RTC1 /MDd /Gy /W3 /nologo /c /ZI /wd4996 /Fo"%INTDIR%/" /FI "%CFG%" /errorReport:prompt
set LIBS=

find "PA_USE_DS 1" "%CFG%"
IF ERRORLEVEL 1 goto NoDS

cl %CFLAGS% /I "%DXSDK_DIR%/include" "%BASE%/src/hostapi/dsound/pa_win_ds.c"
cl %CFLAGS% /I "%DXSDK_DIR%/include" "%BASE%/src/hostapi/dsound/pa_win_ds_dynlink.c"

set LIBS="%DXSDK_DIR%/lib/x86\dxguid.lib"

:NoDS

find "PA_USE_WASAPI 1" "%CFG%"
IF ERRORLEVEL 1 goto NoWASAPI

cl %CFLAGS% "%BASE%/src/hostapi/wasapi/pa_win_wasapi.c"

:NoWASAPI

find "PA_USE_WDMKS 1" "%CFG%"
IF ERRORLEVEL 1 goto NoWDMKS

cl %CFLAGS% "%BASE%/src/hostapi/wdmks/pa_win_wdmks.c"

:NoWDMKS

find "PA_USE_ASIO 1" "%CFG%"
IF ERRORLEVEL 1 goto NoASIO

cl %CFLAGS% /I "%ASIOSDK_DIR%/common" /I "%ASIOSDK_DIR%/host" /I "%ASIOSDK_DIR%/host/pc" "%BASE%/src/hostapi/asio/pa_asio.cpp"
cl %CFLAGS% /I "%ASIOSDK_DIR%/common" /I "%ASIOSDK_DIR%/host" /I "%ASIOSDK_DIR%/host/pc" "%BASE%/src/hostapi/asio/iasiothiscallresolver.cpp"
cl %CFLAGS% /I "%ASIOSDK_DIR%/common" /I "%ASIOSDK_DIR%/host" /I "%ASIOSDK_DIR%/host/pc" "%ASIOSDK_DIR%/common/asio.cpp"
cl %CFLAGS% /I "%ASIOSDK_DIR%/common" /I "%ASIOSDK_DIR%/host" /I "%ASIOSDK_DIR%/host/pc" "%ASIOSDK_DIR%/host/asiodrivers.cpp"
cl %CFLAGS% /I "%ASIOSDK_DIR%/common" /I "%ASIOSDK_DIR%/host" /I "%ASIOSDK_DIR%/host/pc" "%ASIOSDK_DIR%/host/pc/asiolist.cpp"

:NoASIO

lib /OUT:"$(TargetPath)" "%INTDIR%/*.obj" %LIBS%
"
|
||||
/>
|
||||
</Configuration>
|
||||
<Configuration
|
||||
@ -161,7 +161,7 @@
|
||||
>
|
||||
<Tool
|
||||
Name="VCPreBuildEventTool"
|
||||
CommandLine="echo // Automatically generated file >"$(InputDir)/$(ConfigurationName)/config.h"
echo #define PA_USE_WMME 1 >>"$(InputDir)/$(ConfigurationName)/config.h"
IF NOT "%DXSDK_DIR%" == "" echo #define PA_USE_DS 1 >>"$(InputDir)/$(ConfigurationName)/config.h"
IF NOT "%ASIOSDK_DIR%" == "" echo #define PA_USE_ASIO 1 >>"$(InputDir)/$(ConfigurationName)/config.h"
"
|
||||
CommandLine="echo on
set CFG="$(ProjectDir)/$(ConfigurationName)/config.h"

echo // Automatically generated file >%CFG%
IF NOT "%DXSDK_DIR%" == "" echo #define PA_USE_DS 1 >>%CFG%
IF NOT "%ASIOSDK_DIR%" == "" echo #define PA_USE_ASIO 1 >>%CFG%
rem echo #define PA_USE_WDMKS 1 >>%CFG%
echo #define PA_USE_WASAPI 1 >>%CFG%
echo #define PA_USE_WMME 1 >>%CFG%
"
|
||||
/>
|
||||
<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=""..\..\..\lib-src\portaudio-v19\include";"..\..\..\lib-src\portaudio-v19\src\common";"..\..\..\lib-src\portaudio-v19\src\os\win""
|
||||
PreprocessorDefinitions="WIN32;_DEBUG;_LIB"
|
||||
StringPooling="true"
|
||||
BasicRuntimeChecks="3"
|
||||
@ -217,7 +217,7 @@
|
||||
/>
|
||||
<Tool
|
||||
Name="VCPostBuildEventTool"
|
||||
CommandLine="set BASE="../../../lib-src/portaudio-v19"
set CFLAGS=/Od /I "%BASE%/include" /I "%BASE%/src/common" /I "%BASE%/src/os/win" /D "WIN32" /D "_DEBUG" /D "_LIB" /D "_MBCS" /GF /FD /EHsc /RTC1 /MDd /Gy /Fo"$(IntDir)/" /Fd"$(IntDir)/" /W3 /nologo /c /ZI /wd4996 /FI "$(InputDir)/$(ConfigurationName)/config.h" /errorReport:prompt
set LIBS=

if "%DXSDK_DIR%"=="" goto NoDX

cl %CFLAGS% /I "%DXSDK_DIR%/include" "%BASE%/src/hostapi/dsound/pa_win_ds.c"
cl %CFLAGS% /I "%DXSDK_DIR%/include" "%BASE%/src/hostapi/dsound/pa_win_ds_dynlink.c"

set LIBS="%DXSDK_DIR%/lib/x86\dxguid.lib"

:NoDX

if "%ASIOSDK_DIR%"=="" goto NoASIO

cl %CFLAGS% /I "%ASIOSDK_DIR%/common" /I "%ASIOSDK_DIR%/host" /I "%ASIOSDK_DIR%/host/pc" "%BASE%/src/hostapi/asio/pa_asio.cpp"
cl %CFLAGS% /I "%ASIOSDK_DIR%/common" /I "%ASIOSDK_DIR%/host" /I "%ASIOSDK_DIR%/host/pc" "%BASE%/src/hostapi/asio/iasiothiscallresolver.cpp"
cl %CFLAGS% /I "%ASIOSDK_DIR%/common" /I "%ASIOSDK_DIR%/host" /I "%ASIOSDK_DIR%/host/pc" "%ASIOSDK_DIR%/common/asio.cpp"
cl %CFLAGS% /I "%ASIOSDK_DIR%/common" /I "%ASIOSDK_DIR%/host" /I "%ASIOSDK_DIR%/host/pc" "%ASIOSDK_DIR%/host/asiodrivers.cpp"
cl %CFLAGS% /I "%ASIOSDK_DIR%/common" /I "%ASIOSDK_DIR%/host" /I "%ASIOSDK_DIR%/host/pc" "%ASIOSDK_DIR%/host/pc/asiolist.cpp"

:NoASIO

lib /OUT:"$(TargetPath)" "$(IntDir)/*.obj" %LIBS%
"
|
||||
CommandLine="echo on
set BASE=../../../lib-src/portaudio-v19
set CFG=$(ProjectDir)$(ConfigurationName)\config.h
set INTDIR=$(ConfigurationName)
set CFLAGS=/Od /I "%BASE%/include" /I "%BASE%/src/common" /I "%BASE%/src/os/win" /D "WIN32" /D "_DEBUG" /D "_LIB" /D "_MBCS" /GF /FD /EHsc /RTC1 /MDd /Gy /W3 /nologo /c /ZI /wd4996 /Fo"%INTDIR%/" /FI "%CFG%" /errorReport:prompt
set LIBS=

find "PA_USE_DS 1" "%CFG%"
IF ERRORLEVEL 1 goto NoDS

cl %CFLAGS% /I "%DXSDK_DIR%/include" "%BASE%/src/hostapi/dsound/pa_win_ds.c"
cl %CFLAGS% /I "%DXSDK_DIR%/include" "%BASE%/src/hostapi/dsound/pa_win_ds_dynlink.c"

set LIBS="%DXSDK_DIR%/lib/x86\dxguid.lib"

:NoDS

find "PA_USE_WASAPI 1" "%CFG%"
IF ERRORLEVEL 1 goto NoWASAPI

cl %CFLAGS% "%BASE%/src/hostapi/wasapi/pa_win_wasapi.c"

:NoWASAPI

find "PA_USE_WDMKS 1" "%CFG%"
IF ERRORLEVEL 1 goto NoWDMKS

cl %CFLAGS% "%BASE%/src/hostapi/wdmks/pa_win_wdmks.c"

:NoWDMKS

find "PA_USE_ASIO 1" "%CFG%"
IF ERRORLEVEL 1 goto NoASIO

cl %CFLAGS% /I "%ASIOSDK_DIR%/common" /I "%ASIOSDK_DIR%/host" /I "%ASIOSDK_DIR%/host/pc" "%BASE%/src/hostapi/asio/pa_asio.cpp"
cl %CFLAGS% /I "%ASIOSDK_DIR%/common" /I "%ASIOSDK_DIR%/host" /I "%ASIOSDK_DIR%/host/pc" "%BASE%/src/hostapi/asio/iasiothiscallresolver.cpp"
cl %CFLAGS% /I "%ASIOSDK_DIR%/common" /I "%ASIOSDK_DIR%/host" /I "%ASIOSDK_DIR%/host/pc" "%ASIOSDK_DIR%/common/asio.cpp"
cl %CFLAGS% /I "%ASIOSDK_DIR%/common" /I "%ASIOSDK_DIR%/host" /I "%ASIOSDK_DIR%/host/pc" "%ASIOSDK_DIR%/host/asiodrivers.cpp"
cl %CFLAGS% /I "%ASIOSDK_DIR%/common" /I "%ASIOSDK_DIR%/host" /I "%ASIOSDK_DIR%/host/pc" "%ASIOSDK_DIR%/host/pc/asiolist.cpp"

:NoASIO

lib /OUT:"$(TargetPath)" "%INTDIR%/*.obj" %LIBS%
"
|
||||
/>
|
||||
</Configuration>
|
||||
<Configuration
|
||||
@ -230,7 +230,7 @@
|
||||
>
|
||||
<Tool
|
||||
Name="VCPreBuildEventTool"
|
||||
CommandLine="echo // Automatically generated file >"$(InputDir)/$(ConfigurationName)/config.h"
echo #define PA_USE_WMME 1 >>"$(InputDir)/$(ConfigurationName)/config.h"
IF NOT "%DXSDK_DIR%" == "" echo #define PA_USE_DS 1 >>"$(InputDir)/$(ConfigurationName)/config.h"
IF NOT "%ASIOSDK_DIR%" == "" echo #define PA_USE_ASIO 1 >>"$(InputDir)/$(ConfigurationName)/config.h"
"
|
||||
CommandLine="echo on
set CFG="$(ProjectDir)/$(ConfigurationName)/config.h"

echo // Automatically generated file >%CFG%
IF NOT "%DXSDK_DIR%" == "" echo #define PA_USE_DS 1 >>%CFG%
IF NOT "%ASIOSDK_DIR%" == "" echo #define PA_USE_ASIO 1 >>%CFG%
rem echo #define PA_USE_WDMKS 1 >>%CFG%
echo #define PA_USE_WASAPI 1 >>%CFG%
echo #define PA_USE_WMME 1 >>%CFG%
"
|
||||
/>
|
||||
<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=""..\..\..\lib-src\portaudio-v19\include";"..\..\..\lib-src\portaudio-v19\src\common";"..\..\..\lib-src\portaudio-v19\src\os\win""
|
||||
PreprocessorDefinitions="WIN32;NDEBUG;_LIB"
|
||||
StringPooling="true"
|
||||
RuntimeLibrary="2"
|
||||
@ -284,7 +284,7 @@
|
||||
/>
|
||||
<Tool
|
||||
Name="VCPostBuildEventTool"
|
||||
CommandLine="set BASE="../../../lib-src/portaudio-v19"
set CFLAGS=/O2 /GL /I "%BASE%/include" /I "%BASE%/src/common" /I "%BASE%/src/os/win" /D "WIN32" /D "NDEBUG" /D "_LIB" /D "_MBCS" /GF /FD /EHsc /MD /Gy /Fo"$(IntDir)/" /Fd"$(IntDir)/" /W3 /nologo /c /wd4996 /FI "$(InputDir)/$(ConfigurationName)/config.h" /errorReport:prompt
set LIBS=

if "%DXSDK_DIR%"=="" goto NoDX

cl %CFLAGS% /I "%DXSDK_DIR%/include" "%BASE%/src/hostapi/dsound/pa_win_ds.c"
cl %CFLAGS% /I "%DXSDK_DIR%/include" "%BASE%/src/hostapi/dsound/pa_win_ds_dynlink.c"

set LIBS="%DXSDK_DIR%/lib/x86\dxguid.lib"

:NoDX

if "%ASIOSDK_DIR%"=="" goto NoASIO

cl %CFLAGS% /I "%ASIOSDK_DIR%/common" /I "%ASIOSDK_DIR%/host" /I "%ASIOSDK_DIR%/host/pc" "%BASE%/src/hostapi/asio/pa_asio.cpp"
cl %CFLAGS% /I "%ASIOSDK_DIR%/common" /I "%ASIOSDK_DIR%/host" /I "%ASIOSDK_DIR%/host/pc" "%BASE%/src/hostapi/asio/iasiothiscallresolver.cpp"
cl %CFLAGS% /I "%ASIOSDK_DIR%/common" /I "%ASIOSDK_DIR%/host" /I "%ASIOSDK_DIR%/host/pc" "%ASIOSDK_DIR%/common/asio.cpp"
cl %CFLAGS% /I "%ASIOSDK_DIR%/common" /I "%ASIOSDK_DIR%/host" /I "%ASIOSDK_DIR%/host/pc" "%ASIOSDK_DIR%/host/asiodrivers.cpp"
cl %CFLAGS% /I "%ASIOSDK_DIR%/common" /I "%ASIOSDK_DIR%/host" /I "%ASIOSDK_DIR%/host/pc" "%ASIOSDK_DIR%/host/pc/asiolist.cpp"

:NoASIO

lib /OUT:"$(TargetPath)" "$(IntDir)/*.obj" %LIBS%
"
|
||||
CommandLine="echo on
set BASE="../../../lib-src/portaudio-v19"
set CFG=$(ProjectDir)$(ConfigurationName)\config.h
set INTDIR=$(ConfigurationName)
set CFLAGS=/O2 /GL /I "%BASE%/include" /I "%BASE%/src/common" /I "%BASE%/src/os/win" /D "WIN32" /D "NDEBUG" /D "_LIB" /D "_MBCS" /GF /FD /EHsc /MD /Gy /Fo"%INTDIR%/" /Fd"%INTDIR%" /W3 /nologo /c /wd4996 /FI "%CFG%" /errorReport:prompt
set LIBS=

find "PA_USE_DS 1" "%CFG%"
IF ERRORLEVEL 1 goto NoDS

cl %CFLAGS% /I "%DXSDK_DIR%/include" "%BASE%/src/hostapi/dsound/pa_win_ds.c"
cl %CFLAGS% /I "%DXSDK_DIR%/include" "%BASE%/src/hostapi/dsound/pa_win_ds_dynlink.c"

set LIBS="%DXSDK_DIR%/lib/x86\dxguid.lib"

:NoDS

find "PA_USE_WASAPI 1" "%CFG%"
IF ERRORLEVEL 1 goto NoWASAPI

cl %CFLAGS% "%BASE%/src/hostapi/wasapi/pa_win_wasapi.c"

:NoWASAPI

find "PA_USE_WDMKS 1" "%CFG%"
IF ERRORLEVEL 1 goto NoWDMKS

cl %CFLAGS% "%BASE%/src/hostapi/wdmks/pa_win_wdmks.c"

:NoWDMKS

find "PA_USE_ASIO 1" "%CFG%"
IF ERRORLEVEL 1 goto NoASIO

cl %CFLAGS% /I "%ASIOSDK_DIR%/common" /I "%ASIOSDK_DIR%/host" /I "%ASIOSDK_DIR%/host/pc" "%BASE%/src/hostapi/asio/pa_asio.cpp"
cl %CFLAGS% /I "%ASIOSDK_DIR%/common" /I "%ASIOSDK_DIR%/host" /I "%ASIOSDK_DIR%/host/pc" "%BASE%/src/hostapi/asio/iasiothiscallresolver.cpp"
cl %CFLAGS% /I "%ASIOSDK_DIR%/common" /I "%ASIOSDK_DIR%/host" /I "%ASIOSDK_DIR%/host/pc" "%ASIOSDK_DIR%/common/asio.cpp"
cl %CFLAGS% /I "%ASIOSDK_DIR%/common" /I "%ASIOSDK_DIR%/host" /I "%ASIOSDK_DIR%/host/pc" "%ASIOSDK_DIR%/host/asiodrivers.cpp"
cl %CFLAGS% /I "%ASIOSDK_DIR%/common" /I "%ASIOSDK_DIR%/host" /I "%ASIOSDK_DIR%/host/pc" "%ASIOSDK_DIR%/host/pc/asiolist.cpp"

:NoASIO

lib /OUT:"$(TargetPath)" "%INTDIR%/*.obj" %LIBS%
"
|
||||
/>
|
||||
</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"
|
||||
|
Loading…
x
Reference in New Issue
Block a user