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