From: Nello De Gregoris <bluechxindv@gmail.com> --- dlls/wmadmod/Makefile.in | 2 +- dlls/wmadmod/wmadmod.c | 17 +++++++++++++++-- 2 files changed, 16 insertions(+), 3 deletions(-) diff --git a/dlls/wmadmod/Makefile.in b/dlls/wmadmod/Makefile.in index bd22cb82b61..3828e565b0d 100644 --- a/dlls/wmadmod/Makefile.in +++ b/dlls/wmadmod/Makefile.in @@ -1,5 +1,5 @@ MODULE = wmadmod.dll -IMPORTS = combase mfplat msdmo mfuuid dmoguids strmiids wmcodecdspuuid uuid +IMPORTS = combase mfplat msdmo mfuuid dmoguids strmiids wmcodecdspuuid uuid winegstreamer SOURCES = \ wmadmod.c \ diff --git a/dlls/wmadmod/wmadmod.c b/dlls/wmadmod/wmadmod.c index 3d619d93a35..c3c6459c080 100644 --- a/dlls/wmadmod/wmadmod.c +++ b/dlls/wmadmod/wmadmod.c @@ -34,11 +34,24 @@ WINE_DEFAULT_DEBUG_CHANNEL(dmo); +extern HRESULT WINAPI winegstreamer_create_wma_decoder(IUnknown *outer, IUnknown **out); + static HRESULT WINAPI wma_decoder_factory_CreateInstance(IClassFactory *iface, IUnknown *outer, REFIID riid, void **out) { - static const GUID CLSID_wg_wma_decoder = {0x5b4d4e54,0x0620,0x4cf9,{0x94,0xae,0x78,0x23,0x96,0x5c,0x28,0xb6}}; - return CoCreateInstance(&CLSID_wg_wma_decoder, outer, CLSCTX_INPROC_SERVER, riid, out); + IUnknown *unk; + HRESULT hr; + + if (outer && !IsEqualGUID(riid, &IID_IUnknown)) + return E_NOINTERFACE; + + *out = NULL; + if (FAILED(hr = winegstreamer_create_wma_decoder(outer, &unk))) + return hr; + + hr = IUnknown_QueryInterface(unk, riid, out); + IUnknown_Release(unk); + return hr; } static HRESULT WINAPI class_factory_QueryInterface(IClassFactory *iface, REFIID riid, void **out) -- GitLab https://gitlab.winehq.org/wine/wine/-/merge_requests/11717