Nikolay Sivov : dxva2: Add GetCreationParameters().

Alexandre Julliard julliard at winehq.org
Mon Oct 19 15:54:06 CDT 2020


Module: wine
Branch: master
Commit: 16430c45cdbdc8fd20b10bd1e8d277cd4d154598
URL:    https://source.winehq.org/git/wine.git/?a=commit;h=16430c45cdbdc8fd20b10bd1e8d277cd4d154598

Author: Nikolay Sivov <nsivov at codeweavers.com>
Date:   Mon Oct 19 17:10:41 2020 +0300

dxva2: Add GetCreationParameters().

Signed-off-by: Nikolay Sivov <nsivov at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 dlls/dxva2/main.c        | 31 +++++++++++++++++++++++++------
 dlls/dxva2/tests/dxva2.c |  6 ++----
 2 files changed, 27 insertions(+), 10 deletions(-)

diff --git a/dlls/dxva2/main.c b/dlls/dxva2/main.c
index af6ad25697b..6262531c7d1 100644
--- a/dlls/dxva2/main.c
+++ b/dlls/dxva2/main.c
@@ -71,6 +71,10 @@ struct video_processor
     LONG refcount;
 
     IDirectXVideoProcessorService *service;
+    GUID device;
+    DXVA2_VideoDesc video_desc;
+    D3DFORMAT rt_format;
+    unsigned int max_substreams;
 };
 
 static BOOL dxva_array_reserve(void **elements, size_t *capacity, size_t count, size_t size)
@@ -170,14 +174,25 @@ static HRESULT WINAPI video_processor_GetVideoProcessorService(IDirectXVideoProc
 }
 
 static HRESULT WINAPI video_processor_GetCreationParameters(IDirectXVideoProcessor *iface,
-        GUID *device, DXVA2_VideoDesc *video_desc, D3DFORMAT *rt_format, UINT *maxstreams)
+        GUID *device, DXVA2_VideoDesc *video_desc, D3DFORMAT *rt_format, UINT *max_substreams)
 {
-    FIXME("%p, %p, %p, %p, %p.\n", iface, device, video_desc, rt_format, maxstreams);
+    struct video_processor *processor = impl_from_IDirectXVideoProcessor(iface);
+
+    TRACE("%p, %p, %p, %p, %p.\n", iface, device, video_desc, rt_format, max_substreams);
 
-    if (!device && !video_desc && !rt_format && !maxstreams)
+    if (!device && !video_desc && !rt_format && !max_substreams)
         return E_INVALIDARG;
 
-    return E_NOTIMPL;
+    if (device)
+        *device = processor->device;
+    if (video_desc)
+        *video_desc = processor->video_desc;
+    if (rt_format)
+        *rt_format = processor->rt_format;
+    if (max_substreams)
+        *max_substreams = processor->max_substreams;
+
+    return S_OK;
 }
 
 static HRESULT WINAPI video_processor_GetVideoProcessorCaps(IDirectXVideoProcessor *iface,
@@ -376,12 +391,12 @@ static HRESULT WINAPI device_manager_processor_service_GetFilterPropertyRange(
 }
 
 static HRESULT WINAPI device_manager_processor_service_CreateVideoProcessor(IDirectXVideoProcessorService *iface,
-        REFGUID deviceguid, const DXVA2_VideoDesc *video_desc, D3DFORMAT rt_format, UINT max_substreams,
+        REFGUID device, const DXVA2_VideoDesc *video_desc, D3DFORMAT rt_format, UINT max_substreams,
         IDirectXVideoProcessor **processor)
 {
     struct video_processor *object;
 
-    FIXME("%p, %s, %p, %d, %u, %p.\n", iface, debugstr_guid(deviceguid), video_desc, rt_format, max_substreams,
+    FIXME("%p, %s, %p, %d, %u, %p.\n", iface, debugstr_guid(device), video_desc, rt_format, max_substreams,
             processor);
 
     /* FIXME: validate render target format */
@@ -393,6 +408,10 @@ static HRESULT WINAPI device_manager_processor_service_CreateVideoProcessor(IDir
     object->refcount = 1;
     object->service = iface;
     IDirectXVideoProcessorService_AddRef(object->service);
+    object->device = *device;
+    object->video_desc = *video_desc;
+    object->rt_format = rt_format;
+    object->max_substreams = max_substreams;
 
     *processor = &object->IDirectXVideoProcessor_iface;
 
diff --git a/dlls/dxva2/tests/dxva2.c b/dlls/dxva2/tests/dxva2.c
index 84ccd3b0190..f617bf74079 100644
--- a/dlls/dxva2/tests/dxva2.c
+++ b/dlls/dxva2/tests/dxva2.c
@@ -420,15 +420,13 @@ static void test_video_processor(void)
     ok(hr == E_INVALIDARG, "Unexpected hr %#x.\n", hr);
 
     hr = IDirectXVideoProcessor_GetCreationParameters(processor, &guid, NULL, NULL, NULL);
-todo_wine {
     ok(hr == S_OK, "Unexpected hr %#x.\n", hr);
     ok(IsEqualGUID(&guid, &DXVA2_VideoProcSoftwareDevice), "Unexpected device guid.\n");
-}
+
     hr = IDirectXVideoProcessor_GetCreationParameters(processor, NULL, NULL, &format, NULL);
-todo_wine {
     ok(hr == S_OK, "Unexpected hr %#x.\n", hr);
     ok(format == D3DFMT_A8R8G8B8, "Unexpected format %u.\n", format);
-}
+
     IDirectXVideoProcessor_Release(processor);
     IDirectXVideoProcessor_Release(processor2);
 




More information about the wine-cvs mailing list