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