Nikolay Sivov : mf: Implement MFCreateVideoRenderer().
Alexandre Julliard
julliard at winehq.org
Mon Oct 5 15:54:59 CDT 2020
Module: wine
Branch: master
Commit: 6019f3c17989085ed0349edaade0c1c44e007e68
URL: https://source.winehq.org/git/wine.git/?a=commit;h=6019f3c17989085ed0349edaade0c1c44e007e68
Author: Nikolay Sivov <nsivov at codeweavers.com>
Date: Mon Oct 5 15:26:41 2020 +0300
mf: Implement MFCreateVideoRenderer().
Signed-off-by: Nikolay Sivov <nsivov at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>
---
dlls/mf/evr.c | 28 ++++++++++++++++++++++++++++
dlls/mf/mf.spec | 2 +-
dlls/mf/tests/mf.c | 4 ++++
include/evr.idl | 1 +
4 files changed, 34 insertions(+), 1 deletion(-)
diff --git a/dlls/mf/evr.c b/dlls/mf/evr.c
index 31bc110ea4..c5b2ceecd6 100644
--- a/dlls/mf/evr.c
+++ b/dlls/mf/evr.c
@@ -1388,3 +1388,31 @@ HRESULT WINAPI MFCreateVideoRendererActivate(HWND hwnd, IMFActivate **activate)
return hr;
}
+
+/***********************************************************************
+ * MFCreateVideoRenderer (mf.@)
+ */
+HRESULT WINAPI MFCreateVideoRenderer(REFIID riid, void **renderer)
+{
+ IMFAttributes *attributes;
+ IUnknown *obj;
+ HRESULT hr;
+
+ TRACE("%s, %p.\n", debugstr_guid(riid), renderer);
+
+ *renderer = NULL;
+
+ if (FAILED(hr = MFCreateAttributes(&attributes, 0)))
+ return hr;
+
+ hr = evr_create_object(attributes, NULL, &obj);
+ IMFAttributes_Release(attributes);
+
+ if (SUCCEEDED(hr))
+ {
+ hr = IUnknown_QueryInterface(obj, riid, renderer);
+ IUnknown_Release(obj);
+ }
+
+ return hr;
+}
diff --git a/dlls/mf/mf.spec b/dlls/mf/mf.spec
index 4b5b085d08..2927d9f8a8 100644
--- a/dlls/mf/mf.spec
+++ b/dlls/mf/mf.spec
@@ -66,7 +66,7 @@
@ stub MFCreateTranscodeSinkActivate
@ stub MFCreateTranscodeTopology
@ stub MFCreateUrlmonSchemePlugin
-@ stub MFCreateVideoRenderer
+@ stdcall MFCreateVideoRenderer(ptr ptr)
@ stdcall MFCreateVideoRendererActivate(long ptr)
@ stub MFCreateWMAEncoderActivate
@ stub MFCreateWMVEncoderActivate
diff --git a/dlls/mf/tests/mf.c b/dlls/mf/tests/mf.c
index 2c02b1d8e5..0bc297cc69 100644
--- a/dlls/mf/tests/mf.c
+++ b/dlls/mf/tests/mf.c
@@ -3253,6 +3253,10 @@ static void test_evr(void)
hr = CoInitialize(NULL);
ok(hr == S_OK, "Failed to initialize, hr %#x.\n", hr);
+ hr = MFCreateVideoRenderer(&IID_IUnknown, (void **)&unk);
+ ok(hr == S_OK, "Unexpected hr %#x.\n", hr);
+ IUnknown_Release(unk);
+
hr = MFCreateVideoRendererActivate(NULL, NULL);
ok(hr == E_POINTER, "Unexpected hr %#x.\n", hr);
diff --git a/include/evr.idl b/include/evr.idl
index 77c46a075f..c217883538 100644
--- a/include/evr.idl
+++ b/include/evr.idl
@@ -313,5 +313,6 @@ cpp_quote("HRESULT WINAPI MFCreateVideoMixer(IUnknown *owner, REFIID riid_device
cpp_quote("HRESULT WINAPI MFCreateVideoMixerAndPresenter(IUnknown *mixer_outer, IUnknown *presenter_outer, ")
cpp_quote(" REFIID riid_mixer, void **mixer, REFIID riid_presenter, void **presenter);")
cpp_quote("HRESULT WINAPI MFCreateVideoPresenter(IUnknown *owner, REFIID riid_device, REFIID riid, void **obj);")
+cpp_quote("HRESULT WINAPI MFCreateVideoRenderer(REFIID riid, void **renderer);")
cpp_quote("HRESULT WINAPI MFCreateVideoSampleAllocator(REFIID riid, void **allocator);")
cpp_quote("HRESULT WINAPI MFCreateVideoSampleFromSurface(IUnknown *surface, IMFSample **sample);")
More information about the wine-cvs
mailing list