Added some stubs.

This commit is contained in:
Hidenori Takeshima 2001-08-28 17:25:39 +00:00 committed by Alexandre Julliard
parent 89b415f76a
commit 8eebd2c93d
27 changed files with 930 additions and 7 deletions

View File

@ -11,10 +11,16 @@ SYMBOLFILE = $(MODULE).tmp.o
C_SRCS = \
amerror.c \
complist.c \
devenum.c \
fgraph.c \
fmap.c \
fmap2.c \
ibasaud.c \
ibasvid.c \
idevenum.c \
ifgraph.c \
ifmap.c \
ifmap3.c \
imcntl.c \
imem.c \
imevent.c \
@ -25,6 +31,7 @@ C_SRCS = \
ividwin.c \
main.c \
memalloc.c \
regsvr.c \
sysclock.c
@MAKE_DLL_RULES@

63
dlls/quartz/devenum.c Normal file
View File

@ -0,0 +1,63 @@
/*
* Implementation of CLSID_SystemDeviceEnum.
*
* FIXME - stub.
*
* hidenori@a2.ctktv.ne.jp
*/
#include "config.h"
#include "windef.h"
#include "winbase.h"
#include "wingdi.h"
#include "winerror.h"
#include "wine/obj_base.h"
#include "wine/obj_oleaut.h"
#include "strmif.h"
#include "control.h"
#include "uuids.h"
#include "debugtools.h"
DEFAULT_DEBUG_CHANNEL(quartz);
#include "quartz_private.h"
#include "devenum.h"
/* can I use offsetof safely? - FIXME? */
static QUARTZ_IFEntry IFEntries[] =
{
{ &IID_ICreateDevEnum, offsetof(CSysDevEnum,createdevenum)-offsetof(CSysDevEnum,unk) },
};
static void QUARTZ_DestroySystemDeviceEnum(IUnknown* punk)
{
CSysDevEnum_THIS(punk,unk);
CSysDevEnum_UninitICreateDevEnum( This );
}
HRESULT QUARTZ_CreateSystemDeviceEnum(IUnknown* punkOuter,void** ppobj)
{
CSysDevEnum* psde;
TRACE("(%p,%p)\n",punkOuter,ppobj);
psde = (CSysDevEnum*)QUARTZ_AllocObj( sizeof(CSysDevEnum) );
if ( psde == NULL )
return E_OUTOFMEMORY;
QUARTZ_IUnkInit( &psde->unk, punkOuter );
CSysDevEnum_InitICreateDevEnum( psde );
psde->unk.pEntries = IFEntries;
psde->unk.dwEntries = sizeof(IFEntries)/sizeof(IFEntries[0]);
psde->unk.pOnFinalRelease = QUARTZ_DestroySystemDeviceEnum;
*ppobj = (void*)(&psde->unk);
return S_OK;
}

36
dlls/quartz/devenum.h Normal file
View File

@ -0,0 +1,36 @@
#ifndef WINE_DSHOW_DEVENUM_H
#define WINE_DSHOW_DEVENUM_H
/*
implements CLSID_SystemDeviceEnum.
- At least, the following interfaces should be implemented:
IUnknown
+ ICreateDevEnum
*/
#include "iunk.h"
typedef struct SDE_ICreateDevEnumImpl
{
ICOM_VFIELD(ICreateDevEnum);
} SDE_ICreateDevEnumImpl;
typedef struct CSysDevEnum
{
QUARTZ_IUnkImpl unk;
SDE_ICreateDevEnumImpl createdevenum;
} CSysDevEnum;
#define CSysDevEnum_THIS(iface,member) CSysDevEnum* This = ((CSysDevEnum*)(((char*)iface)-offsetof(CSysDevEnum,member)))
HRESULT QUARTZ_CreateSystemDeviceEnum(IUnknown* punkOuter,void** ppobj);
void CSysDevEnum_InitICreateDevEnum( CSysDevEnum* psde );
void CSysDevEnum_UninitICreateDevEnum( CSysDevEnum* psde );
#endif /* WINE_DSHOW_DEVENUM_H */

View File

@ -36,10 +36,26 @@ static QUARTZ_IFEntry IFEntries[] =
{ &IID_IMediaPosition, offsetof(CFilterGraph,mediaposition)-offsetof(CFilterGraph,unk) },
{ &IID_IMediaSeeking, offsetof(CFilterGraph,mediaseeking)-offsetof(CFilterGraph,unk) },
{ &IID_IBasicVideo, offsetof(CFilterGraph,basvid)-offsetof(CFilterGraph,unk) },
{ &IID_IBasicVideo2, offsetof(CFilterGraph,basvid)-offsetof(CFilterGraph,unk) },
{ &IID_IBasicAudio, offsetof(CFilterGraph,basaud)-offsetof(CFilterGraph,unk) },
{ &IID_IVideoWindow, offsetof(CFilterGraph,vidwin)-offsetof(CFilterGraph,unk) },
};
static void QUARTZ_DestroyFilterGraph(IUnknown* punk)
{
CFilterGraph_THIS(punk,unk);
CFilterGraph_UninitIFilterGraph2( This );
CFilterGraph_UninitIMediaControl( This );
CFilterGraph_UninitIMediaEventEx( This );
CFilterGraph_UninitIMediaPosition( This );
CFilterGraph_UninitIMediaSeeking( This );
CFilterGraph_UninitIBasicVideo2( This );
CFilterGraph_UninitIBasicAudio( This );
CFilterGraph_UninitIVideoWindow( This );
}
HRESULT QUARTZ_CreateFilterGraph(IUnknown* punkOuter,void** ppobj)
{
CFilterGraph* pfg;
@ -62,8 +78,11 @@ HRESULT QUARTZ_CreateFilterGraph(IUnknown* punkOuter,void** ppobj)
pfg->unk.pEntries = IFEntries;
pfg->unk.dwEntries = sizeof(IFEntries)/sizeof(IFEntries[0]);
pfg->unk.pOnFinalRelease = QUARTZ_DestroyFilterGraph;
*ppobj = (void*)(&pfg->unk);
return S_OK;
}

View File

@ -15,6 +15,10 @@
+ IDispatch - IBasicVideo (pass to a renderer)
+ IDispatch - IBasicAudio (pass to a renderer)
+ IDispatch - IVideoWindow (pass to a renderer)
(following interfaces are not implemented)
+ IDispatch
+ IMediaEventSink
+ IGraphVerson
*/
#include "iunk.h"
@ -77,7 +81,7 @@ typedef struct CFilterGraph
/* IMediaEvent fields. */
/* IMediaPosition fields. */
/* IMediaSeeking fields. */
/* IBasicVideo fields. */
/* IBasicVideo2 fields. */
/* IBasicAudio fields. */
/* IVideoWindow fields. */
} CFilterGraph;
@ -87,13 +91,21 @@ typedef struct CFilterGraph
HRESULT QUARTZ_CreateFilterGraph(IUnknown* punkOuter,void** ppobj);
void CFilterGraph_InitIFilterGraph2( CFilterGraph* pfg );
void CFilterGraph_UninitIFilterGraph2( CFilterGraph* pfg );
void CFilterGraph_InitIMediaControl( CFilterGraph* pfg );
void CFilterGraph_UninitIMediaControl( CFilterGraph* pfg );
void CFilterGraph_InitIMediaEventEx( CFilterGraph* pfg );
void CFilterGraph_UninitIMediaEventEx( CFilterGraph* pfg );
void CFilterGraph_InitIMediaPosition( CFilterGraph* pfg );
void CFilterGraph_UninitIMediaPosition( CFilterGraph* pfg );
void CFilterGraph_InitIMediaSeeking( CFilterGraph* pfg );
void CFilterGraph_UninitIMediaSeeking( CFilterGraph* pfg );
void CFilterGraph_InitIBasicVideo2( CFilterGraph* pfg );
void CFilterGraph_UninitIBasicVideo2( CFilterGraph* pfg );
void CFilterGraph_InitIBasicAudio( CFilterGraph* pfg );
void CFilterGraph_UninitIBasicAudio( CFilterGraph* pfg );
void CFilterGraph_InitIVideoWindow( CFilterGraph* pfg );
void CFilterGraph_UninitIVideoWindow( CFilterGraph* pfg );
#endif /* WINE_DSHOW_FGRAPH_H */

61
dlls/quartz/fmap.c Normal file
View File

@ -0,0 +1,61 @@
/*
* Implementation of CLSID_FilterMapper.
*
* FIXME - stub.
*
* hidenori@a2.ctktv.ne.jp
*/
#include "config.h"
#include "windef.h"
#include "winbase.h"
#include "wingdi.h"
#include "winerror.h"
#include "wine/obj_base.h"
#include "wine/obj_oleaut.h"
#include "strmif.h"
#include "control.h"
#include "uuids.h"
#include "debugtools.h"
DEFAULT_DEBUG_CHANNEL(quartz);
#include "quartz_private.h"
#include "fmap.h"
/* can I use offsetof safely? - FIXME? */
static QUARTZ_IFEntry IFEntries[] =
{
{ &IID_IFilterMapper, offsetof(CFilterMapper,fmap)-offsetof(CFilterMapper,unk) },
};
static void QUARTZ_DestroyFilterMapper(IUnknown* punk)
{
CFilterMapper_THIS(punk,unk);
CFilterMapper_UninitIFilterMapper( This );
}
HRESULT QUARTZ_CreateFilterMapper(IUnknown* punkOuter,void** ppobj)
{
CFilterMapper* pfm;
TRACE("(%p,%p)\n",punkOuter,ppobj);
pfm = (CFilterMapper*)QUARTZ_AllocObj( sizeof(CFilterMapper) );
if ( pfm == NULL )
return E_OUTOFMEMORY;
QUARTZ_IUnkInit( &pfm->unk, punkOuter );
CFilterMapper_InitIFilterMapper( pfm );
pfm->unk.pEntries = IFEntries;
pfm->unk.dwEntries = sizeof(IFEntries)/sizeof(IFEntries[0]);
pfm->unk.pOnFinalRelease = QUARTZ_DestroyFilterMapper;
*ppobj = (void*)(&pfm->unk);
return S_OK;
}

37
dlls/quartz/fmap.h Normal file
View File

@ -0,0 +1,37 @@
#ifndef WINE_DSHOW_FMAP_H
#define WINE_DSHOW_FMAP_H
/*
implements CLSID_FilterMapper.
- At least, the following interfaces should be implemented:
IUnknown
+ IFilterMapper
*/
#include "iunk.h"
typedef struct FM_IFilterMapperImpl
{
ICOM_VFIELD(IFilterMapper);
} FM_IFilterMapperImpl;
typedef struct CFilterMapper
{
QUARTZ_IUnkImpl unk;
FM_IFilterMapperImpl fmap;
} CFilterMapper;
#define CFilterMapper_THIS(iface,member) CFilterMapper* This = ((CFilterMapper*)(((char*)iface)-offsetof(CFilterMapper,member)))
HRESULT QUARTZ_CreateFilterMapper(IUnknown* punkOuter,void** ppobj);
void CFilterMapper_InitIFilterMapper( CFilterMapper* pfm );
void CFilterMapper_UninitIFilterMapper( CFilterMapper* pfm );
#endif /* WINE_DSHOW_FMAP_H */

62
dlls/quartz/fmap2.c Normal file
View File

@ -0,0 +1,62 @@
/*
* Implementation of CLSID_FilterMapper2.
*
* FIXME - stub.
*
* hidenori@a2.ctktv.ne.jp
*/
#include "config.h"
#include "windef.h"
#include "winbase.h"
#include "wingdi.h"
#include "winerror.h"
#include "wine/obj_base.h"
#include "wine/obj_oleaut.h"
#include "strmif.h"
#include "control.h"
#include "uuids.h"
#include "debugtools.h"
DEFAULT_DEBUG_CHANNEL(quartz);
#include "quartz_private.h"
#include "fmap2.h"
/* can I use offsetof safely? - FIXME? */
static QUARTZ_IFEntry IFEntries[] =
{
{ &IID_IFilterMapper2, offsetof(CFilterMapper2,fmap3)-offsetof(CFilterMapper2,unk) },
{ &IID_IFilterMapper3, offsetof(CFilterMapper2,fmap3)-offsetof(CFilterMapper2,unk) },
};
static void QUARTZ_DestroyFilterMapper2(IUnknown* punk)
{
CFilterMapper2_THIS(punk,unk);
CFilterMapper2_UninitIFilterMapper3( This );
}
HRESULT QUARTZ_CreateFilterMapper2(IUnknown* punkOuter,void** ppobj)
{
CFilterMapper2* pfm;
TRACE("(%p,%p)\n",punkOuter,ppobj);
pfm = (CFilterMapper2*)QUARTZ_AllocObj( sizeof(CFilterMapper2) );
if ( pfm == NULL )
return E_OUTOFMEMORY;
QUARTZ_IUnkInit( &pfm->unk, punkOuter );
CFilterMapper2_InitIFilterMapper3( pfm );
pfm->unk.pEntries = IFEntries;
pfm->unk.dwEntries = sizeof(IFEntries)/sizeof(IFEntries[0]);
pfm->unk.pOnFinalRelease = QUARTZ_DestroyFilterMapper2;
*ppobj = (void*)(&pfm->unk);
return S_OK;
}

37
dlls/quartz/fmap2.h Normal file
View File

@ -0,0 +1,37 @@
#ifndef WINE_DSHOW_FMAP2_H
#define WINE_DSHOW_FMAP2_H
/*
implements CLSID_FilterMapper2.
- At least, the following interfaces should be implemented:
IUnknown
+ IFilterMapper2 - IFilterMapper3
*/
#include "iunk.h"
typedef struct FM2_IFilterMapper3Impl
{
ICOM_VFIELD(IFilterMapper3);
} FM2_IFilterMapper3Impl;
typedef struct CFilterMapper2
{
QUARTZ_IUnkImpl unk;
FM2_IFilterMapper3Impl fmap3;
} CFilterMapper2;
#define CFilterMapper2_THIS(iface,member) CFilterMapper2* This = ((CFilterMapper2*)(((char*)iface)-offsetof(CFilterMapper2,member)))
HRESULT QUARTZ_CreateFilterMapper2(IUnknown* punkOuter,void** ppobj);
void CFilterMapper2_InitIFilterMapper3( CFilterMapper2* psde );
void CFilterMapper2_UninitIFilterMapper3( CFilterMapper2* psde );
#endif /* WINE_DSHOW_FMAP2_H */

View File

@ -164,3 +164,8 @@ void CFilterGraph_InitIBasicAudio( CFilterGraph* pfg )
ICOM_VTBL(&pfg->basaud) = &ibasicaudio;
}
void CFilterGraph_UninitIBasicAudio( CFilterGraph* pfg )
{
TRACE("(%p)\n",pfg);
}

View File

@ -485,3 +485,7 @@ void CFilterGraph_InitIBasicVideo2( CFilterGraph* pfg )
ICOM_VTBL(&pfg->basvid) = &ibasicvideo;
}
void CFilterGraph_UninitIBasicVideo2( CFilterGraph* pfg )
{
TRACE("(%p)\n",pfg);
}

87
dlls/quartz/idevenum.c Normal file
View File

@ -0,0 +1,87 @@
/*
* Implementation of ICreateDevEnum for CLSID_SystemDeviceEnum.
*
* FIXME - stub.
*
* hidenori@a2.ctktv.ne.jp
*/
#include "config.h"
#include "windef.h"
#include "winbase.h"
#include "wingdi.h"
#include "winerror.h"
#include "wine/obj_base.h"
#include "wine/obj_oleaut.h"
#include "strmif.h"
#include "control.h"
#include "uuids.h"
#include "debugtools.h"
DEFAULT_DEBUG_CHANNEL(quartz);
#include "quartz_private.h"
#include "devenum.h"
static HRESULT WINAPI
ICreateDevEnum_fnQueryInterface(ICreateDevEnum* iface,REFIID riid,void** ppobj)
{
CSysDevEnum_THIS(iface,createdevenum);
TRACE("(%p)->()\n",This);
return IUnknown_QueryInterface(This->unk.punkControl,riid,ppobj);
}
static ULONG WINAPI
ICreateDevEnum_fnAddRef(ICreateDevEnum* iface)
{
CSysDevEnum_THIS(iface,createdevenum);
TRACE("(%p)->()\n",This);
return IUnknown_AddRef(This->unk.punkControl);
}
static ULONG WINAPI
ICreateDevEnum_fnRelease(ICreateDevEnum* iface)
{
CSysDevEnum_THIS(iface,createdevenum);
TRACE("(%p)->()\n",This);
return IUnknown_Release(This->unk.punkControl);
}
static HRESULT WINAPI
ICreateDevEnum_fnCreateClassEnumerator(ICreateDevEnum* iface,REFCLSID rclsidDeviceClass,IEnumMoniker** ppobj, DWORD dwFlags)
{
CSysDevEnum_THIS(iface,createdevenum);
FIXME("(%p)->() stub!\n",This);
return E_NOTIMPL;
}
static ICOM_VTABLE(ICreateDevEnum) icreatedevenum =
{
ICOM_MSVTABLE_COMPAT_DummyRTTIVALUE
/* IUnknown fields */
ICreateDevEnum_fnQueryInterface,
ICreateDevEnum_fnAddRef,
ICreateDevEnum_fnRelease,
/* ICreateDevEnum fields */
ICreateDevEnum_fnCreateClassEnumerator,
};
void CSysDevEnum_InitICreateDevEnum( CSysDevEnum* psde )
{
TRACE("(%p)\n",psde);
ICOM_VTBL(&psde->createdevenum) = &icreatedevenum;
}
void CSysDevEnum_UninitICreateDevEnum( CSysDevEnum* psde )
{
TRACE("(%p)\n",psde);
}

View File

@ -260,3 +260,8 @@ void CFilterGraph_InitIFilterGraph2( CFilterGraph* pfg )
TRACE("(%p)\n",pfg);
ICOM_VTBL(&pfg->fgraph) = &ifgraph;
}
void CFilterGraph_UninitIFilterGraph2( CFilterGraph* pfg )
{
TRACE("(%p)\n",pfg);
}

169
dlls/quartz/ifmap.c Normal file
View File

@ -0,0 +1,169 @@
/*
* Implementation of IFilterMapper for CLSID_FilterMapper.
*
* FIXME - stub.
*
* hidenori@a2.ctktv.ne.jp
*/
#include "config.h"
#include "windef.h"
#include "winbase.h"
#include "wingdi.h"
#include "winerror.h"
#include "wine/obj_base.h"
#include "wine/obj_oleaut.h"
#include "strmif.h"
#include "control.h"
#include "uuids.h"
#include "debugtools.h"
DEFAULT_DEBUG_CHANNEL(quartz);
#include "quartz_private.h"
#include "fmap.h"
static HRESULT WINAPI
IFilterMapper_fnQueryInterface(IFilterMapper* iface,REFIID riid,void** ppobj)
{
CFilterMapper_THIS(iface,fmap);
TRACE("(%p)->()\n",This);
return IUnknown_QueryInterface(This->unk.punkControl,riid,ppobj);
}
static ULONG WINAPI
IFilterMapper_fnAddRef(IFilterMapper* iface)
{
CFilterMapper_THIS(iface,fmap);
TRACE("(%p)->()\n",This);
return IUnknown_AddRef(This->unk.punkControl);
}
static ULONG WINAPI
IFilterMapper_fnRelease(IFilterMapper* iface)
{
CFilterMapper_THIS(iface,fmap);
TRACE("(%p)->()\n",This);
return IUnknown_Release(This->unk.punkControl);
}
static HRESULT WINAPI
IFilterMapper_fnRegisterFilter(IFilterMapper* iface,CLSID clsid,LPCWSTR lpwszName,DWORD dwMerit)
{
CFilterMapper_THIS(iface,fmap);
TRACE("(%p)->() stub!\n",This);
return E_NOTIMPL;
}
static HRESULT WINAPI
IFilterMapper_fnRegisterFilterInstance(IFilterMapper* iface,CLSID clsid,LPCWSTR lpwszName,CLSID* pclsidMedia)
{
CFilterMapper_THIS(iface,fmap);
TRACE("(%p)->() stub!\n",This);
return E_NOTIMPL;
}
static HRESULT WINAPI
IFilterMapper_fnRegisterPin(IFilterMapper* iface,CLSID clsidFilter,LPCWSTR lpwszName,BOOL bRendered,BOOL bOutput,BOOL bZero,BOOL bMany,CLSID clsidReserved,LPCWSTR lpwszReserved)
{
CFilterMapper_THIS(iface,fmap);
TRACE("(%p)->() stub!\n",This);
return E_NOTIMPL;
}
static HRESULT WINAPI
IFilterMapper_fnRegisterPinType(IFilterMapper* iface,CLSID clsidFilter,LPCWSTR lpwszName,CLSID clsidMajorType,CLSID clsidSubType)
{
CFilterMapper_THIS(iface,fmap);
TRACE("(%p)->() stub!\n",This);
return E_NOTIMPL;
}
static HRESULT WINAPI
IFilterMapper_fnUnregisterFilter(IFilterMapper* iface,CLSID clsidFilter)
{
CFilterMapper_THIS(iface,fmap);
TRACE("(%p)->() stub!\n",This);
return E_NOTIMPL;
}
static HRESULT WINAPI
IFilterMapper_fnUnregisterFilterInstance(IFilterMapper* iface,CLSID clsidMedia)
{
CFilterMapper_THIS(iface,fmap);
TRACE("(%p)->() stub!\n",This);
return E_NOTIMPL;
}
static HRESULT WINAPI
IFilterMapper_fnUnregisterPin(IFilterMapper* iface,CLSID clsidPin,LPCWSTR lpwszName)
{
CFilterMapper_THIS(iface,fmap);
TRACE("(%p)->() stub!\n",This);
return E_NOTIMPL;
}
static HRESULT WINAPI
IFilterMapper_fnEnumMatchingFilters(IFilterMapper* iface,IEnumRegFilters** ppobj,DWORD dwMerit,BOOL bInputNeeded,CLSID clsInMajorType,CLSID clsidSubType,BOOL bRender,BOOL bOutputNeeded,CLSID clsOutMajorType,CLSID clsOutSubType)
{
CFilterMapper_THIS(iface,fmap);
TRACE("(%p)->() stub!\n",This);
return E_NOTIMPL;
}
static ICOM_VTABLE(IFilterMapper) ifmap =
{
ICOM_MSVTABLE_COMPAT_DummyRTTIVALUE
/* IUnknown fields */
IFilterMapper_fnQueryInterface,
IFilterMapper_fnAddRef,
IFilterMapper_fnRelease,
/* IFilterMapper fields */
IFilterMapper_fnRegisterFilter,
IFilterMapper_fnRegisterFilterInstance,
IFilterMapper_fnRegisterPin,
IFilterMapper_fnRegisterPinType,
IFilterMapper_fnUnregisterFilter,
IFilterMapper_fnUnregisterFilterInstance,
IFilterMapper_fnUnregisterPin,
IFilterMapper_fnEnumMatchingFilters,
};
void CFilterMapper_InitIFilterMapper( CFilterMapper* pfm )
{
TRACE("(%p)\n",pfm);
ICOM_VTBL(&pfm->fmap) = &ifmap;
}
void CFilterMapper_UninitIFilterMapper( CFilterMapper* pfm )
{
TRACE("(%p)\n",pfm);
}

142
dlls/quartz/ifmap3.c Normal file
View File

@ -0,0 +1,142 @@
/*
* Implementation of IFilterMapper3 for CLSID_FilterMapper2.
*
* FIXME - stub.
*
* hidenori@a2.ctktv.ne.jp
*/
#include "config.h"
#include "windef.h"
#include "winbase.h"
#include "wingdi.h"
#include "winerror.h"
#include "wine/obj_base.h"
#include "wine/obj_oleaut.h"
#include "strmif.h"
#include "control.h"
#include "uuids.h"
#include "debugtools.h"
DEFAULT_DEBUG_CHANNEL(quartz);
#include "quartz_private.h"
#include "fmap2.h"
static HRESULT WINAPI
IFilterMapper3_fnQueryInterface(IFilterMapper3* iface,REFIID riid,void** ppobj)
{
CFilterMapper2_THIS(iface,fmap3);
TRACE("(%p)->()\n",This);
return IUnknown_QueryInterface(This->unk.punkControl,riid,ppobj);
}
static ULONG WINAPI
IFilterMapper3_fnAddRef(IFilterMapper3* iface)
{
CFilterMapper2_THIS(iface,fmap3);
TRACE("(%p)->()\n",This);
return IUnknown_AddRef(This->unk.punkControl);
}
static ULONG WINAPI
IFilterMapper3_fnRelease(IFilterMapper3* iface)
{
CFilterMapper2_THIS(iface,fmap3);
TRACE("(%p)->()\n",This);
return IUnknown_Release(This->unk.punkControl);
}
static HRESULT WINAPI
IFilterMapper3_fnCreateCategory(IFilterMapper3* iface,REFCLSID rclsidCategory,DWORD dwMerit,LPCWSTR lpwszDesc)
{
CFilterMapper2_THIS(iface,fmap3);
FIXME("(%p)->() stub!\n",This);
return E_NOTIMPL;
}
static HRESULT WINAPI
IFilterMapper3_fnUnregisterFilter(IFilterMapper3* iface,const CLSID* pclsidCategory,const OLECHAR* lpwszInst,REFCLSID rclsidFilter)
{
CFilterMapper2_THIS(iface,fmap3);
FIXME("(%p)->() stub!\n",This);
return E_NOTIMPL;
}
static HRESULT WINAPI
IFilterMapper3_fnRegisterFilter(IFilterMapper3* iface,REFCLSID rclsidFilter,LPCWSTR lpName,IMoniker** ppMoniker,const CLSID* pclsidCategory,const OLECHAR* lpwszInst,const REGFILTER2* pRF2)
{
CFilterMapper2_THIS(iface,fmap3);
FIXME("(%p)->() stub!\n",This);
return E_NOTIMPL;
}
static HRESULT WINAPI
IFilterMapper3_fnEnumMatchingFilters(IFilterMapper3* iface,IEnumMoniker** ppMoniker,DWORD dwFlags,BOOL bExactMatch,DWORD dwMerit,BOOL bInputNeeded,DWORD cInputTypes,const GUID* pguidInputTypes,const REGPINMEDIUM* pPinMediumIn,const CLSID* pPinCategoryIn,BOOL bRender,BOOL bOutputNeeded,DWORD cOutputTypes,const GUID* pguidOutputTypes,const REGPINMEDIUM* pPinMediumOut,const CLSID* pPinCategoryOut)
{
CFilterMapper2_THIS(iface,fmap3);
FIXME("(%p)->() stub!\n",This);
return E_NOTIMPL;
}
static HRESULT WINAPI
IFilterMapper3_fnGetICreateDevEnum(IFilterMapper3* iface,ICreateDevEnum** ppDevEnum)
{
CFilterMapper2_THIS(iface,fmap3);
/* undocumented */
FIXME("(%p)->() stub!\n",This);
return E_NOTIMPL;
}
static ICOM_VTABLE(IFilterMapper3) ifmap3 =
{
ICOM_MSVTABLE_COMPAT_DummyRTTIVALUE
/* IUnknown fields */
IFilterMapper3_fnQueryInterface,
IFilterMapper3_fnAddRef,
IFilterMapper3_fnRelease,
/* IFilterMapper2 fields */
IFilterMapper3_fnCreateCategory,
IFilterMapper3_fnUnregisterFilter,
IFilterMapper3_fnRegisterFilter,
IFilterMapper3_fnEnumMatchingFilters,
/* IFilterMapper3 fields */
IFilterMapper3_fnGetICreateDevEnum,
};
void CFilterMapper2_InitIFilterMapper3( CFilterMapper2* pfm )
{
TRACE("(%p)\n",pfm);
ICOM_VTBL(&pfm->fmap3) = &ifmap3;
}
void CFilterMapper2_UninitIFilterMapper3( CFilterMapper2* pfm )
{
TRACE("(%p)\n",pfm);
}

View File

@ -218,3 +218,8 @@ void CFilterGraph_InitIMediaControl( CFilterGraph* pfg )
TRACE("(%p)\n",pfg);
ICOM_VTBL(&pfg->mediacontrol) = &imediacontrol;
}
void CFilterGraph_UninitIMediaControl( CFilterGraph* pfg )
{
TRACE("(%p)\n",pfg);
}

View File

@ -220,3 +220,8 @@ void CFilterGraph_InitIMediaEventEx( CFilterGraph* pfg )
TRACE("(%p)\n",pfg);
ICOM_VTBL(&pfg->mediaevent) = &imediaevent;
}
void CFilterGraph_UninitIMediaEventEx( CFilterGraph* pfg )
{
TRACE("(%p)\n",pfg);
}

View File

@ -239,3 +239,8 @@ void CFilterGraph_InitIMediaPosition( CFilterGraph* pfg )
TRACE("(%p)\n",pfg);
ICOM_VTBL(&pfg->mediaposition) = &imediaposition;
}
void CFilterGraph_UninitIMediaPosition( CFilterGraph* pfg )
{
TRACE("(%p)\n",pfg);
}

View File

@ -262,3 +262,8 @@ void CFilterGraph_InitIMediaSeeking( CFilterGraph* pfg )
TRACE("(%p)\n",pfg);
ICOM_VTBL(&pfg->mediaseeking) = &imediaseeking;
}
void CFilterGraph_UninitIMediaSeeking( CFilterGraph* pfg )
{
TRACE("(%p)\n",pfg);
}

View File

@ -8,6 +8,7 @@
#include "windef.h"
#include "winerror.h"
#include "winbase.h"
#include "wine/obj_base.h"
#include "debugtools.h"
@ -66,17 +67,22 @@ IUnknown_fnAddRef(IUnknown* iface)
TRACE("(%p)->()\n",This);
return ++(This->ref);
return InterlockedExchangeAdd(&(This->ref),1) + 1;
}
static ULONG WINAPI
IUnknown_fnRelease(IUnknown* iface)
{
ICOM_THIS(QUARTZ_IUnkImpl,iface);
LONG ref;
TRACE("(%p)->()\n",This);
if ( (--(This->ref)) > 0 )
return This->ref;
ref = InterlockedExchangeAdd(&(This->ref),-1) - 1;
if ( ref > 0 )
return (ULONG)ref;
if ( This->pOnFinalRelease != NULL )
(*(This->pOnFinalRelease))(iface);
QUARTZ_FreeObj(This);
@ -100,6 +106,7 @@ void QUARTZ_IUnkInit( QUARTZ_IUnkImpl* pImpl, IUnknown* punkOuter )
ICOM_VTBL(pImpl) = &iunknown;
pImpl->pEntries = NULL;
pImpl->dwEntries = 0;
pImpl->pOnFinalRelease = NULL;
pImpl->ref = 1;
pImpl->punkControl = (IUnknown*)pImpl;

View File

@ -24,6 +24,9 @@
*/
/* for InterlockedExchangeAdd. */
#include <pshpack4.h>
typedef struct QUARTZ_IFEntry
{
REFIID piid; /* interface ID. */
@ -38,12 +41,16 @@ typedef struct QUARTZ_IUnkImpl
/* array of supported IIDs and offsets. */
const QUARTZ_IFEntry* pEntries;
DWORD dwEntries;
/* called on final release. */
void (*pOnFinalRelease)(IUnknown* punk);
/* IUnknown fields. */
ULONG ref;
LONG ref;
IUnknown* punkControl;
} QUARTZ_IUnkImpl;
#include <poppack.h>
void QUARTZ_IUnkInit( QUARTZ_IUnkImpl* pImpl, IUnknown* punkOuter );

View File

@ -552,3 +552,9 @@ void CFilterGraph_InitIVideoWindow( CFilterGraph* pfg )
TRACE("(%p)\n",pfg);
ICOM_VTBL(&pfg->vidwin) = &ivideowindow;
}
void CFilterGraph_UninitIVideoWindow( CFilterGraph* pfg )
{
TRACE("(%p)\n",pfg);
}

View File

@ -17,6 +17,9 @@ DEFAULT_DEBUG_CHANNEL(quartz);
#include "fgraph.h"
#include "sysclock.h"
#include "memalloc.h"
#include "devenum.h"
#include "fmap.h"
#include "fmap2.h"
typedef struct QUARTZ_CLASSENTRY
@ -57,6 +60,9 @@ static const QUARTZ_CLASSENTRY QUARTZ_ClassList[] =
{ &CLSID_FilterGraph, &QUARTZ_CreateFilterGraph },
{ &CLSID_SystemClock, &QUARTZ_CreateSystemClock },
{ &CLSID_MemoryAllocator, &QUARTZ_CreateMemoryAllocator },
{ &CLSID_SystemDeviceEnum, &QUARTZ_CreateSystemDeviceEnum },
{ &CLSID_FilterMapper, &QUARTZ_CreateFilterMapper },
{ &CLSID_FilterMapper2, &QUARTZ_CreateFilterMapper2 },
{ NULL, NULL },
};
@ -190,6 +196,7 @@ static HRESULT IClassFactory_Alloc( const CLSID* pclsid, void** ppobj )
{
if ( IsEqualGUID( pclsid, pEntry->pclsid ) )
goto found;
pEntry ++;
}
return CLASS_E_CLASSNOTAVAILABLE;
@ -198,6 +205,8 @@ found:
if ( pImpl == NULL )
return E_OUTOFMEMORY;
TRACE( "allocated successfully.\n" );
ICOM_VTBL(pImpl) = &iclassfact;
pImpl->ref = 1;
pImpl->pEntry = pEntry;
@ -323,3 +332,30 @@ HRESULT WINAPI QUARTZ_DllUnregisterServer( void )
return E_FAIL;
}
/***********************************************************************
* AmpFactorToDB (QUARTZ.@)
*
* undocumented.
* (converting from Amp to dB?)
*
*/
DWORD WINAPI QUARTZ_AmpFactorToDB( DWORD dw )
{
FIXME( "(%08lx): undocumented API - stub!\n", dw );
return 0;
}
/***********************************************************************
* DBToAmpFactor (QUARTZ.@)
*
* undocumented.
* (converting from dB to Amp?)
*/
DWORD WINAPI QUARTZ_DBToAmpFactor( DWORD dw )
{
FIXME( "(%08lx): undocumented API - stub!\n", dw );
return 0;
}

View File

@ -10,8 +10,8 @@ debug_channels (quartz)
@ stdcall AMGetErrorTextA(long ptr long) AMGetErrorTextA
@ stdcall AMGetErrorTextW(long ptr long) AMGetErrorTextW
@ stub AmpFactorToDB
@ stub DBToAmpFactor
@ stdcall AmpFactorToDB(long) QUARTZ_AmpFactorToDB
@ stdcall DBToAmpFactor(long) QUARTZ_DBToAmpFactor
@ stdcall DllCanUnloadNow() QUARTZ_DllCanUnloadNow
@ stdcall DllGetClassObject(ptr ptr ptr) QUARTZ_DllGetClassObject
@ stdcall DllRegisterServer() QUARTZ_DllRegisterServer

58
dlls/quartz/regsvr.c Normal file
View File

@ -0,0 +1,58 @@
/*
* Regster/Unregister servers. (for internal use)
*
* hidenori@a2.ctktv.ne.jp
*/
#include "config.h"
#include "windef.h"
#include "winbase.h"
#include "wingdi.h"
#include "winerror.h"
#include "winreg.h"
#include "debugtools.h"
DEFAULT_DEBUG_CHANNEL(quartz);
#include "regsvr.h"
HRESULT QUARTZ_RegisterDLLServer(
const CLSID* pclsid,
LPCSTR lpFriendlyName,
LPCSTR lpNameOfDLL )
{
FIXME( "stub!\n" );
return E_FAIL;
}
HRESULT QUARTZ_UnregisterDLLServer(
const CLSID* pclsid )
{
FIXME( "stub!\n" );
return E_FAIL;
}
HRESULT QUARTZ_RegisterFilter(
const CLSID* pguidFilterCategory,
const CLSID* pclsid,
const BYTE* pbFilterData,
DWORD cbFilterData,
LPCSTR lpFriendlyName )
{
FIXME( "stub!\n" );
return E_FAIL;
}
HRESULT QUARTZ_UnregisterFilter(
const CLSID* pguidFilterCategory,
const CLSID* pclsid )
{
FIXME( "stub!\n" );
return E_FAIL;
}

29
dlls/quartz/regsvr.h Normal file
View File

@ -0,0 +1,29 @@
/*
* Regster/Unregister servers. (for internal use)
*
* hidenori@a2.ctktv.ne.jp
*/
#ifndef QUARTZ_REGSVR_H
#define QUARTZ_REGSVR_H
HRESULT QUARTZ_RegisterDLLServer(
const CLSID* pclsid,
LPCSTR lpFriendlyName,
LPCSTR lpNameOfDLL );
HRESULT QUARTZ_UnregisterDLLServer(
const CLSID* pclsid );
HRESULT QUARTZ_RegisterFilter(
const CLSID* pguidFilterCategory,
const CLSID* pclsid,
const BYTE* pbFilterData,
DWORD cbFilterData,
LPCSTR lpFriendlyName );
HRESULT QUARTZ_UnregisterFilter(
const CLSID* pguidFilterCategory,
const CLSID* pclsid );
#endif /* QUARTZ_REGSVR_H */

View File

@ -256,6 +256,20 @@
@="quartz.dll"
"ThreadingModel"="Both"
# CLSID_SystemDeviceEnum
[HKEY_CLASSES_ROOT\CLSID\{62BE5D10-60EB-11D0-BD3B-00A0C911CE86}\InprocServer32]
@="quartz.dll"
"ThreadingModel"="Both"
# CLSID_FilterMapper
[HKEY_CLASSES_ROOT\CLSID\{E436EBB2-524f-11CE-9F53-0020AF0BA770}\InprocServer32]
@="quartz.dll"
"ThreadingModel"="Both"
# CLSID_FilterMapper2
[HKEY_CLASSES_ROOT\CLSID\{CDA42200-BD88-11D0-BD4E-00A0C911CE86}\InprocServer32]
@="quartz.dll"
"ThreadingModel"="Both"
#
# Entries for Mozilla ActiveX control support