Module: wine Branch: master Commit: 613d7b099986828212299a8e98179f22c86b80ab URL: https://gitlab.winehq.org/wine/wine/-/commit/613d7b099986828212299a8e98179f2...
Author: Zhiyi Zhang zzhang@codeweavers.com Date: Fri Aug 4 17:35:04 2023 +0800
mfmediaengine/tests: Test IMFMediaEngine::GetDuration().
---
dlls/mfmediaengine/tests/mfmediaengine.c | 41 ++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+)
diff --git a/dlls/mfmediaengine/tests/mfmediaengine.c b/dlls/mfmediaengine/tests/mfmediaengine.c index a3d9a2bbf75..5e32c38d063 100644 --- a/dlls/mfmediaengine/tests/mfmediaengine.c +++ b/dlls/mfmediaengine/tests/mfmediaengine.c @@ -17,6 +17,7 @@ */
#include <stdarg.h> +#include <math.h>
#define COBJMACROS
@@ -66,6 +67,11 @@ static void check_interface_(unsigned int line, void *iface_ptr, REFIID iid, BOO IUnknown_Release(unk); }
+static BOOL compare_double(double a, double b, double allowed_error) +{ + return fabs(a - b) <= allowed_error; +} + static DWORD compare_rgb32(const BYTE *data, DWORD *length, const RECT *rect, const BYTE *expect) { DWORD x, y, size, diff = 0, width = (rect->right + 0xf) & ~0xf, height = (rect->bottom + 0xf) & ~0xf; @@ -1931,6 +1937,40 @@ done: IMFMediaEngineNotify_Release(¬ify->IMFMediaEngineNotify_iface); }
+static void test_GetDuration(void) +{ + static const double allowed_error = 0.000001; + struct test_transfer_notify *notify; + IMFMediaEngineEx *media_engine; + IMFByteStream *stream; + double duration; + HRESULT hr; + DWORD res; + BSTR url; + + notify = create_transfer_notify(); + media_engine = create_media_engine_ex(¬ify->IMFMediaEngineNotify_iface, NULL, DXGI_FORMAT_B8G8R8X8_UNORM); + notify->media_engine = media_engine; + ok(!!media_engine, "create_media_engine_ex failed.\n"); + + stream = load_resource(L"i420-64x64.avi", L"video/avi"); + url = SysAllocString(L"i420-64x64.avi"); + hr = IMFMediaEngineEx_SetSourceFromByteStream(media_engine, stream, url); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + res = WaitForSingleObject(notify->ready_event, 5000); + ok(!res, "Unexpected res %#lx.\n", res); + + duration = IMFMediaEngineEx_GetDuration(media_engine); + todo_wine + ok(compare_double(duration, 0.133467, allowed_error), "Got unexpected duration %lf.\n", duration); + + SysFreeString(url); + IMFByteStream_Release(stream); + IMFMediaEngineEx_Shutdown(media_engine); + IMFMediaEngineEx_Release(media_engine); + IMFMediaEngineNotify_Release(¬ify->IMFMediaEngineNotify_iface); +} + START_TEST(mfmediaengine) { HRESULT hr; @@ -1963,6 +2003,7 @@ START_TEST(mfmediaengine) test_audio_configuration(); test_TransferVideoFrame(); test_effect(); + test_GetDuration();
IMFMediaEngineClassFactory_Release(factory);