[HEADERS]
[reactos.git] / reactos / dll / directx / ksproxy / cvpconfig.cpp
1 /*
2 * COPYRIGHT: See COPYING in the top level directory
3 * PROJECT: ReactOS WDM Streaming ActiveMovie Proxy
4 * FILE: dll/directx/ksproxy/cvpconfig.cpp
5 * PURPOSE: IVPConfig interface
6 *
7 * PROGRAMMERS: Johannes Anderwald (janderwald@reactos.org)
8 */
9 #include "precomp.h"
10
11 class CVPConfig : public IVPConfig,
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 // IVPConfig
56 HRESULT STDMETHODCALLTYPE IsVPDecimationAllowed(LPBOOL pbIsDecimationAllowed);
57 HRESULT STDMETHODCALLTYPE SetScalingFactors(LPAMVPSIZE pamvpSize);
58
59 CVPConfig() : m_Ref(0){}
60 virtual ~CVPConfig(){}
61
62 protected:
63 LONG m_Ref;
64 };
65
66
67 HRESULT
68 STDMETHODCALLTYPE
69 CVPConfig::QueryInterface(
70 IN REFIID refiid,
71 OUT PVOID* Output)
72 {
73 if (IsEqualGUID(refiid, IID_IUnknown))
74 {
75 *Output = PVOID(this);
76 reinterpret_cast<IUnknown*>(*Output)->AddRef();
77 return NOERROR;
78 }
79 if (IsEqualGUID(refiid, IID_IDistributorNotify))
80 {
81 *Output = (IDistributorNotify*)(this);
82 reinterpret_cast<IDistributorNotify*>(*Output)->AddRef();
83 return NOERROR;
84 }
85
86 if (IsEqualGUID(refiid, IID_IVPConfig))
87 {
88 *Output = (IVPConfig*)(this);
89 reinterpret_cast<IVPConfig*>(*Output)->AddRef();
90 return NOERROR;
91 }
92
93 return E_NOINTERFACE;
94 }
95
96 //-------------------------------------------------------------------
97 // IDistributorNotify interface
98 //
99
100
101 HRESULT
102 STDMETHODCALLTYPE
103 CVPConfig::Stop()
104 {
105 OutputDebugString("UNIMPLEMENTED\n");
106 return E_NOTIMPL;
107 }
108
109 HRESULT
110 STDMETHODCALLTYPE
111 CVPConfig::Pause()
112 {
113 OutputDebugString("UNIMPLEMENTED\n");
114 return E_NOTIMPL;
115 }
116
117 HRESULT
118 STDMETHODCALLTYPE
119 CVPConfig::Run(
120 REFERENCE_TIME tStart)
121 {
122 OutputDebugString("UNIMPLEMENTED\n");
123 return E_NOTIMPL;
124 }
125
126 HRESULT
127 STDMETHODCALLTYPE
128 CVPConfig::SetSyncSource(
129 IReferenceClock *pClock)
130 {
131 OutputDebugString("UNIMPLEMENTED\n");
132 return E_NOTIMPL;
133 }
134
135 HRESULT
136 STDMETHODCALLTYPE
137 CVPConfig::NotifyGraphChange()
138 {
139 OutputDebugString("UNIMPLEMENTED\n");
140 return E_NOTIMPL;
141 }
142
143 //-------------------------------------------------------------------
144 // IVPBaseConfig
145 //
146 HRESULT
147 STDMETHODCALLTYPE
148 CVPConfig::GetConnectInfo(
149 LPDWORD pdwNumConnectInfo,
150 IN OUT LPDDVIDEOPORTCONNECT pddVPConnectInfo)
151 {
152 OutputDebugString("UNIMPLEMENTED\n");
153 return E_NOTIMPL;
154 }
155
156 HRESULT
157 STDMETHODCALLTYPE
158 CVPConfig::SetConnectInfo(
159 DWORD dwChosenEntry)
160 {
161 OutputDebugString("UNIMPLEMENTED\n");
162 return E_NOTIMPL;
163 }
164
165 HRESULT
166 STDMETHODCALLTYPE
167 CVPConfig::GetVPDataInfo(
168 LPAMVPDATAINFO pamvpDataInfo)
169 {
170 OutputDebugString("UNIMPLEMENTED\n");
171 return E_NOTIMPL;
172 }
173
174 HRESULT
175 STDMETHODCALLTYPE
176 CVPConfig::GetMaxPixelRate(
177 LPAMVPSIZE pamvpSize,
178 OUT LPDWORD pdwMaxPixelsPerSecond)
179 {
180 OutputDebugString("UNIMPLEMENTED\n");
181 return E_NOTIMPL;
182 }
183
184 HRESULT
185 STDMETHODCALLTYPE
186 CVPConfig::InformVPInputFormats(
187 DWORD dwNumFormats,
188 IN LPDDPIXELFORMAT pDDPixelFormats)
189 {
190 OutputDebugString("UNIMPLEMENTED\n");
191 return E_NOTIMPL;
192 }
193
194 HRESULT
195 STDMETHODCALLTYPE
196 CVPConfig::GetVideoFormats(
197 LPDWORD pdwNumFormats,
198 IN OUT LPDDPIXELFORMAT pddPixelFormats)
199 {
200 OutputDebugString("UNIMPLEMENTED\n");
201 return E_NOTIMPL;
202 }
203
204 HRESULT
205 STDMETHODCALLTYPE
206 CVPConfig::SetVideoFormat(
207 DWORD dwChosenEntry)
208 {
209 OutputDebugString("UNIMPLEMENTED\n");
210 return E_NOTIMPL;
211 }
212
213 HRESULT
214 STDMETHODCALLTYPE
215 CVPConfig::SetInvertPolarity()
216 {
217 OutputDebugString("UNIMPLEMENTED\n");
218 return E_NOTIMPL;
219 }
220
221 HRESULT
222 STDMETHODCALLTYPE
223 CVPConfig::GetOverlaySurface(
224 LPDIRECTDRAWSURFACE* ppddOverlaySurface)
225 {
226 OutputDebugString("UNIMPLEMENTED\n");
227 return E_NOTIMPL;
228 }
229
230 HRESULT
231 STDMETHODCALLTYPE
232 CVPConfig::SetDirectDrawKernelHandle(
233 ULONG_PTR dwDDKernelHandle)
234 {
235 OutputDebugString("UNIMPLEMENTED\n");
236 return E_NOTIMPL;
237 }
238
239 HRESULT
240 STDMETHODCALLTYPE
241 CVPConfig::SetVideoPortID(
242 IN DWORD dwVideoPortID)
243 {
244 OutputDebugString("UNIMPLEMENTED\n");
245 return E_NOTIMPL;
246 }
247
248
249 HRESULT
250 STDMETHODCALLTYPE
251 CVPConfig::SetDDSurfaceKernelHandles(
252 DWORD cHandles,
253 IN ULONG_PTR *rgDDKernelHandles)
254 {
255 OutputDebugString("UNIMPLEMENTED\n");
256 return E_NOTIMPL;
257 }
258
259
260 HRESULT
261 STDMETHODCALLTYPE
262 CVPConfig::SetSurfaceParameters(
263 DWORD dwPitch,
264 IN DWORD dwXOrigin,
265 IN DWORD dwYOrigin)
266 {
267 OutputDebugString("UNIMPLEMENTED\n");
268 return E_NOTIMPL;
269 }
270
271 //-------------------------------------------------------------------
272 // IVPConfig
273 //
274
275 HRESULT
276 STDMETHODCALLTYPE
277 CVPConfig::IsVPDecimationAllowed(
278 LPBOOL pbIsDecimationAllowed)
279 {
280 OutputDebugString("UNIMPLEMENTED\n");
281 return E_NOTIMPL;
282 }
283
284 HRESULT
285 STDMETHODCALLTYPE
286 CVPConfig::SetScalingFactors(
287 LPAMVPSIZE pamvpSize)
288 {
289 OutputDebugString("UNIMPLEMENTED\n");
290 return E_NOTIMPL;
291 }
292
293
294
295
296 HRESULT
297 WINAPI
298 CVPConfig_Constructor(
299 IUnknown * pUnkOuter,
300 REFIID riid,
301 LPVOID * ppv)
302 {
303 OutputDebugStringW(L"CVPConfig_Constructor\n");
304
305 CVPConfig * handler = new CVPConfig();
306
307 if (!handler)
308 return E_OUTOFMEMORY;
309
310 if (FAILED(handler->QueryInterface(riid, ppv)))
311 {
312 /* not supported */
313 delete handler;
314 return E_NOINTERFACE;
315 }
316
317 return NOERROR;
318 }
319