summaryrefslogtreecommitdiffstats
path: root/loader/dshow/inputpin.h
diff options
context:
space:
mode:
Diffstat (limited to 'loader/dshow/inputpin.h')
-rw-r--r--loader/dshow/inputpin.h265
1 files changed, 265 insertions, 0 deletions
diff --git a/loader/dshow/inputpin.h b/loader/dshow/inputpin.h
new file mode 100644
index 0000000000..027d17fbc6
--- /dev/null
+++ b/loader/dshow/inputpin.h
@@ -0,0 +1,265 @@
+#ifndef INPUTPIN_H
+#define INPUTPIN_H
+#include "interfaces.h"
+#include "guids.h"
+#include "iunk.h"
+
+class CBaseFilter2;
+class CBaseFilter: public IBaseFilter
+{
+ IPin* pin;
+ IPin* unused_pin;
+ static GUID interfaces[];
+ DECLARE_IUNKNOWN(CBaseFilter)
+public:
+ CBaseFilter(const AM_MEDIA_TYPE& vhdr, CBaseFilter2* parent);
+ ~CBaseFilter(){delete vt;pin->vt->Release((IUnknown*)pin);unused_pin->vt->Release((IUnknown*)unused_pin);}
+
+ IPin* GetPin() {return pin;}
+ IPin* GetUnusedPin() {return unused_pin;}
+// static long STDCALL QueryInterface(IUnknown* This, GUID* iid, void** ppv);
+// static long STDCALL AddRef(IUnknown* This);
+// static long STDCALL Release(IUnknown* This);
+
+ static long STDCALL GetClassID (
+ IBaseFilter * This,
+ /* [out] */ CLSID *pClassID);
+
+ static long STDCALL Stop (
+ IBaseFilter * This);
+
+ static long STDCALL Pause (
+ IBaseFilter * This);
+
+ static long STDCALL Run (
+ IBaseFilter * This,
+ REFERENCE_TIME tStart);
+
+ static long STDCALL GetState (
+ IBaseFilter * This,
+ /* [in] */ unsigned long dwMilliSecsTimeout,
+// /* [out] */ FILTER_STATE *State);
+ void* State);
+
+ static long STDCALL SetSyncSource (
+ IBaseFilter * This,
+ /* [in] */ IReferenceClock *pClock);
+
+ static long STDCALL GetSyncSource (
+ IBaseFilter * This,
+ /* [out] */ IReferenceClock **pClock);
+
+ static long STDCALL EnumPins (
+ IBaseFilter * This,
+ /* [out] */ IEnumPins **ppEnum);
+
+ static long STDCALL FindPin (
+ IBaseFilter * This,
+ /* [string][in] */ const unsigned short* Id,
+ /* [out] */ IPin **ppPin);
+
+ static long STDCALL QueryFilterInfo (
+ IBaseFilter * This,
+// /* [out] */ FILTER_INFO *pInfo);
+ void* pInfo);
+
+ static long STDCALL JoinFilterGraph (
+ IBaseFilter * This,
+ /* [in] */ IFilterGraph *pGraph,
+ /* [string][in] */ const unsigned short* pName);
+
+ static long STDCALL QueryVendorInfo (
+ IBaseFilter * This,
+ /* [string][out] */ unsigned short* *pVendorInfo);
+};
+class CInputPin: public IPin
+{
+ AM_MEDIA_TYPE type;
+ CBaseFilter* parent;
+ static GUID interfaces[];
+ DECLARE_IUNKNOWN(CInputPin)
+public:
+ CInputPin(CBaseFilter* parent, const AM_MEDIA_TYPE& vhdr);
+ ~CInputPin(){delete vt;}
+// IPin* GetPin();
+
+// static long STDCALL QueryInterface(IUnknown* This, GUID* iid, void** ppv);
+// static long STDCALL AddRef(IUnknown* This);
+// static long STDCALL Release(IUnknown* This);
+
+ static long STDCALL Connect (
+ IPin * This,
+ /* [in] */ IPin *pReceivePin,
+ /* [in] */ AM_MEDIA_TYPE *pmt);
+
+ static long STDCALL ReceiveConnection (
+ IPin * This,
+ /* [in] */ IPin *pConnector,
+ /* [in] */ const AM_MEDIA_TYPE *pmt);
+
+ static long STDCALL Disconnect (
+ IPin * This);
+
+ static long STDCALL ConnectedTo (
+ IPin * This,
+ /* [out] */ IPin **pPin);
+
+ static long STDCALL ConnectionMediaType (
+ IPin * This,
+ /* [out] */ AM_MEDIA_TYPE *pmt);
+
+ static long STDCALL QueryPinInfo (
+ IPin * This,
+ /* [out] */ PIN_INFO *pInfo);
+
+ static long STDCALL QueryDirection (
+ IPin * This,
+ /* [out] */ PIN_DIRECTION *pPinDir);
+
+ static long STDCALL QueryId (
+ IPin * This,
+ /* [out] */ unsigned short* *Id);
+
+ static long STDCALL QueryAccept (
+ IPin * This,
+ /* [in] */ const AM_MEDIA_TYPE *pmt);
+
+ static long STDCALL EnumMediaTypes (
+ IPin * This,
+ /* [out] */ IEnumMediaTypes **ppEnum);
+
+ static long STDCALL QueryInternalConnections (
+ IPin * This,
+ /* [out] */ IPin **apPin,
+ /* [out][in] */ unsigned long *nPin);
+
+ static long STDCALL EndOfStream (
+ IPin * This);
+
+ static long STDCALL BeginFlush (
+ IPin * This);
+
+ static long STDCALL EndFlush (
+ IPin * This);
+
+ static long STDCALL NewSegment (
+ IPin * This,
+ /* [in] */ REFERENCE_TIME tStart,
+ /* [in] */ REFERENCE_TIME tStop,
+ /* [in] */ double dRate);
+};
+
+class CBaseFilter2: public IBaseFilter
+{
+ IPin* pin;
+ static GUID interfaces[];
+ DECLARE_IUNKNOWN(CBaseFilter2)
+public:
+ CBaseFilter2();
+ ~CBaseFilter2(){delete vt;pin->vt->Release((IUnknown*)pin);}
+ IPin* GetPin() {return pin;}
+
+// static long STDCALL QueryInterface(IUnknown* This, GUID* iid, void** ppv);
+// static long STDCALL AddRef(IUnknown* This);
+// static long STDCALL Release(IUnknown* This);
+ static long STDCALL GetClassID (
+ IBaseFilter * This,
+ /* [out] */ CLSID *pClassID);
+
+ static long STDCALL Stop (
+ IBaseFilter * This);
+
+ static long STDCALL Pause (
+ IBaseFilter * This);
+
+ static long STDCALL Run (
+ IBaseFilter * This,
+ REFERENCE_TIME tStart);
+
+ static long STDCALL GetState (
+ IBaseFilter * This,
+ /* [in] */ unsigned long dwMilliSecsTimeout,
+// /* [out] */ FILTER_STATE *State);
+ void* State);
+
+ static long STDCALL SetSyncSource (
+ IBaseFilter * This,
+ /* [in] */ IReferenceClock *pClock);
+
+ static long STDCALL GetSyncSource (
+ IBaseFilter * This,
+ /* [out] */ IReferenceClock **pClock);
+
+ static long STDCALL EnumPins (
+ IBaseFilter * This,
+ /* [out] */ IEnumPins **ppEnum);
+
+ static long STDCALL FindPin (
+ IBaseFilter * This,
+ /* [string][in] */ const unsigned short* Id,
+ /* [out] */ IPin **ppPin);
+
+ static long STDCALL QueryFilterInfo (
+ IBaseFilter * This,
+// /* [out] */ FILTER_INFO *pInfo);
+ void* pInfo);
+
+ static long STDCALL JoinFilterGraph (
+ IBaseFilter * This,
+ /* [in] */ IFilterGraph *pGraph,
+ /* [string][in] */ const unsigned short* pName);
+
+ static long STDCALL QueryVendorInfo (
+ IBaseFilter * This,
+ /* [string][out] */ unsigned short* *pVendorInfo);
+};
+
+class CRemotePin: public IPin
+{
+ CBaseFilter* parent;
+ IPin* remote_pin;
+ static GUID interfaces[];
+ DECLARE_IUNKNOWN(CRemotePin)
+public:
+ CRemotePin(CBaseFilter* pt, IPin* rpin);
+ ~CRemotePin(){delete vt;}
+
+// static long STDCALL QueryInterface(IUnknown* This, GUID* iid, void** ppv);
+// static long STDCALL AddRef(IUnknown* This);
+// static long STDCALL Release(IUnknown* This);
+
+ static long STDCALL ConnectedTo (
+ IPin * This,
+ /* [out] */ IPin **pPin);
+
+ static long STDCALL QueryDirection (
+ IPin * This,
+ /* [out] */ PIN_DIRECTION *pPinDir);
+
+ static long STDCALL ConnectionMediaType (
+ IPin * This,
+ /* [out] */ AM_MEDIA_TYPE *pmt);
+
+ static long STDCALL QueryPinInfo (
+ IPin * This,
+ /* [out] */ PIN_INFO *pInfo);
+
+};
+
+
+class CRemotePin2: public IPin
+{
+ CBaseFilter2* parent;
+ static GUID interfaces[];
+ DECLARE_IUNKNOWN(CRemotePin2)
+public:
+ CRemotePin2(CBaseFilter2* parent);
+ ~CRemotePin2(){delete vt;}
+
+ static long STDCALL QueryPinInfo (
+ IPin * This,
+ /* [out] */ PIN_INFO *pInfo);
+};
+
+
+#endif