Giovanni Mascellani : mfplat: Fix MFGetPlaneSize() behavior for invalid formats.

Alexandre Julliard julliard at winehq.org
Mon Feb 14 15:41:32 CST 2022


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

Author: Giovanni Mascellani <gmascellani at codeweavers.com>
Date:   Mon Feb 14 21:46:25 2022 +0300

mfplat: Fix MFGetPlaneSize() behavior for invalid formats.

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

---

 dlls/mfplat/mediatype.c    | 8 ++++----
 dlls/mfplat/tests/mfplat.c | 5 +++++
 2 files changed, 9 insertions(+), 4 deletions(-)

diff --git a/dlls/mfplat/mediatype.c b/dlls/mfplat/mediatype.c
index b77db17189f..9330e420036 100644
--- a/dlls/mfplat/mediatype.c
+++ b/dlls/mfplat/mediatype.c
@@ -2755,10 +2755,10 @@ HRESULT WINAPI MFGetPlaneSize(DWORD fourcc, DWORD width, DWORD height, DWORD *si
     memcpy(&subtype, &MFVideoFormat_Base, sizeof(subtype));
     subtype.Data1 = fourcc;
 
-    if (!(format = mf_get_video_format(&subtype)))
-        return MF_E_INVALIDMEDIATYPE;
-
-    stride = mf_get_stride_for_format(format, width);
+    if ((format = mf_get_video_format(&subtype)))
+        stride = mf_get_stride_for_format(format, width);
+    else
+        stride = 0;
 
     switch (fourcc)
     {
diff --git a/dlls/mfplat/tests/mfplat.c b/dlls/mfplat/tests/mfplat.c
index 50f4e059205..c013b7b5c23 100644
--- a/dlls/mfplat/tests/mfplat.c
+++ b/dlls/mfplat/tests/mfplat.c
@@ -4254,6 +4254,11 @@ static void test_MFGetPlaneSize(void)
         return;
     }
 
+    size = 1;
+    hr = pMFGetPlaneSize(0xdeadbeef, 64, 64, &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];




More information about the wine-cvs mailing list