Nikolay Sivov : mf/tests: Add some more tests for video processor transform.

Alexandre Julliard julliard at winehq.org
Mon Feb 1 16:13:08 CST 2021


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

Author: Nikolay Sivov <nsivov at codeweavers.com>
Date:   Mon Feb  1 13:22:10 2021 +0300

mf/tests: Add some more tests for video processor transform.

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

---

 dlls/mf/tests/mf.c |  25 ++++++++++---
 include/mfidl.idl  | 106 +++++++++++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 125 insertions(+), 6 deletions(-)

diff --git a/dlls/mf/tests/mf.c b/dlls/mf/tests/mf.c
index 9bbf82c97e7..11eff78b645 100644
--- a/dlls/mf/tests/mf.c
+++ b/dlls/mf/tests/mf.c
@@ -3347,7 +3347,7 @@ static void test_video_processor(void)
     IMFTransform *transform;
     IMFMediaBuffer *buffer;
     IMFMediaEvent *event;
-    IUnknown *unk;
+    unsigned int value;
     HRESULT hr;
     GUID guid;
 
@@ -3362,15 +3362,28 @@ static void test_video_processor(void)
         goto failed;
     }
 
-    hr = IMFTransform_QueryInterface(transform, &IID_IMFMediaEventGenerator, (void **)&unk);
-    ok(hr == E_NOINTERFACE, "Unexpected hr %#x.\n", hr);
-
-    hr = IMFTransform_QueryInterface(transform, &IID_IMFShutdown, (void **)&unk);
-    ok(hr == E_NOINTERFACE, "Unexpected hr %#x.\n", hr);
+todo_wine
+    check_interface(transform, &IID_IMFVideoProcessorControl, TRUE);
+todo_wine
+    check_interface(transform, &IID_IMFRealTimeClientEx, TRUE);
+    check_interface(transform, &IID_IMFMediaEventGenerator, FALSE);
+    check_interface(transform, &IID_IMFShutdown, FALSE);
 
     /* Transform global attributes. */
     hr = IMFTransform_GetAttributes(transform, &attributes);
     ok(hr == S_OK, "Failed to get attributes, hr %#x.\n", hr);
+
+    hr = IMFAttributes_GetCount(attributes, &count);
+    ok(hr == S_OK, "Unexpected hr %#x.\n", hr);
+todo_wine
+    ok(!!count, "Unexpected attribute count %u.\n", count);
+
+    value = 0;
+    hr = IMFAttributes_GetUINT32(attributes, &MF_SA_D3D11_AWARE, &value);
+todo_wine {
+    ok(hr == S_OK, "Unexpected hr %#x.\n", hr);
+    ok(value == 1, "Unexpected attribute value %u.\n", value);
+}
     hr = IMFTransform_GetAttributes(transform, &attributes2);
     ok(hr == S_OK, "Failed to get attributes, hr %#x.\n", hr);
     ok(attributes == attributes2, "Unexpected instance.\n");
diff --git a/include/mfidl.idl b/include/mfidl.idl
index dd5de8d0d2f..46c715a3752 100644
--- a/include/mfidl.idl
+++ b/include/mfidl.idl
@@ -1163,6 +1163,112 @@ interface IMFVideoSampleAllocatorEx : IMFVideoSampleAllocator
     );
 }
 
+typedef enum _MF_VIDEO_PROCESSOR_MIRROR
+{
+    MIRROR_NONE,
+    MIRROR_HORIZONTAL,
+    MIRROR_VERTICAL
+} MF_VIDEO_PROCESSOR_MIRROR;
+
+typedef enum _MF_VIDEO_PROCESSOR_ROTATION
+{
+    ROTATION_NONE,
+    ROTATION_NORMAL
+} MF_VIDEO_PROCESSOR_ROTATION;
+
+[
+    object,
+    uuid(a3f675d5-6119-4f7f-a100-1d8b280f0efb),
+    local,
+    pointer_default(unique)
+]
+interface IMFVideoProcessorControl : IUnknown
+{
+    HRESULT SetBorderColor(
+        [in] MFARGB *color
+    );
+
+    HRESULT SetSourceRectangle(
+        [in] RECT *rect
+    );
+
+    HRESULT SetDestinationRectangle(
+        [in] RECT *rect
+    );
+
+    HRESULT SetMirror(
+        [in] MF_VIDEO_PROCESSOR_MIRROR mirror
+    );
+
+    HRESULT SetRotation(
+        [in] MF_VIDEO_PROCESSOR_ROTATION rotation
+    );
+
+    HRESULT SetConstrictionSize(
+        [in] SIZE *size
+    );
+}
+
+[
+    object,
+    uuid(bde633d3-e1dc-4a7f-a693-bbae399c4a20),
+    local,
+    pointer_default(unique)
+]
+interface IMFVideoProcessorControl2 : IMFVideoProcessorControl
+{
+    HRESULT SetRotationOverride(
+        [in] UINT rotation
+    );
+
+    HRESULT EnableHardwareEffects(
+        [in] BOOL enabled
+    );
+
+    HRESULT GetSupportedHardwareEffects(
+        [out, retval] UINT *support
+    );
+}
+
+[
+   object,
+   uuid(2347d60b-3fb5-480c-8803-8df3adcd3ef0),
+   local
+]
+interface IMFRealTimeClient : IUnknown
+{
+    HRESULT RegisterThreads(
+        [in] DWORD task_index,
+        [in] LPCWSTR classname
+    );
+
+    HRESULT UnregisterThreads();
+
+    HRESULT SetWorkQueue(
+        [in] DWORD queue_id
+    );
+}
+
+[
+   object,
+   uuid(03910848-ab16-4611-b100-17b88ae2f248),
+]
+interface IMFRealTimeClientEx : IUnknown
+{
+    HRESULT RegisterThreadsEx(
+        [in, out] DWORD *task_index,
+        [in] LPCWSTR classname,
+        [in] LONG basepriority
+    );
+
+    HRESULT UnregisterThreads( );
+
+    HRESULT SetWorkQueueEx(
+        [in] DWORD mtqueue_id,
+        [in] LONG base_priority
+    );
+}
+
 enum
 {
     MF_ACTIVATE_CUSTOM_MIXER_ALLOWFAIL = 0x00000001,




More information about the wine-cvs mailing list