This MR adds tests that examine the values of the samples output by the byte stream handlers.
It is marked as draft as it is dependent on the fixes included within MR !7569.
I've also renamed the tests as they previously exclusively tested the sample output timestamps. The tests now also look at the number of buffers included in a sample and total size of the buffers within a sample.
-- v5: mfplat/tests: Add tests for MP3 Byte Stream Output. mfplat/tests: Add tests for Byte Stream Output.
From: Brendan McGrath bmcgrath@codeweavers.com
--- dlls/mfplat/tests/mfplat.c | 312 +++++++++++++++++++++++++++++++++++++ 1 file changed, 312 insertions(+)
diff --git a/dlls/mfplat/tests/mfplat.c b/dlls/mfplat/tests/mfplat.c index 6fe3f40cd93..c3d2c9833b8 100644 --- a/dlls/mfplat/tests/mfplat.c +++ b/dlls/mfplat/tests/mfplat.c @@ -86,6 +86,9 @@ DEFINE_GUID(DUMMY_GUID2, 0x12345678,0x1234,0x1234,0x22,0x22,0x22,0x22,0x22,0x22, DEFINE_GUID(DUMMY_GUID3, 0x12345678,0x1234,0x1234,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23);
extern const CLSID CLSID_FileSchemePlugin; +extern const CLSID CLSID_AsfByteStreamPlugin; +extern const CLSID CLSID_MPEG4ByteStreamHandlerPlugin; +extern const CLSID CLSID_AVIByteStreamPlugin;
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_Base,0); DEFINE_GUID(MEDIASUBTYPE_ABGR32,D3DFMT_A8B8G8R8,0x524f,0x11ce,0x9f,0x53,0x00,0x20,0xaf,0x0b,0xa7,0x70); @@ -13810,6 +13813,314 @@ static void test_undefined_queue_id(void) ok(hr == S_OK, "Failed to shut down, hr %#lx.\n", hr); }
+static void test_ByteStreamOutput(void) +{ + #define TIME (1 << 0) + #define DURATION_VALUE (1 << 1) + #define DURATION_HR (1 << 2) + #define DTS_VALUE (1 << 3) + #define DTS_HR (1 << 4) + #define BUFFER_COUNT (1 << 5) + #define LENGTH (1 << 6) + #define DURATION (DURATION_VALUE | DURATION_HR) + #define DTS (DTS_VALUE | DTS_HR) + + static const WCHAR asf_mime_type[] = L"video/x-ms-wmv"; + static const WCHAR mp4_mime_type[] = L"video/mp4"; + static const WCHAR avi_mime_type[] = L"video/avi"; + + struct timestamps + { + LONGLONG time; + HRESULT duration_hr; + LONGLONG duration; + HRESULT dts_hr; + UINT64 dts; + DWORD buffer_count; + DWORD length; + UINT8 todo; + }; + static const struct + { + const char *name; + const WCHAR *resource; + const WCHAR *mime_type; + const CLSID *class_id; + DWORD timeout; + struct timestamps expected[5]; + } + tests[] = + { + { + "asf/wmv1", + L"test-wmv1.wmv", + asf_mime_type, + &CLSID_AsfByteStreamPlugin, + 1000, + { + { 0, MF_E_NO_SAMPLE_DURATION, 0, MF_E_ATTRIBUTENOTFOUND, 0, 2, 9013, DURATION | BUFFER_COUNT | LENGTH }, + { 330000, MF_E_NO_SAMPLE_DURATION, 0, MF_E_ATTRIBUTENOTFOUND, 0, 3, 6687, DURATION | BUFFER_COUNT | LENGTH }, + { 660000, MF_E_NO_SAMPLE_DURATION, 0, MF_E_ATTRIBUTENOTFOUND, 0, 2, 6541, DURATION | BUFFER_COUNT | LENGTH }, + { 1000000, MF_E_NO_SAMPLE_DURATION, 0, MF_E_ATTRIBUTENOTFOUND, 0, 3, 6365, DURATION | BUFFER_COUNT | LENGTH }, + { 1330000, MF_E_NO_SAMPLE_DURATION, 0, MF_E_ATTRIBUTENOTFOUND, 0, 2, 5105, DURATION | BUFFER_COUNT | LENGTH }, + }, + }, + { + "mp4/h-264", + L"test-h264.mp4", + mp4_mime_type, + &CLSID_MPEG4ByteStreamHandlerPlugin, + 2000, /* Wine requires over one second to create MPEG4 byte stream handler, Windows is much faster */ + { + { 1333332, S_OK, 333334, S_OK , 666666, 11, 5479, TIME | DURATION_VALUE | DTS | BUFFER_COUNT | LENGTH }, + { 2666665, S_OK, 333333, S_OK , 999999, 4, 3668, TIME | DTS | BUFFER_COUNT | LENGTH }, + { 1999998, S_OK, 333334, S_OK , 1333332, 4, 3756, TIME | DURATION_VALUE | DTS | BUFFER_COUNT | LENGTH }, + { 1666666, S_OK, 333332, MF_E_ATTRIBUTENOTFOUND, 0, 4, 3630, DURATION_VALUE | BUFFER_COUNT | LENGTH }, + { 2333332, S_OK, 333333, S_OK , 1999999, 4, 3635, TIME | DTS | BUFFER_COUNT | LENGTH }, + }, + }, + { + "mp4/mpeg4", + L"test.mp4", + mp4_mime_type, + &CLSID_MPEG4ByteStreamHandlerPlugin, + 2000, /* Wine requires over one second to create MPEG4 byte stream handler, Windows is much faster */ + { + { 0, S_OK, 400000, MF_E_ATTRIBUTENOTFOUND, 0, 1, 82, LENGTH }, + { 400000, S_OK, 400000, MF_E_ATTRIBUTENOTFOUND, 0, 1, 61, LENGTH }, + { 800000, S_OK, 400000, MF_E_ATTRIBUTENOTFOUND, 0, 1, 86, LENGTH }, + { 1200000, S_OK, 400000, MF_E_ATTRIBUTENOTFOUND, 0, 1, 68, LENGTH }, + { 1600000, S_OK, 400000, MF_E_ATTRIBUTENOTFOUND, 0, 1, 68, LENGTH }, + }, + }, + { + "avi/i420", + L"test-i420.avi", + avi_mime_type, + &CLSID_AVIByteStreamPlugin, + 1000, + { + { 0, S_OK, 333333, MF_E_ATTRIBUTENOTFOUND, 0, 1, 1152 }, + { 333333, S_OK, 333333, MF_E_ATTRIBUTENOTFOUND, 0, 1, 1152 }, + { 666666, S_OK, 333333, MF_E_ATTRIBUTENOTFOUND, 0, 1, 1152 }, + { 1000000, S_OK, 333333, MF_E_ATTRIBUTENOTFOUND, 0, 1, 1152 }, + { 1333333, S_OK, 333333, MF_E_ATTRIBUTENOTFOUND, 0, 1, 1152 }, + }, + }, + }; + + IMFByteStreamHandler *byte_stream_handler; + const struct timestamps *expected; + struct test_callback *callback; + IMFPresentationDescriptor *pd; + IMFByteStream *byte_stream; + MF_OBJECT_TYPE object_type; + DWORD buffer_count, length; + IMFAttributes *attributes; + LONGLONG time, duration; + IMFMediaSource *source; + IMFMediaStream *stream; + IMFMediaEvent *event; + MediaEventType met; + PROPVARIANT value; + IMFSample *sample; + WCHAR *filename; + HRESULT hr; + UINT64 dts; + ULONG ret; + INT i, j; + + hr = MFStartup(MF_VERSION, MFSTARTUP_FULL); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + + for (i = 0; i < ARRAYSIZE(tests); i++) + { + winetest_push_context("%s timestamps", tests[i].name); + + filename = load_resource(tests[i].resource); + + hr = MFCreateFile(MF_ACCESSMODE_READ, MF_OPENMODE_FAIL_IF_NOT_EXIST, MF_FILEFLAGS_NONE, filename, &byte_stream); + ok(hr == S_OK, "Got hr %#lx.\n", hr); + + hr = IMFByteStream_QueryInterface(byte_stream, &IID_IMFAttributes, (void**)&attributes); + ok(hr == S_OK, "Got hr %#lx.\n", hr); + + hr = IMFAttributes_SetString(attributes, &MF_BYTESTREAM_CONTENT_TYPE, tests[i].mime_type); + ok(hr == S_OK, "Got hr %#lx.\n", hr); + + ret = IMFAttributes_Release(attributes); + ok(ret == 1, "Unexpected reference count %ld\n", ret); + + hr = CoCreateInstance(tests[i].class_id, NULL, CLSCTX_INPROC_SERVER, + &IID_IMFByteStreamHandler, (void**)&byte_stream_handler); + ok(hr == S_OK, "Got hr %#lx.\n", hr); + + callback = create_test_callback(&test_async_callback_result_vtbl); + + hr = IMFByteStreamHandler_BeginCreateObject(byte_stream_handler, byte_stream, + filename, MF_RESOLUTION_MEDIASOURCE, NULL, NULL, &callback->IMFAsyncCallback_iface, NULL); + ok(hr == S_OK, "Got hr %#lx.\n", hr); + + /* we don't test the reference count here as it fluctuates with time + * and implementation which are details we don't need/want to test + */ + IMFByteStream_Release(byte_stream); + + if (WaitForSingleObject(callback->event, tests[i].timeout) == WAIT_TIMEOUT) + { + ok(0, "timeout\n"); + IMFAsyncCallback_Release(&callback->IMFAsyncCallback_iface); + IMFByteStreamHandler_Release(byte_stream_handler); + goto next_test; + } + + hr = IMFByteStreamHandler_EndCreateObject(byte_stream_handler, callback->result, + &object_type, (IUnknown**)&source); + ok(hr == S_OK, "Got hr %#lx.\n", hr); + ok(object_type == MF_OBJECT_MEDIASOURCE, "Unexpected object_type %d\n", object_type); + + Sleep(10); /* To ensure reference count is 0, we sleep */ + ret = IMFAsyncResult_Release(callback->result); + ok(ret == 0, "Unexpected reference count %ld\n", ret); + + ret = IMFAsyncCallback_Release(&callback->IMFAsyncCallback_iface); + ok(ret == 0, "Unexpected reference count %ld\n", ret); + + ret = IMFByteStreamHandler_Release(byte_stream_handler); + ok(ret == 0, "Unexpected reference count %ld\n", ret); + + hr = IMFMediaSource_CreatePresentationDescriptor(source, &pd); + ok(hr == S_OK, "Got hr %#lx.\n", hr); + + PropVariantInit(&value); + hr = IMFMediaSource_Start(source, pd, NULL, &value); + + hr = IMFMediaSource_GetEvent(source, 0, &event); + ok(hr == S_OK, "Got hr %#lx.\n", hr); + + hr = IMFMediaEvent_GetType(event, &met); + ok(hr == S_OK, "Got hr %#lx.\n", hr); + ok(met == MENewStream, "Got unexpected event %ld\n", met); + + hr = IMFMediaEvent_GetValue(event, &value); + ok(hr == S_OK, "Got hr %#lx.\n", hr); + ok(value.vt == VT_UNKNOWN, "Unexpected value type %d\n", value.vt); + + IMFMediaEvent_Release(event); + + hr = IUnknown_QueryInterface(value.punkVal, &IID_IMFMediaStream, (void**)&stream); + ok(hr == S_OK, "Got hr %#lx.\n", hr); + + hr = PropVariantClear(&value); + ok(hr == S_OK, "Got hr %#lx.\n", hr); + + hr = IMFMediaStream_GetEvent(stream, 0, &event); + ok(hr == S_OK, "Got hr %#lx.\n", hr); + + hr = IMFMediaEvent_GetType(event, &met); + ok(hr == S_OK, "Got hr %#lx.\n", hr); + ok(met == MEStreamStarted, "Got unexpected event %ld\n", met); + + IMFMediaEvent_Release(event); + + hr = IMFMediaSource_GetEvent(source, 0, &event); + ok(hr == S_OK, "Got hr %#lx.\n", hr); + + hr = IMFMediaEvent_GetType(event, &met); + ok(hr == S_OK, "Got hr %#lx.\n", hr); + ok(met == MESourceStarted, "Got unexpected event %ld\n", met); + + IMFMediaEvent_Release(event); + + for (j = 0; j < ARRAYSIZE(tests[i].expected); j++) + { + winetest_push_context("sample %d", j); + + expected = tests[i].expected + j; + + /* Request a media sample */ + hr = IMFMediaStream_RequestSample(stream, NULL); + ok(hr == S_OK, "Got hr %#lx.\n", hr); + + hr = IMFMediaStream_GetEvent(stream, 0, &event); + ok(hr == S_OK, "Got hr %#lx.\n", hr); + + hr = IMFMediaEvent_GetType(event, &met); + ok(hr == S_OK, "Got hr %#lx.\n", hr); + ok(met == MEMediaSample, "Got unexpected event %ld\n", met); + + if (met == MEMediaSample) + { + hr = IMFMediaEvent_GetValue(event, &value); + ok(hr == S_OK, "Got hr %#lx.\n", hr); + ok(value.vt == VT_UNKNOWN, "Unexpected value type %d\n", value.vt); + + hr = IUnknown_QueryInterface(value.punkVal, &IID_IMFSample, (void**)&sample); + ok(hr == S_OK, "Got hr %#lx.\n", hr); + + hr = PropVariantClear(&value); + ok(hr == S_OK, "Got hr %#lx.\n", hr); + + time = -1; + hr = IMFSample_GetSampleTime(sample, &time); + ok(hr == S_OK, "Got unexpected hr %#lx when requesting sample time, expected S_OK.\n", hr); + todo_wine_if(expected->todo & TIME) + ok(time == expected->time, "Unexpected sample time %I64d, expected %I64d\n", time, expected->time); + + duration = -1; + hr = IMFSample_GetSampleDuration(sample, &duration); + todo_wine_if(expected->todo & DURATION_HR) + ok(hr == expected->duration_hr, + "Got hr %#lx when requesting sample duration, expected %#lx.\n", hr, expected->duration_hr); + if (expected->duration_hr == S_OK) + todo_wine_if(expected->todo & DURATION_VALUE) + ok(duration == expected->duration, + "Unexpected sample duration %I64d, expected %I64d\n", duration, expected->duration); + dts = -1; + hr = IMFSample_GetUINT64(sample, &MFSampleExtension_DecodeTimestamp, &dts); + todo_wine_if(expected->todo & DTS_HR) + ok(hr == expected->dts_hr, + "Got unexpected hr %#lx when requesting DTS, expected %#lx.\n", hr, expected->dts_hr); + if (expected->dts_hr == S_OK) + todo_wine_if(expected->todo & DTS_VALUE) + ok(dts == expected->dts, "Unexpected sample dts %I64d, expected %I64d\n", dts, expected->dts); + + hr = IMFSample_GetBufferCount(sample, &buffer_count); + ok(hr == S_OK, "Got unexpected hr %#lx when requesting buffer count, expected S_OK.\n", hr); + todo_wine_if(expected->todo & BUFFER_COUNT) + ok(buffer_count == expected->buffer_count, "Unexpected buffer count %ld, expected %ld\n", buffer_count, expected->buffer_count); + hr = IMFSample_GetTotalLength(sample, &length); + ok(hr == S_OK, "Got unexpected hr %#lx when requesting total length, expected S_OK.\n", hr); + todo_wine_if(expected->todo & LENGTH) + ok(length == expected->length, "Unexpected buffer length %ld, expected %ld\n", length, expected->length); + + IMFSample_Release(sample); + } + + IMFMediaEvent_Release(event); + + winetest_pop_context(); + } + + IMFMediaStream_Release(stream); + + hr = IMFMediaSource_Shutdown(source); + ok(hr == S_OK, "Got hr %#lx.\n", hr); + + ret = IMFMediaSource_Release(source); + ok(ret == 0, "Unexpected reference count %ld\n", ret); + +next_test: + ret = DeleteFileW(filename); + ok(ret, "Failed to delete %s, error %lu.\n", debugstr_w(filename), GetLastError()); + + winetest_pop_context(); + } + + hr = MFShutdown(); + ok(hr == S_OK, "Failed to shut down, hr %#lx.\n", hr); +} + START_TEST(mfplat) { char **argv; @@ -13914,6 +14225,7 @@ START_TEST(mfplat) test_MFCreatePathFromURL(); test_2dbuffer_copy(); test_xvp_playback_mode(); + test_ByteStreamOutput();
CoUninitialize(); }
From: Brendan McGrath bmcgrath@codeweavers.com
--- dlls/mfplat/tests/mfplat.c | 18 +++++++++++++++++- dlls/mfplat/tests/resource.rc | 4 ++++ dlls/mfplat/tests/test-mp3.mp3 | Bin 0 -> 47455 bytes 3 files changed, 21 insertions(+), 1 deletion(-) create mode 100644 dlls/mfplat/tests/test-mp3.mp3
diff --git a/dlls/mfplat/tests/mfplat.c b/dlls/mfplat/tests/mfplat.c index c3d2c9833b8..9453aaa4635 100644 --- a/dlls/mfplat/tests/mfplat.c +++ b/dlls/mfplat/tests/mfplat.c @@ -89,6 +89,7 @@ extern const CLSID CLSID_FileSchemePlugin; extern const CLSID CLSID_AsfByteStreamPlugin; extern const CLSID CLSID_MPEG4ByteStreamHandlerPlugin; extern const CLSID CLSID_AVIByteStreamPlugin; +extern const CLSID CLSID_MP3ByteStreamPlugin;
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_Base,0); DEFINE_GUID(MEDIASUBTYPE_ABGR32,D3DFMT_A8B8G8R8,0x524f,0x11ce,0x9f,0x53,0x00,0x20,0xaf,0x0b,0xa7,0x70); @@ -13828,6 +13829,7 @@ static void test_ByteStreamOutput(void) static const WCHAR asf_mime_type[] = L"video/x-ms-wmv"; static const WCHAR mp4_mime_type[] = L"video/mp4"; static const WCHAR avi_mime_type[] = L"video/avi"; + static const WCHAR mp3_mime_type[] = L"audio/mp3";
struct timestamps { @@ -13907,6 +13909,20 @@ static void test_ByteStreamOutput(void) { 1333333, S_OK, 333333, MF_E_ATTRIBUTENOTFOUND, 0, 1, 1152 }, }, }, + { + "mp3", + L"test-mp3.mp3", + mp3_mime_type, + &CLSID_MP3ByteStreamPlugin, + 1000, + { + { 0, S_OK, 18808128, MF_E_ATTRIBUTENOTFOUND, 0, 1, 8141, DURATION_VALUE | LENGTH }, + { 18808128, S_OK, 20375472, MF_E_ATTRIBUTENOTFOUND, 0, 1, 8112, TIME | DURATION_VALUE | LENGTH }, + { 39183600, S_OK, 20375472, MF_E_ATTRIBUTENOTFOUND, 0, 1, 8112, TIME | DURATION_VALUE | LENGTH }, + { 59559072, S_OK, 20375472, MF_E_ATTRIBUTENOTFOUND, 0, 1, 8112, TIME | DURATION_VALUE | LENGTH }, + { 79934544, S_OK, 20375472, MF_E_ATTRIBUTENOTFOUND, 0, 1, 8112, TIME | DURATION_VALUE | LENGTH }, + }, + }, };
IMFByteStreamHandler *byte_stream_handler; @@ -14108,7 +14124,7 @@ static void test_ByteStreamOutput(void) ok(hr == S_OK, "Got hr %#lx.\n", hr);
ret = IMFMediaSource_Release(source); - ok(ret == 0, "Unexpected reference count %ld\n", ret); + ok(ret <= 1, "Unexpected reference count %ld\n", ret);
next_test: ret = DeleteFileW(filename); diff --git a/dlls/mfplat/tests/resource.rc b/dlls/mfplat/tests/resource.rc index 6029716ca1b..53a6e06f4f4 100644 --- a/dlls/mfplat/tests/resource.rc +++ b/dlls/mfplat/tests/resource.rc @@ -46,3 +46,7 @@ test-mp3.mp4 RCDATA test-mp3.mp4 /* gst-launch-1.0 videotestsrc num-buffers=5 ! video/x-raw,format=I420,width=32,height=24 ! avimux ! filesink location=test-i420.avi */ /* @makedep: test-i420.avi */ test-i420.avi RCDATA test-i420.avi + +/* gst-launch-1.0 audiotestsrc num-buffers=500 ! audioconvert ! lamemp3enc ! filesink location=test-mp3.mp3 */ +/* @makedep: test-mp3.mp3 */ +test-mp3.mp3 RCDATA test-mp3.mp3 diff --git a/dlls/mfplat/tests/test-mp3.mp3 b/dlls/mfplat/tests/test-mp3.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..ff2032ec392165c9c50415c6eaf364d0791dc0cb GIT binary patch literal 47455 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≧k+7OY4) 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 Z24&slmOp=kV&0^=fq`YHIDR1A2>|}1qqP74
literal 0 HcmV?d00001