mirror of
https://gitlab.winehq.org/wine/wine-staging.git
synced 2024-11-21 16:46:54 -08:00
Added dsdmo-fx-support patchset
This commit is contained in:
parent
0106909ec5
commit
d9e4a75d19
144
patches/dsdmo-fx-support/0001-dsdmo-Add-Echo-FX-Support.patch
Normal file
144
patches/dsdmo-fx-support/0001-dsdmo-Add-Echo-FX-Support.patch
Normal file
@ -0,0 +1,144 @@
|
||||
From 042e39ff36dcecd47af4102e8bb890cb9779db5e Mon Sep 17 00:00:00 2001
|
||||
From: Alistair Leslie-Hughes <leslie_alistair@hotmail.com>
|
||||
Date: Sat, 13 Aug 2022 11:57:20 +1000
|
||||
Subject: [PATCH 1/2] dsdmo: Add Echo FX Support
|
||||
|
||||
---
|
||||
dlls/dsdmo/dsdmo.idl | 8 ++++
|
||||
dlls/dsdmo/main.c | 97 ++++++++++++++++++++++++++++++++++++++++++++
|
||||
2 files changed, 105 insertions(+)
|
||||
|
||||
diff --git a/dlls/dsdmo/dsdmo.idl b/dlls/dsdmo/dsdmo.idl
|
||||
index 7f172084828..c8130f8a1ce 100644
|
||||
--- a/dlls/dsdmo/dsdmo.idl
|
||||
+++ b/dlls/dsdmo/dsdmo.idl
|
||||
@@ -41,3 +41,11 @@ coclass DirectSoundParamEqDMO {}
|
||||
uuid(87fc0268-9a55-4360-95aa-004a1d9de26c)
|
||||
]
|
||||
coclass DirectSoundWavesReverbDMO {}
|
||||
+
|
||||
+[
|
||||
+ uuid(ef3e932c-d40b-4f51-8ccf-3f98f1b29d5d),
|
||||
+ threading(both),
|
||||
+ progid("Microsoft.DirectSoundEchoDMO.1"),
|
||||
+ vi_progid("Microsoft.DirectSoundEchoDMO")
|
||||
+]
|
||||
+coclass DirectSoundEchoDMO {}
|
||||
diff --git a/dlls/dsdmo/main.c b/dlls/dsdmo/main.c
|
||||
index 3b106a8f633..200293f5214 100644
|
||||
--- a/dlls/dsdmo/main.c
|
||||
+++ b/dlls/dsdmo/main.c
|
||||
@@ -947,6 +947,102 @@ static HRESULT waves_reverb_create(IUnknown *outer, IUnknown **out)
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
+struct dmo_echofx
|
||||
+{
|
||||
+ struct effect effect;
|
||||
+ IDirectSoundFXEcho IDirectSoundFXEcho_iface;
|
||||
+};
|
||||
+
|
||||
+static inline struct dmo_echofx *impl_from_IDirectSoundFXEcho(IDirectSoundFXEcho *iface)
|
||||
+{
|
||||
+ return CONTAINING_RECORD(iface, struct dmo_echofx, IDirectSoundFXEcho_iface);
|
||||
+}
|
||||
+
|
||||
+static HRESULT WINAPI echofx_QueryInterface(IDirectSoundFXEcho *iface, REFIID iid, void **out)
|
||||
+{
|
||||
+ struct dmo_echofx *effect = impl_from_IDirectSoundFXEcho(iface);
|
||||
+ return IUnknown_QueryInterface(effect->effect.outer_unk, iid, out);
|
||||
+}
|
||||
+
|
||||
+static ULONG WINAPI echofx_AddRef(IDirectSoundFXEcho *iface)
|
||||
+{
|
||||
+ struct dmo_echofx *effect = impl_from_IDirectSoundFXEcho(iface);
|
||||
+ return IUnknown_AddRef(effect->effect.outer_unk);
|
||||
+}
|
||||
+
|
||||
+static ULONG WINAPI echofx_Release(IDirectSoundFXEcho *iface)
|
||||
+{
|
||||
+ struct dmo_echofx *effect = impl_from_IDirectSoundFXEcho(iface);
|
||||
+ return IUnknown_Release(effect->effect.outer_unk);
|
||||
+}
|
||||
+
|
||||
+static HRESULT WINAPI echofx_SetAllParameters(IDirectSoundFXEcho *iface, const DSFXEcho *echo)
|
||||
+{
|
||||
+ struct dmo_echofx *effect = impl_from_IDirectSoundFXEcho(iface);
|
||||
+ FIXME("(%p) %p\n", effect, echo);
|
||||
+
|
||||
+ return E_NOTIMPL;
|
||||
+}
|
||||
+
|
||||
+static HRESULT WINAPI echofx_GetAllParameters(IDirectSoundFXEcho *iface, DSFXEcho *echo)
|
||||
+{
|
||||
+ struct dmo_echofx *effect = impl_from_IDirectSoundFXEcho(iface);
|
||||
+ FIXME("(%p) %p\n", effect, echo);
|
||||
+
|
||||
+ return E_NOTIMPL;
|
||||
+}
|
||||
+
|
||||
+static const struct IDirectSoundFXEchoVtbl echofx_vtbl =
|
||||
+{
|
||||
+ echofx_QueryInterface,
|
||||
+ echofx_AddRef,
|
||||
+ echofx_Release,
|
||||
+ echofx_SetAllParameters,
|
||||
+ echofx_GetAllParameters
|
||||
+};
|
||||
+
|
||||
+static struct dmo_echofx *impl_echo_from_effect(struct effect *iface)
|
||||
+{
|
||||
+ return CONTAINING_RECORD(iface, struct dmo_echofx, effect);
|
||||
+}
|
||||
+
|
||||
+static void *echo_query_interface(struct effect *iface, REFIID iid)
|
||||
+{
|
||||
+ struct dmo_echofx *effect = impl_echo_from_effect(iface);
|
||||
+
|
||||
+ if (IsEqualGUID(iid, &IID_IDirectSoundFXEcho))
|
||||
+ return &effect->IDirectSoundFXEcho_iface;
|
||||
+ return NULL;
|
||||
+}
|
||||
+
|
||||
+static void echo_destroy(struct effect *iface)
|
||||
+{
|
||||
+ struct dmo_echofx *effect = impl_echo_from_effect(iface);
|
||||
+
|
||||
+ free(effect);
|
||||
+}
|
||||
+
|
||||
+static const struct effect_ops echo_ops =
|
||||
+{
|
||||
+ .destroy = echo_destroy,
|
||||
+ .query_interface = echo_query_interface,
|
||||
+};
|
||||
+
|
||||
+static HRESULT echo_create(IUnknown *outer, IUnknown **out)
|
||||
+{
|
||||
+ struct dmo_echofx *object;
|
||||
+
|
||||
+ if (!(object = calloc(1, sizeof(*object))))
|
||||
+ return E_OUTOFMEMORY;
|
||||
+
|
||||
+ effect_init(&object->effect, outer, &echo_ops);
|
||||
+ object->IDirectSoundFXEcho_iface.lpVtbl = &echofx_vtbl;
|
||||
+
|
||||
+ TRACE("Created echo effect %p.\n", object);
|
||||
+ *out = &object->effect.IUnknown_inner;
|
||||
+ return S_OK;
|
||||
+}
|
||||
+
|
||||
struct class_factory
|
||||
{
|
||||
IClassFactory IClassFactory_iface;
|
||||
@@ -1031,6 +1127,7 @@ class_factories[] =
|
||||
{&GUID_DSFX_STANDARD_I3DL2REVERB, {{&class_factory_vtbl}, reverb_create}},
|
||||
{&GUID_DSFX_STANDARD_PARAMEQ, {{&class_factory_vtbl}, eq_create}},
|
||||
{&GUID_DSFX_WAVES_REVERB, {{&class_factory_vtbl}, waves_reverb_create}},
|
||||
+ {&GUID_DSFX_STANDARD_ECHO, {{&class_factory_vtbl}, echo_create}},
|
||||
};
|
||||
|
||||
HRESULT WINAPI DllGetClassObject(REFCLSID clsid, REFIID iid, void **out)
|
||||
--
|
||||
2.35.1
|
||||
|
@ -0,0 +1,145 @@
|
||||
From 7a9faf6c5f18a24f4fcbda2fc3066a4b7dd9a892 Mon Sep 17 00:00:00 2001
|
||||
From: Alistair Leslie-Hughes <leslie_alistair@hotmail.com>
|
||||
Date: Sat, 13 Aug 2022 15:03:46 +1000
|
||||
Subject: [PATCH 2/2] dsdmo: Add Compressor FX Support
|
||||
|
||||
---
|
||||
dlls/dsdmo/dsdmo.idl | 8 ++++
|
||||
dlls/dsdmo/main.c | 97 ++++++++++++++++++++++++++++++++++++++++++++
|
||||
2 files changed, 105 insertions(+)
|
||||
|
||||
diff --git a/dlls/dsdmo/dsdmo.idl b/dlls/dsdmo/dsdmo.idl
|
||||
index c8130f8a1ce..ee3154f64d1 100644
|
||||
--- a/dlls/dsdmo/dsdmo.idl
|
||||
+++ b/dlls/dsdmo/dsdmo.idl
|
||||
@@ -49,3 +49,11 @@ coclass DirectSoundWavesReverbDMO {}
|
||||
vi_progid("Microsoft.DirectSoundEchoDMO")
|
||||
]
|
||||
coclass DirectSoundEchoDMO {}
|
||||
+
|
||||
+[
|
||||
+ uuid(ef011f79-4000-406d-87af-bffb3fc39d57),
|
||||
+ threading(both),
|
||||
+ progid("Microsoft.DirectSoundCompressorDMO.1"),
|
||||
+ vi_progid("Microsoft.DirectSoundCompressorDMO")
|
||||
+]
|
||||
+coclass DirectSoundCompressorDMO {}
|
||||
\ No newline at end of file
|
||||
diff --git a/dlls/dsdmo/main.c b/dlls/dsdmo/main.c
|
||||
index 200293f5214..bb19b7b7e2e 100644
|
||||
--- a/dlls/dsdmo/main.c
|
||||
+++ b/dlls/dsdmo/main.c
|
||||
@@ -1043,6 +1043,102 @@ static HRESULT echo_create(IUnknown *outer, IUnknown **out)
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
+struct dmo_compressorfx
|
||||
+{
|
||||
+ struct effect effect;
|
||||
+ IDirectSoundFXCompressor IDirectSoundFXCompressor_iface;
|
||||
+};
|
||||
+
|
||||
+static inline struct dmo_compressorfx *impl_from_IDirectSoundFXCompressor(IDirectSoundFXCompressor *iface)
|
||||
+{
|
||||
+ return CONTAINING_RECORD(iface, struct dmo_compressorfx, IDirectSoundFXCompressor_iface);
|
||||
+}
|
||||
+
|
||||
+static HRESULT WINAPI compressorfx_QueryInterface(IDirectSoundFXCompressor *iface, REFIID iid, void **out)
|
||||
+{
|
||||
+ struct dmo_compressorfx *effect = impl_from_IDirectSoundFXCompressor(iface);
|
||||
+ return IUnknown_QueryInterface(effect->effect.outer_unk, iid, out);
|
||||
+}
|
||||
+
|
||||
+static ULONG WINAPI compressorfx_AddRef(IDirectSoundFXCompressor *iface)
|
||||
+{
|
||||
+ struct dmo_compressorfx *effect = impl_from_IDirectSoundFXCompressor(iface);
|
||||
+ return IUnknown_AddRef(effect->effect.outer_unk);
|
||||
+}
|
||||
+
|
||||
+static ULONG WINAPI compressorfx_Release(IDirectSoundFXCompressor *iface)
|
||||
+{
|
||||
+ struct dmo_compressorfx *effect = impl_from_IDirectSoundFXCompressor(iface);
|
||||
+ return IUnknown_Release(effect->effect.outer_unk);
|
||||
+}
|
||||
+
|
||||
+static HRESULT WINAPI compressorfx_SetAllParameters(IDirectSoundFXCompressor *iface, const DSFXCompressor *compressor)
|
||||
+{
|
||||
+ struct dmo_compressorfx *This = impl_from_IDirectSoundFXCompressor(iface);
|
||||
+ FIXME("(%p) %p\n", This, compressor);
|
||||
+
|
||||
+ return E_NOTIMPL;
|
||||
+}
|
||||
+
|
||||
+static HRESULT WINAPI compressorfx_GetAllParameters(IDirectSoundFXCompressor *iface, DSFXCompressor *compressor)
|
||||
+{
|
||||
+ struct dmo_compressorfx *This = impl_from_IDirectSoundFXCompressor(iface);
|
||||
+ FIXME("(%p) %p\n", This, compressor);
|
||||
+
|
||||
+ return E_NOTIMPL;
|
||||
+}
|
||||
+
|
||||
+static const struct IDirectSoundFXCompressorVtbl compressor_vtbl =
|
||||
+{
|
||||
+ compressorfx_QueryInterface,
|
||||
+ compressorfx_AddRef,
|
||||
+ compressorfx_Release,
|
||||
+ compressorfx_SetAllParameters,
|
||||
+ compressorfx_GetAllParameters
|
||||
+};
|
||||
+
|
||||
+static struct dmo_compressorfx *impl_compressor_from_effect(struct effect *iface)
|
||||
+{
|
||||
+ return CONTAINING_RECORD(iface, struct dmo_compressorfx, effect);
|
||||
+}
|
||||
+
|
||||
+static void *compressor_query_interface(struct effect *iface, REFIID iid)
|
||||
+{
|
||||
+ struct dmo_compressorfx *effect = impl_compressor_from_effect(iface);
|
||||
+
|
||||
+ if (IsEqualGUID(iid, &IID_IDirectSoundFXCompressor))
|
||||
+ return &effect->IDirectSoundFXCompressor_iface;
|
||||
+ return NULL;
|
||||
+}
|
||||
+
|
||||
+static void compressor_destroy(struct effect *iface)
|
||||
+{
|
||||
+ struct dmo_compressorfx *effect = impl_compressor_from_effect(iface);
|
||||
+
|
||||
+ free(effect);
|
||||
+}
|
||||
+
|
||||
+static const struct effect_ops compressor_ops =
|
||||
+{
|
||||
+ .destroy = compressor_destroy,
|
||||
+ .query_interface = compressor_query_interface,
|
||||
+};
|
||||
+
|
||||
+static HRESULT compressor_create(IUnknown *outer, IUnknown **out)
|
||||
+{
|
||||
+ struct dmo_compressorfx *object;
|
||||
+
|
||||
+ if (!(object = calloc(1, sizeof(*object))))
|
||||
+ return E_OUTOFMEMORY;
|
||||
+
|
||||
+ effect_init(&object->effect, outer, &compressor_ops);
|
||||
+ object->IDirectSoundFXCompressor_iface.lpVtbl = &compressor_vtbl;
|
||||
+
|
||||
+ TRACE("Created compressor effect %p.\n", object);
|
||||
+ *out = &object->effect.IUnknown_inner;
|
||||
+ return S_OK;
|
||||
+}
|
||||
+
|
||||
struct class_factory
|
||||
{
|
||||
IClassFactory IClassFactory_iface;
|
||||
@@ -1128,6 +1224,7 @@ class_factories[] =
|
||||
{&GUID_DSFX_STANDARD_PARAMEQ, {{&class_factory_vtbl}, eq_create}},
|
||||
{&GUID_DSFX_WAVES_REVERB, {{&class_factory_vtbl}, waves_reverb_create}},
|
||||
{&GUID_DSFX_STANDARD_ECHO, {{&class_factory_vtbl}, echo_create}},
|
||||
+ {&GUID_DSFX_STANDARD_COMPRESSOR, {{&class_factory_vtbl}, compressor_create}},
|
||||
};
|
||||
|
||||
HRESULT WINAPI DllGetClassObject(REFCLSID clsid, REFIID iid, void **out)
|
||||
--
|
||||
2.35.1
|
||||
|
1
patches/dsdmo-fx-support/definition
Normal file
1
patches/dsdmo-fx-support/definition
Normal file
@ -0,0 +1 @@
|
||||
Fixes: [52396] dsdmo: Add More FX interfaces.
|
@ -106,6 +106,7 @@ patch_enable_all ()
|
||||
enable_ddraw_Silence_FIXMEs="$1"
|
||||
enable_ddraw_version_check="$1"
|
||||
enable_dinput_joy_mappings="$1"
|
||||
enable_dsdmo_fx_support="$1"
|
||||
enable_dsound_EAX="$1"
|
||||
enable_dsound_Fast_Mixer="$1"
|
||||
enable_eventfd_synchronization="$1"
|
||||
@ -341,6 +342,9 @@ patch_enable ()
|
||||
dinput-joy-mappings)
|
||||
enable_dinput_joy_mappings="$2"
|
||||
;;
|
||||
dsdmo-fx-support)
|
||||
enable_dsdmo_fx_support="$2"
|
||||
;;
|
||||
dsound-EAX)
|
||||
enable_dsound_EAX="$2"
|
||||
;;
|
||||
@ -1658,6 +1662,19 @@ if test "$enable_dinput_joy_mappings" -eq 1; then
|
||||
patch_apply dinput-joy-mappings/0004-dinput-Allow-mapping-of-controls-based-of-Genre-type.patch
|
||||
fi
|
||||
|
||||
# Patchset dsdmo-fx-support
|
||||
# |
|
||||
# | This patchset fixes the following Wine bugs:
|
||||
# | * [#52396] dsdmo: Add More FX interfaces.
|
||||
# |
|
||||
# | Modified files:
|
||||
# | * dlls/dsdmo/dsdmo.idl, dlls/dsdmo/main.c
|
||||
# |
|
||||
if test "$enable_dsdmo_fx_support" -eq 1; then
|
||||
patch_apply dsdmo-fx-support/0001-dsdmo-Add-Echo-FX-Support.patch
|
||||
patch_apply dsdmo-fx-support/0002-dsdmo-Add-Compressor-FX-Support.patch
|
||||
fi
|
||||
|
||||
# Patchset dsound-Fast_Mixer
|
||||
# |
|
||||
# | This patchset fixes the following Wine bugs:
|
||||
|
Loading…
Reference in New Issue
Block a user