[PATCH 0/3] MR3570: winegstreamer: Implement GetStreamSink{Count,ByIndex,ById} for media sink.
From: Ziqing Hui <zhui(a)codeweavers.com> --- dlls/winegstreamer/media_sink.c | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/dlls/winegstreamer/media_sink.c b/dlls/winegstreamer/media_sink.c index 9083dea6709..54a1c839758 100644 --- a/dlls/winegstreamer/media_sink.c +++ b/dlls/winegstreamer/media_sink.c @@ -624,9 +624,18 @@ static HRESULT WINAPI media_sink_RemoveStreamSink(IMFFinalizableMediaSink *iface static HRESULT WINAPI media_sink_GetStreamSinkCount(IMFFinalizableMediaSink *iface, DWORD *count) { - FIXME("iface %p, count %p stub!\n", iface, count); + struct media_sink *media_sink = impl_from_IMFFinalizableMediaSink(iface); - return E_NOTIMPL; + TRACE("iface %p, count %p.\n", iface, count); + + if (!count) + return E_POINTER; + + EnterCriticalSection(&media_sink->cs); + *count = list_count(&media_sink->stream_sinks); + LeaveCriticalSection(&media_sink->cs); + + return S_OK; } static HRESULT WINAPI media_sink_GetStreamSinkByIndex(IMFFinalizableMediaSink *iface, DWORD index, -- GitLab https://gitlab.winehq.org/wine/wine/-/merge_requests/3570
From: Ziqing Hui <zhui(a)codeweavers.com> --- 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, -- GitLab https://gitlab.winehq.org/wine/wine/-/merge_requests/3570
From: Ziqing Hui <zhui(a)codeweavers.com> --- dlls/winegstreamer/media_sink.c | 22 ++++++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) diff --git a/dlls/winegstreamer/media_sink.c b/dlls/winegstreamer/media_sink.c index 4418a82096c..fcea67eb8f1 100644 --- a/dlls/winegstreamer/media_sink.c +++ b/dlls/winegstreamer/media_sink.c @@ -671,9 +671,27 @@ static HRESULT WINAPI media_sink_GetStreamSinkByIndex(IMFFinalizableMediaSink *i static HRESULT WINAPI media_sink_GetStreamSinkById(IMFFinalizableMediaSink *iface, DWORD stream_sink_id, IMFStreamSink **stream) { - FIXME("iface %p, stream_sink_id %#lx, stream %p stub!\n", iface, stream_sink_id, stream); + struct media_sink *media_sink = impl_from_IMFFinalizableMediaSink(iface); + struct stream_sink *stream_sink; + HRESULT hr; - return E_NOTIMPL; + TRACE("iface %p, stream_sink_id %#lx, stream %p.\n", iface, stream_sink_id, stream); + + if (!stream) + return E_POINTER; + + EnterCriticalSection(&media_sink->cs); + + hr = MF_E_INVALIDSTREAMNUMBER; + if ((stream_sink = media_sink_get_stream_sink_by_id(media_sink, stream_sink_id))) + { + IMFStreamSink_AddRef((*stream = &stream_sink->IMFStreamSink_iface)); + hr = S_OK; + } + + LeaveCriticalSection(&media_sink->cs); + + return hr; } static HRESULT WINAPI media_sink_SetPresentationClock(IMFFinalizableMediaSink *iface, IMFPresentationClock *clock) -- GitLab https://gitlab.winehq.org/wine/wine/-/merge_requests/3570
This merge request was approved by Rémi Bernon. -- https://gitlab.winehq.org/wine/wine/-/merge_requests/3570
participants (3)
-
Rémi Bernon -
Ziqing Hui -
Ziqing Hui (@zhui)