4 #define COM_NO_WINDOWS_H
7 #define MAKE_DSHRESULT(code) MAKE_HRESULT(1, _FACDS, code)
8 #ifndef DIRECTSOUND_VERSION
9 #define DIRECTSOUND_VERSION 1792
11 DEFINE_GUID(CLSID_DirectSound
, 0x47d4d946, 0x62e8, 4559, 147, 188, 68, 69, 83, 84, 0, 0);
12 DEFINE_GUID(CLSID_DirectSoundCapture
, 0xb0210780, 0x89cd, 4560, 175, 8, 0, 160, 201, 37, 205, 22);
13 typedef struct IDirectSound
*LPDIRECTSOUND
;
14 typedef struct IDirectSoundBuffer
*LPDIRECTSOUNDBUFFER
;
15 typedef struct IDirectSound3DListener
*LPDIRECTSOUND3DLISTENER
;
16 typedef struct IDirectSound3DBuffer
*LPDIRECTSOUND3DBUFFER
;
17 typedef struct IDirectSoundCapture
*LPDIRECTSOUNDCAPTURE
;
18 typedef struct IDirectSoundCaptureBuffer
*LPDIRECTSOUNDCAPTUREBUFFER
;
19 typedef struct IDirectSoundNotify
*LPDIRECTSOUNDNOTIFY
;
20 #ifndef _LPCWAVEFORMATEX_DEFINED
21 #define _LPCWAVEFORMATEX_DEFINED
22 #ifndef _WAVEFORMATEX_
23 #define _WAVEFORMATEX_
24 typedef struct tWAVEFORMATEX
29 DWORD nAvgBytesPerSec
;
34 typedef WAVEFORMATEX
*PWAVEFORMATEX
;
35 typedef WAVEFORMATEX
*NPWAVEFORMATEX
;
36 typedef WAVEFORMATEX
*LPWAVEFORMATEX
;
37 #define _WAVEFORMATEX_
39 typedef const WAVEFORMATEX
*LPCWAVEFORMATEX
;
41 #ifndef __LPCGUID_DEFINED__
42 #define __LPCGUID_DEFINED__
43 typedef const GUID
*LPCGUID
;
45 typedef LPDIRECTSOUND
*LPLPDIRECTSOUND
;
46 typedef LPDIRECTSOUNDBUFFER
*LPLPDIRECTSOUNDBUFFER
;
47 typedef LPDIRECTSOUND3DLISTENER
*LPLPDIRECTSOUND3DLISTENER
;
48 typedef LPDIRECTSOUND3DBUFFER
*LPLPDIRECTSOUND3DBUFFER
;
49 typedef LPDIRECTSOUNDCAPTURE
*LPLPDIRECTSOUNDCAPTURE
;
50 typedef LPDIRECTSOUNDCAPTUREBUFFER
*LPLPDIRECTSOUNDCAPTUREBUFFER
;
51 typedef LPDIRECTSOUNDNOTIFY
*LPLPDIRECTSOUNDNOTIFY
;
52 typedef struct _DSCAPS
56 DWORD dwMinSecondarySampleRate
;
57 DWORD dwMaxSecondarySampleRate
;
58 DWORD dwPrimaryBuffers
;
59 DWORD dwMaxHwMixingAllBuffers
;
60 DWORD dwMaxHwMixingStaticBuffers
;
61 DWORD dwMaxHwMixingStreamingBuffers
;
62 DWORD dwFreeHwMixingAllBuffers
;
63 DWORD dwFreeHwMixingStaticBuffers
;
64 DWORD dwFreeHwMixingStreamingBuffers
;
65 DWORD dwMaxHw3DAllBuffers
;
66 DWORD dwMaxHw3DStaticBuffers
;
67 DWORD dwMaxHw3DStreamingBuffers
;
68 DWORD dwFreeHw3DAllBuffers
;
69 DWORD dwFreeHw3DStaticBuffers
;
70 DWORD dwFreeHw3DStreamingBuffers
;
71 DWORD dwTotalHwMemBytes
;
72 DWORD dwFreeHwMemBytes
;
73 DWORD dwMaxContigFreeHwMemBytes
;
74 DWORD dwUnlockTransferRateHwBuffers
;
75 DWORD dwPlayCpuOverheadSwBuffers
;
79 typedef const DSCAPS
*LPCDSCAPS
;
80 typedef struct _DSBCAPS
85 DWORD dwUnlockTransferRate
;
86 DWORD dwPlayCpuOverhead
;
87 } DSBCAPS
, *LPDSBCAPS
;
88 typedef const DSBCAPS
*LPCDSBCAPS
;
89 typedef struct _DSBUFFERDESC
95 LPWAVEFORMATEX lpwfxFormat
;
96 #if DIRECTSOUND_VERSION >= 1792
99 } DSBUFFERDESC
, *LPDSBUFFERDESC
;
100 typedef const DSBUFFERDESC
*LPCDSBUFFERDESC
;
101 typedef struct _DSBUFFERDESC1
107 LPWAVEFORMATEX lpwfxFormat
;
108 } DSBUFFERDESC1
, *LPDSBUFFERDESC1
;
109 typedef const DSBUFFERDESC1
*LPCDSBUFFERDESC1
;
110 typedef struct _DS3DBUFFER
115 DWORD dwInsideConeAngle
;
116 DWORD dwOutsideConeAngle
;
117 D3DVECTOR vConeOrientation
;
118 LONG lConeOutsideVolume
;
119 D3DVALUE flMinDistance
;
120 D3DVALUE flMaxDistance
;
122 } DS3DBUFFER
, *LPDS3DBUFFER
;
123 typedef const DS3DBUFFER
*LPCDS3DBUFFER
;
124 typedef struct _DS3DLISTENER
129 D3DVECTOR vOrientFront
;
130 D3DVECTOR vOrientTop
;
131 D3DVALUE flDistanceFactor
;
132 D3DVALUE flRolloffFactor
;
133 D3DVALUE flDopplerFactor
;
134 } DS3DLISTENER
, *LPDS3DLISTENER
;
135 typedef const DS3DLISTENER
*LPCDS3DLISTENER
;
136 typedef struct _DSCCAPS
142 } DSCCAPS
, *LPDSCCAPS
;
143 typedef const DSCCAPS
*LPCDSCCAPS
;
144 typedef struct _DSCBUFFERDESC
150 LPWAVEFORMATEX lpwfxFormat
;
151 } DSCBUFFERDESC
, *LPDSCBUFFERDESC
;
152 typedef const DSCBUFFERDESC
*LPCDSCBUFFERDESC
;
153 typedef struct _DSCBCAPS
159 } DSCBCAPS
, *LPDSCBCAPS
;
160 typedef const DSCBCAPS
*LPCDSCBCAPS
;
161 typedef struct _DSBPOSITIONNOTIFY
165 } DSBPOSITIONNOTIFY
, *LPDSBPOSITIONNOTIFY
;
166 typedef const DSBPOSITIONNOTIFY
*LPCDSBPOSITIONNOTIFY
;
167 typedef BOOL (CALLBACK
*LPDSENUMCALLBACKA
)(LPGUID
, LPCSTR
, LPCSTR
, LPVOID
);
168 typedef BOOL (CALLBACK
*LPDSENUMCALLBACKW
)(LPGUID
, LPCWSTR
, LPCWSTR
, LPVOID
);
169 extern HRESULT WINAPI
DirectSoundCreate(LPCGUID
, LPDIRECTSOUND
*, LPUNKNOWN
);
170 extern HRESULT WINAPI
DirectSoundEnumerateA(LPDSENUMCALLBACKA
, LPVOID
);
171 extern HRESULT WINAPI
DirectSoundEnumerateW(LPDSENUMCALLBACKW
, LPVOID
);
172 extern HRESULT WINAPI
DirectSoundCaptureCreate(LPCGUID
, LPDIRECTSOUNDCAPTURE
*, LPUNKNOWN
);
173 extern HRESULT WINAPI
DirectSoundCaptureEnumerateA(LPDSENUMCALLBACKA
, LPVOID
);
174 extern HRESULT WINAPI
DirectSoundCaptureEnumerateW(LPDSENUMCALLBACKW
, LPVOID
);
176 #define LPDSENUMCALLBACK LPDSENUMCALLBACKW
177 #define DirectSoundEnumerate DirectSoundEnumerateW
178 #define DirectSoundCaptureEnumerate DirectSoundCaptureEnumerateW
180 #define LPDSENUMCALLBACK LPDSENUMCALLBACKA
181 #define DirectSoundEnumerate DirectSoundEnumerateA
182 #define DirectSoundCaptureEnumerate DirectSoundCaptureEnumerateA
184 #ifndef IUnknown_QueryInterface
185 #define IUnknown_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
187 #ifndef IUnknown_AddRef
188 #define IUnknown_AddRef(p) (p)->lpVtbl->AddRef(p)
190 #ifndef IUnknown_Release
191 #define IUnknown_Release(p) (p)->lpVtbl->Release(p)
193 DEFINE_GUID(IID_IDirectSound
, 0x279afa83, 0x4981, 4558, 165, 33, 0, 32, 175, 11, 229, 96);
195 #define INTERFACE IDirectSound
196 DECLARE_INTERFACE_(IDirectSound
, IUnknown
)
198 STDMETHOD(QueryInterface
) (THIS_ REFIID
, LPVOID
*) ;
199 STDMETHOD_(ULONG
,AddRef
) (THIS
) ;
200 STDMETHOD_(ULONG
,Release
) (THIS
) ;
201 STDMETHOD(CreateSoundBuffer
) (THIS_ LPCDSBUFFERDESC
, LPDIRECTSOUNDBUFFER
*, LPUNKNOWN
) ;
202 STDMETHOD(GetCaps
) (THIS_ LPDSCAPS
) ;
203 STDMETHOD(DuplicateSoundBuffer
) (THIS_ LPDIRECTSOUNDBUFFER
, LPDIRECTSOUNDBUFFER
*) ;
204 STDMETHOD(SetCooperativeLevel
) (THIS_ HWND
, DWORD
) ;
205 STDMETHOD(Compact
) (THIS
) ;
206 STDMETHOD(GetSpeakerConfig
) (THIS_ LPDWORD
) ;
207 STDMETHOD(SetSpeakerConfig
) (THIS_ DWORD
) ;
208 STDMETHOD(Initialize
) (THIS_ LPCGUID
) ;
210 #define IDirectSound_QueryInterface(p,a,b) IUnknown_QueryInterface(p,a,b)
211 #define IDirectSound_AddRef(p) IUnknown_AddRef(p)
212 #define IDirectSound_Release(p) IUnknown_Release(p)
213 #define IDirectSound_CreateSoundBuffer(p,a,b,c) (p)->lpVtbl->CreateSoundBuffer(p,a,b,c)
214 #define IDirectSound_GetCaps(p,a) (p)->lpVtbl->GetCaps(p,a)
215 #define IDirectSound_DuplicateSoundBuffer(p,a,b) (p)->lpVtbl->DuplicateSoundBuffer(p,a,b)
216 #define IDirectSound_SetCooperativeLevel(p,a,b) (p)->lpVtbl->SetCooperativeLevel(p,a,b)
217 #define IDirectSound_Compact(p) (p)->lpVtbl->Compact(p)
218 #define IDirectSound_GetSpeakerConfig(p,a) (p)->lpVtbl->GetSpeakerConfig(p,a)
219 #define IDirectSound_SetSpeakerConfig(p,b) (p)->lpVtbl->SetSpeakerConfig(p,b)
220 #define IDirectSound_Initialize(p,a) (p)->lpVtbl->Initialize(p,a)
221 DEFINE_GUID(IID_IDirectSoundBuffer
, 0x279afa85, 0x4981, 4558, 165, 33, 0, 32, 175, 11, 229, 96);
223 #define INTERFACE IDirectSoundBuffer
224 DECLARE_INTERFACE_(IDirectSoundBuffer
, IUnknown
)
226 STDMETHOD(QueryInterface
) (THIS_ REFIID
, LPVOID
*) ;
227 STDMETHOD_(ULONG
,AddRef
) (THIS
) ;
228 STDMETHOD_(ULONG
,Release
) (THIS
) ;
229 STDMETHOD(GetCaps
) (THIS_ LPDSBCAPS
) ;
230 STDMETHOD(GetCurrentPosition
) (THIS_ LPDWORD
, LPDWORD
) ;
231 STDMETHOD(GetFormat
) (THIS_ LPWAVEFORMATEX
, DWORD
, LPDWORD
) ;
232 STDMETHOD(GetVolume
) (THIS_ LPLONG
) ;
233 STDMETHOD(GetPan
) (THIS_ LPLONG
) ;
234 STDMETHOD(GetFrequency
) (THIS_ LPDWORD
) ;
235 STDMETHOD(GetStatus
) (THIS_ LPDWORD
) ;
236 STDMETHOD(Initialize
) (THIS_ LPDIRECTSOUND
, LPCDSBUFFERDESC
) ;
237 STDMETHOD(Lock
) (THIS_ DWORD
, DWORD
, LPVOID
*, LPDWORD
, LPVOID
*, LPDWORD
, DWORD
) ;
238 STDMETHOD(Play
) (THIS_ DWORD
, DWORD
, DWORD
) ;
239 STDMETHOD(SetCurrentPosition
) (THIS_ DWORD
) ;
240 STDMETHOD(SetFormat
) (THIS_ LPCWAVEFORMATEX
) ;
241 STDMETHOD(SetVolume
) (THIS_ LONG
) ;
242 STDMETHOD(SetPan
) (THIS_ LONG
) ;
243 STDMETHOD(SetFrequency
) (THIS_ DWORD
) ;
244 STDMETHOD(Stop
) (THIS
) ;
245 STDMETHOD(Unlock
) (THIS_ LPVOID
, DWORD
, LPVOID
, DWORD
) ;
246 STDMETHOD(Restore
) (THIS
) ;
248 #define IDirectSoundBuffer_QueryInterface(p,a,b) IUnknown_QueryInterface(p,a,b)
249 #define IDirectSoundBuffer_AddRef(p) IUnknown_AddRef(p)
250 #define IDirectSoundBuffer_Release(p) IUnknown_Release(p)
251 #define IDirectSoundBuffer_GetCaps(p,a) (p)->lpVtbl->GetCaps(p,a)
252 #define IDirectSoundBuffer_GetCurrentPosition(p,a,b) (p)->lpVtbl->GetCurrentPosition(p,a,b)
253 #define IDirectSoundBuffer_GetFormat(p,a,b,c) (p)->lpVtbl->GetFormat(p,a,b,c)
254 #define IDirectSoundBuffer_GetVolume(p,a) (p)->lpVtbl->GetVolume(p,a)
255 #define IDirectSoundBuffer_GetPan(p,a) (p)->lpVtbl->GetPan(p,a)
256 #define IDirectSoundBuffer_GetFrequency(p,a) (p)->lpVtbl->GetFrequency(p,a)
257 #define IDirectSoundBuffer_GetStatus(p,a) (p)->lpVtbl->GetStatus(p,a)
258 #define IDirectSoundBuffer_Initialize(p,a,b) (p)->lpVtbl->Initialize(p,a,b)
259 #define IDirectSoundBuffer_Lock(p,a,b,c,d,e,f,g) (p)->lpVtbl->Lock(p,a,b,c,d,e,f,g)
260 #define IDirectSoundBuffer_Play(p,a,b,c) (p)->lpVtbl->Play(p,a,b,c)
261 #define IDirectSoundBuffer_SetCurrentPosition(p,a) (p)->lpVtbl->SetCurrentPosition(p,a)
262 #define IDirectSoundBuffer_SetFormat(p,a) (p)->lpVtbl->SetFormat(p,a)
263 #define IDirectSoundBuffer_SetVolume(p,a) (p)->lpVtbl->SetVolume(p,a)
264 #define IDirectSoundBuffer_SetPan(p,a) (p)->lpVtbl->SetPan(p,a)
265 #define IDirectSoundBuffer_SetFrequency(p,a) (p)->lpVtbl->SetFrequency(p,a)
266 #define IDirectSoundBuffer_Stop(p) (p)->lpVtbl->Stop(p)
267 #define IDirectSoundBuffer_Unlock(p,a,b,c,d) (p)->lpVtbl->Unlock(p,a,b,c,d)
268 #define IDirectSoundBuffer_Restore(p) (p)->lpVtbl->Restore(p)
269 DEFINE_GUID(IID_IDirectSound3DListener
, 0x279afa84, 0x4981, 4558, 165, 33, 0, 32, 175, 11, 229, 96);
271 #define INTERFACE IDirectSound3DListener
272 DECLARE_INTERFACE_(IDirectSound3DListener
, IUnknown
)
274 STDMETHOD(QueryInterface
) (THIS_ REFIID
, LPVOID
*) ;
275 STDMETHOD_(ULONG
,AddRef
) (THIS
) ;
276 STDMETHOD_(ULONG
,Release
) (THIS
) ;
277 STDMETHOD(GetAllParameters
) (THIS_ LPDS3DLISTENER
) ;
278 STDMETHOD(GetDistanceFactor
) (THIS_ LPD3DVALUE
) ;
279 STDMETHOD(GetDopplerFactor
) (THIS_ LPD3DVALUE
) ;
280 STDMETHOD(GetOrientation
) (THIS_ LPD3DVECTOR
, LPD3DVECTOR
) ;
281 STDMETHOD(GetPosition
) (THIS_ LPD3DVECTOR
) ;
282 STDMETHOD(GetRolloffFactor
) (THIS_ LPD3DVALUE
) ;
283 STDMETHOD(GetVelocity
) (THIS_ LPD3DVECTOR
) ;
284 STDMETHOD(SetAllParameters
) (THIS_ LPCDS3DLISTENER
, DWORD
) ;
285 STDMETHOD(SetDistanceFactor
) (THIS_ D3DVALUE
, DWORD
) ;
286 STDMETHOD(SetDopplerFactor
) (THIS_ D3DVALUE
, DWORD
) ;
287 STDMETHOD(SetOrientation
) (THIS_ D3DVALUE
, D3DVALUE
, D3DVALUE
, D3DVALUE
, D3DVALUE
, D3DVALUE
, DWORD
) ;
288 STDMETHOD(SetPosition
) (THIS_ D3DVALUE
, D3DVALUE
, D3DVALUE
, DWORD
) ;
289 STDMETHOD(SetRolloffFactor
) (THIS_ D3DVALUE
, DWORD
) ;
290 STDMETHOD(SetVelocity
) (THIS_ D3DVALUE
, D3DVALUE
, D3DVALUE
, DWORD
) ;
291 STDMETHOD(CommitDeferredSettings
) (THIS
) ;
293 #define IDirectSound3DListener_QueryInterface(p,a,b) IUnknown_QueryInterface(p,a,b)
294 #define IDirectSound3DListener_AddRef(p) IUnknown_AddRef(p)
295 #define IDirectSound3DListener_Release(p) IUnknown_Release(p)
296 #define IDirectSound3DListener_GetAllParameters(p,a) (p)->lpVtbl->GetAllParameters(p,a)
297 #define IDirectSound3DListener_GetDistanceFactor(p,a) (p)->lpVtbl->GetDistanceFactor(p,a)
298 #define IDirectSound3DListener_GetDopplerFactor(p,a) (p)->lpVtbl->GetDopplerFactor(p,a)
299 #define IDirectSound3DListener_GetOrientation(p,a,b) (p)->lpVtbl->GetOrientation(p,a,b)
300 #define IDirectSound3DListener_GetPosition(p,a) (p)->lpVtbl->GetPosition(p,a)
301 #define IDirectSound3DListener_GetRolloffFactor(p,a) (p)->lpVtbl->GetRolloffFactor(p,a)
302 #define IDirectSound3DListener_GetVelocity(p,a) (p)->lpVtbl->GetVelocity(p,a)
303 #define IDirectSound3DListener_SetAllParameters(p,a,b) (p)->lpVtbl->SetAllParameters(p,a,b)
304 #define IDirectSound3DListener_SetDistanceFactor(p,a,b) (p)->lpVtbl->SetDistanceFactor(p,a,b)
305 #define IDirectSound3DListener_SetDopplerFactor(p,a,b) (p)->lpVtbl->SetDopplerFactor(p,a,b)
306 #define IDirectSound3DListener_SetOrientation(p,a,b,c,d,e,f,g) (p)->lpVtbl->SetOrientation(p,a,b,c,d,e,f,g)
307 #define IDirectSound3DListener_SetPosition(p,a,b,c,d) (p)->lpVtbl->SetPosition(p,a,b,c,d)
308 #define IDirectSound3DListener_SetRolloffFactor(p,a,b) (p)->lpVtbl->SetRolloffFactor(p,a,b)
309 #define IDirectSound3DListener_SetVelocity(p,a,b,c,d) (p)->lpVtbl->SetVelocity(p,a,b,c,d)
310 #define IDirectSound3DListener_CommitDeferredSettings(p) (p)->lpVtbl->CommitDeferredSettings(p)
311 DEFINE_GUID(IID_IDirectSound3DBuffer
, 0x279afa86, 0x4981, 4558, 165, 33, 0, 32, 175, 11, 229, 96);
313 #define INTERFACE IDirectSound3DBuffer
314 DECLARE_INTERFACE_(IDirectSound3DBuffer
, IUnknown
)
316 STDMETHOD(QueryInterface
) (THIS_ REFIID
, LPVOID
*) ;
317 STDMETHOD_(ULONG
,AddRef
) (THIS
) ;
318 STDMETHOD_(ULONG
,Release
) (THIS
) ;
319 STDMETHOD(GetAllParameters
) (THIS_ LPDS3DBUFFER
) ;
320 STDMETHOD(GetConeAngles
) (THIS_ LPDWORD
, LPDWORD
) ;
321 STDMETHOD(GetConeOrientation
) (THIS_ LPD3DVECTOR
) ;
322 STDMETHOD(GetConeOutsideVolume
) (THIS_ LPLONG
) ;
323 STDMETHOD(GetMaxDistance
) (THIS_ LPD3DVALUE
) ;
324 STDMETHOD(GetMinDistance
) (THIS_ LPD3DVALUE
) ;
325 STDMETHOD(GetMode
) (THIS_ LPDWORD
) ;
326 STDMETHOD(GetPosition
) (THIS_ LPD3DVECTOR
) ;
327 STDMETHOD(GetVelocity
) (THIS_ LPD3DVECTOR
) ;
328 STDMETHOD(SetAllParameters
) (THIS_ LPCDS3DBUFFER
, DWORD
) ;
329 STDMETHOD(SetConeAngles
) (THIS_ DWORD
, DWORD
, DWORD
) ;
330 STDMETHOD(SetConeOrientation
) (THIS_ D3DVALUE
, D3DVALUE
, D3DVALUE
, DWORD
) ;
331 STDMETHOD(SetConeOutsideVolume
) (THIS_ LONG
, DWORD
) ;
332 STDMETHOD(SetMaxDistance
) (THIS_ D3DVALUE
, DWORD
) ;
333 STDMETHOD(SetMinDistance
) (THIS_ D3DVALUE
, DWORD
) ;
334 STDMETHOD(SetMode
) (THIS_ DWORD
, DWORD
) ;
335 STDMETHOD(SetPosition
) (THIS_ D3DVALUE
, D3DVALUE
, D3DVALUE
, DWORD
) ;
336 STDMETHOD(SetVelocity
) (THIS_ D3DVALUE
, D3DVALUE
, D3DVALUE
, DWORD
) ;
338 #define IDirectSound3DBuffer_QueryInterface(p,a,b) IUnknown_QueryInterface(p,a,b)
339 #define IDirectSound3DBuffer_AddRef(p) IUnknown_AddRef(p)
340 #define IDirectSound3DBuffer_Release(p) IUnknown_Release(p)
341 #define IDirectSound3DBuffer_GetAllParameters(p,a) (p)->lpVtbl->GetAllParameters(p,a)
342 #define IDirectSound3DBuffer_GetConeAngles(p,a,b) (p)->lpVtbl->GetConeAngles(p,a,b)
343 #define IDirectSound3DBuffer_GetConeOrientation(p,a) (p)->lpVtbl->GetConeOrientation(p,a)
344 #define IDirectSound3DBuffer_GetConeOutsideVolume(p,a) (p)->lpVtbl->GetConeOutsideVolume(p,a)
345 #define IDirectSound3DBuffer_GetPosition(p,a) (p)->lpVtbl->GetPosition(p,a)
346 #define IDirectSound3DBuffer_GetMinDistance(p,a) (p)->lpVtbl->GetMinDistance(p,a)
347 #define IDirectSound3DBuffer_GetMaxDistance(p,a) (p)->lpVtbl->GetMaxDistance(p,a)
348 #define IDirectSound3DBuffer_GetMode(p,a) (p)->lpVtbl->GetMode(p,a)
349 #define IDirectSound3DBuffer_GetVelocity(p,a) (p)->lpVtbl->GetVelocity(p,a)
350 #define IDirectSound3DBuffer_SetAllParameters(p,a,b) (p)->lpVtbl->SetAllParameters(p,a,b)
351 #define IDirectSound3DBuffer_SetConeAngles(p,a,b,c) (p)->lpVtbl->SetConeAngles(p,a,b,c)
352 #define IDirectSound3DBuffer_SetConeOrientation(p,a,b,c,d) (p)->lpVtbl->SetConeOrientation(p,a,b,c,d)
353 #define IDirectSound3DBuffer_SetConeOutsideVolume(p,a,b) (p)->lpVtbl->SetConeOutsideVolume(p,a,b)
354 #define IDirectSound3DBuffer_SetPosition(p,a,b,c,d) (p)->lpVtbl->SetPosition(p,a,b,c,d)
355 #define IDirectSound3DBuffer_SetMinDistance(p,a,b) (p)->lpVtbl->SetMinDistance(p,a,b)
356 #define IDirectSound3DBuffer_SetMaxDistance(p,a,b) (p)->lpVtbl->SetMaxDistance(p,a,b)
357 #define IDirectSound3DBuffer_SetMode(p,a,b) (p)->lpVtbl->SetMode(p,a,b)
358 #define IDirectSound3DBuffer_SetVelocity(p,a,b,c,d) (p)->lpVtbl->SetVelocity(p,a,b,c,d)
359 DEFINE_GUID(IID_IDirectSoundCapture
, 0xb0210781, 0x89cd, 4560, 175, 8, 0, 160, 201, 37, 205, 22);
361 #define INTERFACE IDirectSoundCapture
362 DECLARE_INTERFACE_(IDirectSoundCapture
, IUnknown
)
364 STDMETHOD(QueryInterface
) (THIS_ REFIID
, LPVOID
*) ;
365 STDMETHOD_(ULONG
,AddRef
) (THIS
) ;
366 STDMETHOD_(ULONG
,Release
) (THIS
) ;
367 STDMETHOD(CreateCaptureBuffer
) (THIS_ LPCDSCBUFFERDESC
, LPDIRECTSOUNDCAPTUREBUFFER
*, LPUNKNOWN
) ;
368 STDMETHOD(GetCaps
) (THIS_ LPDSCCAPS
) ;
369 STDMETHOD(Initialize
) (THIS_ LPCGUID
) ;
371 #define IDirectSoundCapture_QueryInterface(p,a,b) IUnknown_QueryInterface(p,a,b)
372 #define IDirectSoundCapture_AddRef(p) IUnknown_AddRef(p)
373 #define IDirectSoundCapture_Release(p) IUnknown_Release(p)
374 #define IDirectSoundCapture_CreateCaptureBuffer(p,a,b,c) (p)->lpVtbl->CreateCaptureBuffer(p,a,b,c)
375 #define IDirectSoundCapture_GetCaps(p,a) (p)->lpVtbl->GetCaps(p,a)
376 #define IDirectSoundCapture_Initialize(p,a) (p)->lpVtbl->Initialize(p,a)
377 DEFINE_GUID(IID_IDirectSoundCaptureBuffer
, 0xb0210782, 0x89cd, 4560, 175, 8, 0, 160, 201, 37, 205, 22);
379 #define INTERFACE IDirectSoundCaptureBuffer
380 DECLARE_INTERFACE_(IDirectSoundCaptureBuffer
, IUnknown
)
382 STDMETHOD(QueryInterface
) (THIS_ REFIID
, LPVOID
*) ;
383 STDMETHOD_(ULONG
,AddRef
) (THIS
) ;
384 STDMETHOD_(ULONG
,Release
) (THIS
) ;
385 STDMETHOD(GetCaps
) (THIS_ LPDSCBCAPS
) ;
386 STDMETHOD(GetCurrentPosition
) (THIS_ LPDWORD
, LPDWORD
) ;
387 STDMETHOD(GetFormat
) (THIS_ LPWAVEFORMATEX
, DWORD
, LPDWORD
) ;
388 STDMETHOD(GetStatus
) (THIS_ LPDWORD
) ;
389 STDMETHOD(Initialize
) (THIS_ LPDIRECTSOUNDCAPTURE
, LPCDSCBUFFERDESC
) ;
390 STDMETHOD(Lock
) (THIS_ DWORD
, DWORD
, LPVOID
*, LPDWORD
, LPVOID
*, LPDWORD
, DWORD
) ;
391 STDMETHOD(Start
) (THIS_ DWORD
) ;
392 STDMETHOD(Stop
) (THIS
) ;
393 STDMETHOD(Unlock
) (THIS_ LPVOID
, DWORD
, LPVOID
, DWORD
) ;
395 #define IDirectSoundCaptureBuffer_QueryInterface(p,a,b) IUnknown_QueryInterface(p,a,b)
396 #define IDirectSoundCaptureBuffer_AddRef(p) IUnknown_AddRef(p)
397 #define IDirectSoundCaptureBuffer_Release(p) IUnknown_Release(p)
398 #define IDirectSoundCaptureBuffer_GetCaps(p,a) (p)->lpVtbl->GetCaps(p,a)
399 #define IDirectSoundCaptureBuffer_GetCurrentPosition(p,a,b) (p)->lpVtbl->GetCurrentPosition(p,a,b)
400 #define IDirectSoundCaptureBuffer_GetFormat(p,a,b,c) (p)->lpVtbl->GetFormat(p,a,b,c)
401 #define IDirectSoundCaptureBuffer_GetStatus(p,a) (p)->lpVtbl->GetStatus(p,a)
402 #define IDirectSoundCaptureBuffer_Initialize(p,a,b) (p)->lpVtbl->Initialize(p,a,b)
403 #define IDirectSoundCaptureBuffer_Lock(p,a,b,c,d,e,f,g) (p)->lpVtbl->Lock(p,a,b,c,d,e,f,g)
404 #define IDirectSoundCaptureBuffer_Start(p,a) (p)->lpVtbl->Start(p,a)
405 #define IDirectSoundCaptureBuffer_Stop(p) (p)->lpVtbl->Stop(p)
406 #define IDirectSoundCaptureBuffer_Unlock(p,a,b,c,d) (p)->lpVtbl->Unlock(p,a,b,c,d)
407 DEFINE_GUID(IID_IDirectSoundNotify
, 0xb0210783, 0x89cd, 4560, 175, 8, 0, 160, 201, 37, 205, 22);
409 #define INTERFACE IDirectSoundNotify
410 DECLARE_INTERFACE_(IDirectSoundNotify
, IUnknown
)
412 STDMETHOD(QueryInterface
) (THIS_ REFIID
, LPVOID
*) ;
413 STDMETHOD_(ULONG
,AddRef
) (THIS
) ;
414 STDMETHOD_(ULONG
,Release
) (THIS
) ;
415 STDMETHOD(SetNotificationPositions
) (THIS_ DWORD
, LPCDSBPOSITIONNOTIFY
) ;
417 #define IDirectSoundNotify_QueryInterface(p,a,b) IUnknown_QueryInterface(p,a,b)
418 #define IDirectSoundNotify_AddRef(p) IUnknown_AddRef(p)
419 #define IDirectSoundNotify_Release(p) IUnknown_Release(p)
420 #define IDirectSoundNotify_SetNotificationPositions(p,a,b) (p)->lpVtbl->SetNotificationPositions(p,a,b)
421 #ifndef _IKsPropertySet_
422 #define _IKsPropertySet_
423 typedef struct IKsPropertySet
*LPKSPROPERTYSET
;
424 #define KSPROPERTY_SUPPORT_GET 1
425 #define KSPROPERTY_SUPPORT_SET 2
426 DEFINE_GUID(IID_IKsPropertySet
, 0x31efac30, 0x515c, 4560, 169, 170, 0, 170, 0, 97, 190, 147);
428 #define INTERFACE IKsPropertySet
429 DECLARE_INTERFACE_(IKsPropertySet
, IUnknown
)
431 STDMETHOD(QueryInterface
) (THIS_ REFIID
, LPVOID
*) ;
432 STDMETHOD_(ULONG
,AddRef
) (THIS
) ;
433 STDMETHOD_(ULONG
,Release
) (THIS
) ;
434 STDMETHOD(Get
) (THIS_ REFGUID
, ULONG
, LPVOID
, ULONG
, LPVOID
, ULONG
, PULONG
) ;
435 STDMETHOD(Set
) (THIS_ REFGUID
, ULONG
, LPVOID
, ULONG
, LPVOID
, ULONG
) ;
436 STDMETHOD(QuerySupport
) (THIS_ REFGUID
, ULONG
, PULONG
) ;
438 #define IKsPropertySet_QueryInterface(p,a,b) IUnknown_QueryInterface(p,a,b)
439 #define IKsPropertySet_AddRef(p) IUnknown_AddRef(p)
440 #define IKsPropertySet_Release(p) IUnknown_Release(p)
441 #define IKsPropertySet_Get(p,a,b,c,d,e,f,g) (p)->lpVtbl->Get(p,a,b,c,d,e,f,g)
442 #define IKsPropertySet_Set(p,a,b,c,d,e,f) (p)->lpVtbl->Set(p,a,b,c,d,e,f)
443 #define IKsPropertySet_QuerySupport(p,a,b,c) (p)->lpVtbl->QuerySupport(p,a,b,c)
446 #define DS_NO_VIRTUALIZATION MAKE_HRESULT(0, _FACDS, 10)
447 #define DSERR_ALLOCATED MAKE_DSHRESULT(10)
448 #define DSERR_CONTROLUNAVAIL MAKE_DSHRESULT(30)
449 #define DSERR_INVALIDPARAM E_INVALIDARG
450 #define DSERR_INVALIDCALL MAKE_DSHRESULT(50)
451 #define DSERR_GENERIC E_FAIL
452 #define DSERR_PRIOLEVELNEEDED MAKE_DSHRESULT(70)
453 #define DSERR_OUTOFMEMORY E_OUTOFMEMORY
454 #define DSERR_BADFORMAT MAKE_DSHRESULT(100)
455 #define DSERR_UNSUPPORTED E_NOTIMPL
456 #define DSERR_NODRIVER MAKE_DSHRESULT(120)
457 #define DSERR_ALREADYINITIALIZED MAKE_DSHRESULT(130)
458 #define DSERR_NOAGGREGATION CLASS_E_NOAGGREGATION
459 #define DSERR_BUFFERLOST MAKE_DSHRESULT(150)
460 #define DSERR_OTHERAPPHASPRIO MAKE_DSHRESULT(160)
461 #define DSERR_UNINITIALIZED MAKE_DSHRESULT(170)
462 #define DSERR_NOINTERFACE E_NOINTERFACE
463 #define DSERR_ACCESSDENIED E_ACCESSDENIED
464 #define DSCAPS_PRIMARYMONO 1
465 #define DSCAPS_PRIMARYSTEREO 2
466 #define DSCAPS_PRIMARY8BIT 4
467 #define DSCAPS_PRIMARY16BIT 8
468 #define DSCAPS_CONTINUOUSRATE 16
469 #define DSCAPS_EMULDRIVER 32
470 #define DSCAPS_CERTIFIED 64
471 #define DSCAPS_SECONDARYMONO 256
472 #define DSCAPS_SECONDARYSTEREO 512
473 #define DSCAPS_SECONDARY8BIT 1024
474 #define DSCAPS_SECONDARY16BIT 2048
475 #define DSSCL_NORMAL 1
476 #define DSSCL_PRIORITY 2
477 #define DSSCL_EXCLUSIVE 3
478 #define DSSCL_WRITEPRIMARY 4
479 #define DSSPEAKER_HEADPHONE 1
480 #define DSSPEAKER_MONO 2
481 #define DSSPEAKER_QUAD 3
482 #define DSSPEAKER_STEREO 4
483 #define DSSPEAKER_SURROUND 5
484 #define DSSPEAKER_5POINT1 6
485 #define DSSPEAKER_GEOMETRY_MIN 5
486 #define DSSPEAKER_GEOMETRY_NARROW 10
487 #define DSSPEAKER_GEOMETRY_WIDE 20
488 #define DSSPEAKER_GEOMETRY_MAX 180
489 #define DSSPEAKER_COMBINED(c, g) ((DWORD)(((BYTE)(c)) | ((DWORD)((BYTE)(g))) << 16))
490 #define DSSPEAKER_CONFIG(a) ((BYTE)(a))
491 #define DSSPEAKER_GEOMETRY(a) ((BYTE)(((DWORD)(a) >> 16) & 255))
492 #define DSBCAPS_PRIMARYBUFFER 1
493 #define DSBCAPS_STATIC 2
494 #define DSBCAPS_LOCHARDWARE 4
495 #define DSBCAPS_LOCSOFTWARE 8
496 #define DSBCAPS_CTRL3D 16
497 #define DSBCAPS_CTRLFREQUENCY 32
498 #define DSBCAPS_CTRLPAN 64
499 #define DSBCAPS_CTRLVOLUME 128
500 #define DSBCAPS_CTRLPOSITIONNOTIFY 256
501 #define DSBCAPS_CTRLDEFAULT 0x0E0
502 #define DSBCAPS_CTRLALL 0x01F0
503 #define DSBCAPS_STICKYFOCUS 0x4000
504 #define DSBCAPS_GLOBALFOCUS 0x8000
505 #define DSBCAPS_GETCURRENTPOSITION2 0x10000
506 #define DSBCAPS_MUTE3DATMAXDISTANCE 0x20000
507 #define DSBCAPS_LOCDEFER 0x40000
508 #define DSBPLAY_LOOPING 1
509 #define DSBPLAY_LOCHARDWARE 2
510 #define DSBPLAY_LOCSOFTWARE 4
511 #define DSBPLAY_TERMINATEBY_TIME 8
512 #define DSBPLAY_TERMINATEBY_DISTANCE 16
513 #define DSBPLAY_TERMINATEBY_PRIORITY 32
514 #define DSBSTATUS_PLAYING 1
515 #define DSBSTATUS_BUFFERLOST 2
516 #define DSBSTATUS_LOOPING 4
517 #define DSBSTATUS_LOCHARDWARE 8
518 #define DSBSTATUS_LOCSOFTWARE 16
519 #define DSBSTATUS_TERMINATED 32
520 #define DSBLOCK_FROMWRITECURSOR 1
521 #define DSBLOCK_ENTIREBUFFER 2
522 #define DSBFREQUENCY_MIN 100
523 #define DSBFREQUENCY_MAX 100000
524 #define DSBFREQUENCY_ORIGINAL 0
525 #define DSBPAN_LEFT -10000
526 #define DSBPAN_CENTER 0
527 #define DSBPAN_RIGHT 10000
528 #define DSBVOLUME_MIN -10000
529 #define DSBVOLUME_MAX 0
530 #define DSBSIZE_MIN 4
531 #define DSBSIZE_MAX 0xfffffff
532 #define DS3DMODE_NORMAL 0
533 #define DS3DMODE_HEADRELATIVE 1
534 #define DS3DMODE_DISABLE 2
535 #define DS3D_IMMEDIATE 0
536 #define DS3D_DEFERRED 1
537 #define DS3D_MINDISTANCEFACTOR FLT_MIN
538 #define DS3D_MAXDISTANCEFACTOR FLT_MAX
539 #define DS3D_DEFAULTDISTANCEFACTOR 1.0f
540 #define DS3D_MINROLLOFFFACTOR 0.0f
541 #define DS3D_MAXROLLOFFFACTOR 10.0f
542 #define DS3D_DEFAULTROLLOFFFACTOR 1.0f
543 #define DS3D_MINDOPPLERFACTOR 0.0f
544 #define DS3D_MAXDOPPLERFACTOR 10.0f
545 #define DS3D_DEFAULTDOPPLERFACTOR 1.0f
546 #define DS3D_DEFAULTMINDISTANCE 1.0f
547 #define DS3D_DEFAULTMAXDISTANCE 1000000000.0f
548 #define DS3D_MINCONEANGLE 0
549 #define DS3D_MAXCONEANGLE 360
550 #define DS3D_DEFAULTCONEANGLE 360
551 #define DS3D_DEFAULTCONEOUTSIDEVOLUME DSBVOLUME_MAX
552 #define DSCCAPS_EMULDRIVER DSCAPS_EMULDRIVER
553 #define DSCCAPS_CERTIFIED DSCAPS_CERTIFIED
554 #define DSCBCAPS_WAVEMAPPED 0x80000000
555 #define DSCBLOCK_ENTIREBUFFER 1
556 #define DSCBSTATUS_CAPTURING 1
557 #define DSCBSTATUS_LOOPING 2
558 #define DSCBSTART_LOOPING 1
559 #define DSBPN_OFFSETSTOP 0xffffffff
560 #define DS3DALG_DEFAULT GUID_NULL
561 DEFINE_GUID(DS3DALG_NO_VIRTUALIZATION
, 0xc241333f, 7195, 4562, 148, 245, 0, 192, 79, 194, 138, 202);
562 DEFINE_GUID(DS3DALG_HRTF_FULL
, 0xc2413340, 7195, 4562, 148, 245, 0, 192, 79, 194, 138, 202);
563 DEFINE_GUID(DS3DALG_HRTF_LIGHT
, 0xc2413342, 7195, 4562, 148, 245, 0, 192, 79, 194, 138, 202);