Christian Costa : amstream/tests: Add media streams tests.

Alexandre Julliard julliard at winehq.org
Mon Mar 26 12:29:34 CDT 2012


Module: wine
Branch: master
Commit: 872b5153041188c32edface4a994b44b08ab1f90
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=872b5153041188c32edface4a994b44b08ab1f90

Author: Christian Costa <titan.costa at gmail.com>
Date:   Mon Mar 26 10:09:41 2012 +0200

amstream/tests: Add media streams tests.

---

 dlls/amstream/tests/amstream.c |   90 ++++++++++++++++++++++++++++++++++++++++
 1 files changed, 90 insertions(+), 0 deletions(-)

diff --git a/dlls/amstream/tests/amstream.c b/dlls/amstream/tests/amstream.c
index a4d4834..97fc7f1 100644
--- a/dlls/amstream/tests/amstream.c
+++ b/dlls/amstream/tests/amstream.c
@@ -23,6 +23,7 @@
 #include "wine/test.h"
 #include "initguid.h"
 #include "amstream.h"
+#include "vfwmsgs.h"
 
 static const WCHAR filenameW[] = {'t','e','s','t','.','a','v','i',0};
 
@@ -163,12 +164,101 @@ error:
     release_ammultimediastream();
 }
 
+static void test_media_streams(void)
+{
+    HRESULT hr;
+    IMediaStream *video_stream = NULL;
+    IMediaStream *audio_stream = NULL;
+    IMediaStream *dummy_stream;
+    IDirectDrawMediaStream *ddraw_stream = NULL;
+    IDirectDrawStreamSample *ddraw_sample = NULL;
+
+    if (!create_ammultimediastream())
+        return;
+    if (!create_directdraw())
+    {
+        release_ammultimediastream();
+        return;
+    }
+
+    hr = IAMMultiMediaStream_Initialize(pams, STREAMTYPE_READ, 0, NULL);
+    ok(hr == S_OK, "IAMMultiMediaStream_Initialize 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);
+
+    /* Verify there is no default renderer for video stream */
+    hr = IAMMultiMediaStream_AddMediaStream(pams, (IUnknown*)pdd7, &MSPID_PrimaryVideo, AMMSF_ADDDEFAULTRENDERER, NULL);
+    todo_wine ok(hr == MS_E_PURPOSEID, "IAMMultiMediaStream_AddMediaStream returned: %x\n", hr);
+    hr = IAMMultiMediaStream_GetMediaStream(pams, &MSPID_PrimaryVideo, &video_stream);
+    todo_wine ok(hr == MS_E_NOSTREAM, "IAMMultiMediaStream_GetMediaStream returned: %x\n", hr);
+    hr = IAMMultiMediaStream_AddMediaStream(pams, NULL, &MSPID_PrimaryVideo, AMMSF_ADDDEFAULTRENDERER, NULL);
+    todo_wine ok(hr == MS_E_PURPOSEID, "IAMMultiMediaStream_AddMediaStream returned: %x\n", hr);
+    hr = IAMMultiMediaStream_GetMediaStream(pams, &MSPID_PrimaryVideo, &video_stream);
+    todo_wine ok(hr == MS_E_NOSTREAM, "IAMMultiMediaStream_GetMediaStream returned: %x\n", hr);
+
+    /* Verify normal case for video stream */
+    hr = IAMMultiMediaStream_AddMediaStream(pams, NULL, &MSPID_PrimaryVideo, 0, NULL);
+    ok(hr == S_OK, "IAMMultiMediaStream_AddMediaStream returned: %x\n", hr);
+    hr = IAMMultiMediaStream_GetMediaStream(pams, &MSPID_PrimaryVideo, &video_stream);
+    ok(hr == S_OK, "IAMMultiMediaStream_GetMediaStream returned: %x\n", hr);
+
+    /* 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);
+
+    /* Verify no stream is created when using the default renderer for audio stream */
+    hr = IAMMultiMediaStream_AddMediaStream(pams, NULL, &MSPID_PrimaryAudio, AMMSF_ADDDEFAULTRENDERER, NULL);
+    ok((hr == S_OK) || (hr == VFW_E_NO_AUDIO_HARDWARE), "IAMMultiMediaStream_AddMediaStream returned: %x\n", hr);
+    hr = IAMMultiMediaStream_GetMediaStream(pams, &MSPID_PrimaryAudio, &audio_stream);
+    todo_wine ok(hr == MS_E_NOSTREAM, "IAMMultiMediaStream_GetMediaStream returned: %x\n", hr);
+
+    /* Verify a stream is created when no default renderer is used */
+    hr = IAMMultiMediaStream_AddMediaStream(pams, NULL, &MSPID_PrimaryAudio, 0, NULL);
+    ok(hr == S_OK, "IAMMultiMediaStream_AddMediaStream returned: %x\n", hr);
+    hr = IAMMultiMediaStream_GetMediaStream(pams, &MSPID_PrimaryAudio, &audio_stream);
+    ok(hr == S_OK, "IAMMultiMediaStream_GetMediaStream 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);
+    todo_wine ok(hr == MS_E_PURPOSEID, "IAMMultiMediaStream_AddMediaStream returned: %x\n", hr);
+
+    if (video_stream)
+    {
+        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);
+    if (video_stream)
+        IMediaStream_Release(video_stream);
+    if (audio_stream)
+        IMediaStream_Release(audio_stream);
+
+    release_directdraw();
+    release_ammultimediastream();
+}
+
 START_TEST(amstream)
 {
     HANDLE file;
 
     CoInitializeEx(NULL, COINIT_MULTITHREADED);
 
+    test_media_streams();
+
     file = CreateFileW(filenameW, 0, 0, NULL, OPEN_EXISTING, 0, NULL);
     if (file != INVALID_HANDLE_VALUE)
     {




More information about the wine-cvs mailing list