From 0ca0b5a5ef9488d0b8de1191c2ad075fceeeee15 Mon Sep 17 00:00:00 2001 From: Nikolay Sivov <nsivov@codeweavers.com> Date: Mon, 26 Oct 2020 17:20:23 +0300 Subject: [PATCH] mf/evr: Implement OnClockSetRate(). Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com> Signed-off-by: Alexandre Julliard <julliard@winehq.org> --- dlls/mf/evr.c | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/dlls/mf/evr.c b/dlls/mf/evr.c index 1b18e1c07a3..e408b204304 100644 --- a/dlls/mf/evr.c +++ b/dlls/mf/evr.c @@ -1499,9 +1499,23 @@ static HRESULT WINAPI video_renderer_clock_sink_OnClockRestart(IMFClockStateSink static HRESULT WINAPI video_renderer_clock_sink_OnClockSetRate(IMFClockStateSink *iface, MFTIME systime, float rate) { - FIXME("%p, %s, %f.\n", iface, debugstr_time(systime), rate); + struct video_renderer *renderer = impl_from_IMFClockStateSink(iface); + IMFClockStateSink *sink; - return E_NOTIMPL; + TRACE("%p, %s, %f.\n", iface, debugstr_time(systime), rate); + + EnterCriticalSection(&renderer->cs); + + IMFVideoPresenter_OnClockSetRate(renderer->presenter, systime, rate); + if (SUCCEEDED(IMFTransform_QueryInterface(renderer->mixer, &IID_IMFClockStateSink, (void **)&sink))) + { + IMFClockStateSink_OnClockSetRate(sink, systime, rate); + IMFClockStateSink_Release(sink); + } + + LeaveCriticalSection(&renderer->cs); + + return S_OK; } static const IMFClockStateSinkVtbl video_renderer_clock_sink_vtbl = -- GitLab