[BDAPLGIN]
[reactos.git] / reactos / dll / directx / ksproxy / basicaudio.cpp
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 (janderwald@reactos.org)
8 */
9 #include "precomp.h"
10
11 class CKsBasicAudio : public IBasicAudio,
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 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
58 protected:
59 LONG m_Ref;
60 };
61
62 HRESULT
63 STDMETHODCALLTYPE
64 CKsBasicAudio::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
96 HRESULT
97 STDMETHODCALLTYPE
98 CKsBasicAudio::Stop()
99 {
100 OutputDebugStringW(L"UNIMPLEMENTED\n");
101 return E_NOTIMPL;
102 }
103
104 HRESULT
105 STDMETHODCALLTYPE
106 CKsBasicAudio::Pause()
107 {
108 OutputDebugStringW(L"UNIMPLEMENTED\n");
109 return E_NOTIMPL;
110 }
111
112 HRESULT
113 STDMETHODCALLTYPE
114 CKsBasicAudio::Run(
115 REFERENCE_TIME tStart)
116 {
117 OutputDebugStringW(L"UNIMPLEMENTED\n");
118 return E_NOTIMPL;
119 }
120
121 HRESULT
122 STDMETHODCALLTYPE
123 CKsBasicAudio::SetSyncSource(
124 IReferenceClock *pClock)
125 {
126 OutputDebugStringW(L"UNIMPLEMENTED\n");
127 return E_NOTIMPL;
128 }
129
130 HRESULT
131 STDMETHODCALLTYPE
132 CKsBasicAudio::NotifyGraphChange()
133 {
134 OutputDebugStringW(L"UNIMPLEMENTED\n");
135 return E_NOTIMPL;
136 }
137
138 //-------------------------------------------------------------------
139 // IDispatch interface
140 //
141
142 HRESULT
143 STDMETHODCALLTYPE
144 CKsBasicAudio::GetTypeInfoCount(
145 UINT *pctinfo)
146 {
147 OutputDebugStringW(L"UNIMPLEMENTED\n");
148 return E_NOTIMPL;
149 }
150
151 HRESULT
152 STDMETHODCALLTYPE
153 CKsBasicAudio::GetTypeInfo(
154 UINT iTInfo,
155 LCID lcid,
156 ITypeInfo **ppTInfo)
157 {
158 OutputDebugStringW(L"UNIMPLEMENTED\n");
159 return E_NOTIMPL;
160 }
161
162 HRESULT
163 STDMETHODCALLTYPE
164 CKsBasicAudio::GetIDsOfNames(
165 REFIID riid,
166 LPOLESTR *rgszNames,
167 UINT cNames,
168 LCID lcid,
169 DISPID *rgDispId)
170 {
171 OutputDebugStringW(L"UNIMPLEMENTED\n");
172 return E_NOTIMPL;
173 }
174
175 HRESULT
176 STDMETHODCALLTYPE
177 CKsBasicAudio::Invoke(
178 DISPID dispIdMember,
179 REFIID riid,
180 LCID lcid,
181 WORD wFlags,
182 DISPPARAMS *pDispParams,
183 VARIANT *pVarResult,
184 EXCEPINFO *pExcepInfo,
185 UINT *puArgErr)
186 {
187 OutputDebugStringW(L"UNIMPLEMENTED\n");
188 return E_NOTIMPL;
189 }
190
191 //-------------------------------------------------------------------
192 // IBasicAudio interface
193 //
194
195 HRESULT
196 STDMETHODCALLTYPE
197 CKsBasicAudio::put_Volume(
198 long lVolume)
199 {
200 OutputDebugStringW(L"UNIMPLEMENTED\n");
201 return E_NOTIMPL;
202 }
203
204
205 HRESULT
206 STDMETHODCALLTYPE
207 CKsBasicAudio::get_Volume(
208 long *plVolume)
209 {
210 OutputDebugStringW(L"UNIMPLEMENTED\n");
211 return E_NOTIMPL;
212 }
213
214
215 HRESULT
216 STDMETHODCALLTYPE
217 CKsBasicAudio::put_Balance(
218 long lBalance)
219 {
220 OutputDebugStringW(L"UNIMPLEMENTED\n");
221 return E_NOTIMPL;
222 }
223
224
225 HRESULT
226 STDMETHODCALLTYPE
227 CKsBasicAudio::get_Balance(
228 long *plBalance)
229 {
230 OutputDebugStringW(L"UNIMPLEMENTED\n");
231 return E_NOTIMPL;
232 }
233
234 HRESULT
235 WINAPI
236 CKsBasicAudio_Constructor(
237 IUnknown * pUnkOuter,
238 REFIID riid,
239 LPVOID * ppv)
240 {
241 OutputDebugStringW(L"CKsBasicAudio_Constructor\n");
242
243 CKsBasicAudio * handler = new CKsBasicAudio();
244
245 if (!handler)
246 return E_OUTOFMEMORY;
247
248 if (FAILED(handler->QueryInterface(riid, ppv)))
249 {
250 /* not supported */
251 delete handler;
252 return E_NOINTERFACE;
253 }
254
255 return NOERROR;
256 }