Module: wine Branch: master Commit: 59adbf66708e61553881da32b35334de6e50fc2e URL: https://gitlab.winehq.org/wine/wine/-/commit/59adbf66708e61553881da32b35334d...
Author: Ziqing Hui zhui@codeweavers.com Date: Fri Aug 11 11:33:27 2023 +0800
winegstreamer: Implement GetStreamSinkByIndex for media sink.
---
dlls/winegstreamer/media_sink.c | 26 ++++++++++++++++++++++++-- 1 file changed, 24 insertions(+), 2 deletions(-)
diff --git a/dlls/winegstreamer/media_sink.c b/dlls/winegstreamer/media_sink.c index 54a1c839758..4418a82096c 100644 --- a/dlls/winegstreamer/media_sink.c +++ b/dlls/winegstreamer/media_sink.c @@ -641,9 +641,31 @@ static HRESULT WINAPI media_sink_GetStreamSinkCount(IMFFinalizableMediaSink *ifa static HRESULT WINAPI media_sink_GetStreamSinkByIndex(IMFFinalizableMediaSink *iface, DWORD index, IMFStreamSink **stream) { - FIXME("iface %p, index %lu, stream %p stub!\n", iface, index, stream); + struct media_sink *media_sink = impl_from_IMFFinalizableMediaSink(iface); + struct stream_sink *stream_sink; + HRESULT hr = MF_E_INVALIDINDEX; + DWORD entry_index = 0;
- return E_NOTIMPL; + TRACE("iface %p, index %lu, stream %p stub!\n", iface, index, stream); + + if (!stream) + return E_POINTER; + + EnterCriticalSection(&media_sink->cs); + + LIST_FOR_EACH_ENTRY(stream_sink, &media_sink->stream_sinks, struct stream_sink, entry) + { + if (entry_index++ == index) + { + IMFStreamSink_AddRef((*stream = &stream_sink->IMFStreamSink_iface)); + hr = S_OK; + break; + } + } + + LeaveCriticalSection(&media_sink->cs); + + return hr; }
static HRESULT WINAPI media_sink_GetStreamSinkById(IMFFinalizableMediaSink *iface, DWORD stream_sink_id,