Initialize
[sdk/emulator/qemu.git] / tizen / src / hw / camera_win32_dll / hwcfilter / hwcfilter / hwcfilter.h
1 #ifndef __HWCFILTER_H__\r
2 #define __HWCFILTER_H__\r
3 \r
4 #include "hwcfilter_h.h"\r
5 \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
8 \r
9 static const WCHAR HWCPinName[] = L"HWCInputPin\0";\r
10 static const WCHAR HWCFilterName[] = L"HWCFilter\0";\r
11 \r
12 class CHWCFilter;\r
13 \r
14 class CHWCPin: public IHWCPin, public IMemInputPin\r
15 {\r
16 public:\r
17         CHWCPin(CHWCFilter *pFilter);\r
18         virtual ~CHWCPin();\r
19         STDMETHODIMP QueryInterface(REFIID riid, void **ppv);\r
20         STDMETHODIMP_(ULONG) AddRef();\r
21         STDMETHODIMP_(ULONG) Release();\r
22 \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
39 \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
46 \r
47 protected:\r
48         CHWCFilter *m_pCFilter;\r
49         IPin *m_pConnectedPin;\r
50         ICaptureCallBack *m_pCallback;\r
51         BOOL m_bReadOnly;\r
52         long m_cRef;\r
53 };\r
54 \r
55 class CHWCEnumPins: public IEnumPins\r
56 {\r
57 public:\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
67 \r
68 protected:\r
69         CHWCFilter *m_pFilter;\r
70         int m_pos;\r
71         long m_cRef;\r
72 };\r
73 \r
74 class CHWCFilter: public IBaseFilter\r
75 {\r
76 public:\r
77         CHWCFilter();\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
94 \r
95 protected:\r
96         CHWCPin *m_pPin;\r
97         IFilterGraph *m_pFilterGraph;\r
98         FILTER_STATE m_state;\r
99         long m_cRef;\r
100 };\r
101 \r
102 class HWCClassFactory : public IClassFactory\r
103 {\r
104 public:\r
105         HWCClassFactory();\r
106         virtual ~HWCClassFactory();\r
107 \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
113 \r
114 private:\r
115         long m_cRef;\r
116 };\r
117 \r
118 STDAPI DllGetClassObject(REFCLSID rclsid, REFIID riid, LPVOID* ppv);\r
119 \r
120 #endif // __HWCFILTER_H__