[WIN32K]
[reactos.git] / dll / directx / ksproxy / cvpvbiconfig.cpp
1 /*
2 * COPYRIGHT: See COPYING in the top level directory
3 * PROJECT: ReactOS WDM Streaming ActiveMovie Proxy
4 * FILE: dll/directx/ksproxy/cvpvbiconfig.cpp
5 * PURPOSE: CVPVBIConfig interface
6 *
7 * PROGRAMMERS: Johannes Anderwald (janderwald@reactos.org)
8 */
9 #include "precomp.h"
10
11 class CVPVBIConfig : public IVPVBIConfig,
12 public IDistributorNotify
13 {
14 public:
15 STDMETHODIMP QueryInterface( REFIID InterfaceId, PVOID* Interface);
16
17 STDMETHODIMP_(ULONG) AddRef()
18 {
19 InterlockedIncrement(&m_Ref);
20 return m_Ref;
21 }
22 STDMETHODIMP_(ULONG) Release()
23 {
24 InterlockedDecrement(&m_Ref);
25
26 if (!m_Ref)
27 {
28 delete this;
29 return 0;
30 }
31 return m_Ref;
32 }
33
34 // IDistributorNotify interface
35 HRESULT STDMETHODCALLTYPE Stop();
36 HRESULT STDMETHODCALLTYPE Pause();
37 HRESULT STDMETHODCALLTYPE Run(REFERENCE_TIME tStart);
38 HRESULT STDMETHODCALLTYPE SetSyncSource(IReferenceClock *pClock);
39 HRESULT STDMETHODCALLTYPE NotifyGraphChange();
40
41 // IVPBaseConfig
42 HRESULT STDMETHODCALLTYPE GetConnectInfo(LPDWORD pdwNumConnectInfo, IN OUT LPDDVIDEOPORTCONNECT pddVPConnectInfo);
43 HRESULT STDMETHODCALLTYPE SetConnectInfo(DWORD dwChosenEntry);
44 HRESULT STDMETHODCALLTYPE GetVPDataInfo(LPAMVPDATAINFO pamvpDataInfo);
45 HRESULT STDMETHODCALLTYPE GetMaxPixelRate(LPAMVPSIZE pamvpSize, OUT LPDWORD pdwMaxPixelsPerSecond);
46 HRESULT STDMETHODCALLTYPE InformVPInputFormats(DWORD dwNumFormats, IN LPDDPIXELFORMAT pDDPixelFormats);
47 HRESULT STDMETHODCALLTYPE GetVideoFormats(LPDWORD pdwNumFormats, IN OUT LPDDPIXELFORMAT pddPixelFormats);
48 HRESULT STDMETHODCALLTYPE SetVideoFormat(DWORD dwChosenEntry);
49 HRESULT STDMETHODCALLTYPE SetInvertPolarity();
50 HRESULT STDMETHODCALLTYPE GetOverlaySurface(LPDIRECTDRAWSURFACE* ppddOverlaySurface);
51 HRESULT STDMETHODCALLTYPE SetDirectDrawKernelHandle(ULONG_PTR dwDDKernelHandle);
52 HRESULT STDMETHODCALLTYPE SetVideoPortID(IN DWORD dwVideoPortID);
53 HRESULT STDMETHODCALLTYPE SetDDSurfaceKernelHandles(DWORD cHandles, IN ULONG_PTR *rgDDKernelHandles);
54 HRESULT STDMETHODCALLTYPE SetSurfaceParameters(DWORD dwPitch, IN DWORD dwXOrigin, IN DWORD dwYOrigin);
55
56 CVPVBIConfig() : m_Ref(0){}
57 virtual ~CVPVBIConfig(){}
58
59 protected:
60 LONG m_Ref;
61 };
62
63 HRESULT
64 STDMETHODCALLTYPE
65 CVPVBIConfig::QueryInterface(
66 IN REFIID refiid,
67 OUT PVOID* Output)
68 {
69 if (IsEqualGUID(refiid, IID_IUnknown))
70 {
71 *Output = PVOID(this);
72 reinterpret_cast<IUnknown*>(*Output)->AddRef();
73 return NOERROR;
74 }
75 if (IsEqualGUID(refiid, IID_IDistributorNotify))
76 {
77 *Output = (IDistributorNotify*)(this);
78 reinterpret_cast<IDistributorNotify*>(*Output)->AddRef();
79 return NOERROR;
80 }
81
82 if (IsEqualGUID(refiid, IID_IVPVBIConfig))
83 {
84 *Output = (IVPConfig*)(this);
85 reinterpret_cast<IVPConfig*>(*Output)->AddRef();
86 return NOERROR;
87 }
88
89 return E_NOINTERFACE;
90 }
91
92 //-------------------------------------------------------------------
93 // IDistributorNotify interface
94 //
95
96
97 HRESULT
98 STDMETHODCALLTYPE
99 CVPVBIConfig::Stop()
100 {
101 OutputDebugString("UNIMPLEMENTED\n");
102 return E_NOTIMPL;
103 }
104
105 HRESULT
106 STDMETHODCALLTYPE
107 CVPVBIConfig::Pause()
108 {
109 OutputDebugString("UNIMPLEMENTED\n");
110 return E_NOTIMPL;
111 }
112
113 HRESULT
114 STDMETHODCALLTYPE
115 CVPVBIConfig::Run(
116 REFERENCE_TIME tStart)
117 {
118 OutputDebugString("UNIMPLEMENTED\n");
119 return E_NOTIMPL;
120 }
121
122 HRESULT
123 STDMETHODCALLTYPE
124 CVPVBIConfig::SetSyncSource(
125 IReferenceClock *pClock)
126 {
127 OutputDebugString("UNIMPLEMENTED\n");
128 return E_NOTIMPL;
129 }
130
131 HRESULT
132 STDMETHODCALLTYPE
133 CVPVBIConfig::NotifyGraphChange()
134 {
135 OutputDebugString("UNIMPLEMENTED\n");
136 return E_NOTIMPL;
137 }
138
139 //-------------------------------------------------------------------
140 // IVPBaseConfig
141 //
142 HRESULT
143 STDMETHODCALLTYPE
144 CVPVBIConfig::GetConnectInfo(
145 LPDWORD pdwNumConnectInfo,
146 IN OUT LPDDVIDEOPORTCONNECT pddVPConnectInfo)
147 {
148 OutputDebugString("UNIMPLEMENTED\n");
149 return E_NOTIMPL;
150 }
151
152 HRESULT
153 STDMETHODCALLTYPE
154 CVPVBIConfig::SetConnectInfo(
155 DWORD dwChosenEntry)
156 {
157 OutputDebugString("UNIMPLEMENTED\n");
158 return E_NOTIMPL;
159 }
160
161 HRESULT
162 STDMETHODCALLTYPE
163 CVPVBIConfig::GetVPDataInfo(
164 LPAMVPDATAINFO pamvpDataInfo)
165 {
166 OutputDebugString("UNIMPLEMENTED\n");
167 return E_NOTIMPL;
168 }
169
170 HRESULT
171 STDMETHODCALLTYPE
172 CVPVBIConfig::GetMaxPixelRate(
173 LPAMVPSIZE pamvpSize,
174 OUT LPDWORD pdwMaxPixelsPerSecond)
175 {
176 OutputDebugString("UNIMPLEMENTED\n");
177 return E_NOTIMPL;
178 }
179
180 HRESULT
181 STDMETHODCALLTYPE
182 CVPVBIConfig::InformVPInputFormats(
183 DWORD dwNumFormats,
184 IN LPDDPIXELFORMAT pDDPixelFormats)
185 {
186 OutputDebugString("UNIMPLEMENTED\n");
187 return E_NOTIMPL;
188 }
189
190 HRESULT
191 STDMETHODCALLTYPE
192 CVPVBIConfig::GetVideoFormats(
193 LPDWORD pdwNumFormats,
194 IN OUT LPDDPIXELFORMAT pddPixelFormats)
195 {
196 OutputDebugString("UNIMPLEMENTED\n");
197 return E_NOTIMPL;
198 }
199
200 HRESULT
201 STDMETHODCALLTYPE
202 CVPVBIConfig::SetVideoFormat(
203 DWORD dwChosenEntry)
204 {
205 OutputDebugString("UNIMPLEMENTED\n");
206 return E_NOTIMPL;
207 }
208
209 HRESULT
210 STDMETHODCALLTYPE
211 CVPVBIConfig::SetInvertPolarity()
212 {
213 OutputDebugString("UNIMPLEMENTED\n");
214 return E_NOTIMPL;
215 }
216
217 HRESULT
218 STDMETHODCALLTYPE
219 CVPVBIConfig::GetOverlaySurface(
220 LPDIRECTDRAWSURFACE* ppddOverlaySurface)
221 {
222 OutputDebugString("UNIMPLEMENTED\n");
223 return E_NOTIMPL;
224 }
225
226 HRESULT
227 STDMETHODCALLTYPE
228 CVPVBIConfig::SetDirectDrawKernelHandle(
229 ULONG_PTR dwDDKernelHandle)
230 {
231 OutputDebugString("UNIMPLEMENTED\n");
232 return E_NOTIMPL;
233 }
234
235 HRESULT
236 STDMETHODCALLTYPE
237 CVPVBIConfig::SetVideoPortID(
238 IN DWORD dwVideoPortID)
239 {
240 OutputDebugString("UNIMPLEMENTED\n");
241 return E_NOTIMPL;
242 }
243
244
245 HRESULT
246 STDMETHODCALLTYPE
247 CVPVBIConfig::SetDDSurfaceKernelHandles(
248 DWORD cHandles,
249 IN ULONG_PTR *rgDDKernelHandles)
250 {
251 OutputDebugString("UNIMPLEMENTED\n");
252 return E_NOTIMPL;
253 }
254
255
256 HRESULT
257 STDMETHODCALLTYPE
258 CVPVBIConfig::SetSurfaceParameters(
259 DWORD dwPitch,
260 IN DWORD dwXOrigin,
261 IN DWORD dwYOrigin)
262 {
263 OutputDebugString("UNIMPLEMENTED\n");
264 return E_NOTIMPL;
265 }
266
267
268 HRESULT
269 WINAPI
270 CVPVBIConfig_Constructor(
271 IUnknown * pUnkOuter,
272 REFIID riid,
273 LPVOID * ppv)
274 {
275 OutputDebugStringW(L"CVPVBIConfig_Constructor\n");
276
277 CVPVBIConfig * handler = new CVPVBIConfig();
278
279 if (!handler)
280 return E_OUTOFMEMORY;
281
282 if (FAILED(handler->QueryInterface(riid, ppv)))
283 {
284 /* not supported */
285 delete handler;
286 return E_NOINTERFACE;
287 }
288
289 return NOERROR;
290 }