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];