4 #ifdef HWCFILTER_EXPORTS
\r
5 #define HWCFILTER_API extern "C" __declspec(dllexport) HRESULT __stdcall
\r
7 #define HWCFILTER_API __declspec(dllimport)
\r
11 #include "hwcfilter.h"
\r
13 #define SAFE_RELEASE(x) if (x) { (x)->Release(); (x) = NULL; }
\r
15 typedef int (STDAPICALLTYPE *CallbackFn)(ULONG dwSize, BYTE *pBuffer);
\r
17 class CCallback : ICaptureCallBack
\r
21 virtual ~CCallback();
\r
22 STDMETHODIMP QueryInterface(REFIID riid, void **ppv);
\r
23 STDMETHODIMP_(ULONG) AddRef();
\r
24 STDMETHODIMP_(ULONG) Release();
\r
25 STDMETHODIMP CaptureCallback(ULONG dwSize, BYTE *pBuffer);
\r
26 STDMETHODIMP SetCallback(CallbackFn pCallbackFn);
\r
30 CallbackFn m_pCallback;
\r
39 STDMETHODIMP Init();
\r
41 STDMETHODIMP BindSourceFilter();
\r
42 STDMETHODIMP BindTargetFilter();
\r
43 STDMETHODIMP ConnectFilters();
\r
44 STDMETHODIMP GetDeviceCaps(ULONG *fourcc, ULONG *width, ULONG *height, ULONG *fps);
\r
46 STDMETHODIMP_(void) CloseInterfaces();
\r
47 STDMETHODIMP_(void) DeleteMediaType(AM_MEDIA_TYPE *pmt);
\r
49 STDMETHODIMP QueryVideoProcAmp(long nProperty, long *pMin, long *pMax, long *pStep, long *pDefault);
\r
50 STDMETHODIMP GetVideoProcAmp(long nProperty, long *pValue);
\r
51 STDMETHODIMP SetVideoProcAmp(long nProperty, long value);
\r
53 STDMETHODIMP StartPreview();
\r
54 STDMETHODIMP StopPreview();
\r
56 STDMETHODIMP SetFPS(REFERENCE_TIME inFps);
\r
57 STDMETHODIMP GetFPS(REFERENCE_TIME *outFps);
\r
59 STDMETHODIMP SetResolution(LONG width, LONG height);
\r
60 STDMETHODIMP GetResolution(LONG *width, LONG *height);
\r
62 STDMETHODIMP GetFormats(LPVOID pData);
\r
63 STDMETHODIMP GetFrameSizes(LPVOID pData);
\r
64 STDMETHODIMP GetFrameIntervals(LPVOID pData);
\r
65 STDMETHODIMP SetDefaultValues();
\r
67 STDMETHODIMP SetCallback(CallbackFn pCallback);
\r
70 STDMETHODIMP GetPin(IBaseFilter *pFilter, PIN_DIRECTION PinDir, IPin **ppPin);
\r
72 IGraphBuilder *m_pGB ;
\r
73 ICaptureGraphBuilder2 *m_pCGB;
\r
74 IMediaControl *m_pMC;
\r
75 IMediaEventEx *m_pME;
\r
82 CCallback *m_pCallback;
\r
88 DWORD m_dwAvgInterval;
\r
109 typedef struct tagHWCParam {
\r
117 HWCFILTER_API HWCCtrl(UINT nCmd, UINT nSize, LPVOID pBuf);
\r
119 HWCFILTER_API HWCSetCallback(CallbackFn pCallback);
\r
121 STDMETHODIMP HWCOpen();
\r
122 STDMETHODIMP HWCClose();
\r
123 STDMETHODIMP HWCStart();
\r
124 STDMETHODIMP HWCStop();
\r
126 STDMETHODIMP HWCSetFPS(long num, long denom);
\r
127 STDMETHODIMP HWCGetFPS(long *num, long *denom);
\r
129 STDMETHODIMP HWCSetFormat(long width, long height);
\r
130 STDMETHODIMP HWCGetFormat();
\r
131 STDMETHODIMP HWCTryFormat();
\r
132 STDMETHODIMP HWCEnumFormat();
\r
134 STDMETHODIMP HWCQueryControl(long nProperty, long *pMin, long *pMax, long *pStep, long *pDefault);
\r
135 STDMETHODIMP HWCSetControlValue(long nProperty, long value);
\r
136 STDMETHODIMP HWCGetControlValue(long nProperty, long *pVal);
\r
138 STDMETHODIMP HWCEnumFrameSizes();
\r
139 STDMETHODIMP HWCEnumFrameIntervals();
\r
141 #endif // __HWCPS_H__