From: Zhiyi Zhang zzhang@codeweavers.com
--- dlls/mfmediaengine/main.c | 13 ++++++++----- dlls/mfmediaengine/tests/mfmediaengine.c | 1 - 2 files changed, 8 insertions(+), 6 deletions(-)
diff --git a/dlls/mfmediaengine/main.c b/dlls/mfmediaengine/main.c index e664db81d1d..7b0db3d229a 100644 --- a/dlls/mfmediaengine/main.c +++ b/dlls/mfmediaengine/main.c @@ -63,6 +63,12 @@ static BOOL mf_array_reserve(void **elements, size_t *capacity, size_t count, si return TRUE; }
+/* Convert 100ns to seconds */ +static double mftime_to_seconds(MFTIME time) +{ + return (double)time / 10000000.0; +} + enum media_engine_mode { MEDIA_ENGINE_INVALID, @@ -1248,10 +1254,7 @@ static HRESULT media_engine_create_topology(struct media_engine *engine, IMFMedi
/* Assume live source if duration was not provided. */ if (SUCCEEDED(IMFPresentationDescriptor_GetUINT64(pd, &MF_PD_DURATION, &duration))) - { - /* Convert 100ns to seconds. */ - engine->duration = duration / 10000000; - } + engine->duration = mftime_to_seconds(duration); else engine->duration = INFINITY;
@@ -1749,7 +1752,7 @@ static double WINAPI media_engine_GetCurrentTime(IMFMediaEngineEx *iface) } else if (SUCCEEDED(IMFPresentationClock_GetTime(engine->clock, &clocktime))) { - ret = (double)clocktime / 10000000.0; + ret = mftime_to_seconds(clocktime); } LeaveCriticalSection(&engine->cs);
diff --git a/dlls/mfmediaengine/tests/mfmediaengine.c b/dlls/mfmediaengine/tests/mfmediaengine.c index 18c86e3af43..30c428ab9ac 100644 --- a/dlls/mfmediaengine/tests/mfmediaengine.c +++ b/dlls/mfmediaengine/tests/mfmediaengine.c @@ -1955,7 +1955,6 @@ static void test_GetDuration(void) 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);