From 18e06e80fad98a266e92fde6e455853e939173a7 Mon Sep 17 00:00:00 2001 From: Rodrigo Todescatto Date: Tue, 7 Jan 2025 14:59:47 -0300 Subject: [PATCH] Added basic XAudio2_9 implementation. --- WinDurango.sln | 35 +++++ dlls/XAudio2_9/Exports.def | 8 ++ dlls/XAudio2_9/XAudio2_9.cpp | 35 +++++ dlls/XAudio2_9/XAudio2_9.vcxproj | 166 +++++++++++++++++++++++ dlls/XAudio2_9/XAudio2_9.vcxproj.filters | 41 ++++++ dlls/XAudio2_9/dllmain.cpp | 19 +++ dlls/XAudio2_9/framework.h | 5 + dlls/XAudio2_9/pch.cpp | 5 + dlls/XAudio2_9/pch.h | 13 ++ 9 files changed, 327 insertions(+) create mode 100644 dlls/XAudio2_9/Exports.def create mode 100644 dlls/XAudio2_9/XAudio2_9.cpp create mode 100644 dlls/XAudio2_9/XAudio2_9.vcxproj create mode 100644 dlls/XAudio2_9/XAudio2_9.vcxproj.filters create mode 100644 dlls/XAudio2_9/dllmain.cpp create mode 100644 dlls/XAudio2_9/framework.h create mode 100644 dlls/XAudio2_9/pch.cpp create mode 100644 dlls/XAudio2_9/pch.h diff --git a/WinDurango.sln b/WinDurango.sln index 6263b85..b60055a 100644 --- a/WinDurango.sln +++ b/WinDurango.sln @@ -40,6 +40,8 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "common", "dlls\common\commo EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "XFrontPanelDisplay", "dlls\XFrontPanelDisplay\XFrontPanelDisplay.vcxproj", "{4A5072B4-8304-4CC4-88C1-CF875110FF47}" EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "XAudio2_9", "dlls\XAudio2_9\XAudio2_9.vcxproj", "{0C02E6B1-4532-4194-8891-11DDC164C0A8}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|ARM = Debug|ARM @@ -508,6 +510,38 @@ Global {4A5072B4-8304-4CC4-88C1-CF875110FF47}.ReleaseMD|x64.Build.0 = Release|x64 {4A5072B4-8304-4CC4-88C1-CF875110FF47}.ReleaseMD|x86.ActiveCfg = Release|Win32 {4A5072B4-8304-4CC4-88C1-CF875110FF47}.ReleaseMD|x86.Build.0 = Release|Win32 + {0C02E6B1-4532-4194-8891-11DDC164C0A8}.Debug|ARM.ActiveCfg = Debug|x64 + {0C02E6B1-4532-4194-8891-11DDC164C0A8}.Debug|ARM.Build.0 = Debug|x64 + {0C02E6B1-4532-4194-8891-11DDC164C0A8}.Debug|ARM64.ActiveCfg = Debug|x64 + {0C02E6B1-4532-4194-8891-11DDC164C0A8}.Debug|ARM64.Build.0 = Debug|x64 + {0C02E6B1-4532-4194-8891-11DDC164C0A8}.Debug|x64.ActiveCfg = Debug|x64 + {0C02E6B1-4532-4194-8891-11DDC164C0A8}.Debug|x64.Build.0 = Debug|x64 + {0C02E6B1-4532-4194-8891-11DDC164C0A8}.Debug|x86.ActiveCfg = Debug|Win32 + {0C02E6B1-4532-4194-8891-11DDC164C0A8}.Debug|x86.Build.0 = Debug|Win32 + {0C02E6B1-4532-4194-8891-11DDC164C0A8}.DebugMDd|ARM.ActiveCfg = Debug|x64 + {0C02E6B1-4532-4194-8891-11DDC164C0A8}.DebugMDd|ARM.Build.0 = Debug|x64 + {0C02E6B1-4532-4194-8891-11DDC164C0A8}.DebugMDd|ARM64.ActiveCfg = Debug|x64 + {0C02E6B1-4532-4194-8891-11DDC164C0A8}.DebugMDd|ARM64.Build.0 = Debug|x64 + {0C02E6B1-4532-4194-8891-11DDC164C0A8}.DebugMDd|x64.ActiveCfg = Debug|x64 + {0C02E6B1-4532-4194-8891-11DDC164C0A8}.DebugMDd|x64.Build.0 = Debug|x64 + {0C02E6B1-4532-4194-8891-11DDC164C0A8}.DebugMDd|x86.ActiveCfg = Debug|Win32 + {0C02E6B1-4532-4194-8891-11DDC164C0A8}.DebugMDd|x86.Build.0 = Debug|Win32 + {0C02E6B1-4532-4194-8891-11DDC164C0A8}.Release|ARM.ActiveCfg = Release|x64 + {0C02E6B1-4532-4194-8891-11DDC164C0A8}.Release|ARM.Build.0 = Release|x64 + {0C02E6B1-4532-4194-8891-11DDC164C0A8}.Release|ARM64.ActiveCfg = Release|x64 + {0C02E6B1-4532-4194-8891-11DDC164C0A8}.Release|ARM64.Build.0 = Release|x64 + {0C02E6B1-4532-4194-8891-11DDC164C0A8}.Release|x64.ActiveCfg = Release|x64 + {0C02E6B1-4532-4194-8891-11DDC164C0A8}.Release|x64.Build.0 = Release|x64 + {0C02E6B1-4532-4194-8891-11DDC164C0A8}.Release|x86.ActiveCfg = Release|Win32 + {0C02E6B1-4532-4194-8891-11DDC164C0A8}.Release|x86.Build.0 = Release|Win32 + {0C02E6B1-4532-4194-8891-11DDC164C0A8}.ReleaseMD|ARM.ActiveCfg = Release|x64 + {0C02E6B1-4532-4194-8891-11DDC164C0A8}.ReleaseMD|ARM.Build.0 = Release|x64 + {0C02E6B1-4532-4194-8891-11DDC164C0A8}.ReleaseMD|ARM64.ActiveCfg = Release|x64 + {0C02E6B1-4532-4194-8891-11DDC164C0A8}.ReleaseMD|ARM64.Build.0 = Release|x64 + {0C02E6B1-4532-4194-8891-11DDC164C0A8}.ReleaseMD|x64.ActiveCfg = Release|x64 + {0C02E6B1-4532-4194-8891-11DDC164C0A8}.ReleaseMD|x64.Build.0 = Release|x64 + {0C02E6B1-4532-4194-8891-11DDC164C0A8}.ReleaseMD|x86.ActiveCfg = Release|Win32 + {0C02E6B1-4532-4194-8891-11DDC164C0A8}.ReleaseMD|x86.Build.0 = Release|Win32 EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -527,6 +561,7 @@ Global {6FD783E4-EA7E-40E6-8782-7C0E90CE6D7A} = {BF759166-26A8-4B46-8423-8091158F2EA5} {DA57F1D7-7922-44CB-9251-4D0F7E5E4096} = {BF759166-26A8-4B46-8423-8091158F2EA5} {4A5072B4-8304-4CC4-88C1-CF875110FF47} = {BF759166-26A8-4B46-8423-8091158F2EA5} + {0C02E6B1-4532-4194-8891-11DDC164C0A8} = {BF759166-26A8-4B46-8423-8091158F2EA5} EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution SolutionGuid = {30EA489C-CFA4-4816-BE12-8BCE129039C5} diff --git a/dlls/XAudio2_9/Exports.def b/dlls/XAudio2_9/Exports.def new file mode 100644 index 0000000..d842705 --- /dev/null +++ b/dlls/XAudio2_9/Exports.def @@ -0,0 +1,8 @@ +LIBRARY XAudio2_9 +EXPORTS + CreateAudioReverb = CreateAudioReverb_X @1 + CreateAudioVolumeMeter = CreateAudioVolumeMeter_X @2 + CreateFX = CreateFX_X @3 + CreateXAudio2Object = CreateXAudio2Object_X @4 + X3DAudioCalculate = X3DAudioCalculate_X @5 + X3DAudioInitialize = X3DAudioInitialize_X @6 diff --git a/dlls/XAudio2_9/XAudio2_9.cpp b/dlls/XAudio2_9/XAudio2_9.cpp new file mode 100644 index 0000000..886801c --- /dev/null +++ b/dlls/XAudio2_9/XAudio2_9.cpp @@ -0,0 +1,35 @@ +#include "pch.h" +#include "xaudio2.h" +#include "xaudio2fx.h" +#include "x3daudio.h" +#include "xapofx.h" + +HRESULT CreateAudioReverb_X(IUnknown **ppApo) +{ + return CreateAudioReverb(ppApo); +} + +HRESULT CreateAudioVolumeMeter_X(IUnknown** ppApo) +{ + return CreateAudioVolumeMeter(ppApo); +} + +HRESULT CreateFX_X(REFCLSID clsid, IUnknown** pEffect, const void* pInitDat, UINT32 InitDataByteSize) +{ + return CreateFX(clsid, pEffect, pInitDat, InitDataByteSize); +} + +HRESULT CreateXAudio2Object_X(IXAudio2** ppXAudio2, UINT32 Flags, XAUDIO2_PROCESSOR XAudio2Processor) +{ + return XAudio2Create(ppXAudio2, Flags, XAudio2Processor); +} + +void X3DAudioCalculate_X(const X3DAUDIO_HANDLE Instance, const X3DAUDIO_LISTENER* pListener, const X3DAUDIO_EMITTER* pEmitter, UINT32 Flags, X3DAUDIO_DSP_SETTINGS* pDSPSettings) +{ + return X3DAudioCalculate(Instance, pListener, pEmitter, Flags, pDSPSettings); +} + +HRESULT X3DAudioInitialize_X(UINT32 SpeakerChannelMask, FLOAT32 SpeedOfSound, X3DAUDIO_HANDLE Instance) +{ + return X3DAudioInitialize(SpeakerChannelMask, SpeedOfSound, Instance); +} \ No newline at end of file diff --git a/dlls/XAudio2_9/XAudio2_9.vcxproj b/dlls/XAudio2_9/XAudio2_9.vcxproj new file mode 100644 index 0000000..e7cafe0 --- /dev/null +++ b/dlls/XAudio2_9/XAudio2_9.vcxproj @@ -0,0 +1,166 @@ + + + + + Debug + Win32 + + + Release + Win32 + + + Debug + x64 + + + Release + x64 + + + + 17.0 + Win32Proj + {0c02e6b1-4532-4194-8891-11ddc164c0a8} + XAudio29 + 10.0 + + + + DynamicLibrary + true + v143 + Unicode + + + DynamicLibrary + false + v143 + true + Unicode + + + DynamicLibrary + true + v143 + Unicode + + + DynamicLibrary + false + v143 + true + Unicode + + + + + + + + + + + + + + + + + + + + + + Level3 + true + WIN32;_DEBUG;XAUDIO29_EXPORTS;_WINDOWS;_USRDLL;%(PreprocessorDefinitions) + true + Use + pch.h + + + Windows + true + false + Exports.def + + + + + Level3 + true + true + true + WIN32;NDEBUG;XAUDIO29_EXPORTS;_WINDOWS;_USRDLL;%(PreprocessorDefinitions) + true + Use + pch.h + + + Windows + true + true + true + false + Exports.def + + + + + Level3 + true + _DEBUG;XAUDIO29_EXPORTS;_WINDOWS;_USRDLL;%(PreprocessorDefinitions) + true + Use + pch.h + + + Windows + true + false + Exports.def + XAudio2.lib;%(AdditionalDependencies) + + + + + Level3 + true + true + true + NDEBUG;XAUDIO29_EXPORTS;_WINDOWS;_USRDLL;%(PreprocessorDefinitions) + true + Use + pch.h + + + Windows + true + true + true + false + Exports.def + + + + + + + + + + Create + Create + Create + Create + + + + + + + + + + \ No newline at end of file diff --git a/dlls/XAudio2_9/XAudio2_9.vcxproj.filters b/dlls/XAudio2_9/XAudio2_9.vcxproj.filters new file mode 100644 index 0000000..d9c6b19 --- /dev/null +++ b/dlls/XAudio2_9/XAudio2_9.vcxproj.filters @@ -0,0 +1,41 @@ + + + + + {4FC737F1-C7A5-4376-A066-2A32D752A2FF} + cpp;c;cc;cxx;c++;cppm;ixx;def;odl;idl;hpj;bat;asm;asmx + + + {93995380-89BD-4b04-88EB-625FBE52EBFB} + h;hh;hpp;hxx;h++;hm;inl;inc;ipp;xsd + + + {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} + rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms + + + + + Header Files + + + Header Files + + + + + Source Files + + + Source Files + + + Source Files + + + + + Source Files + + + \ No newline at end of file diff --git a/dlls/XAudio2_9/dllmain.cpp b/dlls/XAudio2_9/dllmain.cpp new file mode 100644 index 0000000..f266597 --- /dev/null +++ b/dlls/XAudio2_9/dllmain.cpp @@ -0,0 +1,19 @@ +// dllmain.cpp : Defines the entry point for the DLL application. +#include "pch.h" + +BOOL APIENTRY DllMain( HMODULE hModule, + DWORD ul_reason_for_call, + LPVOID lpReserved + ) +{ + switch (ul_reason_for_call) + { + case DLL_PROCESS_ATTACH: + case DLL_THREAD_ATTACH: + case DLL_THREAD_DETACH: + case DLL_PROCESS_DETACH: + break; + } + return TRUE; +} + diff --git a/dlls/XAudio2_9/framework.h b/dlls/XAudio2_9/framework.h new file mode 100644 index 0000000..54b83e9 --- /dev/null +++ b/dlls/XAudio2_9/framework.h @@ -0,0 +1,5 @@ +#pragma once + +#define WIN32_LEAN_AND_MEAN // Exclude rarely-used stuff from Windows headers +// Windows Header Files +#include diff --git a/dlls/XAudio2_9/pch.cpp b/dlls/XAudio2_9/pch.cpp new file mode 100644 index 0000000..64b7eef --- /dev/null +++ b/dlls/XAudio2_9/pch.cpp @@ -0,0 +1,5 @@ +// pch.cpp: source file corresponding to the pre-compiled header + +#include "pch.h" + +// When you are using pre-compiled headers, this source file is necessary for compilation to succeed. diff --git a/dlls/XAudio2_9/pch.h b/dlls/XAudio2_9/pch.h new file mode 100644 index 0000000..885d5d6 --- /dev/null +++ b/dlls/XAudio2_9/pch.h @@ -0,0 +1,13 @@ +// pch.h: This is a precompiled header file. +// Files listed below are compiled only once, improving build performance for future builds. +// This also affects IntelliSense performance, including code completion and many code browsing features. +// However, files listed here are ALL re-compiled if any one of them is updated between builds. +// Do not add files here that you will be updating frequently as this negates the performance advantage. + +#ifndef PCH_H +#define PCH_H + +// add headers that you want to pre-compile here +#include "framework.h" + +#endif //PCH_H