diff --git a/dlls/xapofx1_1/Makefile.in b/dlls/xapofx1_1/Makefile.in index aff49eb3ee9..48bd79e373a 100644 --- a/dlls/xapofx1_1/Makefile.in +++ b/dlls/xapofx1_1/Makefile.in @@ -1,4 +1,5 @@ MODULE = xapofx1_1.dll +IMPORTS = ole32 C_SRCS = \ main.c diff --git a/dlls/xapofx1_1/main.c b/dlls/xapofx1_1/main.c index 8fd6022f3ce..3e4c839569b 100644 --- a/dlls/xapofx1_1/main.c +++ b/dlls/xapofx1_1/main.c @@ -19,8 +19,11 @@ #include "config.h" #include +#include "initguid.h" #include "windef.h" #include "winbase.h" +#include "compobj.h" +#include "xapofx.h" #include "wine/debug.h" WINE_DEFAULT_DEBUG_CHANNEL(xapofx); @@ -43,3 +46,16 @@ BOOL WINAPI DllMain( HINSTANCE hinst, DWORD reason, LPVOID reserved ) } return TRUE; } + +HRESULT CDECL CreateFX(REFCLSID clsid, IUnknown **out) +{ + const GUID *class = clsid; + + TRACE("%s %p\n", debugstr_guid(clsid), out); + + if(IsEqualGUID(clsid, &CLSID_FXReverb27) || + IsEqualGUID(clsid, &CLSID_FXReverb)) + class = &CLSID_WINE_FXReverb11; + + return CoCreateInstance(class, NULL, CLSCTX_INPROC_SERVER, &IID_IUnknown, (void**)out); +} diff --git a/dlls/xapofx1_1/xapofx1_1.spec b/dlls/xapofx1_1/xapofx1_1.spec index bc17511db26..9b768cb389f 100644 --- a/dlls/xapofx1_1/xapofx1_1.spec +++ b/dlls/xapofx1_1/xapofx1_1.spec @@ -1 +1 @@ -@ cdecl CreateFX(ptr ptr) xapofx1_5.CreateFX +@ cdecl CreateFX(ptr ptr) diff --git a/dlls/xapofx1_2/Makefile.in b/dlls/xapofx1_2/Makefile.in index fb76b121e35..21a2ca7eb72 100644 --- a/dlls/xapofx1_2/Makefile.in +++ b/dlls/xapofx1_2/Makefile.in @@ -1,4 +1,5 @@ MODULE = xapofx1_2.dll +IMPORTS = ole32 C_SRCS = \ main.c diff --git a/dlls/xapofx1_2/main.c b/dlls/xapofx1_2/main.c index e873b58567f..b70a5e03761 100644 --- a/dlls/xapofx1_2/main.c +++ b/dlls/xapofx1_2/main.c @@ -19,8 +19,11 @@ #include "config.h" #include +#include "initguid.h" #include "windef.h" #include "winbase.h" +#include "compobj.h" +#include "xapofx.h" #include "wine/debug.h" WINE_DEFAULT_DEBUG_CHANNEL(xapofx); @@ -43,3 +46,16 @@ BOOL WINAPI DllMain( HINSTANCE hinst, DWORD reason, LPVOID reserved ) } return TRUE; } + +HRESULT CDECL CreateFX(REFCLSID clsid, IUnknown **out) +{ + const GUID *class = clsid; + + TRACE("%s %p\n", debugstr_guid(clsid), out); + + if(IsEqualGUID(clsid, &CLSID_FXReverb27) || + IsEqualGUID(clsid, &CLSID_FXReverb)) + class = &CLSID_WINE_FXReverb12; + + return CoCreateInstance(class, NULL, CLSCTX_INPROC_SERVER, &IID_IUnknown, (void**)out); +} diff --git a/dlls/xapofx1_2/xapofx1_2.spec b/dlls/xapofx1_2/xapofx1_2.spec index bc17511db26..9b768cb389f 100644 --- a/dlls/xapofx1_2/xapofx1_2.spec +++ b/dlls/xapofx1_2/xapofx1_2.spec @@ -1 +1 @@ -@ cdecl CreateFX(ptr ptr) xapofx1_5.CreateFX +@ cdecl CreateFX(ptr ptr) diff --git a/dlls/xapofx1_3/Makefile.in b/dlls/xapofx1_3/Makefile.in index 3730872718f..31ef5b35d09 100644 --- a/dlls/xapofx1_3/Makefile.in +++ b/dlls/xapofx1_3/Makefile.in @@ -1,4 +1,5 @@ MODULE = xapofx1_3.dll +IMPORTS = ole32 C_SRCS = \ main.c diff --git a/dlls/xapofx1_3/main.c b/dlls/xapofx1_3/main.c index 6a7f185c648..72e1d0d9fbf 100644 --- a/dlls/xapofx1_3/main.c +++ b/dlls/xapofx1_3/main.c @@ -17,11 +17,16 @@ */ #include "config.h" - #include +#include "initguid.h" #include "windef.h" #include "winbase.h" +#include "compobj.h" +#include "xapofx.h" +#include "wine/debug.h" + +WINE_DEFAULT_DEBUG_CHANNEL(xaudio2); BOOL WINAPI DllMain(HINSTANCE instance, DWORD reason, LPVOID reserved) { @@ -36,3 +41,16 @@ BOOL WINAPI DllMain(HINSTANCE instance, DWORD reason, LPVOID reserved) return TRUE; } + +HRESULT CDECL CreateFX(REFCLSID clsid, IUnknown **out) +{ + const GUID *class = clsid; + + TRACE("%s %p\n", debugstr_guid(clsid), out); + + if(IsEqualGUID(clsid, &CLSID_FXReverb27) || + IsEqualGUID(clsid, &CLSID_FXReverb)) + class = &CLSID_WINE_FXReverb13; + + return CoCreateInstance(class, NULL, CLSCTX_INPROC_SERVER, &IID_IUnknown, (void**)out); +} diff --git a/dlls/xapofx1_3/xapofx1_3.spec b/dlls/xapofx1_3/xapofx1_3.spec index bc17511db26..9b768cb389f 100644 --- a/dlls/xapofx1_3/xapofx1_3.spec +++ b/dlls/xapofx1_3/xapofx1_3.spec @@ -1 +1 @@ -@ cdecl CreateFX(ptr ptr) xapofx1_5.CreateFX +@ cdecl CreateFX(ptr ptr) diff --git a/dlls/xapofx1_4/Makefile.in b/dlls/xapofx1_4/Makefile.in index 12978d82083..b65ea909e63 100644 --- a/dlls/xapofx1_4/Makefile.in +++ b/dlls/xapofx1_4/Makefile.in @@ -1,4 +1,5 @@ MODULE = xapofx1_4.dll +IMPORTS = ole32 C_SRCS = \ main.c diff --git a/dlls/xapofx1_4/main.c b/dlls/xapofx1_4/main.c index 1b223adc119..991a4a7d0dd 100644 --- a/dlls/xapofx1_4/main.c +++ b/dlls/xapofx1_4/main.c @@ -15,12 +15,18 @@ * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA */ -#include "config.h" +#include "config.h" #include +#include "initguid.h" #include "windef.h" #include "winbase.h" +#include "compobj.h" +#include "xapofx.h" +#include "wine/debug.h" + +WINE_DEFAULT_DEBUG_CHANNEL(xaudio2); BOOL WINAPI DllMain(HINSTANCE instance, DWORD reason, LPVOID reserved) { @@ -35,3 +41,16 @@ BOOL WINAPI DllMain(HINSTANCE instance, DWORD reason, LPVOID reserved) return TRUE; } + +HRESULT CDECL CreateFX(REFCLSID clsid, IUnknown **out) +{ + const GUID *class = clsid; + + TRACE("%s %p\n", debugstr_guid(clsid), out); + + if(IsEqualGUID(clsid, &CLSID_FXReverb27) || + IsEqualGUID(clsid, &CLSID_FXReverb)) + class = &CLSID_WINE_FXReverb14; + + return CoCreateInstance(class, NULL, CLSCTX_INPROC_SERVER, &IID_IUnknown, (void**)out); +} diff --git a/dlls/xapofx1_4/xapofx1_4.spec b/dlls/xapofx1_4/xapofx1_4.spec index bc17511db26..9b768cb389f 100644 --- a/dlls/xapofx1_4/xapofx1_4.spec +++ b/dlls/xapofx1_4/xapofx1_4.spec @@ -1 +1 @@ -@ cdecl CreateFX(ptr ptr) xapofx1_5.CreateFX +@ cdecl CreateFX(ptr ptr) diff --git a/dlls/xapofx1_5/main.c b/dlls/xapofx1_5/main.c index 4865d31fe03..45ecefc6dc4 100644 --- a/dlls/xapofx1_5/main.c +++ b/dlls/xapofx1_5/main.c @@ -15,14 +15,15 @@ * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA */ -#include "config.h" +#include "config.h" #include #include "initguid.h" #include "windef.h" #include "winbase.h" #include "compobj.h" +#include "xapofx.h" #include "wine/debug.h" WINE_DEFAULT_DEBUG_CHANNEL(xaudio2); @@ -43,6 +44,13 @@ BOOL WINAPI DllMain(HINSTANCE instance, DWORD reason, LPVOID reserved) HRESULT CDECL CreateFX(REFCLSID clsid, IUnknown **out) { + const GUID *class = clsid; + TRACE("%s %p\n", debugstr_guid(clsid), out); - return CoCreateInstance(clsid, NULL, CLSCTX_INPROC_SERVER, &IID_IUnknown, (void**)out); + + if(IsEqualGUID(clsid, &CLSID_FXReverb27) || + IsEqualGUID(clsid, &CLSID_FXReverb)) + class = &CLSID_WINE_FXReverb15; + + return CoCreateInstance(class, NULL, CLSCTX_INPROC_SERVER, &IID_IUnknown, (void**)out); } diff --git a/dlls/xaudio2_7/tests/xaudio2.c b/dlls/xaudio2_7/tests/xaudio2.c index 23da38b1ec9..7d7ee178cbb 100644 --- a/dlls/xaudio2_7/tests/xaudio2.c +++ b/dlls/xaudio2_7/tests/xaudio2.c @@ -25,6 +25,7 @@ #include "xaudio2.h" #include "xaudio2fx.h" #include "xapo.h" +#include "xapofx.h" #include "mmsystem.h" static BOOL xaudio27; @@ -246,12 +247,26 @@ static void test_simple_streaming(IXAudio2 *xa) /* hook up volume meter */ if(xaudio27){ + IXAPO *xapo; + hr = CoCreateInstance(&CLSID_AudioVolumeMeter, NULL, CLSCTX_INPROC_SERVER, &IID_IUnknown, (void**)&vumeter); ok(hr == S_OK, "CoCreateInstance(AudioVolumeMeter) failed: %08x\n", hr); + + hr = IUnknown_QueryInterface(vumeter, &IID_IXAPO27, (void**)&xapo); + ok(hr == S_OK, "Couldn't get IXAPO27 interface: %08x\n", hr); + if(SUCCEEDED(hr)) + IXAPO_Release(xapo); }else{ + IXAPO *xapo; + hr = pCreateAudioVolumeMeter(&vumeter); ok(hr == S_OK, "CreateAudioVolumeMeter failed: %08x\n", hr); + + hr = IUnknown_QueryInterface(vumeter, &IID_IXAPO, (void**)&xapo); + ok(hr == S_OK, "Couldn't get IXAPO interface: %08x\n", hr); + if(SUCCEEDED(hr)) + IXAPO_Release(xapo); } effect.InitialState = TRUE; @@ -778,6 +793,126 @@ static UINT32 test_DeviceDetails(IXAudio27 *xa) return count; } +static void test_xapo_creation_legacy(const char *module, unsigned int version) +{ + HANDLE xapofxdll; + HRESULT hr; + IUnknown *fx_unk; + unsigned int i; + + HRESULT (CDECL *pCreateFX)(REFCLSID,IUnknown**) = NULL; + + /* CLSIDs are the same across all versions */ + static struct { + const GUID *clsid; + BOOL todo; + } const_clsids[] = { + { &CLSID_FXEQ27, TRUE }, + { &CLSID_FXMasteringLimiter27, TRUE }, + { &CLSID_FXReverb27, FALSE }, + { &CLSID_FXEcho27, TRUE}, + /* older versions of xapofx actually have support for new clsids */ + { &CLSID_FXEQ, TRUE }, + { &CLSID_FXMasteringLimiter, TRUE }, + { &CLSID_FXReverb, FALSE }, + { &CLSID_FXEcho, TRUE} + }; + + /* different CLSID for each version */ + static const GUID *avm_clsids[] = { + &CLSID_AudioVolumeMeter20, + &CLSID_AudioVolumeMeter21, + &CLSID_AudioVolumeMeter22, + &CLSID_AudioVolumeMeter23, + &CLSID_AudioVolumeMeter24, + &CLSID_AudioVolumeMeter25, + &CLSID_AudioVolumeMeter26, + &CLSID_AudioVolumeMeter + }; + + static const GUID *ar_clsids[] = { + &CLSID_AudioReverb20, + &CLSID_AudioReverb21, + &CLSID_AudioReverb22, + &CLSID_AudioReverb23, + &CLSID_AudioReverb24, + &CLSID_AudioReverb25, + &CLSID_AudioReverb26, + &CLSID_AudioReverb + }; + + xapofxdll = LoadLibraryA(module); + if(xapofxdll){ + pCreateFX = (void*)GetProcAddress(xapofxdll, "CreateFX"); + ok(pCreateFX != NULL, "%s did not have CreateFX?\n", module); + if(!pCreateFX){ + FreeLibrary(xapofxdll); + return; + } + }else{ + win_skip("Couldn't load %s\n", module); + return; + } + + if(pCreateFX){ + for(i = 0; i < sizeof(const_clsids) / sizeof(*const_clsids); ++i){ + hr = pCreateFX(const_clsids[i].clsid, &fx_unk); + if(const_clsids[i].todo) + todo_wine ok(hr == S_OK, "%s: CreateFX(%s) failed: %08x\n", module, wine_dbgstr_guid(const_clsids[i].clsid), hr); + else + ok(hr == S_OK, "%s: CreateFX(%s) failed: %08x\n", module, wine_dbgstr_guid(const_clsids[i].clsid), hr); + if(SUCCEEDED(hr)){ + IXAPO *xapo; + hr = IUnknown_QueryInterface(fx_unk, &IID_IXAPO27, (void**)&xapo); + ok(hr == S_OK, "Couldn't get IXAPO27 interface: %08x\n", hr); + if(SUCCEEDED(hr)) + IXAPO_Release(xapo); + IUnknown_Release(fx_unk); + } + + hr = CoCreateInstance(const_clsids[i].clsid, NULL, CLSCTX_INPROC_SERVER, + &IID_IUnknown, (void**)&fx_unk); + ok(hr == REGDB_E_CLASSNOTREG, "CoCreateInstance should have failed: %08x\n", hr); + if(SUCCEEDED(hr)) + IUnknown_Release(fx_unk); + } + + hr = pCreateFX(avm_clsids[version - 20], &fx_unk); + ok(hr == S_OK, "%s: CreateFX(%s) failed: %08x\n", module, wine_dbgstr_guid(avm_clsids[version - 20]), hr); + if(SUCCEEDED(hr)){ + IXAPO *xapo; + hr = IUnknown_QueryInterface(fx_unk, &IID_IXAPO27, (void**)&xapo); + ok(hr == S_OK, "Couldn't get IXAPO27 interface: %08x\n", hr); + if(SUCCEEDED(hr)) + IXAPO_Release(xapo); + IUnknown_Release(fx_unk); + } + + hr = pCreateFX(ar_clsids[version - 20], &fx_unk); + ok(hr == S_OK, "%s: CreateFX(%s) failed: %08x\n", module, wine_dbgstr_guid(ar_clsids[version - 20]), hr); + if(SUCCEEDED(hr)){ + IXAPO *xapo; + hr = IUnknown_QueryInterface(fx_unk, &IID_IXAPO27, (void**)&xapo); + ok(hr == S_OK, "Couldn't get IXAPO27 interface: %08x\n", hr); + if(SUCCEEDED(hr)) + IXAPO_Release(xapo); + IUnknown_Release(fx_unk); + } + } + + FreeLibrary(xapofxdll); +} + +static void test_xapo_creation(void) +{ + test_xapo_creation_legacy("xapofx1_1.dll", 22); + test_xapo_creation_legacy("xapofx1_2.dll", 23); + test_xapo_creation_legacy("xapofx1_3.dll", 24); + test_xapo_creation_legacy("xapofx1_3.dll", 25); + test_xapo_creation_legacy("xapofx1_4.dll", 26); + test_xapo_creation_legacy("xapofx1_5.dll", 27); +} + static UINT32 check_has_devices(IXAudio2 *xa) { HRESULT hr; @@ -808,6 +943,8 @@ START_TEST(xaudio2) pCreateAudioVolumeMeter = (void*)GetProcAddress(xa28dll, "CreateAudioVolumeMeter"); } + test_xapo_creation(); + /* XAudio 2.7 (Jun 2010 DirectX) */ hr = CoCreateInstance(&CLSID_XAudio2, NULL, CLSCTX_INPROC_SERVER, &IID_IXAudio27, (void**)&xa27); diff --git a/dlls/xaudio2_7/xaudio_classes.idl b/dlls/xaudio2_7/xaudio_classes.idl index 7be37fdb1e2..1f8b020c4b0 100644 --- a/dlls/xaudio2_7/xaudio_classes.idl +++ b/dlls/xaudio2_7/xaudio_classes.idl @@ -47,3 +47,38 @@ coclass AudioReverb { interface IUnknown; } uuid(962f5027-99be-4692-a468-85802cf8de61) ] coclass XACT31 { interface IUnknown; } + +[ + helpstring("XAPOFX1.1 FXReverb Class (Wine)"), + threading(both), + uuid(a90bc001-e897-e897-7439-43FF02000101) +] +coclass FXReverb11 { interface IXAPO; } + +[ + helpstring("XAPOFX1.2 FXReverb Class (Wine)"), + threading(both), + uuid(a90bc001-e897-e897-7439-43FF02000102) +] +coclass FXReverb12 { interface IXAPO; } + +[ + helpstring("XAPOFX1.3 FXReverb Class (Wine)"), + threading(both), + uuid(a90bc001-e897-e897-7439-43FF02000103) +] +coclass FXReverb13 { interface IXAPO; } + +[ + helpstring("XAPOFX1.4 FXReverb Class (Wine)"), + threading(both), + uuid(a90bc001-e897-e897-7439-43FF02000104) +] +coclass FXReverb14 { interface IXAPO; } + +[ + helpstring("XAPOFX1.5 FXReverb Class (Wine)"), + threading(both), + uuid(a90bc001-e897-e897-7439-43FF02000105) +] +coclass FXReverb15 { interface IXAPO; } diff --git a/dlls/xaudio2_7/xaudio_dll.c b/dlls/xaudio2_7/xaudio_dll.c index a4a9399fe2d..d55d39e8fdb 100644 --- a/dlls/xaudio2_7/xaudio_dll.c +++ b/dlls/xaudio2_7/xaudio_dll.c @@ -29,6 +29,8 @@ #include "ole2.h" #include "rpcproxy.h" +#include "xapofx.h" + #include "wine/debug.h" WINE_DEFAULT_DEBUG_CHANNEL(xaudio2); @@ -2507,13 +2509,13 @@ HRESULT WINAPI DllGetClassObject(REFCLSID rclsid, REFIID riid, void **ppv) TRACE("(%s, %s, %p)\n", debugstr_guid(rclsid), debugstr_guid(riid), ppv); - if IsEqualGUID(rclsid, &CLSID_XAudio20){ + if(IsEqualGUID(rclsid, &CLSID_XAudio20)){ factory = make_xaudio2_factory(20); - }else if IsEqualGUID(rclsid, &CLSID_XAudio21){ + }else if(IsEqualGUID(rclsid, &CLSID_XAudio21)){ factory = make_xaudio2_factory(21); - }else if IsEqualGUID(rclsid, &CLSID_XAudio22){ + }else if(IsEqualGUID(rclsid, &CLSID_XAudio22)){ factory = make_xaudio2_factory(22); - }else if IsEqualGUID(rclsid, &CLSID_XAudio23){ + }else if(IsEqualGUID(rclsid, &CLSID_XAudio23)){ factory = make_xaudio2_factory(23); }else if(IsEqualGUID(rclsid, &CLSID_XAudio24)){ factory = make_xaudio2_factory(24); @@ -2524,13 +2526,13 @@ HRESULT WINAPI DllGetClassObject(REFCLSID rclsid, REFIID riid, void **ppv) }else if(IsEqualGUID(rclsid, &CLSID_XAudio2)){ factory = make_xaudio2_factory(27); - }else if IsEqualGUID(rclsid, &CLSID_AudioVolumeMeter20){ + }else if(IsEqualGUID(rclsid, &CLSID_AudioVolumeMeter20)){ factory = make_xapo_factory(&CLSID_AudioVolumeMeter, 20); - }else if IsEqualGUID(rclsid, &CLSID_AudioVolumeMeter21){ + }else if(IsEqualGUID(rclsid, &CLSID_AudioVolumeMeter21)){ factory = make_xapo_factory(&CLSID_AudioVolumeMeter, 21); - }else if IsEqualGUID(rclsid, &CLSID_AudioVolumeMeter22){ + }else if(IsEqualGUID(rclsid, &CLSID_AudioVolumeMeter22)){ factory = make_xapo_factory(&CLSID_AudioVolumeMeter, 22); - }else if IsEqualGUID(rclsid, &CLSID_AudioVolumeMeter23){ + }else if(IsEqualGUID(rclsid, &CLSID_AudioVolumeMeter23)){ factory = make_xapo_factory(&CLSID_AudioVolumeMeter, 23); }else if(IsEqualGUID(rclsid, &CLSID_AudioVolumeMeter24)){ factory = make_xapo_factory(&CLSID_AudioVolumeMeter, 24); @@ -2541,23 +2543,40 @@ HRESULT WINAPI DllGetClassObject(REFCLSID rclsid, REFIID riid, void **ppv) }else if(IsEqualGUID(rclsid, &CLSID_AudioVolumeMeter)){ factory = make_xapo_factory(&CLSID_AudioVolumeMeter, 27); - }else if IsEqualGUID(rclsid, &CLSID_AudioReverb20){ + }else if(IsEqualGUID(rclsid, &CLSID_AudioReverb20)){ factory = make_xapo_factory(&CLSID_AudioReverb, 20); - }else if IsEqualGUID(rclsid, &CLSID_AudioReverb21){ + + }else if(IsEqualGUID(rclsid, &CLSID_AudioReverb21) || + IsEqualGUID(rclsid, &CLSID_WINE_FXReverb10)){ factory = make_xapo_factory(&CLSID_AudioReverb, 21); - }else if IsEqualGUID(rclsid, &CLSID_AudioReverb22){ + + }else if(IsEqualGUID(rclsid, &CLSID_AudioReverb22) || + IsEqualGUID(rclsid, &CLSID_WINE_FXReverb11)){ factory = make_xapo_factory(&CLSID_AudioReverb, 22); - }else if IsEqualGUID(rclsid, &CLSID_AudioReverb23){ + + }else if(IsEqualGUID(rclsid, &CLSID_AudioReverb23) || + IsEqualGUID(rclsid, &CLSID_WINE_FXReverb12)){ factory = make_xapo_factory(&CLSID_AudioReverb, 23); - }else if(IsEqualGUID(rclsid, &CLSID_AudioReverb24)){ + + }else if(IsEqualGUID(rclsid, &CLSID_AudioReverb24) || + IsEqualGUID(rclsid, &CLSID_WINE_FXReverb13)){ factory = make_xapo_factory(&CLSID_AudioReverb, 24); + }else if(IsEqualGUID(rclsid, &CLSID_AudioReverb25)){ factory = make_xapo_factory(&CLSID_AudioReverb, 25); - }else if(IsEqualGUID(rclsid, &CLSID_AudioReverb26)){ + + }else if(IsEqualGUID(rclsid, &CLSID_AudioReverb26) || + IsEqualGUID(rclsid, &CLSID_WINE_FXReverb14)){ factory = make_xapo_factory(&CLSID_AudioReverb, 26); - }else if(IsEqualGUID(rclsid, &CLSID_AudioReverb)){ + + }else if(IsEqualGUID(rclsid, &CLSID_AudioReverb) || + IsEqualGUID(rclsid, &CLSID_WINE_FXReverb15)){ factory = make_xapo_factory(&CLSID_AudioReverb, 27); + + }else if(IsEqualGUID(rclsid, &CLSID_WINE_FXReverb28)){ + factory = make_xapo_factory(&CLSID_AudioReverb, 28); } + if(!factory) return CLASS_E_CLASSNOTAVAILABLE; return IClassFactory_QueryInterface(factory, riid, ppv); diff --git a/include/Makefile.in b/include/Makefile.in index c5563a282de..1d4196e622d 100644 --- a/include/Makefile.in +++ b/include/Makefile.in @@ -669,6 +669,7 @@ SRCDIR_INCLUDES = \ wsnwlink.h \ wtsapi32.h \ x3daudio.h \ + xapofx.h \ xcmc.h \ xinput.h \ xmldom.h \ diff --git a/include/xapofx.h b/include/xapofx.h new file mode 100644 index 00000000000..9a51689a912 --- /dev/null +++ b/include/xapofx.h @@ -0,0 +1,76 @@ +/* + * Copyright (c) 2015 Andrew Eikum for CodeWeavers + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +/* CLSIDs used by CreateFX, but never registered */ + +#ifndef _XAPOFX_H +#define _XAPOFX_H + +/* xapofx 1.0 through 1.5 */ +DEFINE_GUID(CLSID_FXEQ27, 0xa90bc001, 0xe897, 0xe897, 0x74, 0x39, 0x43, 0x55, 0x00, 0x00, 0x00, 0x00); +/* xaudio 2.8 */ +DEFINE_GUID(CLSID_FXEQ, 0xf5e01117, 0xd6c4, 0x485a, 0xa3, 0xf5, 0x69, 0x51, 0x96, 0xf3, 0xdb, 0xfa); +/* wine internal */ +DEFINE_GUID(CLSID_WINE_FXEQ10, 0xa90bc001, 0xe897, 0xe897, 0x74, 0x39, 0x43, 0xFF, 0x00, 0x00, 0x01, 0x00); +DEFINE_GUID(CLSID_WINE_FXEQ11, 0xa90bc001, 0xe897, 0xe897, 0x74, 0x39, 0x43, 0xFF, 0x00, 0x00, 0x01, 0x01); +DEFINE_GUID(CLSID_WINE_FXEQ12, 0xa90bc001, 0xe897, 0xe897, 0x74, 0x39, 0x43, 0xFF, 0x00, 0x00, 0x01, 0x02); +DEFINE_GUID(CLSID_WINE_FXEQ13, 0xa90bc001, 0xe897, 0xe897, 0x74, 0x39, 0x43, 0xFF, 0x00, 0x00, 0x01, 0x03); +DEFINE_GUID(CLSID_WINE_FXEQ14, 0xa90bc001, 0xe897, 0xe897, 0x74, 0x39, 0x43, 0xFF, 0x00, 0x00, 0x01, 0x04); +DEFINE_GUID(CLSID_WINE_FXEQ15, 0xa90bc001, 0xe897, 0xe897, 0x74, 0x39, 0x43, 0xFF, 0x00, 0x00, 0x01, 0x05); +DEFINE_GUID(CLSID_WINE_FXEQ28, 0xa90bc001, 0xe897, 0xe897, 0x74, 0x39, 0x43, 0xFF, 0x00, 0x00, 0x02, 0x08); + +/* xapofx 1.0 through 1.5 */ +DEFINE_GUID(CLSID_FXMasteringLimiter27, 0xa90bc001, 0xe897, 0xe897, 0x74, 0x39, 0x43, 0x55, 0x00, 0x00, 0x00, 0x01); +/* xaudio 2.8 */ +DEFINE_GUID(CLSID_FXMasteringLimiter, 0xc4137916, 0x2be1, 0x46fd, 0x85, 0x99, 0x44, 0x15, 0x36, 0xf4, 0x98, 0x56); +/* wine internal */ +DEFINE_GUID(CLSID_WINE_FXMasteringLimiter10, 0xa90bc001, 0xe897, 0xe897, 0x74, 0x39, 0x43, 0xFF, 0x01, 0x00, 0x01, 0x00); +DEFINE_GUID(CLSID_WINE_FXMasteringLimiter11, 0xa90bc001, 0xe897, 0xe897, 0x74, 0x39, 0x43, 0xFF, 0x01, 0x00, 0x01, 0x01); +DEFINE_GUID(CLSID_WINE_FXMasteringLimiter12, 0xa90bc001, 0xe897, 0xe897, 0x74, 0x39, 0x43, 0xFF, 0x01, 0x00, 0x01, 0x02); +DEFINE_GUID(CLSID_WINE_FXMasteringLimiter13, 0xa90bc001, 0xe897, 0xe897, 0x74, 0x39, 0x43, 0xFF, 0x01, 0x00, 0x01, 0x03); +DEFINE_GUID(CLSID_WINE_FXMasteringLimiter14, 0xa90bc001, 0xe897, 0xe897, 0x74, 0x39, 0x43, 0xFF, 0x01, 0x00, 0x01, 0x04); +DEFINE_GUID(CLSID_WINE_FXMasteringLimiter15, 0xa90bc001, 0xe897, 0xe897, 0x74, 0x39, 0x43, 0xFF, 0x01, 0x00, 0x01, 0x05); +DEFINE_GUID(CLSID_WINE_FXMasteringLimiter28, 0xa90bc001, 0xe897, 0xe897, 0x74, 0x39, 0x43, 0xFF, 0x01, 0x00, 0x02, 0x08); + +/* xapofx 1.0 through 1.5 */ +DEFINE_GUID(CLSID_FXReverb27, 0xa90bc001, 0xe897, 0xe897, 0x74, 0x39, 0x43, 0x55, 0x00, 0x00, 0x00, 0x02); +/* xaudio 2.8 */ +DEFINE_GUID(CLSID_FXReverb, 0x7d9aca56, 0xcb68, 0x4807, 0xb6, 0x32, 0xb1, 0x37, 0x35, 0x2e, 0x85, 0x96); +/* wine internal */ +DEFINE_GUID(CLSID_WINE_FXReverb10, 0xa90bc001, 0xe897, 0xe897, 0x74, 0x39, 0x43, 0xFF, 0x02, 0x00, 0x01, 0x00); +DEFINE_GUID(CLSID_WINE_FXReverb11, 0xa90bc001, 0xe897, 0xe897, 0x74, 0x39, 0x43, 0xFF, 0x02, 0x00, 0x01, 0x01); +DEFINE_GUID(CLSID_WINE_FXReverb12, 0xa90bc001, 0xe897, 0xe897, 0x74, 0x39, 0x43, 0xFF, 0x02, 0x00, 0x01, 0x02); +DEFINE_GUID(CLSID_WINE_FXReverb13, 0xa90bc001, 0xe897, 0xe897, 0x74, 0x39, 0x43, 0xFF, 0x02, 0x00, 0x01, 0x03); +DEFINE_GUID(CLSID_WINE_FXReverb14, 0xa90bc001, 0xe897, 0xe897, 0x74, 0x39, 0x43, 0xFF, 0x02, 0x00, 0x01, 0x04); +DEFINE_GUID(CLSID_WINE_FXReverb15, 0xa90bc001, 0xe897, 0xe897, 0x74, 0x39, 0x43, 0xFF, 0x02, 0x00, 0x01, 0x05); +DEFINE_GUID(CLSID_WINE_FXReverb28, 0xa90bc001, 0xe897, 0xe897, 0x74, 0x39, 0x43, 0xFF, 0x02, 0x00, 0x02, 0x08); + +/* xapofx 1.0 through 1.5 */ +DEFINE_GUID(CLSID_FXEcho27, 0xa90bc001, 0xe897, 0xe897, 0x74, 0x39, 0x43, 0x55, 0x00, 0x00, 0x00, 0x03); +/* xaudio 2.8 */ +DEFINE_GUID(CLSID_FXEcho, 0x5039d740, 0xf736, 0x449a, 0x84, 0xd3, 0xa5, 0x62, 0x02, 0x55, 0x7b, 0x87); +/* wine internal */ +DEFINE_GUID(CLSID_WINE_FXEcho10, 0xa90bc001, 0xe897, 0xe897, 0x74, 0x39, 0x43, 0xFF, 0x03, 0x00, 0x01, 0x00); +DEFINE_GUID(CLSID_WINE_FXEcho11, 0xa90bc001, 0xe897, 0xe897, 0x74, 0x39, 0x43, 0xFF, 0x03, 0x00, 0x01, 0x01); +DEFINE_GUID(CLSID_WINE_FXEcho12, 0xa90bc001, 0xe897, 0xe897, 0x74, 0x39, 0x43, 0xFF, 0x03, 0x00, 0x01, 0x02); +DEFINE_GUID(CLSID_WINE_FXEcho13, 0xa90bc001, 0xe897, 0xe897, 0x74, 0x39, 0x43, 0xFF, 0x03, 0x00, 0x01, 0x03); +DEFINE_GUID(CLSID_WINE_FXEcho14, 0xa90bc001, 0xe897, 0xe897, 0x74, 0x39, 0x43, 0xFF, 0x03, 0x00, 0x01, 0x04); +DEFINE_GUID(CLSID_WINE_FXEcho15, 0xa90bc001, 0xe897, 0xe897, 0x74, 0x39, 0x43, 0xFF, 0x03, 0x00, 0x01, 0x05); +DEFINE_GUID(CLSID_WINE_FXEcho28, 0xa90bc001, 0xe897, 0xe897, 0x74, 0x39, 0x43, 0xFF, 0x03, 0x00, 0x02, 0x08); + +#endif