[PATCH 3/7] mfplat: Make MFGetPlaneSize return S_OK when the format is invalid.

Giovanni Mascellani gmascellani at codeweavers.com
Mon Feb 14 10:07:10 CST 2022


Signed-off-by: Giovanni Mascellani <gmascellani at codeweavers.com>
---
This doesn't really make sense to me, but it is what I am seeing on
the testbot. Nikolay, have you ever seen MFGetPlaneSize return
MF_E_INVALIDMEDIATYPE?
---
 dlls/mfplat/mediatype.c    | 5 ++++-
 dlls/mfplat/tests/mfplat.c | 8 ++++++++
 2 files changed, 12 insertions(+), 1 deletion(-)

diff --git a/dlls/mfplat/mediatype.c b/dlls/mfplat/mediatype.c
index 41dbda572d5..4fac13db17c 100644
--- a/dlls/mfplat/mediatype.c
+++ b/dlls/mfplat/mediatype.c
@@ -2758,7 +2758,10 @@ HRESULT WINAPI MFGetPlaneSize(DWORD fourcc, DWORD width, DWORD height, DWORD *si
     subtype.Data1 = fourcc;
 
     if (!(format = mf_get_video_format(&subtype)))
-        return MF_E_INVALIDMEDIATYPE;
+    {
+        *size = 0;
+        return S_OK;
+    }
 
     stride = mf_get_stride_for_format(format, width);
 
diff --git a/dlls/mfplat/tests/mfplat.c b/dlls/mfplat/tests/mfplat.c
index 67e81ff0821..ff703d94568 100644
--- a/dlls/mfplat/tests/mfplat.c
+++ b/dlls/mfplat/tests/mfplat.c
@@ -4183,6 +4183,14 @@ static void test_MFCalculateImageSize(void)
     ok(hr == E_INVALIDARG || broken(hr == S_OK) /* Vista */, "Unexpected hr %#x.\n", hr);
     ok(size == 0, "Unexpected size %u.\n", size);
 
+    if (pMFGetPlaneSize)
+    {
+        size = 1;
+        hr = pMFGetPlaneSize(0xdeadbeef, 1, 1, &size);
+        ok(hr == S_OK, "Unexpected hr %#x.\n", hr);
+        ok(size == 0, "Unexpected size %u.\n", size);
+    }
+
     for (i = 0; i < ARRAY_SIZE(image_size_tests); ++i)
     {
         const struct image_size_test *ptr = &image_size_tests[i];
-- 
2.34.1




More information about the wine-devel mailing list