Reactos
at listview 294 lines 5.8 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/basicaudio.cpp 5 * PURPOSE: IBasicAudio interface 6 * 7 * PROGRAMMERS: Johannes Anderwald (johannes.anderwald@reactos.org) 8 */ 9#include "precomp.h" 10 11class CKsBasicAudio : public IBasicAudio, 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 methods 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 // IDispatch methods 42 HRESULT STDMETHODCALLTYPE GetTypeInfoCount(UINT *pctinfo); 43 HRESULT STDMETHODCALLTYPE GetTypeInfo(UINT iTInfo, LCID lcid, ITypeInfo **ppTInfo); 44 HRESULT STDMETHODCALLTYPE GetIDsOfNames(REFIID riid, LPOLESTR *rgszNames, UINT cNames, LCID lcid, DISPID *rgDispId); 45 HRESULT STDMETHODCALLTYPE Invoke(DISPID dispIdMember, REFIID riid, LCID lcid, WORD wFlags, DISPPARAMS *pDispParams, VARIANT *pVarResult, EXCEPINFO *pExcepInfo, UINT *puArgErr); 46 47 48 // IBasicAudio methods 49 HRESULT STDMETHODCALLTYPE put_Volume(long lVolume); 50 HRESULT STDMETHODCALLTYPE get_Volume(long *plVolume); 51 HRESULT STDMETHODCALLTYPE put_Balance(long lBalance); 52 HRESULT STDMETHODCALLTYPE get_Balance(long *plBalance); 53 54 55 CKsBasicAudio() : m_Ref(0){} 56 virtual ~CKsBasicAudio(){} 57 58protected: 59 LONG m_Ref; 60}; 61 62HRESULT 63STDMETHODCALLTYPE 64CKsBasicAudio::QueryInterface( 65 IN REFIID refiid, 66 OUT PVOID* Output) 67{ 68 if (IsEqualGUID(refiid, IID_IUnknown)) 69 { 70 *Output = PVOID(this); 71 reinterpret_cast<IUnknown*>(*Output)->AddRef(); 72 return NOERROR; 73 } 74 if (IsEqualGUID(refiid, IID_IDistributorNotify)) 75 { 76 *Output = (IDistributorNotify*)(this); 77 reinterpret_cast<IDistributorNotify*>(*Output)->AddRef(); 78 return NOERROR; 79 } 80 81 if (IsEqualGUID(refiid, IID_IBasicAudio)) 82 { 83 *Output = (IBasicAudio*)(this); 84 reinterpret_cast<IBasicAudio*>(*Output)->AddRef(); 85 return NOERROR; 86 } 87 88 return E_NOINTERFACE; 89} 90 91//------------------------------------------------------------------- 92// IDistributorNotify interface 93// 94 95 96HRESULT 97STDMETHODCALLTYPE 98CKsBasicAudio::Stop() 99{ 100#ifdef KSPROXY_TRACE 101 OutputDebugStringW(L"UNIMPLEMENTED\n"); 102#endif 103 return E_NOTIMPL; 104} 105 106HRESULT 107STDMETHODCALLTYPE 108CKsBasicAudio::Pause() 109{ 110#ifdef KSPROXY_TRACE 111 OutputDebugStringW(L"UNIMPLEMENTED\n"); 112#endif 113 114 return E_NOTIMPL; 115} 116 117HRESULT 118STDMETHODCALLTYPE 119CKsBasicAudio::Run( 120 REFERENCE_TIME tStart) 121{ 122#ifdef KSPROXY_TRACE 123 OutputDebugStringW(L"UNIMPLEMENTED\n"); 124#endif 125 126 return E_NOTIMPL; 127} 128 129HRESULT 130STDMETHODCALLTYPE 131CKsBasicAudio::SetSyncSource( 132 IReferenceClock *pClock) 133{ 134#ifdef KSPROXY_TRACE 135 OutputDebugStringW(L"UNIMPLEMENTED\n"); 136#endif 137 return E_NOTIMPL; 138} 139 140HRESULT 141STDMETHODCALLTYPE 142CKsBasicAudio::NotifyGraphChange() 143{ 144#ifdef KSPROXY_TRACE 145 OutputDebugStringW(L"UNIMPLEMENTED\n"); 146#endif 147 148 return E_NOTIMPL; 149} 150 151//------------------------------------------------------------------- 152// IDispatch interface 153// 154 155HRESULT 156STDMETHODCALLTYPE 157CKsBasicAudio::GetTypeInfoCount( 158 UINT *pctinfo) 159{ 160#ifdef KSPROXY_TRACE 161 OutputDebugStringW(L"UNIMPLEMENTED\n"); 162#endif 163 164 return E_NOTIMPL; 165} 166 167HRESULT 168STDMETHODCALLTYPE 169CKsBasicAudio::GetTypeInfo( 170 UINT iTInfo, 171 LCID lcid, 172 ITypeInfo **ppTInfo) 173{ 174#ifdef KSPROXY_TRACE 175 OutputDebugStringW(L"UNIMPLEMENTED\n"); 176#endif 177 return E_NOTIMPL; 178} 179 180HRESULT 181STDMETHODCALLTYPE 182CKsBasicAudio::GetIDsOfNames( 183 REFIID riid, 184 LPOLESTR *rgszNames, 185 UINT cNames, 186 LCID lcid, 187 DISPID *rgDispId) 188{ 189#ifdef KSPROXY_TRACE 190 OutputDebugStringW(L"UNIMPLEMENTED\n"); 191#endif 192 193 return E_NOTIMPL; 194} 195 196HRESULT 197STDMETHODCALLTYPE 198CKsBasicAudio::Invoke( 199 DISPID dispIdMember, 200 REFIID riid, 201 LCID lcid, 202 WORD wFlags, 203 DISPPARAMS *pDispParams, 204 VARIANT *pVarResult, 205 EXCEPINFO *pExcepInfo, 206 UINT *puArgErr) 207{ 208#ifdef KSPROXY_TRACE 209 OutputDebugStringW(L"UNIMPLEMENTED\n"); 210#endif 211 212 return E_NOTIMPL; 213} 214 215//------------------------------------------------------------------- 216// IBasicAudio interface 217// 218 219HRESULT 220STDMETHODCALLTYPE 221CKsBasicAudio::put_Volume( 222 long lVolume) 223{ 224#ifdef KSPROXY_TRACE 225 OutputDebugStringW(L"UNIMPLEMENTED\n"); 226#endif 227 228 return E_NOTIMPL; 229} 230 231 232HRESULT 233STDMETHODCALLTYPE 234CKsBasicAudio::get_Volume( 235 long *plVolume) 236{ 237#ifdef KSPROXY_TRACE 238 OutputDebugStringW(L"UNIMPLEMENTED\n"); 239#endif 240 241 return E_NOTIMPL; 242} 243 244 245HRESULT 246STDMETHODCALLTYPE 247CKsBasicAudio::put_Balance( 248 long lBalance) 249{ 250#ifdef KSPROXY_TRACE 251 OutputDebugStringW(L"UNIMPLEMENTED\n"); 252#endif 253 254 return E_NOTIMPL; 255} 256 257 258HRESULT 259STDMETHODCALLTYPE 260CKsBasicAudio::get_Balance( 261 long *plBalance) 262{ 263#ifdef KSPROXY_TRACE 264 OutputDebugStringW(L"UNIMPLEMENTED\n"); 265#endif 266 267 return E_NOTIMPL; 268} 269 270HRESULT 271WINAPI 272CKsBasicAudio_Constructor( 273 IUnknown * pUnkOuter, 274 REFIID riid, 275 LPVOID * ppv) 276{ 277#ifdef KSPROXY_TRACE 278 OutputDebugStringW(L"CKsBasicAudio_Constructor\n"); 279#endif 280 281 CKsBasicAudio * handler = new CKsBasicAudio(); 282 283 if (!handler) 284 return E_OUTOFMEMORY; 285 286 if (FAILED(handler->QueryInterface(riid, ppv))) 287 { 288 /* not supported */ 289 delete handler; 290 return E_NOINTERFACE; 291 } 292 293 return NOERROR; 294}