[PATCH 2/2] mfplat: Fix MFGetPlaneSize() behavior for invalid formats.
Nikolay Sivov
nsivov at codeweavers.com
Mon Feb 14 12:46:25 CST 2022
From: Giovanni Mascellani <gmascellani at codeweavers.com>
Signed-off-by: Nikolay Sivov <nsivov at codeweavers.com>
---
Supersedes 226745.
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 a63ae6eafaf..71d55e2d232 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];
--
2.34.1
More information about the wine-devel
mailing list