Skip to content
Snippets Groups Projects
Commit 1fa96246 authored by Lionel Ulmer's avatar Lionel Ulmer Committed by Alexandre Julliard
Browse files

Stubbed some interfaces for the FilterGraph CLSID.

parent 4cbc69a2
No related branches found
No related tags found
No related merge requests found
......@@ -3,11 +3,14 @@ TOPOBJDIR = ../..
SRCDIR = @srcdir@
VPATH = @srcdir@
MODULE = quartz.dll
IMPORTS = kernel32
EXTRALIBS = $(LIBUUID)
LDDLLFLAGS = @LDDLLFLAGS@
SYMBOLFILE = $(MODULE).tmp.o
C_SRCS = \
filtergraph.c \
main.c
@MAKE_DLL_RULES@
......
This diff is collapsed.
/* DirectShow Base Functions (QUARTZ.DLL)
*
* Copyright 2002 Lionel Ulmer
*
* This file contains the (internal) driver registration functions,
* driver enumeration APIs and DirectDraw creation functions.
*
* 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
#include "config.h"
#include "wine/debug.h"
#include "winerror.h"
#include "quartz_private.h"
WINE_DEFAULT_DEBUG_CHANNEL(quartz);
DWORD dll_ref = 0;
static DWORD dll_ref = 0;
/***********************************************************************
* DllRegisterServer (QUARTZ.@)
/* For the moment, do nothing here. */
BOOL WINAPI DllMain(HINSTANCE hInstDLL, DWORD fdwReason, LPVOID lpv)
{
switch(fdwReason) {
case DLL_PROCESS_ATTACH:
break;
case DLL_PROCESS_DETACH:
break;
}
return TRUE;
}
/******************************************************************************
* DirectShow ClassFactory
*/
HRESULT WINAPI QUARTZ_DllRegisterServer()
typedef struct {
IClassFactory ITF_IClassFactory;
DWORD ref;
HRESULT (*pfnCreateInstance)(IUnknown *pUnkOuter, LPVOID *ppObj);
} IClassFactoryImpl;
struct object_creation_info
{
const CLSID *clsid;
HRESULT (*pfnCreateInstance)(IUnknown *pUnkOuter, LPVOID *ppObj);
};
static const struct object_creation_info object_creation[] =
{
{ &CLSID_FilterGraph, FILTERGRAPH_create },
};
static HRESULT WINAPI
DSCF_QueryInterface(LPCLASSFACTORY iface,REFIID riid,LPVOID *ppobj)
{
FIXME("(): stub\n");
return 0;
ICOM_THIS(IClassFactoryImpl,iface);
if (IsEqualGUID(riid, &IID_IUnknown)
|| IsEqualGUID(riid, &IID_IClassFactory))
{
IClassFactory_AddRef(iface);
*ppobj = This;
return S_OK;
}
WARN("(%p)->(%s,%p),not found\n",This,debugstr_guid(riid),ppobj);
return E_NOINTERFACE;
}
static ULONG WINAPI DSCF_AddRef(LPCLASSFACTORY iface) {
ICOM_THIS(IClassFactoryImpl,iface);
return ++(This->ref);
}
static ULONG WINAPI DSCF_Release(LPCLASSFACTORY iface) {
ICOM_THIS(IClassFactoryImpl,iface);
ULONG ref = --This->ref;
if (ref == 0)
HeapFree(GetProcessHeap(), 0, This);
return ref;
}
static HRESULT WINAPI DSCF_CreateInstance(LPCLASSFACTORY iface, LPUNKNOWN pOuter,
REFIID riid, LPVOID *ppobj) {
ICOM_THIS(IClassFactoryImpl,iface);
HRESULT hres;
LPUNKNOWN punk;
TRACE("(%p)->(%p,%s,%p)\n",This,pOuter,debugstr_guid(riid),ppobj);
hres = This->pfnCreateInstance(pOuter, (LPVOID *) &punk);
if (FAILED(hres)) {
*ppobj = NULL;
return hres;
}
hres = IUnknown_QueryInterface(punk, riid, ppobj);
if (FAILED(hres)) {
*ppobj = NULL;
return hres;
}
IUnknown_Release(punk);
return hres;
}
static HRESULT WINAPI DSCF_LockServer(LPCLASSFACTORY iface,BOOL dolock) {
ICOM_THIS(IClassFactoryImpl,iface);
FIXME("(%p)->(%d),stub!\n",This,dolock);
return S_OK;
}
static ICOM_VTABLE(IClassFactory) DSCF_Vtbl =
{
ICOM_MSVTABLE_COMPAT_DummyRTTIVALUE
DSCF_QueryInterface,
DSCF_AddRef,
DSCF_Release,
DSCF_CreateInstance,
DSCF_LockServer
};
/*******************************************************************************
* DllGetClassObject [QUARTZ.@]
* Retrieves class object from a DLL object
*
* NOTES
* Docs say returns STDAPI
*
* PARAMS
* rclsid [I] CLSID for the class object
* riid [I] Reference to identifier of interface for class object
* ppv [O] Address of variable to receive interface pointer for riid
*
* RETURNS
* Success: S_OK
* Failure: CLASS_E_CLASSNOTAVAILABLE, E_OUTOFMEMORY, E_INVALIDARG,
* E_UNEXPECTED
*/
DWORD WINAPI QUARTZ_DllGetClassObject(REFCLSID rclsid, REFIID riid, LPVOID *ppv)
{
int i;
IClassFactoryImpl *factory;
TRACE("(%s,%s,%p)\n", debugstr_guid(rclsid), debugstr_guid(riid), ppv);
if ( !IsEqualGUID( &IID_IClassFactory, riid )
&& ! IsEqualGUID( &IID_IUnknown, riid) )
return E_NOINTERFACE;
for (i=0; i < sizeof(object_creation)/sizeof(object_creation[0]); i++)
{
if (IsEqualGUID(object_creation[i].clsid, rclsid))
break;
}
if (i == sizeof(object_creation)/sizeof(object_creation[0]))
{
FIXME("%s: no class found.\n", debugstr_guid(rclsid));
return CLASS_E_CLASSNOTAVAILABLE;
}
factory = HeapAlloc(GetProcessHeap(), 0, sizeof(*factory));
if (factory == NULL) return E_OUTOFMEMORY;
factory->ITF_IClassFactory.lpVtbl = &DSCF_Vtbl;
factory->ref = 1;
factory->pfnCreateInstance = object_creation[i].pfnCreateInstance;
*ppv = &(factory->ITF_IClassFactory);
return S_OK;
}
/***********************************************************************
* DllGetClassObject (QUARTZ.@)
* DllRegisterServer (QUARTZ.@)
*/
HRESULT WINAPI QUARTZ_DllGetClassObject(REFCLSID rclsid, REFIID iid, LPVOID *ppv)
HRESULT WINAPI QUARTZ_DllRegisterServer()
{
FIXME("\n\tCLSID:\t%s,\n\tIID:\t%s\n",debugstr_guid(rclsid),debugstr_guid(iid));
return CLASS_E_CLASSNOTAVAILABLE;
FIXME("(): stub\n");
return 0;
}
/***********************************************************************
* DllCanUnloadNow (QUARTZ.@)
* DllCanUnloadNow (QUARTZ.@)
*/
HRESULT WINAPI QUARTZ_DllCanUnloadNow()
{
......
/* DirectShow private interfaces (QUARTZ.DLL)
*
* Copyright 2002 Lionel Ulmer
*
* This file contains the (internal) driver registration functions,
* driver enumeration APIs and DirectDraw creation functions.
*
* 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
#ifndef __QUARTZ_PRIVATE_INCLUDED__
#define __QUARTZ_PRIVATE_INCLUDED__
#include "winbase.h"
#include "wtypes.h"
#include "wingdi.h"
#include "winuser.h"
#include "dshow.h"
typedef struct _IFilterGraphImpl {
ICOM_VTABLE(IGraphBuilder) *IGraphBuilder_vtbl;
ICOM_VTABLE(IMediaControl) *IMediaControl_vtbl;
ICOM_VTABLE(IMediaSeeking) *IMediaSeeking_vtbl;
ICOM_VTABLE(IBasicAudio) *IBasicAudio_vtbl;
ICOM_VTABLE(IBasicVideo) *IBasicVideo_vtbl;
ICOM_VTABLE(IVideoWindow) *IVideoWindow_vtbl;
ICOM_VTABLE(IMediaEventEx) *IMediaEventEx_vtbl;
ULONG ref;
} IFilterGraphImpl;
HRESULT FILTERGRAPH_create(IUnknown *pUnkOuter, LPVOID *ppObj) ;
#endif /* __QUARTZ_PRIVATE_INCLUDED__ */
......@@ -20,6 +20,7 @@ WINDOWS_INCLUDES = \
commctrl.h \
commdlg.h \
compobj.h \
control.h \
cpl.h \
custcntl.h \
d3d.h \
......@@ -140,6 +141,7 @@ WINDOWS_INCLUDES = \
sqlext.h \
sqltypes.h \
storage.h \
strmif.h \
tapi.h \
tchar.h \
tlhelp32.h \
......
This diff is collapsed.
......@@ -21,9 +21,9 @@
#define AM_NOVTABLE
#include "windows.h"
#include "windowsx.h"
#include "olectl.h"
#include "windef.h"
#include "wingdi.h"
#include "objbase.h"
#include "ddraw.h"
#include "mmsystem.h"
......@@ -31,10 +31,10 @@
#define NUMELMS(array) (sizeof(array)/sizeof((array)[0]))
#endif
/*#include "strmif.h"*/
#include "strmif.h"
/*#include "amvideo.h"*/
/*#include "amaudio.h"*/
/*#include "control.h"*/
#include "control.h"
/*#include "evcode.h"*/
#include "uuids.h"
/*#include "errors.h"*/
......
/*
* Copyright (C) 2002 Lionel Ulmer
*
* 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
#ifndef __STRMIF_INCLUDED__
#define __STRMIF_INCLUDED__
#include "windef.h"
#include "wingdi.h"
#include "objbase.h"
/* FilterGraph object / interface */
typedef struct IFilterGraph IFilterGraph;
typedef struct IBaseFilter IBaseFilter;
typedef struct IEnumFilters IEnumFilters;
typedef struct IPin IPin;
typedef struct IEnumPins IEnumPins;
typedef struct IEnumMediaTypes IEnumMediaTypes;
typedef struct IMediaFilter IMediaFilter;
typedef struct IReferenceClock IReferenceClock;
typedef struct IGraphBuilder IGraphBuilder;
typedef struct IMediaSeeking IMediaSeeking;
typedef LONGLONG REFERENCE_TIME;
typedef double REFTIME;
typedef struct _MediaType {
GUID majortype;
GUID subtype;
BOOL bFixedSizeSamples;
BOOL bTemporalCompression;
ULONG lSampleSize;
GUID formattype;
IUnknown *pUnk;
ULONG cbFormat;
/* [size_is] */ BYTE *pbFormat;
} AM_MEDIA_TYPE;
#define MAX_FILTER_NAME 128
typedef struct _FilterInfo {
WCHAR achName[MAX_FILTER_NAME];
IFilterGraph *pGraph;
} FILTER_INFO;
typedef enum _FilterState {
State_Stopped = 0,
State_Paused = 1,
State_Running = 2
} FILTER_STATE;
typedef enum _PinDirection {
PINDIR_INPUT = 0,
PINDIR_OUTPUT = 1
} PIN_DIRECTION;
#define MAX_PIN_NAME 128
typedef struct _PinInfo {
IBaseFilter *pFilter;
PIN_DIRECTION dir;
WCHAR achName[MAX_PIN_NAME];
} PIN_INFO;
typedef DWORD_PTR HSEMAPHORE;
typedef DWORD_PTR HEVENT;
#define INTERFACE IPin
#define IPin_METHODS \
IUnknown_METHODS \
STDMETHOD(Connect)(THIS_ IPin * pReceivePin, AM_MEDIA_TYPE * pmt) PURE; \
STDMETHOD(ReceiveConnection)(THIS_ IPin * pConnector, AM_MEDIA_TYPE * pmt) PURE; \
STDMETHOD(Disconnect)(THIS) PURE; \
STDMETHOD(ConnectedTo)(THIS_ IPin ** pPin) PURE; \
STDMETHOD(ConnectionMediaType)(THIS_ AM_MEDIA_TYPE * pmt) PURE; \
STDMETHOD(QueryPinInfo)(THIS_ PIN_INFO * pInfo) PURE; \
STDMETHOD(QueryDirection)(THIS_ PIN_DIRECTION * pPinDir) PURE; \
STDMETHOD(QueryId)(THIS_ LPWSTR * Id) PURE; \
STDMETHOD(QueryAccept)(THIS_ AM_MEDIA_TYPE * pmt) PURE; \
STDMETHOD(EnumMediaTypes)(THIS_ IEnumMediaTypes ** ppEnum) PURE; \
STDMETHOD(QueryInternalConnections)(THIS_ IPin ** apPin, ULONG * nPin) PURE; \
STDMETHOD(EndOfStream)(THIS) PURE; \
STDMETHOD(BeginFlush)(THIS) PURE; \
STDMETHOD(EndFlush)(THIS) PURE; \
STDMETHOD(NewSegment)(THIS_ REFERENCE_TIME tStart, REFERENCE_TIME tStop, double dRate) PURE;
ICOM_DEFINE(IPin,IUnknown)
#undef INTERFACE
#ifdef ICOM_CINTERFACE
/*** IUnknown methods ***/
#define IPin_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
#define IPin_AddRef(p) (p)->lpVtbl->AddRef(p)
#define IPin_Release(p) (p)->lpVtbl->Release(p)
/*** IPin methods ***/
#define IPin_Connect(p,a,b) (p)->lpVtbl->Connect(p,a,b)
#define IPin_ReceiveConnection(p,a,b) (p)->lpVtbl->ReceiveConnection(p,a,b)
#define IPin_Disconnect(p) (p)->lpVtbl->Disconnect(p)
#define IPin_ConnectedTo(p,a) (p)->lpVtbl->ConnectedTo(p,a)
#define IPin_ConnectionMediaType(p,a) (p)->lpVtbl->ConnectionMediaType(p,a)
#define IPin_QueryPinInfo(p,a) (p)->lpVtbl->QueryPinInfo(p,a)
#define IPin_QueryDirection(p,a) (p)->lpVtbl->QueryDirection(p,a)
#define IPin_QueryId(p,a) (p)->lpVtbl->QueryId(p,a)
#define IPin_QueryAccept(p,a) (p)->lpVtbl->QueryAccept(p,a)
#define IPin_EnumMediaTypes(p,a) (p)->lpVtbl->EnumMediaTypes(p,a)
#define IPin_QueryInternalConnections(p,a,b) (p)->lpVtbl->QueryInternalConnections(p,a,b)
#define IPin_EndOfStream(p) (p)->lpVtbl->EndOfStream(p)
#define IPin_BeginFlush(p) (p)->lpVtbl->BeginFlush(p)
#define IPin_EndFlush(p) (p)->lpVtbl->EndFlush(p)
#define IPin_NewSegment(p,a,b,c) (p)->lpVtbl->NewSegment(p,a,b,c)
#endif
#define INTERFACE IEnumPins
#define IEnumPins_METHODS \
IUnknown_METHODS \
STDMETHOD(Next)(THIS_ ULONG cPins, IPin ** ppPins, ULONG * pcFetched) PURE; \
STDMETHOD(Skip)(THIS_ ULONG cPins) PURE; \
STDMETHOD(Reset)(THIS) PURE; \
STDMETHOD(Clone)(THIS_ IEnumPins ** ppEnum) PURE;
ICOM_DEFINE(IEnumPins,IUnknown)
#undef INTERFACE
#ifdef ICOM_CINTERFACE
/*** IUnknown methods ***/
#define IEnumPins_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
#define IEnumPins_AddRef(p) (p)->lpVtbl->AddRef(p)
#define IEnumPins_Release(p) (p)->lpVtbl->Release(p)
/*** IEnumPins methods ***/
#define IEnumPins_Next(p,a,b,c) (p)->lpVtbl->Next(p,a,b,c)
#define IEnumPins_Skip(p,a) (p)->lpVtbl->Skip(p,a)
#define IEnumPins_Reset(p) (p)->lpVtbl->Reset(p)
#define IEnumPins_Clone(p,a) (p)->lpVtbl->Clone(p,a)
#endif
#define INTERFACE IMediaFilter
#define IMediaFilter_METHODS \
IPersist_METHODS \
STDMETHOD(Stop)(THIS) PURE; \
STDMETHOD(Pause)(THIS) PURE; \
STDMETHOD(Run)(THIS_ REFERENCE_TIME tStart) PURE; \
STDMETHOD(GetState)(THIS_ DWORD dwMilliSecsTimeout, FILTER_STATE * State) PURE; \
STDMETHOD(SetSyncSource)(THIS_ IReferenceClock * pClock) PURE; \
STDMETHOD(GetSyncSource)(THIS_ IReferenceClock ** pClock) PURE;
ICOM_DEFINE(IMediaFilter,IPersist)
#undef INTERFACE
#ifdef ICOM_CINTERFACE
/*** IUnknown methods ***/
#define IMediaFilter_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
#define IMediaFilter_AddRef(p) (p)->lpVtbl->AddRef(p)
#define IMediaFilter_Release(p) (p)->lpVtbl->Release(p)
/*** IPersist methods ***/
#define IMediaFilter_GetClassID(p,a) (p)->lpVtbl->GetClassID(p,a)
/*** IMediaFilter methods ***/
#define IMediaFilter_Stop(p) (p)->lpVtbl->Stop(p)
#define IMediaFilter_Pause(p) (p)->lpVtbl->Pause(p)
#define IMediaFilter_Run(p,a) (p)->lpVtbl->Run(p,a)
#define IMediaFilter_GetState(p,a,b) (p)->lpVtbl->GetState(p,a,b)
#define IMediaFilter_SetSyncSource(p,a) (p)->lpVtbl->SetSyncSource(p,a)
#define IMediaFilter_GetSyncSource(p,a) (p)->lpVtbl->GetSyncSource(p,a)
#endif
#define INTERFACE IBaseFilter
#define IBaseFilter_METHODS \
IMediaFilter_METHODS \
STDMETHOD(EnumPins)(THIS_ IEnumPins ** ppEnum) PURE; \
STDMETHOD(FindPin)(THIS_ LPCWSTR Id, IPin ** ppPin) PURE; \
STDMETHOD(QueryFilterInfo)(THIS_ FILTER_INFO * pInfo) PURE; \
STDMETHOD(JoinFilterGraph)(THIS_ IFilterGraph * pGraph, LPCWSTR pName) PURE; \
STDMETHOD(QueryVendorInfo)(THIS_ LPWSTR * pVendorInfo) PURE;
ICOM_DEFINE(IBaseFilter,IMediaFilter)
#undef INTERFACE
#ifdef ICOM_CINTERFACE
/*** IUnknown methods ***/
#define IBaseFilter_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
#define IBaseFilter_AddRef(p) (p)->lpVtbl->AddRef(p)
#define IBaseFilter_Release(p) (p)->lpVtbl->Release(p)
/*** IPersist methods ***/
#define IBaseFilter_GetClassID(p,a) (p)->lpVtbl->GetClassID(p,a)
/*** IMediaFilter methods ***/
#define IBaseFilter_Stop(p) (p)->lpVtbl->Stop(p)
#define IBaseFilter_Pause(p) (p)->lpVtbl->Pause(p)
#define IBaseFilter_Run(p,a) (p)->lpVtbl->Run(p,a)
#define IBaseFilter_GetState(p,a,b) (p)->lpVtbl->GetState(p,a,b)
#define IBaseFilter_SetSyncSource(p,a) (p)->lpVtbl->SetSyncSource(p,a)
#define IBaseFilter_GetSyncSource(p,a) (p)->lpVtbl->GetSyncSource(p,a)
/*** IBaseFilter methods ***/
#define IBaseFilter_EnumPins(p,a) (p)->lpVtbl->EnumPins(p,a)
#define IBaseFilter_FindPin(p,a,b) (p)->lpVtbl->FindPin(p,a,b)
#define IBaseFilter_QueryFilterInfo(p,a) (p)->lpVtbl->QueryFilterInfo(p,a)
#define IBaseFilter_JoinFilterGraph(p,a,b) (p)->lpVtbl->JoinFilterGraph(p,a,b)
#define IBaseFilter_QueryVendorInfo(p,a) (p)->lpVtbl->QueryVendorInfo(p,a)
#endif
#define INTERFACE IFilterGraph
#define IFilterGraph_METHODS \
IUnknown_METHODS \
STDMETHOD(AddFilter)(THIS_ IBaseFilter * pFilter, LPCWSTR pName) PURE; \
STDMETHOD(RemoveFilter)(THIS_ IBaseFilter * pFilter) PURE; \
STDMETHOD(EnumFilter)(THIS_ IEnumFilters ** ppEnum) PURE; \
STDMETHOD(FindFilterByName)(THIS_ LPCWSTR pName, IBaseFilter ** ppFilter) PURE; \
STDMETHOD(ConnectDirect)(THIS_ IPin * ppinIn, IPin * ppinOut, const AM_MEDIA_TYPE * pmt) PURE; \
STDMETHOD(Reconnect)(THIS_ IPin * ppin) PURE; \
STDMETHOD(Disconnect)(THIS_ IPin * ppin) PURE; \
STDMETHOD(SetDefaultSyncSource)(THIS) PURE;
ICOM_DEFINE(IFilterGraph,IUnknown)
#undef INTERFACE
#ifdef ICOM_CINTERFACE
/*** IUnknown methods ***/
#define IFilterGraph_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
#define IFilterGraph_AddRef(p) (p)->lpVtbl->AddRef(p)
#define IFilterGraph_Release(p) (p)->lpVtbl->Release(p)
/*** IFilterGraph methods ***/
#define IFilterGraph_AddFilter(p,a,b) (p)->lpVtbl->AddFilter(p,a,b)
#define IFilterGraph_RemoveFilter(p,a) (p)->lpVtbl->RemoveFilter(p,a)
#define IFilterGraph_EnumFilter(p,a) (p)->lpVtbl->EnumFilter(p,a)
#define IFilterGraph_FindFilterByName(p,a,b) (p)->lpVtbl->FindFilterByName(p,a,b)
#define IFilterGraph_ConnectDirect(p,a,b,c) (p)->lpVtbl->ConnectDirect(p,a,b,c)
#define IFilterGraph_Reconnect(p,a) (p)->lpVtbl->Reconnect(p,a)
#define IFilterGraph_Disconnect(p,a) (p)->lpVtbl->Disconnect(p,a)
#define IFilterGraph_SetDefaultSyncSource(p) (p)->lpVtbl->SetDefaultSyncSource(p)
#endif
#define INTERFACE IEnumFilters
#define IEnumFilters_METHODS \
IUnknown_METHODS \
STDMETHOD(Next)(THIS_ ULONG cFilters, IBaseFilter ** ppFilter, ULONG * pcFetched) PURE; \
STDMETHOD(Skip)(THIS_ ULONG cFilters) PURE; \
STDMETHOD(Reset)(THIS) PURE; \
STDMETHOD(Clone)(THIS_ IEnumFilters ** ppEnum) PURE;
ICOM_DEFINE(IEnumFilters,IUnknown)
#undef INTERFACE
#ifdef ICOM_CINTERFACE
/*** IUnknown methods ***/
#define IEnumFilters_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
#define IEnumFilters_AddRef(p) (p)->lpVtbl->AddRef(p)
#define IEnumFilters_Release(p) (p)->lpVtbl->Release(p)
/*** IEnumFilters methods ***/
#define IEnumFilters_Next(p,a,b,c) (p)->lpVtbl->Next(p,a,b,c)
#define IEnumFilters_Skip(p,a) (p)->lpVtbl->Skip(p,a)
#define IEnumFilters_Reset(p) (p)->lpVtbl->Reset(p)
#define IEnumFilters_Clone(p,a) (p)->lpVtbl->Clone(p,a)
#endif
#define INTERFACE IEnumMediaTypes
#define IEnumMediaTypes_METHODS \
IUnknown_METHODS \
STDMETHOD(Next)(THIS_ ULONG cMediaTypes, AM_MEDIA_TYPE ** ppMediaTypes, ULONG * pcFetched) PURE; \
STDMETHOD(Skip)(THIS_ ULONG cMediaTypes) PURE; \
STDMETHOD(Reset)(THIS) PURE; \
STDMETHOD(Clone)(THIS_ IEnumMediaTypes ** ppEnum) PURE;
ICOM_DEFINE(IEnumMediaTypes,IUnknown)
#undef INTERFACE
#ifdef ICOM_CINTERFACE
/*** IUnknown methods ***/
#define IEnumMediaTypes_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
#define IEnumMediaTypes_AddRef(p) (p)->lpVtbl->AddRef(p)
#define IEnumMediaTypes_Release(p) (p)->lpVtbl->Release(p)
/*** IEnumMediaTypes methods ***/
#define IEnumMediaTypes_Next(p,a,b,c) (p)->lpVtbl->Next(p,a,b,c)
#define IEnumMediaTypes_Skip(p,a) (p)->lpVtbl->Skip(p,a)
#define IEnumMediaTypes_Reset(p) (p)->lpVtbl->Reset(p)
#define IEnumMediaTypes_Clone(p,a) (p)->lpVtbl->Clone(p,a)
#endif
#define INTERFACE IReferenceClock
#define IReferenceClock_METHODS \
IUnknown_METHODS \
STDMETHOD(GetTime)(THIS_ REFERENCE_TIME * pTime) PURE; \
STDMETHOD(AdviseTime)(THIS_ REFERENCE_TIME baseTime, REFERENCE_TIME streamTime, HEVENT hEvent, DWORD_PTR * pdwAdviseCookie) PURE; \
STDMETHOD(AdvisePeriodic)(THIS_ REFERENCE_TIME startTime, REFERENCE_TIME periodTime, HSEMAPHORE hSemaphore, DWORD_PTR * pdwAdviseCookie) PURE; \
STDMETHOD(Unadvise)(THIS_ DWORD_PTR dwAdviseCookie) PURE;
ICOM_DEFINE(IReferenceClock,IUnknown)
#undef INTERFACE
#ifdef ICOM_CINTERFACE
/*** IUnknown methods ***/
#define IReferenceClock_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
#define IReferenceClock_AddRef(p) (p)->lpVtbl->AddRef(p)
#define IReferenceClock_Release(p) (p)->lpVtbl->Release(p)
/*** IReferenceClock methods ***/
#define IReferenceClock_GetTime(p,a) (p)->lpVtbl->GetTime(p,a)
#define IReferenceClock_AdviseTime(p,a,b,c,d) (p)->lpVtbl->AdviseTime(p,a,b,c,d)
#define IReferenceClock_AdvisePeriodic(p,a,b,c,d) (p)->lpVtbl->AdvisePeriodic(p,a,b,c,d)
#define IReferenceClock_Unadvise(p,a) (p)->lpVtbl->Unadvise(p,a)
#endif
#define INTERFACE IGraphBuilder
#define IGraphBuilder_METHODS \
IFilterGraph_METHODS \
STDMETHOD(Connect)(THIS_ IPin * ppinOut, IPin * ppinIn) PURE; \
STDMETHOD(Render)(THIS_ IPin * ppinOut) PURE; \
STDMETHOD(RenderFile)(THIS_ LPCWSTR lpcwstrFile, LPCWSTR lpcwstrPlayList) PURE; \
STDMETHOD(AddSourceFilter)(THIS_ LPCWSTR lpcwstrFileName, LPCWSTR lpcwstrFilterName, IBaseFilter ** ppFilter) PURE; \
STDMETHOD(SetLogFile)(THIS_ DWORD_PTR hFile) PURE; \
STDMETHOD(Abort)(THIS) PURE; \
STDMETHOD(ShouldOperationContinue)(THIS) PURE;
ICOM_DEFINE(IGraphBuilder,IFilterGraph)
#undef INTERFACE
#ifdef ICOM_CINTERFACE
/*** IUnknown methods ***/
#define IGraphBuilder_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
#define IGraphBuilder_AddRef(p) (p)->lpVtbl->AddRef(p)
#define IGraphBuilder_Release(p) (p)->lpVtbl->Release(p)
/*** IFilterGraph methods ***/
#define IGraphBuilder_AddFilter(p,a,b) (p)->lpVtbl->AddFilter(p,a,b)
#define IGraphBuilder_RemoveFilter(p,a) (p)->lpVtbl->RemoveFilter(p,a)
#define IGraphBuilder_EnumFilter(p,a) (p)->lpVtbl->EnumFilter(p,a)
#define IGraphBuilder_FindFilterByName(p,a,b) (p)->lpVtbl->FindFilterByName(p,a,b)
#define IGraphBuilder_ConnectDirect(p,a,b,c) (p)->lpVtbl->ConnectDirect(p,a,b,c)
#define IGraphBuilder_Reconnect(p,a) (p)->lpVtbl->Reconnect(p,a)
#define IGraphBuilder_Disconnect(p,a) (p)->lpVtbl->Disconnect(p,a)
#define IGraphBuilder_SetDefaultSyncSource(p) (p)->lpVtbl->SetDefaultSyncSource(p)
/*** IGraphBuilder methods ***/
#define IGraphBuilder_Connect(p,a,b) (p)->lpVtbl->Connect(p,a,b)
#define IGraphBuilder_Render(p,a) (p)->lpVtbl->Render(p,a)
#define IGraphBuilder_RenderFile(p,a,b) (p)->lpVtbl->RenderFile(p,a,b)
#define IGraphBuilder_AddSourceFilter(p,a,b,c) (p)->lpVtbl->AddSourceFilter(p,a,b,c)
#define IGraphBuilder_SetLogFile(p,a) (p)->lpVtbl->SetLogFile(p,a)
#define IGraphBuilder_Abort(p) (p)->lpVtbl->Abort(p)
#define IGraphBuilder_ShouldOperationContinue(p) (p)->lpVtbl->ShouldOperationContinue(p)
#endif
#define INTERFACE IMediaSeeking
#define IMediaSeeking_METHODS \
IUnknown_METHODS \
STDMETHOD(GetCapabilities)(THIS_ DWORD * pCapabilities) PURE; \
STDMETHOD(CheckCapabilities)(THIS_ DWORD * pCapabilities) PURE; \
STDMETHOD(IsFormatSupported)(THIS_ GUID * pFormat) PURE; \
STDMETHOD(QueryPreferredFormat)(THIS_ GUID * pFormat) PURE; \
STDMETHOD(GetTimeFormat)(THIS_ GUID * pFormat) PURE; \
STDMETHOD(IsUsingTimeFormat)(THIS_ GUID * pFormat) PURE; \
STDMETHOD(SetTimeFormat)(THIS_ GUID * pFormat) PURE; \
STDMETHOD(GetDuration)(THIS_ LONGLONG * pDuration) PURE; \
STDMETHOD(GetStopPosition)(THIS_ LONGLONG * pStop) PURE; \
STDMETHOD(GetCurrentPosition)(THIS_ LONGLONG * pCurrent) PURE; \
STDMETHOD(ConvertTimeFormat)(THIS_ LONGLONG * pTarget, GUID * pTargetFormat, LONGLONG Source, GUID * pSourceFormat) PURE; \
STDMETHOD(SetPositions)(THIS_ LONGLONG * pCurrent, DWORD dwCurrentFlags, LONGLONG * pStop, DWORD dwStopFlags) PURE; \
STDMETHOD(GetPositions)(THIS_ LONGLONG * pCurrent, LONGLONG * pStop) PURE; \
STDMETHOD(GetAvailable)(THIS_ LONGLONG * pEarliest, LONGLONG * pLatest) PURE; \
STDMETHOD(SetRate)(THIS_ double dRate) PURE; \
STDMETHOD(GetRate)(THIS_ double * pdRate) PURE; \
STDMETHOD(GetPreroll)(THIS_ LONGLONG * pllPreroll) PURE;
ICOM_DEFINE(IMediaSeeking,IUnknown)
#undef INTERFACE
#ifdef ICOM_CINTERFACE
/*** IUnknown methods ***/
#define IMediaSeeking_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
#define IMediaSeeking_AddRef(p) (p)->lpVtbl->AddRef(p)
#define IMediaSeeking_Release(p) (p)->lpVtbl->Release(p)
/*** IMediaSeeking methods ***/
#define IMediaSeeking_GetCapabilities(p,a) (p)->lpVtbl->GetCapabilities(p,a)
#define IMediaSeeking_CheckCapabilities(p,a) (p)->lpVtbl->CheckCapabilities(p,a)
#define IMediaSeeking_IsFormatSupported(p,a) (p)->lpVtbl->IsFormatSupported(p,a)
#define IMediaSeeking_QueryPreferredFormat(p,a) (p)->lpVtbl->QueryPreferredFormat(p,a)
#define IMediaSeeking_GetTimeFormat(p,a) (p)->lpVtbl->GetTimeFormat(p,a)
#define IMediaSeeking_IsUsingTimeFormat(p,a) (p)->lpVtbl->IsUsingTimeFormat(p,a)
#define IMediaSeeking_SetTimeFormat(p,a) (p)->lpVtbl->SetTimeFormat(p,a)
#define IMediaSeeking_GetDuration(p,a) (p)->lpVtbl->GetDuration(p,a)
#define IMediaSeeking_GetStopPosition(p,a) (p)->lpVtbl->GetStopPosition(p,a)
#define IMediaSeeking_GetCurrentPosition(p,a) (p)->lpVtbl->GetCurrentPosition(p,a)
#define IMediaSeeking_ConvertTimeFormat(p,a,b,c,d) (p)->lpVtbl->ConvertTimeFormat(p,a,b,c,d)
#define IMediaSeeking_SetPositions(p,a,b,c,d) (p)->lpVtbl->SetPositions(p,a,b,c,d)
#define IMediaSeeking_GetPositions(p,a,b) (p)->lpVtbl->GetPositions(p,a,b)
#define IMediaSeeking_GetAvailable(p,a,b) (p)->lpVtbl->GetAvailable(p,a,b)
#define IMediaSeeking_SetRate(p,a) (p)->lpVtbl->SetRate(p,a)
#define IMediaSeeking_GetRate(p,a) (p)->lpVtbl->GetRate(p,a)
#define IMediaSeeking_GetPreroll(p,a) (p)->lpVtbl->GetPreroll(p,a)
#endif
#endif /* __STRMIF_INCLUDED__ */
......@@ -270,5 +270,13 @@ OUR_GUID_ENTRY(CLSID_VideoProcAmpPropertyPage, 0x71f96464, 0x78f3, 0x11d0,
OUR_GUID_ENTRY(CLSID_CameraControlPropertyPage, 0x71f96465, 0x78f3, 0x11d0, 0xa1, 0x8c, 0x00, 0xa0, 0xc9, 0x11, 0x89, 0x56)
OUR_GUID_ENTRY(CLSID_AnalogVideoDecoderPropertyPage, 0x71f96466, 0x78f3, 0x11d0, 0xa1, 0x8c, 0x00, 0xa0, 0xc9, 0x11, 0x89, 0x56)
OUR_GUID_ENTRY(CLSID_VideoStreamConfigPropertyPage, 0x71f96467, 0x78f3, 0x11d0, 0xa1, 0x8c, 0x00, 0xa0, 0xc9, 0x11, 0x89, 0x56)
OUR_GUID_ENTRY(IID_IGraphBuilder, 0x56a868a9, 0x0ad4, 0x11ce, 0xb0, 0x3a, 0x00, 0x20, 0xaf, 0x0b, 0xa7, 0x70)
OUR_GUID_ENTRY(IID_IMediaControl, 0x56a868b1, 0x0ad4, 0x11ce, 0xb0, 0x3a, 0x00, 0x20, 0xaf, 0x0b, 0xa7, 0x70)
OUR_GUID_ENTRY(IID_IMediaSeeking, 0x36b73880, 0xc2c8, 0x11cf, 0x8b, 0x46, 0x00, 0x80, 0x5f, 0x6c, 0xef, 0x60)
OUR_GUID_ENTRY(IID_IBasicVideo, 0x56a868b5, 0x0ad4, 0x11ce, 0xb0, 0x3a, 0x00, 0x20, 0xaf, 0x0b, 0xa7, 0x70)
OUR_GUID_ENTRY(IID_IVideoWindow, 0x56a868b4, 0x0ad4, 0x11ce, 0xb0, 0x3a, 0x00, 0x20, 0xaf, 0x0b, 0xa7, 0x70)
OUR_GUID_ENTRY(IID_IMediaEvent, 0x56a868b6, 0x0ad4, 0x11ce, 0xb0, 0x3a, 0x00, 0x20, 0xaf, 0x0b, 0xa7, 0x70)
OUR_GUID_ENTRY(IID_IMediaEventEx, 0x56a868c0, 0x0ad4, 0x11ce, 0xb0, 0x3a, 0x00, 0x20, 0xaf, 0x0b, 0xa7, 0x70)
OUR_GUID_ENTRY(IID_IBasicAudio, 0x56a868b3, 0x0ad4, 0x11ce, 0xb0, 0x3a, 0x00, 0x20, 0xaf, 0x0b, 0xa7, 0x70)
#undef OUR_GUID_ENTRY
......@@ -4004,3 +4004,14 @@
[HKEY_CLASSES_ROOT\txtfile\shell\print\command]
@="C:\\WINDOWS\\NOTEPAD.EXE /p %1"
#
# Entries for DirectShow
#
[Software\\CLASSES\\CLSID\\{E436EBB3-524F-11CE-9F53-0020AF0BA770}] 1032641842
@="Filter Graph"
[Software\\CLASSES\\CLSID\\{E436EBB3-524F-11CE-9F53-0020AF0BA770}\\InprocServer32] 1032641842
@="C:\\windows\\system\\quartz.dll"
"ThreadingModel"="Both"
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment