Reactos
at master 328 lines 7.2 kB view raw
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 (johannes.anderwald@reactos.org) 8 */ 9#include "precomp.h" 10 11class CVPVBIConfig : public IVPVBIConfig, 12 public IDistributorNotify 13{ 14public: 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 59protected: 60 LONG m_Ref; 61}; 62 63HRESULT 64STDMETHODCALLTYPE 65CVPVBIConfig::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 97HRESULT 98STDMETHODCALLTYPE 99CVPVBIConfig::Stop() 100{ 101#ifdef KSPROXY_TRACE 102 OutputDebugStringW(L"UNIMPLEMENTED\n"); 103#endif 104 return E_NOTIMPL; 105} 106 107HRESULT 108STDMETHODCALLTYPE 109CVPVBIConfig::Pause() 110{ 111#ifdef KSPROXY_TRACE 112 OutputDebugStringW(L"UNIMPLEMENTED\n"); 113#endif 114 return E_NOTIMPL; 115} 116 117HRESULT 118STDMETHODCALLTYPE 119CVPVBIConfig::Run( 120 REFERENCE_TIME tStart) 121{ 122#ifdef KSPROXY_TRACE 123 OutputDebugStringW(L"UNIMPLEMENTED\n"); 124#endif 125 return E_NOTIMPL; 126} 127 128HRESULT 129STDMETHODCALLTYPE 130CVPVBIConfig::SetSyncSource( 131 IReferenceClock *pClock) 132{ 133#ifdef KSPROXY_TRACE 134 OutputDebugStringW(L"UNIMPLEMENTED\n"); 135#endif 136 return E_NOTIMPL; 137} 138 139HRESULT 140STDMETHODCALLTYPE 141CVPVBIConfig::NotifyGraphChange() 142{ 143#ifdef KSPROXY_TRACE 144 OutputDebugStringW(L"UNIMPLEMENTED\n"); 145#endif 146 return E_NOTIMPL; 147} 148 149//------------------------------------------------------------------- 150// IVPBaseConfig 151// 152HRESULT 153STDMETHODCALLTYPE 154CVPVBIConfig::GetConnectInfo( 155 LPDWORD pdwNumConnectInfo, 156 IN OUT LPDDVIDEOPORTCONNECT pddVPConnectInfo) 157{ 158#ifdef KSPROXY_TRACE 159 OutputDebugStringW(L"UNIMPLEMENTED\n"); 160#endif 161 return E_NOTIMPL; 162} 163 164HRESULT 165STDMETHODCALLTYPE 166CVPVBIConfig::SetConnectInfo( 167 DWORD dwChosenEntry) 168{ 169#ifdef KSPROXY_TRACE 170 OutputDebugStringW(L"UNIMPLEMENTED\n"); 171#endif 172 return E_NOTIMPL; 173} 174 175HRESULT 176STDMETHODCALLTYPE 177CVPVBIConfig::GetVPDataInfo( 178 LPAMVPDATAINFO pamvpDataInfo) 179{ 180#ifdef KSPROXY_TRACE 181 OutputDebugStringW(L"UNIMPLEMENTED\n"); 182#endif 183 return E_NOTIMPL; 184} 185 186HRESULT 187STDMETHODCALLTYPE 188CVPVBIConfig::GetMaxPixelRate( 189 LPAMVPSIZE pamvpSize, 190 OUT LPDWORD pdwMaxPixelsPerSecond) 191{ 192#ifdef KSPROXY_TRACE 193 OutputDebugStringW(L"UNIMPLEMENTED\n"); 194#endif 195 return E_NOTIMPL; 196} 197 198HRESULT 199STDMETHODCALLTYPE 200CVPVBIConfig::InformVPInputFormats( 201 DWORD dwNumFormats, 202 IN LPDDPIXELFORMAT pDDPixelFormats) 203{ 204#ifdef KSPROXY_TRACE 205 OutputDebugStringW(L"UNIMPLEMENTED\n"); 206#endif 207 return E_NOTIMPL; 208} 209 210HRESULT 211STDMETHODCALLTYPE 212CVPVBIConfig::GetVideoFormats( 213 LPDWORD pdwNumFormats, 214 IN OUT LPDDPIXELFORMAT pddPixelFormats) 215{ 216#ifdef KSPROXY_TRACE 217 OutputDebugStringW(L"UNIMPLEMENTED\n"); 218#endif 219 return E_NOTIMPL; 220} 221 222HRESULT 223STDMETHODCALLTYPE 224CVPVBIConfig::SetVideoFormat( 225 DWORD dwChosenEntry) 226{ 227#ifdef KSPROXY_TRACE 228 OutputDebugStringW(L"UNIMPLEMENTED\n"); 229#endif 230 return E_NOTIMPL; 231} 232 233HRESULT 234STDMETHODCALLTYPE 235CVPVBIConfig::SetInvertPolarity() 236{ 237 #ifdef KSPROXY_TRACE 238 OutputDebugStringW(L"UNIMPLEMENTED\n"); 239#endif 240 return E_NOTIMPL; 241} 242 243HRESULT 244STDMETHODCALLTYPE 245CVPVBIConfig::GetOverlaySurface( 246 LPDIRECTDRAWSURFACE* ppddOverlaySurface) 247{ 248#ifdef KSPROXY_TRACE 249 OutputDebugStringW(L"UNIMPLEMENTED\n"); 250#endif 251 return E_NOTIMPL; 252} 253 254HRESULT 255STDMETHODCALLTYPE 256CVPVBIConfig::SetDirectDrawKernelHandle( 257 ULONG_PTR dwDDKernelHandle) 258{ 259#ifdef KSPROXY_TRACE 260 OutputDebugStringW(L"UNIMPLEMENTED\n"); 261#endif 262 return E_NOTIMPL; 263} 264 265HRESULT 266STDMETHODCALLTYPE 267CVPVBIConfig::SetVideoPortID( 268 IN DWORD dwVideoPortID) 269{ 270#ifdef KSPROXY_TRACE 271 OutputDebugStringW(L"UNIMPLEMENTED\n"); 272#endif 273 return E_NOTIMPL; 274} 275 276 277HRESULT 278STDMETHODCALLTYPE 279CVPVBIConfig::SetDDSurfaceKernelHandles( 280 DWORD cHandles, 281 IN ULONG_PTR *rgDDKernelHandles) 282{ 283#ifdef KSPROXY_TRACE 284 OutputDebugStringW(L"UNIMPLEMENTED\n"); 285#endif 286 return E_NOTIMPL; 287} 288 289 290HRESULT 291STDMETHODCALLTYPE 292CVPVBIConfig::SetSurfaceParameters( 293 DWORD dwPitch, 294 IN DWORD dwXOrigin, 295 IN DWORD dwYOrigin) 296{ 297#ifdef KSPROXY_TRACE 298 OutputDebugStringW(L"UNIMPLEMENTED\n"); 299#endif 300 return E_NOTIMPL; 301} 302 303 304HRESULT 305WINAPI 306CVPVBIConfig_Constructor( 307 IUnknown * pUnkOuter, 308 REFIID riid, 309 LPVOID * ppv) 310{ 311#ifdef KSPROXY_TRACE 312 OutputDebugStringW(L"CVPVBIConfig_Constructor\n"); 313#endif 314 315 CVPVBIConfig * handler = new CVPVBIConfig(); 316 317 if (!handler) 318 return E_OUTOFMEMORY; 319 320 if (FAILED(handler->QueryInterface(riid, ppv))) 321 { 322 /* not supported */ 323 delete handler; 324 return E_NOINTERFACE; 325 } 326 327 return NOERROR; 328}