[KSPROXY]
[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 const GUID IID_IBasicAudio = {0x56a868b3, 0x0ad4, 0x11ce, {0xb0, 0x3a, 0x00, 0x20, 0xaf, 0x0b, 0xa7, 0x70}};
12
13 class CKsBasicAudio : public IBasicAudio,
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 methods
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 // IDispatch methods
44 HRESULT STDMETHODCALLTYPE GetTypeInfoCount(UINT *pctinfo);
45 HRESULT STDMETHODCALLTYPE GetTypeInfo(UINT iTInfo, LCID lcid, ITypeInfo **ppTInfo);
46 HRESULT STDMETHODCALLTYPE GetIDsOfNames(REFIID riid, LPOLESTR *rgszNames, UINT cNames, LCID lcid, DISPID *rgDispId);
47 HRESULT STDMETHODCALLTYPE Invoke(DISPID dispIdMember, REFIID riid, LCID lcid, WORD wFlags, DISPPARAMS *pDispParams, VARIANT *pVarResult, EXCEPINFO *pExcepInfo, UINT *puArgErr);
48
49
50 // IBasicAudio methods
51 HRESULT STDMETHODCALLTYPE put_Volume(long lVolume);
52 HRESULT STDMETHODCALLTYPE get_Volume(long *plVolume);
53 HRESULT STDMETHODCALLTYPE put_Balance(long lBalance);
54 HRESULT STDMETHODCALLTYPE get_Balance(long *plBalance);
55
56
57 CKsBasicAudio() : m_Ref(0){}
58 virtual ~CKsBasicAudio(){}
59
60 protected:
61 LONG m_Ref;
62 };
63
64 HRESULT
65 STDMETHODCALLTYPE
66 CKsBasicAudio::QueryInterface(
67 IN REFIID refiid,
68 OUT PVOID* Output)
69 {
70 if (IsEqualGUID(refiid, IID_IUnknown))
71 {
72 *Output = PVOID(this);
73 reinterpret_cast<IUnknown*>(*Output)->AddRef();
74 return NOERROR;
75 }
76 if (IsEqualGUID(refiid, IID_IDistributorNotify))
77 {
78 *Output = (IDistributorNotify*)(this);
79 reinterpret_cast<IDistributorNotify*>(*Output)->AddRef();
80 return NOERROR;
81 }
82
83 if (IsEqualGUID(refiid, IID_IBasicAudio))
84 {
85 *Output = (IBasicAudio*)(this);
86 reinterpret_cast<IBasicAudio*>(*Output)->AddRef();
87 return NOERROR;
88 }
89
90 return E_NOINTERFACE;
91 }
92
93 //-------------------------------------------------------------------
94 // IDistributorNotify interface
95 //
96
97
98 HRESULT
99 STDMETHODCALLTYPE
100 CKsBasicAudio::Stop()
101 {
102 OutputDebugString("UNIMPLEMENTED\n");
103 return E_NOTIMPL;
104 }
105
106 HRESULT
107 STDMETHODCALLTYPE
108 CKsBasicAudio::Pause()
109 {
110 OutputDebugString("UNIMPLEMENTED\n");
111 return E_NOTIMPL;
112 }
113
114 HRESULT
115 STDMETHODCALLTYPE
116 CKsBasicAudio::Run(
117 REFERENCE_TIME tStart)
118 {
119 OutputDebugString("UNIMPLEMENTED\n");
120 return E_NOTIMPL;
121 }
122
123 HRESULT
124 STDMETHODCALLTYPE
125 CKsBasicAudio::SetSyncSource(
126 IReferenceClock *pClock)
127 {
128 OutputDebugString("UNIMPLEMENTED\n");
129 return E_NOTIMPL;
130 }
131
132 HRESULT
133 STDMETHODCALLTYPE
134 CKsBasicAudio::NotifyGraphChange()
135 {
136 OutputDebugString("UNIMPLEMENTED\n");
137 return E_NOTIMPL;
138 }
139
140 //-------------------------------------------------------------------
141 // IDispatch interface
142 //
143
144 HRESULT
145 STDMETHODCALLTYPE
146 CKsBasicAudio::GetTypeInfoCount(
147 UINT *pctinfo)
148 {
149 OutputDebugString("UNIMPLEMENTED\n");
150 return E_NOTIMPL;
151 }
152
153 HRESULT
154 STDMETHODCALLTYPE
155 CKsBasicAudio::GetTypeInfo(
156 UINT iTInfo,
157 LCID lcid,
158 ITypeInfo **ppTInfo)
159 {
160 OutputDebugString("UNIMPLEMENTED\n");
161 return E_NOTIMPL;
162 }
163
164 HRESULT
165 STDMETHODCALLTYPE
166 CKsBasicAudio::GetIDsOfNames(
167 REFIID riid,
168 LPOLESTR *rgszNames,
169 UINT cNames,
170 LCID lcid,
171 DISPID *rgDispId)
172 {
173 OutputDebugString("UNIMPLEMENTED\n");
174 return E_NOTIMPL;
175 }
176
177 HRESULT
178 STDMETHODCALLTYPE
179 CKsBasicAudio::Invoke(
180 DISPID dispIdMember,
181 REFIID riid,
182 LCID lcid,
183 WORD wFlags,
184 DISPPARAMS *pDispParams,
185 VARIANT *pVarResult,
186 EXCEPINFO *pExcepInfo,
187 UINT *puArgErr)
188 {
189 OutputDebugString("UNIMPLEMENTED\n");
190 return E_NOTIMPL;
191 }
192
193 //-------------------------------------------------------------------
194 // IBasicAudio interface
195 //
196
197 HRESULT
198 STDMETHODCALLTYPE
199 CKsBasicAudio::put_Volume(
200 long lVolume)
201 {
202 OutputDebugString("UNIMPLEMENTED\n");
203 return E_NOTIMPL;
204 }
205
206
207 HRESULT
208 STDMETHODCALLTYPE
209 CKsBasicAudio::get_Volume(
210 long *plVolume)
211 {
212 OutputDebugString("UNIMPLEMENTED\n");
213 return E_NOTIMPL;
214 }
215
216
217 HRESULT
218 STDMETHODCALLTYPE
219 CKsBasicAudio::put_Balance(
220 long lBalance)
221 {
222 OutputDebugString("UNIMPLEMENTED\n");
223 return E_NOTIMPL;
224 }
225
226
227 HRESULT
228 STDMETHODCALLTYPE
229 CKsBasicAudio::get_Balance(
230 long *plBalance)
231 {
232 OutputDebugString("UNIMPLEMENTED\n");
233 return E_NOTIMPL;
234 }
235
236 HRESULT
237 WINAPI
238 CKsBasicAudio_Constructor(
239 IUnknown * pUnkOuter,
240 REFIID riid,
241 LPVOID * ppv)
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 }