mf/evr: Implement Flush() for streams.

Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
Nikolay Sivov 2021-05-07 12:27:20 +03:00 committed by Alexandre Julliard
parent 85d4cabc84
commit 7d51f493b8
1 changed files with 12 additions and 2 deletions

View File

@ -462,9 +462,19 @@ static HRESULT WINAPI video_stream_sink_PlaceMarker(IMFStreamSink *iface, MFSTRE
static HRESULT WINAPI video_stream_sink_Flush(IMFStreamSink *iface) static HRESULT WINAPI video_stream_sink_Flush(IMFStreamSink *iface)
{ {
FIXME("%p.\n", iface); struct video_stream *stream = impl_from_IMFStreamSink(iface);
HRESULT hr;
return E_NOTIMPL; TRACE("%p.\n", iface);
EnterCriticalSection(&stream->cs);
if (!stream->parent)
hr = MF_E_STREAMSINK_REMOVED;
else if (SUCCEEDED(hr = IMFTransform_ProcessMessage(stream->parent->mixer, MFT_MESSAGE_COMMAND_FLUSH, 0)))
hr = IMFVideoPresenter_ProcessMessage(stream->parent->presenter, MFVP_MESSAGE_FLUSH, 0);
LeaveCriticalSection(&stream->cs);
return hr;
} }
static const IMFStreamSinkVtbl video_stream_sink_vtbl = static const IMFStreamSinkVtbl video_stream_sink_vtbl =