From 7e2bb678c70a7a5c3ba3d06e413b4446e6bcf02e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Michael=20M=C3=BCller?= Date: Tue, 28 Jul 2015 18:21:20 +0200 Subject: amstream: Implement IAMMediaStream::GetMultiMediaStream. --- dlls/amstream/mediastream.c | 30 ++++++++++++++++++++++++------ dlls/amstream/tests/amstream.c | 12 ++++++------ 2 files changed, 30 insertions(+), 12 deletions(-) diff --git a/dlls/amstream/mediastream.c b/dlls/amstream/mediastream.c index 51349abb8ea..98fca62e449 100644 --- a/dlls/amstream/mediastream.c +++ b/dlls/amstream/mediastream.c @@ -110,9 +110,15 @@ static HRESULT WINAPI DirectDrawMediaStreamImpl_IAMMediaStream_GetMultiMediaStre { DirectDrawMediaStreamImpl *This = impl_from_DirectDrawMediaStream_IAMMediaStream(iface); - FIXME("(%p/%p)->(%p) stub!\n", This, iface, multi_media_stream); + TRACE("(%p/%p)->(%p) stub!\n", This, iface, multi_media_stream); - return S_FALSE; + if (!multi_media_stream) + return E_POINTER; + + IMultiMediaStream_AddRef(This->parent); + *multi_media_stream = This->parent; + + return S_OK; } static HRESULT WINAPI DirectDrawMediaStreamImpl_IAMMediaStream_GetInformation(IAMMediaStream *iface, @@ -517,9 +523,15 @@ static HRESULT WINAPI AudioMediaStreamImpl_IAMMediaStream_GetMultiMediaStream(IA { AudioMediaStreamImpl *This = impl_from_AudioMediaStream_IAMMediaStream(iface); - FIXME("(%p/%p)->(%p) stub!\n", This, iface, multi_media_stream); + TRACE("(%p/%p)->(%p)\n", This, iface, multi_media_stream); - return S_FALSE; + if (!multi_media_stream) + return E_POINTER; + + IMultiMediaStream_AddRef(This->parent); + *multi_media_stream = This->parent; + + return S_OK; } static HRESULT WINAPI AudioMediaStreamImpl_IAMMediaStream_GetInformation(IAMMediaStream *iface, @@ -678,9 +690,15 @@ static HRESULT WINAPI AudioMediaStreamImpl_IAudioMediaStream_GetMultiMediaStream { AudioMediaStreamImpl *This = impl_from_IAudioMediaStream(iface); - FIXME("(%p/%p)->(%p) stub!\n", iface, This, multimedia_stream); + TRACE("(%p/%p)->(%p)\n", iface, This, multimedia_stream); - return S_FALSE; + if (!multimedia_stream) + return E_POINTER; + + IMultiMediaStream_AddRef(This->parent); + *multimedia_stream = This->parent; + + return S_OK; } static HRESULT WINAPI AudioMediaStreamImpl_IAudioMediaStream_GetInformation(IAudioMediaStream *iface, diff --git a/dlls/amstream/tests/amstream.c b/dlls/amstream/tests/amstream.c index eb9c5f962ce..4afa3e0489d 100644 --- a/dlls/amstream/tests/amstream.c +++ b/dlls/amstream/tests/amstream.c @@ -263,11 +263,11 @@ static void test_media_streams(void) ok((void*)am_media_stream == (void*)video_stream, "Not same interface, got %p expected %p\n", am_media_stream, video_stream); hr = IAMMediaStream_GetMultiMediaStream(am_media_stream, NULL); - todo_wine ok(hr == E_POINTER, "Expected E_POINTER, got %x\n", hr); + ok(hr == E_POINTER, "Expected E_POINTER, got %x\n", hr); multi_media_stream = (void *)0xdeadbeef; hr = IAMMediaStream_GetMultiMediaStream(am_media_stream, &multi_media_stream); - todo_wine ok(hr == S_OK, "IAMMediaStream_GetMultiMediaStream returned: %x\n", hr); + ok(hr == S_OK, "IAMMediaStream_GetMultiMediaStream returned: %x\n", hr); if (hr == S_OK) { ok((void *)multi_media_stream == (void *)pams, "Expected %p, got %p\n", pams, multi_media_stream); @@ -376,11 +376,11 @@ static void test_media_streams(void) ok((void*)am_media_stream == (void*)audio_stream, "Not same interface, got %p expected %p\n", am_media_stream, audio_stream); hr = IAMMediaStream_GetMultiMediaStream(am_media_stream, NULL); - todo_wine ok(hr == E_POINTER, "Expected E_POINTER, got %x\n", hr); + ok(hr == E_POINTER, "Expected E_POINTER, got %x\n", hr); multi_media_stream = (void *)0xdeadbeef; hr = IAMMediaStream_GetMultiMediaStream(am_media_stream, &multi_media_stream); - todo_wine ok(hr == S_OK, "IAMMediaStream_GetMultiMediaStream returned: %x\n", hr); + ok(hr == S_OK, "IAMMediaStream_GetMultiMediaStream returned: %x\n", hr); if (hr == S_OK) { ok((void *)multi_media_stream == (void *)pams, "Expected %p, got %p\n", pams, multi_media_stream); @@ -414,11 +414,11 @@ static void test_media_streams(void) ok(hr == S_OK, "IAudioMediaStream_CreateSample returned: %x\n", hr); hr = IAudioMediaStream_GetMultiMediaStream(audio_media_stream, NULL); - todo_wine ok(hr == E_POINTER, "Expected E_POINTER, got %x\n", hr); + ok(hr == E_POINTER, "Expected E_POINTER, got %x\n", hr); multi_media_stream = (void *)0xdeadbeef; hr = IAudioMediaStream_GetMultiMediaStream(audio_media_stream, &multi_media_stream); - todo_wine ok(hr == S_OK, "IAudioMediaStream_GetMultiMediaStream returned: %x\n", hr); + ok(hr == S_OK, "IAudioMediaStream_GetMultiMediaStream returned: %x\n", hr); if (hr == S_OK) { ok((void *)multi_media_stream == (void *)pams, "Expected %p, got %p\n", pams, multi_media_stream); -- 2.11.0