Author: cwittich
Date: Sat Mar 6 13:23:59 2010
New Revision: 45925
URL:
http://svn.reactos.org/svn/reactos?rev=45925&view=rev
Log:
[AMSTREAM]
sync amstream to wine 1.1.40
Modified:
trunk/reactos/dll/directx/amstream/amstream.c
trunk/reactos/dll/directx/amstream/mediastream.c
trunk/reactos/dll/directx/amstream/mediastreamfilter.c
trunk/reactos/dll/directx/amstream/regsvr.c
Modified: trunk/reactos/dll/directx/amstream/amstream.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/directx/amstream/amstr…
==============================================================================
--- trunk/reactos/dll/directx/amstream/amstream.c [iso-8859-1] (original)
+++ trunk/reactos/dll/directx/amstream/amstream.c [iso-8859-1] Sat Mar 6 13:23:59 2010
@@ -35,7 +35,7 @@
WINE_DEFAULT_DEBUG_CHANNEL(amstream);
typedef struct {
- IAMMultiMediaStream lpVtbl;
+ const IAMMultiMediaStreamVtbl *lpVtbl;
LONG ref;
IGraphBuilder* pFilterGraph;
IPin* ipin;
@@ -63,7 +63,7 @@
return E_OUTOFMEMORY;
}
- object->lpVtbl.lpVtbl = &AM_Vtbl;
+ object->lpVtbl = &AM_Vtbl;
object->ref = 1;
*ppObj = object;
@@ -129,7 +129,7 @@
MSPID PurposeId;
unsigned int i;
- TRACE("(%p/%p)->(%p,%p)\n", This, iface, idPurpose, ppMediaStream);
+ TRACE("(%p/%p)->(%s,%p)\n", This, iface, debugstr_guid(idPurpose),
ppMediaStream);
for (i = 0; i < This->nbStreams; i++)
{
@@ -214,7 +214,7 @@
IAMMultiMediaStreamImpl *This = (IAMMultiMediaStreamImpl *)iface;
HRESULT hr = S_OK;
- FIXME("(%p/%p)->(%x,%x,%p) partial stub!\n", This, iface,
(DWORD)StreamType, dwFlags, pFilterGraph);
+ TRACE("(%p/%p)->(%x,%x,%p)\n", This, iface, (DWORD)StreamType, dwFlags,
pFilterGraph);
if (pFilterGraph)
{
@@ -238,9 +238,17 @@
{
IAMMultiMediaStreamImpl *This = (IAMMultiMediaStreamImpl *)iface;
- FIXME("(%p/%p)->(%p) stub!\n", This, iface, ppGraphBuilder);
-
- return E_NOTIMPL;
+ TRACE("(%p/%p)->(%p)\n", This, iface, ppGraphBuilder);
+
+ if (!ppGraphBuilder)
+ return E_POINTER;
+
+ if (This->pFilterGraph)
+ return IFilterGraph_QueryInterface(This->pFilterGraph, &IID_IGraphBuilder,
(void**)ppGraphBuilder);
+ else
+ *ppGraphBuilder = NULL;
+
+ return S_OK;
}
static HRESULT WINAPI IAMMultiMediaStreamImpl_GetFilter(IAMMultiMediaStream* iface,
IMediaStreamFilter** ppFilter)
@@ -260,7 +268,7 @@
IMediaStream* pStream;
IMediaStream** pNewStreams;
- FIXME("(%p/%p)->(%p,%p,%x,%p) partial stub!\n", This, iface,
pStreamObject, PurposeId, dwFlags, ppNewStream);
+ FIXME("(%p/%p)->(%p,%s,%x,%p) partial stub!\n", This, iface,
pStreamObject, debugstr_guid(PurposeId), dwFlags, ppNewStream);
if (IsEqualGUID(PurposeId, &MSPID_PrimaryVideo))
hr = DirectDrawMediaStream_create((IMultiMediaStream*)iface, PurposeId,
This->StreamType, &pStream);
@@ -339,6 +347,14 @@
{
IEnumPins_Release(EnumPins);
goto end;
+ }
+
+ /* If Initialize was not called before, we do it here */
+ if (!This->pFilterGraph)
+ {
+ ret = IAMMultiMediaStream_Initialize(iface, STREAMTYPE_READ, 0, NULL);
+ if (FAILED(ret))
+ goto end;
}
ret = IFilterGraph_QueryInterface(This->pFilterGraph, &IID_IGraphBuilder,
(void**)&This->GraphBuilder);
Modified: trunk/reactos/dll/directx/amstream/mediastream.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/directx/amstream/media…
==============================================================================
--- trunk/reactos/dll/directx/amstream/mediastream.c [iso-8859-1] (original)
+++ trunk/reactos/dll/directx/amstream/mediastream.c [iso-8859-1] Sat Mar 6 13:23:59 2010
@@ -29,13 +29,14 @@
#include "wingdi.h"
#include "amstream_private.h"
+#include "amstream.h"
+
#include "ddstream.h"
-#include "amstream.h"
WINE_DEFAULT_DEBUG_CHANNEL(amstream);
typedef struct {
- IMediaStream lpVtbl;
+ const IMediaStreamVtbl *lpVtbl;
LONG ref;
IMultiMediaStream* Parent;
MSPID PurposeId;
@@ -43,7 +44,7 @@
} IMediaStreamImpl;
typedef struct {
- IDirectDrawMediaStream lpVtbl;
+ const IDirectDrawMediaStreamVtbl *lpVtbl;
LONG ref;
IMultiMediaStream* Parent;
MSPID PurposeId;
@@ -57,7 +58,7 @@
{
IMediaStreamImpl* object;
- TRACE("(%p,%p,%p)\n", Parent, pPurposeId, ppMediaStream);
+ TRACE("(%p,%s,%p)\n", Parent, debugstr_guid(pPurposeId), ppMediaStream);
object = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(IMediaStreamImpl));
if (!object)
@@ -66,7 +67,7 @@
return E_OUTOFMEMORY;
}
- object->lpVtbl.lpVtbl = &MediaStream_Vtbl;
+ object->lpVtbl = &MediaStream_Vtbl;
object->ref = 1;
object->Parent = Parent;
@@ -197,7 +198,7 @@
{
IDirectDrawMediaStreamImpl* object;
- TRACE("(%p,%p,%p)\n", Parent, pPurposeId, ppMediaStream);
+ TRACE("(%p,%s,%p)\n", Parent, debugstr_guid(pPurposeId), ppMediaStream);
object = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(IMediaStreamImpl));
if (!object)
@@ -206,7 +207,7 @@
return E_OUTOFMEMORY;
}
- object->lpVtbl.lpVtbl = &DirectDrawMediaStream_Vtbl;
+ object->lpVtbl = &DirectDrawMediaStream_Vtbl;
object->ref = 1;
object->Parent = Parent;
Modified: trunk/reactos/dll/directx/amstream/mediastreamfilter.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/directx/amstream/media…
==============================================================================
--- trunk/reactos/dll/directx/amstream/mediastreamfilter.c [iso-8859-1] (original)
+++ trunk/reactos/dll/directx/amstream/mediastreamfilter.c [iso-8859-1] Sat Mar 6
13:23:59 2010
@@ -36,7 +36,7 @@
WINE_DEFAULT_DEBUG_CHANNEL(amstream);
typedef struct {
- IMediaStreamFilter lpVtbl;
+ const IMediaStreamFilterVtbl *lpVtbl;
LONG ref;
CRITICAL_SECTION csFilter;
FILTER_STATE state;
@@ -63,7 +63,7 @@
return E_OUTOFMEMORY;
}
- object->lpVtbl.lpVtbl = &MediaStreamFilter_Vtbl;
+ object->lpVtbl = &MediaStreamFilter_Vtbl;
object->ref = 1;
*ppObj = object;
@@ -120,7 +120,7 @@
if (!refCount)
{
- This->lpVtbl.lpVtbl = NULL;
+ This->lpVtbl = NULL;
HeapFree(GetProcessHeap(), 0, This);
}
Modified: trunk/reactos/dll/directx/amstream/regsvr.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/directx/amstream/regsv…
==============================================================================
--- trunk/reactos/dll/directx/amstream/regsvr.c [iso-8859-1] (original)
+++ trunk/reactos/dll/directx/amstream/regsvr.c [iso-8859-1] Sat Mar 6 13:23:59 2010
@@ -456,6 +456,13 @@
"Both"
},
+ { &CLSID_MediaStreamFilter,
+ "SFilter Class",
+ NULL,
+ "amstream.dll",
+ "Both"
+ },
+
{ NULL } /* list terminator */
};