?? interfaces.h
字號:
#ifndef DS_INTERFACES_H#define DS_INTERFACES_H/* * Definition of important DirectShow interfaces. * Created using freely-available DirectX 8.0 SDK * ( http://msdn.microsoft.com ) */#include "iunk.h"#include "com.h"/* Sh*t. MSVC++ and g++ use different methods of storing vtables. */typedef struct _IReferenceClock IReferenceClock;typedef struct _IFilterGraph IFilterGraph;typedef struct _IBaseFilter IBaseFilter;typedef enum{ PINDIR_INPUT = 0, PINDIR_OUTPUT} PIN_DIRECTION;typedef struct _PinInfo{ IBaseFilter* pFilter; PIN_DIRECTION dir; unsigned short achName[128];} PIN_INFO;typedef struct _AllocatorProperties{ long cBuffers; long cbBuffer; long cbAlign; long cbPrefix;} ALLOCATOR_PROPERTIES;typedef struct _IEnumMediaTypes IEnumMediaTypes;typedef struct IEnumMediaTypes_vt{ INHERIT_IUNKNOWN(); 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);} IEnumMediaTypes_vt;struct _IEnumMediaTypes { IEnumMediaTypes_vt* vt; };typedef struct _IPin IPin;typedef struct IPin_vt{ INHERIT_IUNKNOWN(); 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);} IPin_vt;struct _IPin { IPin_vt *vt; };typedef struct _IEnumPins IEnumPins;typedef struct IEnumPins_vt{ INHERIT_IUNKNOWN(); // retrieves a specified number of pins in the enumeration sequence.. HRESULT STDCALL ( *Next )(IEnumPins* This, /* [in] */ unsigned long cPins, /* [size_is][out] */ IPin** ppPins, /* [out] */ unsigned long* pcFetched); // skips over a specified number of pins. HRESULT STDCALL ( *Skip )(IEnumPins* This, /* [in] */ unsigned long cPins); // resets the enumeration sequence to the beginning. HRESULT STDCALL ( *Reset )(IEnumPins* This); // makes a copy of the enumerator with the same enumeration state. HRESULT STDCALL ( *Clone )(IEnumPins* This, /* [out] */ IEnumPins** ppEnum);} IEnumPins_vt;struct _IEnumPins { struct IEnumPins_vt* vt; };typedef struct _IMediaSample IMediaSample;typedef struct IMediaSample_vt{ INHERIT_IUNKNOWN(); 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); // sync-point property. If true, then the beginning of this // sample is a sync-point. (note that if AM_MEDIA_TYPE.bTemporalCompression // is false then all samples are sync points). A filter can start // a stream at any sync point. S_FALSE if not sync-point, S_OK if true. HRESULT STDCALL ( *IsSyncPoint )(IMediaSample* This); HRESULT STDCALL ( *SetSyncPoint )(IMediaSample* This, long bIsSyncPoint); // preroll property. If true, this sample is for preroll only and // shouldn't be displayed. 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); // these allow for limited format changes in band - if no format change // has been made when you receive a sample GetMediaType will return S_FALSE HRESULT STDCALL ( *GetMediaType )(IMediaSample* This, AM_MEDIA_TYPE** ppMediaType); HRESULT STDCALL ( *SetMediaType )(IMediaSample* This, AM_MEDIA_TYPE* pMediaType); // returns S_OK if there is a discontinuity in the data (this frame is // not a continuation of the previous stream of data // - there has been a seek or some dropped samples). HRESULT STDCALL ( *IsDiscontinuity )(IMediaSample* This); HRESULT STDCALL ( *SetDiscontinuity )(IMediaSample* This, long bDiscontinuity); // get the media times for this sample HRESULT STDCALL ( *GetMediaTime )(IMediaSample* This, /* [out] */ long long* pTimeStart, /* [out] */ long long* pTimeEnd); // Set the media times for this sample // pTimeStart==pTimeEnd==NULL will invalidate the media time stamps in // this sample HRESULT STDCALL ( *SetMediaTime )(IMediaSample* This, /* [in] */ long long* pTimeStart, /* [in] */ long long* pTimeEnd);} IMediaSample_vt;struct _IMediaSample { struct IMediaSample_vt* vt; };//typedef struct _IBaseFilter IBaseFilter;typedef struct IBaseFilter_vt{ INHERIT_IUNKNOWN(); 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);} IBaseFilter_vt;struct _IBaseFilter { struct IBaseFilter_vt* vt; };typedef struct _IMemAllocator IMemAllocator;typedef struct IMemAllocator_vt{ INHERIT_IUNKNOWN(); // specifies the number of buffers to allocate and the size of each buffer. HRESULT STDCALL ( *SetProperties )(IMemAllocator* This, /* [in] */ ALLOCATOR_PROPERTIES *pRequest, /* [out] */ ALLOCATOR_PROPERTIES *pActual); // retrieves the number of buffers that the allocator will create, and the buffer properties. HRESULT STDCALL ( *GetProperties )(IMemAllocator* This, /* [out] */ ALLOCATOR_PROPERTIES *pProps); // allocates the buffer memory. HRESULT STDCALL ( *Commit )(IMemAllocator* This); // releases the memory for the buffers. HRESULT STDCALL ( *Decommit )(IMemAllocator* This); // retrieves a media sample that contains an empty buffer. HRESULT STDCALL ( *GetBuffer )(IMemAllocator* This, /* [out] */ IMediaSample** ppBuffer, /* [in] */ REFERENCE_TIME* pStartTime, /* [in] */ REFERENCE_TIME* pEndTime, /* [in] */ unsigned long dwFlags); // releases a media sample. HRESULT STDCALL ( *ReleaseBuffer )(IMemAllocator* This, /* [in] */ IMediaSample* pBuffer);} IMemAllocator_vt;struct _IMemAllocator { IMemAllocator_vt* vt; };typedef struct _IMemInputPin IMemInputPin;typedef struct IMemInputPin_vt{ INHERIT_IUNKNOWN(); 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);} IMemInputPin_vt;struct _IMemInputPin { IMemInputPin_vt* vt; };typedef struct _IHidden IHidden;typedef struct IHidden_vt{ INHERIT_IUNKNOWN(); 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);} IHidden_vt;struct _IHidden { struct IHidden_vt* vt; };typedef struct _IHidden2 IHidden2;typedef struct IHidden2_vt{ INHERIT_IUNKNOWN(); HRESULT STDCALL ( *unk1 )(void); HRESULT STDCALL ( *unk2 )(void); HRESULT STDCALL ( *unk3 )(void); HRESULT STDCALL ( *DecodeGet )(IHidden2* This, int* region); HRESULT STDCALL ( *unk5 )(void); HRESULT STDCALL ( *DecodeSet )(IHidden2* This, int* region); HRESULT STDCALL ( *unk7 )(void); HRESULT STDCALL ( *unk8 )(void);} IHidden2_vt;struct _IHidden2 { struct IHidden2_vt* vt; };// fixmetypedef struct IDivxFilterInterface { struct IDivxFilterInterface_vt* vt;} IDivxFilterInterface;struct IDivxFilterInterface_vt{ INHERIT_IUNKNOWN(); HRESULT STDCALL ( *get_PPLevel )(IDivxFilterInterface* This, int* PPLevel); // current postprocessing level HRESULT STDCALL ( *put_PPLevel )(IDivxFilterInterface* This, int PPLevel); // new postprocessing level HRESULT STDCALL ( *put_DefaultPPLevel )(IDivxFilterInterface* This); HRESULT STDCALL ( *put_MaxDelayAllowed )(IDivxFilterInterface* This, int maxdelayallowed); HRESULT STDCALL ( *put_Brightness )(IDivxFilterInterface* This, int brightness); HRESULT STDCALL ( *put_Contrast )(IDivxFilterInterface* This, int contrast); HRESULT STDCALL ( *put_Saturation )(IDivxFilterInterface* This, int saturation); HRESULT STDCALL ( *get_MaxDelayAllowed )(IDivxFilterInterface* This, int* maxdelayallowed); HRESULT STDCALL ( *get_Brightness)(IDivxFilterInterface* This, int* brightness); HRESULT STDCALL ( *get_Contrast)(IDivxFilterInterface* This, int* contrast); HRESULT STDCALL ( *get_Saturation )(IDivxFilterInterface* This, int* saturation); HRESULT STDCALL ( *put_AspectRatio )(IDivxFilterInterface* This, int x, IDivxFilterInterface* Thisit, int y); HRESULT STDCALL ( *get_AspectRatio )(IDivxFilterInterface* This, int* x, IDivxFilterInterface* Thisit, int* y);};#endif /* DS_INTERFACES_H */
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -