summaryrefslogtreecommitdiffstats
path: root/loader/dshow/interfaces.h
diff options
context:
space:
mode:
Diffstat (limited to 'loader/dshow/interfaces.h')
-rw-r--r--loader/dshow/interfaces.h417
1 files changed, 417 insertions, 0 deletions
diff --git a/loader/dshow/interfaces.h b/loader/dshow/interfaces.h
new file mode 100644
index 0000000000..355264c666
--- /dev/null
+++ b/loader/dshow/interfaces.h
@@ -0,0 +1,417 @@
+/*
+
+ 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 <com.h>
+#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 \ No newline at end of file