-- v2: mf/tests: Load MFCreateMediaBufferFromMediaType dynamically. mfplat/tests: Add missing todo_wine for MFCreateMediaBufferFromMediaType.
From: Rémi Bernon rbernon@codeweavers.com
--- dlls/mfplat/tests/mfplat.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-)
diff --git a/dlls/mfplat/tests/mfplat.c b/dlls/mfplat/tests/mfplat.c index b9e6a715e93..4c1a5707f50 100644 --- a/dlls/mfplat/tests/mfplat.c +++ b/dlls/mfplat/tests/mfplat.c @@ -7105,13 +7105,16 @@ static void test_MFCreateMediaBufferFromMediaType(void) hr = IMFMediaType_SetGUID(media_type, &MF_MT_MAJOR_TYPE, &GUID_NULL); ok(hr == S_OK, "Failed to set attribute, hr %#lx.\n", hr); hr = pMFCreateMediaBufferFromMediaType(media_type, 0, 0, 0, &buffer); - ok(hr == E_INVALIDARG, "Unexpected hr %#lx.\n", hr); + todo_wine ok(hr == E_INVALIDARG, "Unexpected hr %#lx.\n", hr); hr = pMFCreateMediaBufferFromMediaType(media_type, 0, 16, 0, &buffer); - ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + todo_wine ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + if (hr == S_OK) + { hr = IMFMediaBuffer_GetMaxLength(buffer, &length); ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok(length == 16, "Got length %#lx.\n", length); IMFMediaBuffer_Release(buffer); + }
hr = MFCreateMediaType(&media_type2); ok(hr == S_OK, "Failed to create media type, hr %#lx.\n", hr);
From: Rémi Bernon rbernon@codeweavers.com
--- dlls/mf/tests/mf.c | 3 +++ dlls/mf/tests/mf_test.h | 2 ++ dlls/mf/tests/transform.c | 8 +++++++- 3 files changed, 12 insertions(+), 1 deletion(-)
diff --git a/dlls/mf/tests/mf.c b/dlls/mf/tests/mf.c index c42676b38d9..09830191363 100644 --- a/dlls/mf/tests/mf.c +++ b/dlls/mf/tests/mf.c @@ -82,6 +82,8 @@ HRESULT (WINAPI *pMFCreateSampleCopierMFT)(IMFTransform **copier); HRESULT (WINAPI *pMFGetTopoNodeCurrentType)(IMFTopologyNode *node, DWORD stream, BOOL output, IMFMediaType **type); HRESULT (WINAPI *pMFCreateDXGIDeviceManager)(UINT *token, IMFDXGIDeviceManager **manager); HRESULT (WINAPI *pMFCreateVideoSampleAllocatorEx)(REFIID riid, void **obj); +HRESULT (WINAPI *pMFCreateMediaBufferFromMediaType)(IMFMediaType *media_type, LONGLONG duration, DWORD min_length, + DWORD min_alignment, IMFMediaBuffer **buffer); BOOL has_video_processor;
static BOOL is_vista(void) @@ -5729,6 +5731,7 @@ void init_functions(void) mod = GetModuleHandleA("mfplat.dll"); X(MFCreateDXGIDeviceManager); X(MFCreateVideoSampleAllocatorEx); + X(MFCreateMediaBufferFromMediaType); #undef X
hr = CoInitialize(NULL); diff --git a/dlls/mf/tests/mf_test.h b/dlls/mf/tests/mf_test.h index bc3deaf3264..a4f330efbcb 100644 --- a/dlls/mf/tests/mf_test.h +++ b/dlls/mf/tests/mf_test.h @@ -34,6 +34,8 @@ extern HRESULT (WINAPI *pMFCreateSampleCopierMFT)(IMFTransform **copier); extern HRESULT (WINAPI *pMFGetTopoNodeCurrentType)(IMFTopologyNode *node, DWORD stream, BOOL output, IMFMediaType **type); extern HRESULT (WINAPI *pMFCreateDXGIDeviceManager)(UINT *token, IMFDXGIDeviceManager **manager); extern HRESULT (WINAPI *pMFCreateVideoSampleAllocatorEx)(REFIID riid, void **obj); +extern HRESULT (WINAPI *pMFCreateMediaBufferFromMediaType)(IMFMediaType *media_type, LONGLONG duration, DWORD min_length, + DWORD min_alignment, IMFMediaBuffer **buffer);
extern BOOL has_video_processor; void init_functions(void); diff --git a/dlls/mf/tests/transform.c b/dlls/mf/tests/transform.c index 258974cd8ad..49e5fbdd497 100644 --- a/dlls/mf/tests/transform.c +++ b/dlls/mf/tests/transform.c @@ -2152,7 +2152,7 @@ static IMFSample *create_sample_(const BYTE *data, ULONG size, const struct attr hr = MFCreateMediaType(&media_type); ok(hr == S_OK, "Failed to create media type, hr %#lx.\n", hr); init_media_type(media_type, desc, -1); - hr = MFCreateMediaBufferFromMediaType(media_type, 0, 0, 0, &media_buffer); + hr = pMFCreateMediaBufferFromMediaType(media_type, 0, 0, 0, &media_buffer); ok(hr == S_OK, "MFCreateMediaBufferFromMediaType returned %#lx\n", hr); IMFMediaType_Release(media_type); } @@ -8145,6 +8145,12 @@ static void test_video_processor(BOOL use_2d_buffer) GUID guid; LONG ref;
+ if (use_2d_buffer && !pMFCreateMediaBufferFromMediaType) + { + win_skip("MFCreateMediaBufferFromMediaType() is unsupported.\n"); + return; + } + hr = CoInitialize(NULL); ok(hr == S_OK, "Failed to initialize, hr %#lx.\n", hr);
v2: Extend the todo_wine when MFCreateMediaBufferFromMediaType is called without a major type, to fix the test crash.
Anything I should do here? These tests are failing on every MR.
This merge request was approved by Nikolay Sivov.
The mf.dll tests are also crashing for me, likely because of some gstreamer problem, unrelated to this mr.