[PATCH 4/4] amstream/tests: Add tests for querying interfaces and creating samples on video and audio media streams.

Christian Costa titan.costa at gmail.com
Tue Mar 27 16:46:19 CDT 2012


---
 dlls/amstream/tests/amstream.c |   88 ++++++++++++++++++++++++++++++++--------
 1 files changed, 71 insertions(+), 17 deletions(-)

diff --git a/dlls/amstream/tests/amstream.c b/dlls/amstream/tests/amstream.c
index 176df7e..39add30 100644
--- a/dlls/amstream/tests/amstream.c
+++ b/dlls/amstream/tests/amstream.c
@@ -171,8 +171,6 @@ static void test_media_streams(void)
     IMediaStream *video_stream = NULL;
     IMediaStream *audio_stream = NULL;
     IMediaStream *dummy_stream;
-    IDirectDrawMediaStream *ddraw_stream = NULL;
-    IDirectDrawStreamSample *ddraw_sample = NULL;
     IMediaStreamFilter* media_stream_filter = NULL;
 
     if (!create_ammultimediastream())
@@ -192,6 +190,12 @@ static void test_media_streams(void)
     hr = IAMMultiMediaStream_GetFilter(pams, &media_stream_filter);
     ok(hr == S_OK, "IAMMultiMediaStream_GetFilter returned: %x\n", hr);
 
+    /* Verify behaviour with invalid purpose id */
+    hr = IAMMultiMediaStream_GetMediaStream(pams, &IID_IUnknown, &dummy_stream);
+    ok(hr == MS_E_NOSTREAM, "IAMMultiMediaStream_GetMediaStream returned: %x\n", hr);
+    hr = IAMMultiMediaStream_AddMediaStream(pams, NULL, &IID_IUnknown, 0, NULL);
+    ok(hr == MS_E_PURPOSEID, "IAMMultiMediaStream_AddMediaStream 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);
@@ -222,6 +226,38 @@ static void test_media_streams(void)
             IMediaStream_Release(dummy_stream);
     }
 
+    /* Check interfaces and samples for video */
+    if (video_stream)
+    {
+        IAMMediaStream* am_media_stream;
+        IAudioMediaStream* audio_media_stream;
+        IDirectDrawMediaStream *ddraw_stream = NULL;
+        IDirectDrawStreamSample *ddraw_sample = NULL;
+
+        hr = IMediaStream_QueryInterface(video_stream, &IID_IAMMediaStream, (LPVOID*)&am_media_stream);
+        todo_wine ok(hr == S_OK, "IMediaStream_QueryInterface returned: %x\n", hr);
+        todo_wine ok((void*)am_media_stream == (void*)video_stream, "Not same interface, got %p expected %p\n", am_media_stream, video_stream);
+        if (hr == S_OK)
+            IAMMediaStream_Release(am_media_stream);
+
+        hr = IMediaStream_QueryInterface(video_stream, &IID_IAudioMediaStream, (LPVOID*)&audio_media_stream);
+        ok(hr == E_NOINTERFACE, "IMediaStream_QueryInterface returned: %x\n", hr);
+
+        hr = IMediaStream_QueryInterface(video_stream, &IID_IDirectDrawMediaStream, (LPVOID*)&ddraw_stream);
+        ok(hr == S_OK, "IMediaStream_QueryInterface returned: %x\n", hr);
+
+        if (SUCCEEDED(hr))
+        {
+            hr = IDirectDrawMediaStream_CreateSample(ddraw_stream, NULL, NULL, 0, &ddraw_sample);
+            todo_wine ok(hr==S_OK, "IDirectDrawMediaStream_CreateSample returned: %x\n", hr);
+        }
+
+        if (ddraw_sample)
+            IDirectDrawMediaSample_Release(ddraw_sample);
+        if (ddraw_stream)
+            IDirectDrawMediaStream_Release(ddraw_stream);
+    }
+
     /* Verify there is no audio media stream */
     hr = IAMMultiMediaStream_GetMediaStream(pams, &MSPID_PrimaryAudio, &audio_stream);
     ok(hr == MS_E_NOSTREAM, "IAMMultiMediaStream_GetMediaStream returned: %x\n", hr);
@@ -274,28 +310,46 @@ static void test_media_streams(void)
             IMediaStream_Release(dummy_stream);
     }
 
-    /* Verify behaviour with invalid purpose id */
-    hr = IAMMultiMediaStream_GetMediaStream(pams, &IID_IUnknown, &dummy_stream);
-    ok(hr == MS_E_NOSTREAM, "IAMMultiMediaStream_GetMediaStream returned: %x\n", hr);
-    hr = IAMMultiMediaStream_AddMediaStream(pams, NULL, &IID_IUnknown, 0, NULL);
-    ok(hr == MS_E_PURPOSEID, "IAMMultiMediaStream_AddMediaStream returned: %x\n", hr);
-
-    if (video_stream)
+   /* Check interfaces and samples for audio */
+    if (audio_stream)
     {
-        hr = IMediaStream_QueryInterface(video_stream, &IID_IDirectDrawMediaStream, (LPVOID*)&ddraw_stream);
-        ok(hr == S_OK, "IMediaStream_QueryInterface returned: %x\n", hr);
+        IAMMediaStream* am_media_stream;
+        IDirectDrawMediaStream* ddraw_stream = NULL;
+        IAudioMediaStream* audio_media_stream = NULL;
+        IAudioStreamSample *audio_sample = NULL;
+
+        hr = IMediaStream_QueryInterface(audio_stream, &IID_IAMMediaStream, (LPVOID*)&am_media_stream);
+        todo_wine ok(hr == S_OK, "IMediaStream_QueryInterface returned: %x\n", hr);
+        todo_wine ok((void*)am_media_stream == (void*)audio_stream, "Not same interface, got %p expected %p\n", am_media_stream, video_stream);
+        if (hr == S_OK)
+            IAMMediaStream_Release(am_media_stream);
+
+        hr = IMediaStream_QueryInterface(audio_stream, &IID_IDirectDrawMediaStream, (LPVOID*)&ddraw_stream);
+        todo_wine ok(hr == E_NOINTERFACE, "IMediaStream_QueryInterface returned: %x\n", hr);
+
+        hr = IMediaStream_QueryInterface(audio_stream, &IID_IAudioMediaStream, (LPVOID*)&audio_media_stream);
+        todo_wine ok(hr == S_OK, "IMediaStream_QueryInterface returned: %x\n", hr);
 
         if (SUCCEEDED(hr))
         {
-            hr = IDirectDrawMediaStream_CreateSample(ddraw_stream, NULL, NULL, 0, &ddraw_sample);
-            todo_wine ok(hr==S_OK, "IDirectDrawMediaStream_CreateSample returned: %x\n", hr);
+            IAudioData* audio_data = NULL;
+            hr = CoCreateInstance(&CLSID_AMAudioData, NULL, CLSCTX_INPROC_SERVER, &IID_IAudioData, (void **)&audio_data);
+            todo_wine ok(hr == S_OK, "CoCreateInstance returned: %x\n", hr);
+
+            hr = IAudioMediaStream_CreateSample(audio_media_stream, NULL, 0, &audio_sample);
+            todo_wine ok(hr == E_POINTER, "IAudioMediaStream_CreateSample returned: %x\n", hr);
+            hr = IAudioMediaStream_CreateSample(audio_media_stream, audio_data, 0, &audio_sample);
+            todo_wine ok(hr == S_OK, "IAudioMediaStream_CreateSample returned: %x\n", hr);
+
+            if (audio_data)
+                IAudioData_Release(audio_data);
+            if (audio_sample)
+                IAudioStreamSample_Release(audio_sample);
+            if (audio_media_stream)
+                IAudioMediaStream_Release(audio_media_stream);
         }
     }
 
-    if (ddraw_sample)
-        IDirectDrawMediaSample_Release(ddraw_sample);
-    if (ddraw_stream)
-        IDirectDrawMediaStream_Release(ddraw_stream);
     if (video_stream)
         IMediaStream_Release(video_stream);
     if (audio_stream)




More information about the wine-patches mailing list