/* Definition of important DirectShow interfaces. Created using freely-available DirectX 8.0 SDK ( http://msdn.microsoft.com ) */ #ifndef INTERFACES_H #define INTERFACES_H #include "guids.h" #include "default.h" #include #ifndef STDCALL #define STDCALL __attribute__((__stdcall__)) #endif typedef GUID& REFIID; typedef GUID CLSID; typedef GUID IID; /* Sh*t. MSVC++ and g++ use different methods of storing vtables. */ struct IBaseFilter; struct IReferenceClock; struct IEnumPins; struct IEnumMediaTypes; struct IPin; struct IFilterGraph; struct IMemInputPin; struct IMemAllocator; struct IMediaSample; enum PIN_DIRECTION; class IClassFactory2 { public: virtual long STDCALL QueryInterface(GUID* iid, void** ppv) =0; virtual long STDCALL AddRef() =0; virtual long STDCALL Release() =0; virtual long STDCALL CreateInstance(IUnknown* pUnkOuter, GUID* riid, void** ppvObject) =0; }; struct IBaseFilter_vt: IUnknown_vt { HRESULT STDCALL ( *GetClassID )( IBaseFilter * This, /* [out] */ CLSID *pClassID); HRESULT STDCALL ( *Stop )( IBaseFilter * This); HRESULT STDCALL ( *Pause )( IBaseFilter * This); HRESULT STDCALL ( *Run )( IBaseFilter * This, REFERENCE_TIME tStart); HRESULT STDCALL ( *GetState )( IBaseFilter * This, /* [in] */ unsigned long dwMilliSecsTimeout, // /* [out] */ FILTER_STATE *State); void* State); HRESULT STDCALL ( *SetSyncSource )( IBaseFilter * This, /* [in] */ IReferenceClock *pClock); HRESULT STDCALL ( *GetSyncSource )( IBaseFilter * This, /* [out] */ IReferenceClock **pClock); HRESULT STDCALL ( *EnumPins )( IBaseFilter * This, /* [out] */ IEnumPins **ppEnum); HRESULT STDCALL ( *FindPin )( IBaseFilter * This, /* [string][in] */ const unsigned short* Id, /* [out] */ IPin **ppPin); HRESULT STDCALL ( *QueryFilterInfo )( IBaseFilter * This, // /* [out] */ FILTER_INFO *pInfo); void* pInfo); HRESULT STDCALL ( *JoinFilterGraph )( IBaseFilter * This, /* [in] */ IFilterGraph *pGraph, /* [string][in] */ const unsigned short* pName); HRESULT STDCALL ( *QueryVendorInfo )( IBaseFilter * This, /* [string][out] */ unsigned short* *pVendorInfo); }; struct IBaseFilter { struct IBaseFilter_vt *vt; }; struct IEnumPins_vt: IUnknown_vt { HRESULT STDCALL ( *Next )( IEnumPins * This, /* [in] */ unsigned long cPins, /* [size_is][out] */ IPin **ppPins, /* [out] */ unsigned long *pcFetched); HRESULT STDCALL ( *Skip )( IEnumPins * This, /* [in] */ unsigned long cPins); HRESULT STDCALL ( *Reset )( IEnumPins * This); HRESULT STDCALL ( *Clone )( IEnumPins * This, /* [out] */ IEnumPins **ppEnum); }; struct IEnumPins { struct IEnumPins_vt *vt; }; struct IPin_vt: IUnknown_vt { HRESULT STDCALL ( *Connect )( IPin * This, /* [in] */ IPin *pReceivePin, /* [in] */ /*const*/ AM_MEDIA_TYPE *pmt); HRESULT STDCALL ( *ReceiveConnection )( IPin * This, /* [in] */ IPin *pConnector, /* [in] */ const AM_MEDIA_TYPE *pmt); HRESULT STDCALL ( *Disconnect )( IPin * This); HRESULT STDCALL ( *ConnectedTo )( IPin * This, /* [out] */ IPin **pPin); HRESULT STDCALL ( *ConnectionMediaType )( IPin * This, /* [out] */ AM_MEDIA_TYPE *pmt); HRESULT STDCALL ( *QueryPinInfo )( IPin * This, /* [out] */ PIN_INFO *pInfo); HRESULT STDCALL ( *QueryDirection )( IPin * This, /* [out] */ PIN_DIRECTION *pPinDir); HRESULT STDCALL ( *QueryId )( IPin * This, /* [out] */ unsigned short* *Id); HRESULT STDCALL ( *QueryAccept )( IPin * This, /* [in] */ const AM_MEDIA_TYPE *pmt); HRESULT STDCALL ( *EnumMediaTypes )( IPin * This, /* [out] */ IEnumMediaTypes **ppEnum); HRESULT STDCALL ( *QueryInternalConnections )( IPin * This, /* [out] */ IPin **apPin, /* [out][in] */ unsigned long *nPin); HRESULT STDCALL ( *EndOfStream )( IPin * This); HRESULT STDCALL ( *BeginFlush )( IPin * This); HRESULT STDCALL ( *EndFlush )( IPin * This); HRESULT STDCALL ( *NewSegment )( IPin * This, /* [in] */ REFERENCE_TIME tStart, /* [in] */ REFERENCE_TIME tStop, /* [in] */ double dRate); }; struct IPin { IPin_vt *vt; }; struct IEnumMediaTypes_vt: IUnknown_vt { HRESULT STDCALL ( *Next )( IEnumMediaTypes * This, /* [in] */ unsigned long cMediaTypes, /* [size_is][out] */ AM_MEDIA_TYPE **ppMediaTypes, /* [out] */ unsigned long *pcFetched); HRESULT STDCALL ( *Skip )( IEnumMediaTypes * This, /* [in] */ unsigned long cMediaTypes); HRESULT STDCALL ( *Reset )( IEnumMediaTypes * This); HRESULT STDCALL ( *Clone )( IEnumMediaTypes * This, /* [out] */ IEnumMediaTypes **ppEnum); }; struct IEnumMediaTypes { IEnumMediaTypes_vt *vt; }; struct IMemInputPin_vt: IUnknown_vt { HRESULT STDCALL ( *GetAllocator )( IMemInputPin * This, /* [out] */ IMemAllocator **ppAllocator); HRESULT STDCALL ( *NotifyAllocator )( IMemInputPin * This, /* [in] */ IMemAllocator *pAllocator, /* [in] */ int bReadOnly); HRESULT STDCALL ( *GetAllocatorRequirements )( IMemInputPin * This, /* [out] */ ALLOCATOR_PROPERTIES *pProps); HRESULT STDCALL ( *Receive )( IMemInputPin * This, /* [in] */ IMediaSample *pSample); HRESULT STDCALL ( *ReceiveMultiple )( IMemInputPin * This, /* [size_is][in] */ IMediaSample **pSamples, /* [in] */ long nSamples, /* [out] */ long *nSamplesProcessed); HRESULT STDCALL ( *ReceiveCanBlock )( IMemInputPin * This); }; struct IMemInputPin { IMemInputPin_vt *vt; }; struct IMemAllocator_vt: IUnknown_vt { HRESULT STDCALL ( *SetProperties )( IMemAllocator * This, /* [in] */ ALLOCATOR_PROPERTIES *pRequest, /* [out] */ ALLOCATOR_PROPERTIES *pActual); HRESULT STDCALL ( *GetProperties )( IMemAllocator * This, /* [out] */ ALLOCATOR_PROPERTIES *pProps); HRESULT STDCALL ( *Commit )( IMemAllocator * This); HRESULT STDCALL ( *Decommit )( IMemAllocator * This); HRESULT STDCALL ( *GetBuffer )( IMemAllocator * This, /* [out] */ IMediaSample **ppBuffer, /* [in] */ REFERENCE_TIME *pStartTime, /* [in] */ REFERENCE_TIME *pEndTime, /* [in] */ unsigned long dwFlags); HRESULT STDCALL ( *ReleaseBuffer )( IMemAllocator * This, /* [in] */ IMediaSample *pBuffer); }; struct IMemAllocator { IMemAllocator_vt *vt; }; struct IMediaSample_vt: IUnknown_vt { HRESULT STDCALL ( *GetPointer )( IMediaSample * This, /* [out] */ unsigned char **ppBuffer); long STDCALL ( *GetSize )( IMediaSample * This); HRESULT STDCALL ( *GetTime )( IMediaSample * This, /* [out] */ REFERENCE_TIME *pTimeStart, /* [out] */ REFERENCE_TIME *pTimeEnd); HRESULT STDCALL ( *SetTime )( IMediaSample * This, /* [in] */ REFERENCE_TIME *pTimeStart, /* [in] */ REFERENCE_TIME *pTimeEnd); HRESULT STDCALL ( *IsSyncPoint )( IMediaSample * This); HRESULT STDCALL ( *SetSyncPoint )( IMediaSample * This, long bIsSyncPoint); HRESULT STDCALL ( *IsPreroll )( IMediaSample * This); HRESULT STDCALL ( *SetPreroll )( IMediaSample * This, long bIsPreroll); long STDCALL ( *GetActualDataLength )( IMediaSample * This); HRESULT STDCALL ( *SetActualDataLength )( IMediaSample * This, long __MIDL_0010); HRESULT STDCALL ( *GetMediaType )( IMediaSample * This, AM_MEDIA_TYPE **ppMediaType); HRESULT STDCALL ( *SetMediaType )( IMediaSample * This, AM_MEDIA_TYPE *pMediaType); HRESULT STDCALL ( *IsDiscontinuity )( IMediaSample * This); HRESULT STDCALL ( *SetDiscontinuity )( IMediaSample * This, long bDiscontinuity); HRESULT STDCALL ( *GetMediaTime )( IMediaSample * This, /* [out] */ long long *pTimeStart, /* [out] */ long long *pTimeEnd); HRESULT STDCALL ( *SetMediaTime )( IMediaSample * This, /* [in] */ long long *pTimeStart, /* [in] */ long long *pTimeEnd); }; struct IMediaSample { struct IMediaSample_vt *vt; }; struct IHidden; struct IHidden_vt: IUnknown_vt { HRESULT STDCALL ( *GetSmth )(IHidden * This, int* pv); HRESULT STDCALL ( *SetSmth )(IHidden * This, int v1, int v2); HRESULT STDCALL ( *GetSmth2 )(IHidden * This, int* pv); HRESULT STDCALL ( *SetSmth2 )(IHidden * This, int v1, int v2); HRESULT STDCALL ( *GetSmth3 )(IHidden * This, int* pv); HRESULT STDCALL ( *SetSmth3 )(IHidden * This, int v1, int v2); HRESULT STDCALL ( *GetSmth4 )(IHidden * This, int* pv); HRESULT STDCALL ( *SetSmth4 )(IHidden * This, int v1, int v2); HRESULT STDCALL ( *GetSmth5 )(IHidden * This, int* pv); HRESULT STDCALL ( *SetSmth5 )(IHidden * This, int v1, int v2); HRESULT STDCALL ( *GetSmth6 )(IHidden * This, int* pv); }; struct IHidden { struct IHidden_vt *vt; }; struct IHidden2; struct IHidden2_vt: IUnknown_vt { HRESULT STDCALL (*unk1) (); HRESULT STDCALL (*unk2) (); HRESULT STDCALL (*unk3) (); HRESULT STDCALL (*DecodeGet) (IHidden2* This, int* region); HRESULT STDCALL (*unk5) (); HRESULT STDCALL (*DecodeSet) (IHidden2* This, int* region); HRESULT STDCALL (*unk7) (); HRESULT STDCALL (*unk8) (); }; struct IHidden2 { struct IHidden2_vt *vt; }; #endif