[PATCH 1/4] amstream: rename mediastream to ddrawmediastream. (resend)

Christian Costa titan.costa at gmail.com
Thu Apr 5 01:31:08 CDT 2012


---
 dlls/amstream/Makefile.in        |    2 
 dlls/amstream/amstream.c         |    6 +
 dlls/amstream/amstream_private.h |    2 
 dlls/amstream/ddrawmediastream.c |  256 ++++++++++++++++++++++++++++++++++++++
 dlls/amstream/mediastream.c      |  251 -------------------------------------
 5 files changed, 263 insertions(+), 254 deletions(-)
 create mode 100644 dlls/amstream/ddrawmediastream.c
 delete mode 100644 dlls/amstream/mediastream.c

diff --git a/dlls/amstream/Makefile.in b/dlls/amstream/Makefile.in
index 35cfae1..047bb73 100644
--- a/dlls/amstream/Makefile.in
+++ b/dlls/amstream/Makefile.in
@@ -4,8 +4,8 @@ IMPORTS   = strmiids strmbase uuid ole32 advapi32
 C_SRCS = \
 	amstream.c \
 	audiodata.c \
+	ddrawmediastream.c \
 	main.c \
-	mediastream.c \
 	mediastreamfilter.c
 
 IDL_R_SRCS = amstream_classes.idl
diff --git a/dlls/amstream/amstream.c b/dlls/amstream/amstream.c
index 150f412..af9cb86 100644
--- a/dlls/amstream/amstream.c
+++ b/dlls/amstream/amstream.c
@@ -368,7 +368,11 @@ static HRESULT WINAPI IAMMultiMediaStreamImpl_AddMediaStream(IAMMultiMediaStream
         }
     }
 
-    hr = mediastream_create((IMultiMediaStream*)iface, PurposeId, This->StreamType, &pStream);
+    if (IsEqualGUID(PurposeId, &MSPID_PrimaryVideo))
+        hr = ddrawmediastream_create((IMultiMediaStream*)iface, PurposeId, This->StreamType, &pStream);
+    else
+        /* FIXME: should call audiomediastream_create instead */
+        hr = ddrawmediastream_create((IMultiMediaStream*)iface, PurposeId, This->StreamType, &pStream);
     if (SUCCEEDED(hr))
     {
         pNewStreams = CoTaskMemRealloc(This->pStreams, (This->nbStreams+1) * sizeof(IMediaStream*));
diff --git a/dlls/amstream/amstream_private.h b/dlls/amstream/amstream_private.h
index e40c409..d81b915 100644
--- a/dlls/amstream/amstream_private.h
+++ b/dlls/amstream/amstream_private.h
@@ -35,7 +35,7 @@
 HRESULT AM_create(IUnknown *pUnkOuter, LPVOID *ppObj) DECLSPEC_HIDDEN;
 HRESULT AMAudioData_create(IUnknown *pUnkOuter, LPVOID *ppObj) DECLSPEC_HIDDEN;
 HRESULT MediaStreamFilter_create(IUnknown *pUnkOuter, LPVOID *ppObj) DECLSPEC_HIDDEN;
-HRESULT mediastream_create(IMultiMediaStream *Parent, const MSPID *pPurposeId,
+HRESULT ddrawmediastream_create(IMultiMediaStream *Parent, const MSPID *pPurposeId,
         STREAM_TYPE StreamType, IMediaStream **ppMediaStream) DECLSPEC_HIDDEN;
 
 #endif /* __AMSTREAM_PRIVATE_INCLUDED__ */
diff --git a/dlls/amstream/ddrawmediastream.c b/dlls/amstream/ddrawmediastream.c
new file mode 100644
index 0000000..59f3752
--- /dev/null
+++ b/dlls/amstream/ddrawmediastream.c
@@ -0,0 +1,256 @@
+/*
+ * Implementation of IDirectDrawMediaStream Interface
+ *
+ * Copyright 2005, 2008 Christian Costa
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#include "wine/debug.h"
+
+#define COBJMACROS
+
+#include "winbase.h"
+#include "wingdi.h"
+
+#include "amstream_private.h"
+#include "amstream.h"
+
+#include "ddstream.h"
+
+WINE_DEFAULT_DEBUG_CHANNEL(amstream);
+
+typedef struct {
+    IDirectDrawMediaStream IDirectDrawMediaStream_iface;
+    LONG ref;
+    IMultiMediaStream* Parent;
+    MSPID PurposeId;
+    STREAM_TYPE StreamType;
+} IDirectDrawMediaStreamImpl;
+
+static inline IDirectDrawMediaStreamImpl *impl_from_IDirectDrawMediaStream(IDirectDrawMediaStream *iface)
+{
+    return CONTAINING_RECORD(iface, IDirectDrawMediaStreamImpl, IDirectDrawMediaStream_iface);
+}
+
+/*** IUnknown methods ***/
+static HRESULT WINAPI IDirectDrawMediaStreamImpl_QueryInterface(IDirectDrawMediaStream *iface,
+        REFIID riid, void **ppv)
+{
+    IDirectDrawMediaStreamImpl *This = impl_from_IDirectDrawMediaStream(iface);
+
+    TRACE("(%p/%p)->(%s,%p)\n", iface, This, debugstr_guid(riid), ppv);
+
+    if (IsEqualGUID(riid, &IID_IUnknown) ||
+        IsEqualGUID(riid, &IID_IMediaStream) ||
+        IsEqualGUID(riid, &IID_IDirectDrawMediaStream))
+    {
+        IUnknown_AddRef(iface);
+        *ppv = This;
+        return S_OK;
+    }
+
+    ERR("(%p)->(%s,%p),not found\n", This, debugstr_guid(riid), ppv);
+    return E_NOINTERFACE;
+}
+
+static ULONG WINAPI IDirectDrawMediaStreamImpl_AddRef(IDirectDrawMediaStream *iface)
+{
+    IDirectDrawMediaStreamImpl *This = impl_from_IDirectDrawMediaStream(iface);
+
+    TRACE("(%p/%p)\n", iface, This);
+
+    return InterlockedIncrement(&This->ref);
+}
+
+static ULONG WINAPI IDirectDrawMediaStreamImpl_Release(IDirectDrawMediaStream *iface)
+{
+    IDirectDrawMediaStreamImpl *This = impl_from_IDirectDrawMediaStream(iface);
+    ULONG ref = InterlockedDecrement(&This->ref);
+
+    TRACE("(%p/%p)\n", iface, This);
+
+    if (!ref)
+        HeapFree(GetProcessHeap(), 0, This);
+
+    return ref;
+}
+
+/*** IMediaStream methods ***/
+static HRESULT WINAPI IDirectDrawMediaStreamImpl_GetMultiMediaStream(IDirectDrawMediaStream *iface,
+        IMultiMediaStream** ppMultiMediaStream)
+{
+    IDirectDrawMediaStreamImpl *This = impl_from_IDirectDrawMediaStream(iface);
+
+    FIXME("(%p/%p)->(%p) stub!\n", This, iface, ppMultiMediaStream);
+
+    return S_FALSE;
+}
+
+static HRESULT WINAPI IDirectDrawMediaStreamImpl_GetInformation(IDirectDrawMediaStream *iface,
+        MSPID *pPurposeId, STREAM_TYPE *pType)
+{
+    IDirectDrawMediaStreamImpl *This = impl_from_IDirectDrawMediaStream(iface);
+
+    TRACE("(%p/%p)->(%p,%p)\n", This, iface, pPurposeId, pType);
+
+    if (pPurposeId)
+        *pPurposeId = This->PurposeId;
+    if (pType)
+        *pType = This->StreamType;
+
+    return S_OK;
+}
+
+static HRESULT WINAPI IDirectDrawMediaStreamImpl_SetSameFormat(IDirectDrawMediaStream *iface,
+        IMediaStream *pStreamThatHasDesiredFormat, DWORD dwFlags)
+{
+    IDirectDrawMediaStreamImpl *This = impl_from_IDirectDrawMediaStream(iface);
+
+    FIXME("(%p/%p)->(%p,%x) stub!\n", This, iface, pStreamThatHasDesiredFormat, dwFlags);
+
+    return S_FALSE;
+}
+
+static HRESULT WINAPI IDirectDrawMediaStreamImpl_AllocateSample(IDirectDrawMediaStream *iface,
+        DWORD dwFlags, IStreamSample **ppSample)
+{
+    IDirectDrawMediaStreamImpl *This = impl_from_IDirectDrawMediaStream(iface);
+
+    FIXME("(%p/%p)->(%x,%p) stub!\n", This, iface, dwFlags, ppSample);
+
+    return S_FALSE;
+}
+
+static HRESULT WINAPI IDirectDrawMediaStreamImpl_CreateSharedSample(IDirectDrawMediaStream *iface,
+        IStreamSample *pExistingSample, DWORD dwFlags, IStreamSample **ppSample)
+{
+    IDirectDrawMediaStreamImpl *This = impl_from_IDirectDrawMediaStream(iface);
+
+    FIXME("(%p/%p)->(%p,%x,%p) stub!\n", This, iface, pExistingSample, dwFlags, ppSample);
+
+    return S_FALSE;
+}
+
+static HRESULT WINAPI IDirectDrawMediaStreamImpl_SendEndOfStream(IDirectDrawMediaStream *iface,
+        DWORD dwFlags)
+{
+    IDirectDrawMediaStreamImpl *This = impl_from_IDirectDrawMediaStream(iface);
+
+    FIXME("(%p/%p)->(%x) stub!\n", This, iface, dwFlags);
+
+    return S_FALSE;
+}
+
+/*** IDirectDrawMediaStream methods ***/
+static HRESULT WINAPI IDirectDrawMediaStreamImpl_GetFormat(IDirectDrawMediaStream *iface,
+        DDSURFACEDESC *pDDSDCurrent, IDirectDrawPalette **ppDirectDrawPalette,
+        DDSURFACEDESC *pDDSDDesired, DWORD *pdwFlags)
+{
+    FIXME("(%p)->(%p,%p,%p,%p) stub!\n", iface, pDDSDCurrent, ppDirectDrawPalette, pDDSDDesired,
+            pdwFlags);
+
+    return E_NOTIMPL;
+
+}
+
+static HRESULT WINAPI IDirectDrawMediaStreamImpl_SetFormat(IDirectDrawMediaStream *iface,
+        const DDSURFACEDESC *pDDSurfaceDesc, IDirectDrawPalette *pDirectDrawPalette)
+{
+    FIXME("(%p)->(%p,%p) stub!\n", iface, pDDSurfaceDesc, pDirectDrawPalette);
+
+    return E_NOTIMPL;
+}
+
+static HRESULT WINAPI IDirectDrawMediaStreamImpl_GetDirectDraw(IDirectDrawMediaStream *iface,
+        IDirectDraw **ppDirectDraw)
+{
+    FIXME("(%p)->(%p) stub!\n", iface, ppDirectDraw);
+
+    return E_NOTIMPL;
+}
+
+static HRESULT WINAPI IDirectDrawMediaStreamImpl_SetDirectDraw(IDirectDrawMediaStream *iface,
+        IDirectDraw *pDirectDraw)
+{
+    FIXME("(%p)->(%p) stub!\n", iface, pDirectDraw);
+
+    return E_NOTIMPL;
+}
+
+static HRESULT WINAPI IDirectDrawMediaStreamImpl_CreateSample(IDirectDrawMediaStream *iface,
+        IDirectDrawSurface *pSurface, const RECT *pRect, DWORD dwFlags,
+        IDirectDrawStreamSample **ppSample)
+{
+    FIXME("(%p)->(%p,%p,%x,%p) stub!\n", iface, pSurface, pRect, dwFlags, ppSample);
+
+    return E_NOTIMPL;
+}
+
+static HRESULT WINAPI IDirectDrawMediaStreamImpl_GetTimePerFrame(IDirectDrawMediaStream *iface,
+        STREAM_TIME *pFrameTime)
+{
+    FIXME("(%p)->(%p) stub!\n", iface, pFrameTime);
+
+    return E_NOTIMPL;
+}
+
+static const struct IDirectDrawMediaStreamVtbl DirectDrawMediaStream_Vtbl =
+{
+    /*** IUnknown methods ***/
+    IDirectDrawMediaStreamImpl_QueryInterface,
+    IDirectDrawMediaStreamImpl_AddRef,
+    IDirectDrawMediaStreamImpl_Release,
+    /*** IMediaStream methods ***/
+    IDirectDrawMediaStreamImpl_GetMultiMediaStream,
+    IDirectDrawMediaStreamImpl_GetInformation,
+    IDirectDrawMediaStreamImpl_SetSameFormat,
+    IDirectDrawMediaStreamImpl_AllocateSample,
+    IDirectDrawMediaStreamImpl_CreateSharedSample,
+    IDirectDrawMediaStreamImpl_SendEndOfStream,
+    /*** IDirectDrawMediaStream methods ***/
+    IDirectDrawMediaStreamImpl_GetFormat,
+    IDirectDrawMediaStreamImpl_SetFormat,
+    IDirectDrawMediaStreamImpl_GetDirectDraw,
+    IDirectDrawMediaStreamImpl_SetDirectDraw,
+    IDirectDrawMediaStreamImpl_CreateSample,
+    IDirectDrawMediaStreamImpl_GetTimePerFrame
+};
+
+HRESULT ddrawmediastream_create(IMultiMediaStream *Parent, const MSPID *pPurposeId,
+        STREAM_TYPE StreamType, IMediaStream **ppMediaStream)
+{
+    IDirectDrawMediaStreamImpl *object;
+
+    TRACE("(%p,%s,%p)\n", Parent, debugstr_guid(pPurposeId), ppMediaStream);
+
+    object = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(IDirectDrawMediaStreamImpl));
+    if (!object)
+    {
+        ERR("Out of memory\n");
+        return E_OUTOFMEMORY;
+    }
+
+    object->IDirectDrawMediaStream_iface.lpVtbl = &DirectDrawMediaStream_Vtbl;
+    object->ref = 1;
+
+    object->Parent = Parent;
+    object->PurposeId = *pPurposeId;
+    object->StreamType = StreamType;
+
+    *ppMediaStream = (IMediaStream*)&object->IDirectDrawMediaStream_iface;
+
+    return S_OK;
+}
diff --git a/dlls/amstream/mediastream.c b/dlls/amstream/mediastream.c
deleted file mode 100644
index 12d3542..0000000
--- a/dlls/amstream/mediastream.c
+++ /dev/null
@@ -1,251 +0,0 @@
-/*
- * Implementation of IMediaStream Interface
- *
- * Copyright 2005, 2008 Christian Costa
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
- */
-
-#include "wine/debug.h"
-
-#define COBJMACROS
-
-#include "winbase.h"
-#include "wingdi.h"
-
-#include "amstream_private.h"
-#include "amstream.h"
-
-#include "ddstream.h"
-
-WINE_DEFAULT_DEBUG_CHANNEL(amstream);
-
-typedef struct {
-    IDirectDrawMediaStream IDirectDrawMediaStream_iface;
-    LONG ref;
-    IMultiMediaStream* Parent;
-    MSPID PurposeId;
-    STREAM_TYPE StreamType;
-} IDirectDrawMediaStreamImpl;
-
-static inline IDirectDrawMediaStreamImpl *impl_from_IDirectDrawMediaStream(IDirectDrawMediaStream *iface)
-{
-    return CONTAINING_RECORD(iface, IDirectDrawMediaStreamImpl, IDirectDrawMediaStream_iface);
-}
-
-static HRESULT WINAPI IDirectDrawMediaStreamImpl_QueryInterface(IDirectDrawMediaStream *iface,
-        REFIID riid, void **ppv)
-{
-    IDirectDrawMediaStreamImpl *This = impl_from_IDirectDrawMediaStream(iface);
-
-    TRACE("(%p/%p)->(%s,%p)\n", iface, This, debugstr_guid(riid), ppv);
-
-    if (IsEqualGUID(riid, &IID_IUnknown) ||
-        IsEqualGUID(riid, &IID_IMediaStream) ||
-        IsEqualGUID(riid, &IID_IDirectDrawMediaStream))
-    {
-        IUnknown_AddRef(iface);
-        *ppv = This;
-        return S_OK;
-    }
-
-    ERR("(%p)->(%s,%p),not found\n", This, debugstr_guid(riid), ppv);
-    return E_NOINTERFACE;
-}
-
-static ULONG WINAPI IDirectDrawMediaStreamImpl_AddRef(IDirectDrawMediaStream *iface)
-{
-    IDirectDrawMediaStreamImpl *This = impl_from_IDirectDrawMediaStream(iface);
-
-    TRACE("(%p/%p)\n", iface, This);
-
-    return InterlockedIncrement(&This->ref);
-}
-
-static ULONG WINAPI IDirectDrawMediaStreamImpl_Release(IDirectDrawMediaStream *iface)
-{
-    IDirectDrawMediaStreamImpl *This = impl_from_IDirectDrawMediaStream(iface);
-    ULONG ref = InterlockedDecrement(&This->ref);
-
-    TRACE("(%p/%p)\n", iface, This);
-
-    if (!ref)
-        HeapFree(GetProcessHeap(), 0, This);
-
-    return ref;
-}
-
-/*** IMediaStream methods ***/
-static HRESULT WINAPI IDirectDrawMediaStreamImpl_GetMultiMediaStream(IDirectDrawMediaStream *iface,
-        IMultiMediaStream** ppMultiMediaStream)
-{
-    IDirectDrawMediaStreamImpl *This = impl_from_IDirectDrawMediaStream(iface);
-
-    FIXME("(%p/%p)->(%p) stub!\n", This, iface, ppMultiMediaStream);
-
-    return S_FALSE;
-}
-
-static HRESULT WINAPI IDirectDrawMediaStreamImpl_GetInformation(IDirectDrawMediaStream *iface,
-        MSPID *pPurposeId, STREAM_TYPE *pType)
-{
-    IDirectDrawMediaStreamImpl *This = impl_from_IDirectDrawMediaStream(iface);
-
-    TRACE("(%p/%p)->(%p,%p)\n", This, iface, pPurposeId, pType);
-
-    if (pPurposeId)
-        *pPurposeId = This->PurposeId;
-    if (pType)
-        *pType = This->StreamType;
-
-    return S_OK;
-}
-
-static HRESULT WINAPI IDirectDrawMediaStreamImpl_SetSameFormat(IDirectDrawMediaStream *iface,
-        IMediaStream *pStreamThatHasDesiredFormat, DWORD dwFlags)
-{
-    IDirectDrawMediaStreamImpl *This = impl_from_IDirectDrawMediaStream(iface);
-
-    FIXME("(%p/%p)->(%p,%x) stub!\n", This, iface, pStreamThatHasDesiredFormat, dwFlags);
-
-    return S_FALSE;
-}
-
-static HRESULT WINAPI IDirectDrawMediaStreamImpl_AllocateSample(IDirectDrawMediaStream *iface,
-        DWORD dwFlags, IStreamSample **ppSample)
-{
-    IDirectDrawMediaStreamImpl *This = impl_from_IDirectDrawMediaStream(iface);
-
-    FIXME("(%p/%p)->(%x,%p) stub!\n", This, iface, dwFlags, ppSample);
-
-    return S_FALSE;
-}
-
-static HRESULT WINAPI IDirectDrawMediaStreamImpl_CreateSharedSample(IDirectDrawMediaStream *iface,
-        IStreamSample *pExistingSample, DWORD dwFlags, IStreamSample **ppSample)
-{
-    IDirectDrawMediaStreamImpl *This = impl_from_IDirectDrawMediaStream(iface);
-
-    FIXME("(%p/%p)->(%p,%x,%p) stub!\n", This, iface, pExistingSample, dwFlags, ppSample);
-
-    return S_FALSE;
-}
-
-static HRESULT WINAPI IDirectDrawMediaStreamImpl_SendEndOfStream(IDirectDrawMediaStream *iface,
-        DWORD dwFlags)
-{
-    IDirectDrawMediaStreamImpl *This = impl_from_IDirectDrawMediaStream(iface);
-
-    FIXME("(%p/%p)->(%x) stub!\n", This, iface, dwFlags);
-
-    return S_FALSE;
-}
-
-static HRESULT WINAPI IDirectDrawMediaStreamImpl_GetFormat(IDirectDrawMediaStream *iface,
-        DDSURFACEDESC *pDDSDCurrent, IDirectDrawPalette **ppDirectDrawPalette,
-        DDSURFACEDESC *pDDSDDesired, DWORD *pdwFlags)
-{
-    FIXME("(%p)->(%p,%p,%p,%p) stub!\n", iface, pDDSDCurrent, ppDirectDrawPalette, pDDSDDesired,
-            pdwFlags);
-
-    return E_NOTIMPL;
-
-}
-
-static HRESULT WINAPI IDirectDrawMediaStreamImpl_SetFormat(IDirectDrawMediaStream *iface,
-        const DDSURFACEDESC *pDDSurfaceDesc, IDirectDrawPalette *pDirectDrawPalette)
-{
-    FIXME("(%p)->(%p,%p) stub!\n", iface, pDDSurfaceDesc, pDirectDrawPalette);
-
-    return E_NOTIMPL;
-}
-
-static HRESULT WINAPI IDirectDrawMediaStreamImpl_GetDirectDraw(IDirectDrawMediaStream *iface,
-        IDirectDraw **ppDirectDraw)
-{
-    FIXME("(%p)->(%p) stub!\n", iface, ppDirectDraw);
-
-    return E_NOTIMPL;
-}
-
-static HRESULT WINAPI IDirectDrawMediaStreamImpl_SetDirectDraw(IDirectDrawMediaStream *iface,
-        IDirectDraw *pDirectDraw)
-{
-    FIXME("(%p)->(%p) stub!\n", iface, pDirectDraw);
-
-    return E_NOTIMPL;
-}
-
-static HRESULT WINAPI IDirectDrawMediaStreamImpl_CreateSample(IDirectDrawMediaStream *iface,
-        IDirectDrawSurface *pSurface, const RECT *pRect, DWORD dwFlags,
-        IDirectDrawStreamSample **ppSample)
-{
-    FIXME("(%p)->(%p,%p,%x,%p) stub!\n", iface, pSurface, pRect, dwFlags, ppSample);
-
-    return E_NOTIMPL;
-}
-
-static HRESULT WINAPI IDirectDrawMediaStreamImpl_GetTimePerFrame(IDirectDrawMediaStream *iface,
-        STREAM_TIME *pFrameTime)
-{
-    FIXME("(%p)->(%p) stub!\n", iface, pFrameTime);
-
-    return E_NOTIMPL;
-}
-
-static const struct IDirectDrawMediaStreamVtbl DirectDrawMediaStream_Vtbl =
-{
-    IDirectDrawMediaStreamImpl_QueryInterface,
-    IDirectDrawMediaStreamImpl_AddRef,
-    IDirectDrawMediaStreamImpl_Release,
-    IDirectDrawMediaStreamImpl_GetMultiMediaStream,
-    IDirectDrawMediaStreamImpl_GetInformation,
-    IDirectDrawMediaStreamImpl_SetSameFormat,
-    IDirectDrawMediaStreamImpl_AllocateSample,
-    IDirectDrawMediaStreamImpl_CreateSharedSample,
-    IDirectDrawMediaStreamImpl_SendEndOfStream,
-    IDirectDrawMediaStreamImpl_GetFormat,
-    IDirectDrawMediaStreamImpl_SetFormat,
-    IDirectDrawMediaStreamImpl_GetDirectDraw,
-    IDirectDrawMediaStreamImpl_SetDirectDraw,
-    IDirectDrawMediaStreamImpl_CreateSample,
-    IDirectDrawMediaStreamImpl_GetTimePerFrame
-};
-
-HRESULT mediastream_create(IMultiMediaStream *Parent, const MSPID *pPurposeId,
-        STREAM_TYPE StreamType, IMediaStream **ppMediaStream)
-{
-    IDirectDrawMediaStreamImpl *object;
-
-    TRACE("(%p,%s,%p)\n", Parent, debugstr_guid(pPurposeId), ppMediaStream);
-
-    object = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(IDirectDrawMediaStreamImpl));
-    if (!object)
-    {
-        ERR("Out of memory\n");
-        return E_OUTOFMEMORY;
-    }
-
-    object->IDirectDrawMediaStream_iface.lpVtbl = &DirectDrawMediaStream_Vtbl;
-    object->ref = 1;
-
-    object->Parent = Parent;
-    object->PurposeId = *pPurposeId;
-    object->StreamType = StreamType;
-
-    *ppMediaStream = (IMediaStream*)&object->IDirectDrawMediaStream_iface;
-
-    return S_OK;
-}




More information about the wine-patches mailing list