Nikolay Sivov : mfreadwrite: Implement GetServiceForStream() for media source.
Module: wine Branch: master Commit: 160b4093cfb97d837d19bd8c2cdf826cfa4ffc09 URL: https://source.winehq.org/git/wine.git/?a=commit;h=160b4093cfb97d837d19bd8c2... Author: Nikolay Sivov <nsivov(a)codeweavers.com> Date: Tue Mar 19 11:17:33 2019 +0300 mfreadwrite: Implement GetServiceForStream() for media source. Signed-off-by: Nikolay Sivov <nsivov(a)codeweavers.com> Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- dlls/mfreadwrite/main.c | 37 +++++++++++++++++++++++++++++++++---- 1 file changed, 33 insertions(+), 4 deletions(-) diff --git a/dlls/mfreadwrite/main.c b/dlls/mfreadwrite/main.c index 88482f7..3dac3e4 100644 --- a/dlls/mfreadwrite/main.c +++ b/dlls/mfreadwrite/main.c @@ -25,7 +25,6 @@ #include "windef.h" #include "winbase.h" -#include "initguid.h" #include "ole2.h" #include "rpcproxy.h" @@ -288,9 +287,39 @@ static HRESULT WINAPI src_reader_Flush(IMFSourceReader *iface, DWORD index) static HRESULT WINAPI src_reader_GetServiceForStream(IMFSourceReader *iface, DWORD index, REFGUID service, REFIID riid, void **object) { - srcreader *This = impl_from_IMFSourceReader(iface); - FIXME("%p, 0x%08x, %s, %s, %p\n", This, index, debugstr_guid(service), debugstr_guid(riid), object); - return E_NOTIMPL; + struct source_reader *reader = impl_from_IMFSourceReader(iface); + IUnknown *obj = NULL; + HRESULT hr; + + TRACE("%p, %#x, %s, %s, %p\n", iface, index, debugstr_guid(service), debugstr_guid(riid), object); + + switch (index) + { + case MF_SOURCE_READER_MEDIASOURCE: + obj = (IUnknown *)reader->source; + break; + default: + FIXME("Unsupported index %#x.\n", index); + return E_NOTIMPL; + } + + if (IsEqualGUID(service, &GUID_NULL)) + { + hr = IUnknown_QueryInterface(obj, riid, object); + } + else + { + IMFGetService *gs; + + hr = IUnknown_QueryInterface(obj, &IID_IMFGetService, (void **)&gs); + if (SUCCEEDED(hr)) + { + hr = IMFGetService_GetService(gs, service, riid, object); + IMFGetService_Release(gs); + } + } + + return hr; } static HRESULT WINAPI src_reader_GetPresentationAttribute(IMFSourceReader *iface, DWORD index,
participants (1)
-
Alexandre Julliard