[PATCH 2/5] quartz/tests: Add more tests for mixing mode.

Zebediah Figura z.figura12 at gmail.com
Thu Apr 30 21:51:44 CDT 2020


Signed-off-by: Zebediah Figura <z.figura12 at gmail.com>
---
 dlls/quartz/tests/vmr9.c | 88 ++++++++++++++++++++++++++++++++++++++++
 1 file changed, 88 insertions(+)

diff --git a/dlls/quartz/tests/vmr9.c b/dlls/quartz/tests/vmr9.c
index d8c2ee8b4a7..9485d055f09 100644
--- a/dlls/quartz/tests/vmr9.c
+++ b/dlls/quartz/tests/vmr9.c
@@ -2896,6 +2896,93 @@ out:
     DestroyWindow(window);
 }
 
+static void test_mixing_mode(void)
+{
+    IVMRWindowlessControl9 *windowless_control;
+    IVMRMixerControl9 *mixer_control;
+    IVMRFilterConfig9 *config;
+    DWORD stream_count = 0;
+    IBaseFilter *filter;
+    unsigned int i;
+    HWND window;
+    HRESULT hr;
+    ULONG ref;
+
+    static const VMR9Mode modes[] =
+    {
+        0,
+        VMR9Mode_Windowed,
+        VMR9Mode_Windowless,
+        VMR9Mode_Renderless,
+    };
+
+    for (i = 0; i < ARRAY_SIZE(modes); ++i)
+    {
+        filter = create_vmr9(modes[i]);
+        IBaseFilter_QueryInterface(filter, &IID_IVMRFilterConfig9, (void **)&config);
+
+        hr = IBaseFilter_QueryInterface(filter, &IID_IVMRMixerControl9, (void **)&mixer_control);
+        ok(hr == E_NOINTERFACE, "Got hr %#x.\n", hr);
+
+        hr = IVMRFilterConfig9_GetNumberOfStreams(config, &stream_count);
+        todo_wine ok(hr == VFW_E_VMR_NOT_IN_MIXER_MODE, "Got hr %#x.\n", hr);
+
+        hr = IVMRFilterConfig9_SetNumberOfStreams(config, 1);
+        ok(hr == S_OK, "Got hr %#x.\n", hr);
+
+        hr = IVMRFilterConfig9_GetNumberOfStreams(config, &stream_count);
+        todo_wine ok(hr == S_OK, "Got hr %#x.\n", hr);
+        todo_wine ok(stream_count == 1, "Got %u streams.\n", stream_count);
+
+        hr = IBaseFilter_QueryInterface(filter, &IID_IVMRMixerControl9, (void **)&mixer_control);
+        todo_wine ok(hr == S_OK, "Got hr %#x.\n", hr);
+        if (hr == S_OK)
+            IVMRMixerControl9_Release(mixer_control);
+
+        hr = IVMRFilterConfig9_SetNumberOfStreams(config, 2);
+        todo_wine ok(hr == VFW_E_WRONG_STATE, "Got hr %#x.\n", hr);
+
+        hr = IVMRFilterConfig9_GetNumberOfStreams(config, &stream_count);
+        todo_wine ok(hr == S_OK, "Got hr %#x.\n", hr);
+        todo_wine ok(stream_count == 1, "Got %u streams.\n", stream_count);
+
+        IVMRFilterConfig9_Release(config);
+        ref = IBaseFilter_Release(filter);
+        ok(!ref, "Got outstanding refcount %d.\n", ref);
+    }
+
+    filter = create_vmr9(VMR9Mode_Windowless);
+    IBaseFilter_QueryInterface(filter, &IID_IVMRFilterConfig9, (void **)&config);
+    IBaseFilter_QueryInterface(filter, &IID_IVMRWindowlessControl9, (void **)&windowless_control);
+
+    window = CreateWindowA("static", "quartz_test", WS_OVERLAPPEDWINDOW, 0, 0, 640, 480, 0, 0, 0, 0);
+    ok(!!window, "Failed to create a window.\n");
+    hr = IVMRWindowlessControl9_SetVideoClippingWindow(windowless_control, window);
+    ok(hr == S_OK, "Got hr %#x.\n", hr);
+
+    hr = IVMRFilterConfig9_GetNumberOfStreams(config, &stream_count);
+    todo_wine ok(hr == S_OK, "Got hr %#x.\n", hr);
+    todo_wine ok(stream_count == 4, "Got %u streams.\n", stream_count);
+
+    hr = IBaseFilter_QueryInterface(filter, &IID_IVMRMixerControl9, (void **)&mixer_control);
+    todo_wine ok(hr == S_OK, "Got hr %#x.\n", hr);
+    if (hr == S_OK)
+        IVMRMixerControl9_Release(mixer_control);
+
+    hr = IVMRFilterConfig9_SetNumberOfStreams(config, 2);
+    todo_wine ok(hr == VFW_E_WRONG_STATE, "Got hr %#x.\n", hr);
+
+    hr = IVMRFilterConfig9_GetNumberOfStreams(config, &stream_count);
+    todo_wine ok(hr == S_OK, "Got hr %#x.\n", hr);
+    todo_wine ok(stream_count == 4, "Got %u streams.\n", stream_count);
+
+    IVMRWindowlessControl9_Release(windowless_control);
+    IVMRFilterConfig9_Release(config);
+    ref = IBaseFilter_Release(filter);
+    ok(!ref, "Got outstanding refcount %d.\n", ref);
+    DestroyWindow(window);
+}
+
 START_TEST(vmr9)
 {
     IBaseFilter *filter;
@@ -2925,6 +3012,7 @@ START_TEST(vmr9)
     test_video_window();
     test_allocate_surface_helper();
     test_renderless_formats();
+    test_mixing_mode();
 
     CoUninitialize();
 }
-- 
2.26.2




More information about the wine-devel mailing list