1 #ifndef __HWCFILTER_H__
\r
2 #define __HWCFILTER_H__
\r
4 #include "hwcfilter_h.h"
\r
6 const IID __declspec(selectany) IID_IHWCPin = {0x33AFDC07,0xC2AB,0x4FC4,{0xBA,0x54,0x65,0xFA,0xDF,0x4B,0x47,0x4D}};
\r
7 const IID __declspec(selectany) IID_ICaptureCallBack = {0x4C337035,0xC89E,0x4B42,{0x9B,0x0C,0x36,0x74,0x44,0xDD,0x70,0xDD}};
\r
9 static const WCHAR HWCPinName[] = L"HWCInputPin\0";
\r
10 static const WCHAR HWCFilterName[] = L"HWCFilter\0";
\r
14 class CHWCPin: public IHWCPin, public IMemInputPin
\r
17 CHWCPin(CHWCFilter *pFilter);
\r
19 STDMETHODIMP QueryInterface(REFIID riid, void **ppv);
\r
20 STDMETHODIMP_(ULONG) AddRef();
\r
21 STDMETHODIMP_(ULONG) Release();
\r
23 STDMETHODIMP Connect(IPin * pReceivePin, const AM_MEDIA_TYPE *pmt);
\r
24 STDMETHODIMP ReceiveConnection(IPin *pConnector, const AM_MEDIA_TYPE *pmt);
\r
25 STDMETHODIMP Disconnect();
\r
26 STDMETHODIMP ConnectedTo(IPin **pPin);
\r
27 STDMETHODIMP ConnectionMediaType(AM_MEDIA_TYPE *pmt);
\r
28 STDMETHODIMP QueryPinInfo(PIN_INFO *pInfo);
\r
29 STDMETHODIMP QueryDirection(PIN_DIRECTION *pPinDir);
\r
30 STDMETHODIMP QueryId(LPWSTR * Id);
\r
31 STDMETHODIMP QueryAccept(const AM_MEDIA_TYPE *pmt);
\r
32 STDMETHODIMP EnumMediaTypes(IEnumMediaTypes **ppEnum);
\r
33 STDMETHODIMP QueryInternalConnections(IPin **apPin, ULONG *nPin);
\r
34 STDMETHODIMP EndOfStream();
\r
35 STDMETHODIMP BeginFlush();
\r
36 STDMETHODIMP EndFlush();
\r
37 STDMETHODIMP NewSegment( REFERENCE_TIME tStart, REFERENCE_TIME tStop, double dRate );
\r
38 STDMETHODIMP SetCallback(ICaptureCallBack *pCallback);
\r
40 STDMETHODIMP GetAllocator(IMemAllocator **ppAllocator);
\r
41 STDMETHODIMP NotifyAllocator(IMemAllocator *pAllocator, BOOL bReadOnly);
\r
42 STDMETHODIMP GetAllocatorRequirements(ALLOCATOR_PROPERTIES *pProps);
\r
43 STDMETHODIMP Receive(IMediaSample *pSample);
\r
44 STDMETHODIMP ReceiveMultiple(IMediaSample **pSamples, long nSamples, long *nSamplesProcessed);
\r
45 STDMETHODIMP ReceiveCanBlock();
\r
48 CHWCFilter *m_pCFilter;
\r
49 IPin *m_pConnectedPin;
\r
50 ICaptureCallBack *m_pCallback;
\r
55 class CHWCEnumPins: public IEnumPins
\r
58 CHWCEnumPins(CHWCFilter *pFilter, int pos);
\r
59 virtual ~CHWCEnumPins();
\r
60 STDMETHODIMP QueryInterface(REFIID riid, void **ppv);
\r
61 STDMETHODIMP_(ULONG) AddRef();
\r
62 STDMETHODIMP_(ULONG) Release();
\r
63 STDMETHODIMP Next(ULONG cPins, IPin **ppPins, ULONG *pcFetched);
\r
64 STDMETHODIMP Skip(ULONG cPins);
\r
65 STDMETHODIMP Reset();
\r
66 STDMETHODIMP Clone(IEnumPins **ppEnum);
\r
69 CHWCFilter *m_pFilter;
\r
74 class CHWCFilter: public IBaseFilter
\r
78 virtual ~CHWCFilter();
\r
79 STDMETHODIMP QueryInterface(REFIID riid, void **ppv);
\r
80 STDMETHODIMP_(ULONG) AddRef();
\r
81 STDMETHODIMP_(ULONG) Release();
\r
82 STDMETHODIMP GetClassID(CLSID *pClsID);
\r
83 STDMETHODIMP Stop();
\r
84 STDMETHODIMP Pause();
\r
85 STDMETHODIMP Run(REFERENCE_TIME tStart);
\r
86 STDMETHODIMP GetState(DWORD dwMSecs, FILTER_STATE *State);
\r
87 STDMETHODIMP SetSyncSource(IReferenceClock *pClock);
\r
88 STDMETHODIMP GetSyncSource(IReferenceClock **pClock);
\r
89 STDMETHODIMP EnumPins(IEnumPins **ppEnum);
\r
90 STDMETHODIMP FindPin(LPCWSTR Id, IPin **ppPin);
\r
91 STDMETHODIMP QueryFilterInfo(FILTER_INFO *pInfo);
\r
92 STDMETHODIMP JoinFilterGraph(IFilterGraph *pGraph, LPCWSTR pName);
\r
93 STDMETHODIMP QueryVendorInfo(LPWSTR *pVendorInfo);
\r
97 IFilterGraph *m_pFilterGraph;
\r
98 FILTER_STATE m_state;
\r
102 class HWCClassFactory : public IClassFactory
\r
106 virtual ~HWCClassFactory();
\r
108 STDMETHODIMP QueryInterface(REFIID riid, LPVOID* ppv);
\r
109 STDMETHODIMP_(ULONG) AddRef();
\r
110 STDMETHODIMP_(ULONG) Release();
\r
111 STDMETHODIMP CreateInstance(LPUNKNOWN pUnkOuter, REFIID riid, LPVOID* ppv);
\r
112 STDMETHODIMP LockServer(BOOL bLock);
\r
118 STDAPI DllGetClassObject(REFCLSID rclsid, REFIID riid, LPVOID* ppv);
\r
120 #endif // __HWCFILTER_H__