[PATCH 7/8] amstream: Implement IAMMultiMediaStreamImpl_AddMediaStream + add tests.

Christian Costa titan.costa at gmail.com
Thu Mar 15 18:16:55 CDT 2012


---
 dlls/amstream/amstream.c       |   13 +++++++++++--
 dlls/amstream/tests/amstream.c |    9 +++++++++
 2 files changed, 20 insertions(+), 2 deletions(-)

diff --git a/dlls/amstream/amstream.c b/dlls/amstream/amstream.c
index 7185f52..b599bb6 100644
--- a/dlls/amstream/amstream.c
+++ b/dlls/amstream/amstream.c
@@ -310,10 +310,19 @@ static HRESULT WINAPI IAMMultiMediaStreamImpl_GetFilterGraph(IAMMultiMediaStream
 static HRESULT WINAPI IAMMultiMediaStreamImpl_GetFilter(IAMMultiMediaStream* iface, IMediaStreamFilter** ppFilter)
 {
     IAMMultiMediaStreamImpl *This = impl_from_IAMMultiMediaStream(iface);
+    HRESULT hr = S_OK;
 
-    FIXME("(%p/%p)->(%p) stub!\n", This, iface, ppFilter); 
+    TRACE("(%p/%p)->(%p)\n", This, iface, ppFilter);
 
-    return E_NOTIMPL;
+    if (!ppFilter)
+        return E_POINTER;
+
+    *ppFilter = NULL;
+
+    if (This->media_stream_filter)
+        hr = IBaseFilter_QueryInterface(This->media_stream_filter, &IID_IMediaStreamFilter, (LPVOID*)ppFilter);
+
+    return hr;
 }
 
 static HRESULT WINAPI IAMMultiMediaStreamImpl_AddMediaStream(IAMMultiMediaStream* iface, IUnknown* pStreamObject, const MSPID* PurposeId,
diff --git a/dlls/amstream/tests/amstream.c b/dlls/amstream/tests/amstream.c
index 4aac021..7a70bdf 100644
--- a/dlls/amstream/tests/amstream.c
+++ b/dlls/amstream/tests/amstream.c
@@ -171,6 +171,7 @@ static void test_media_streams(void)
     IMediaStream *dummy_stream;
     IDirectDrawMediaStream *ddraw_stream = NULL;
     IDirectDrawStreamSample *ddraw_sample = NULL;
+    IMediaStreamFilter* media_stream_filter = NULL;
 
     if (!create_ammultimediastream())
         return;
@@ -183,6 +184,12 @@ static void test_media_streams(void)
     hr = IAMMultiMediaStream_Initialize(pams, STREAMTYPE_READ, 0, NULL);
     ok(hr == S_OK, "IAMMultiMediaStream_Initialize returned: %x\n", hr);
 
+    /* Retreive media stream filter */
+    hr = IAMMultiMediaStream_GetFilter(pams, NULL);
+    ok(hr == E_POINTER, "IAMMultiMediaStream_GetFilter returned: %x\n", hr);
+    hr = IAMMultiMediaStream_GetFilter(pams, &media_stream_filter);
+    ok(hr == S_OK, "IAMMultiMediaStream_GetFilter returned: %x\n", hr);
+
     /* Verify there is no video media stream */
     hr = IAMMultiMediaStream_GetMediaStream(pams, &MSPID_PrimaryVideo, &video_stream);
     ok(hr == MS_E_NOSTREAM, "IAMMultiMediaStream_GetMediaStream returned: %x\n", hr);
@@ -245,6 +252,8 @@ static void test_media_streams(void)
         IMediaStream_Release(video_stream);
     if (audio_stream)
         IMediaStream_Release(audio_stream);
+    if (media_stream_filter)
+        IMediaStreamFilter_Release(media_stream_filter);
 
     release_directdraw();
     release_ammultimediastream();




More information about the wine-patches mailing list