Christian Costa : amstream: No media stream is created when the defaut renderer is used.

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


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

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

amstream: No media stream is created when the defaut renderer is used.

---

 dlls/amstream/amstream.c       |   50 ++++++++++++++++++---------------------
 dlls/amstream/tests/amstream.c |    2 +-
 2 files changed, 24 insertions(+), 28 deletions(-)

diff --git a/dlls/amstream/amstream.c b/dlls/amstream/amstream.c
index 0ff2904..7185f52 100644
--- a/dlls/amstream/amstream.c
+++ b/dlls/amstream/amstream.c
@@ -329,8 +329,29 @@ static HRESULT WINAPI IAMMultiMediaStreamImpl_AddMediaStream(IAMMultiMediaStream
     if (!IsEqualGUID(PurposeId, &MSPID_PrimaryVideo) && !IsEqualGUID(PurposeId, &MSPID_PrimaryAudio))
         return MS_E_PURPOSEID;
 
-    if (IsEqualGUID(PurposeId, &MSPID_PrimaryVideo) && (dwFlags & AMMSF_ADDDEFAULTRENDERER))
-        return MS_E_PURPOSEID;
+    if (dwFlags & AMMSF_ADDDEFAULTRENDERER)
+    {
+        if (IsEqualGUID(PurposeId, &MSPID_PrimaryVideo))
+        {
+            /* Default renderer not supported by video stream */
+            return MS_E_PURPOSEID;
+        }
+        else
+        {
+            IBaseFilter* dsoundrender_filter;
+
+            /* Create the default renderer for audio */
+            hr = CoCreateInstance(&CLSID_DSoundRender, NULL, CLSCTX_INPROC_SERVER, &IID_IBaseFilter, (LPVOID*)&dsoundrender_filter);
+            if (SUCCEEDED(hr))
+            {
+                 hr = IGraphBuilder_AddFilter(This->pFilterGraph, dsoundrender_filter, NULL);
+                 IBaseFilter_Release(dsoundrender_filter);
+            }
+
+            /* No media stream created when the default renderer is used */
+            return hr;
+        }
+    }
 
     hr = mediastream_create((IMultiMediaStream*)iface, PurposeId, This->StreamType, &pStream);
     if (SUCCEEDED(hr))
@@ -345,31 +366,6 @@ static HRESULT WINAPI IAMMultiMediaStreamImpl_AddMediaStream(IAMMultiMediaStream
         This->pStreams[This->nbStreams] = pStream;
         This->nbStreams++;
 
-        if (dwFlags & AMMSF_ADDDEFAULTRENDERER)
-        {
-            if (IsEqualGUID(PurposeId, &MSPID_PrimaryAudio))
-            {
-                IBaseFilter* dsoundrender_filter;
-
-                hr = CoCreateInstance(&CLSID_DSoundRender, NULL, CLSCTX_INPROC_SERVER, &IID_IBaseFilter, (LPVOID*)&dsoundrender_filter);
-                if (SUCCEEDED(hr))
-                {
-                     hr = IGraphBuilder_AddFilter(This->pFilterGraph, dsoundrender_filter, NULL);
-                     IBaseFilter_Release(dsoundrender_filter);
-                }
-                if (FAILED(hr))
-                {
-                     IMediaStream_Release(pStream);
-                     pStream = NULL;
-                     This->nbStreams--;
-                }
-            }
-            else
-            {
-                FIXME("Default renderer only supported for audio\n");
-            }
-        }
-
         if (ppNewStream)
             *ppNewStream = pStream;
     }
diff --git a/dlls/amstream/tests/amstream.c b/dlls/amstream/tests/amstream.c
index 6030c23..234df41 100644
--- a/dlls/amstream/tests/amstream.c
+++ b/dlls/amstream/tests/amstream.c
@@ -212,7 +212,7 @@ static void test_media_streams(void)
     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);
+    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);




More information about the wine-cvs mailing list