Marsyas
0.6.0-alpha
|
00001 /*==========================================================================; 00002 * 00003 * Copyright (C) 1995-2000 Microsoft Corporation. All Rights Reserved. 00004 * 00005 * File: dsound.h 00006 * Content: DirectSound include file 00007 * 00008 **************************************************************************/ 00009 00010 #define COM_NO_WINDOWS_H 00011 #include <objbase.h> 00012 #include <float.h> 00013 00014 #ifndef DIRECTSOUND_VERSION 00015 #define DIRECTSOUND_VERSION 0x0800 /* Version 8.0 */ 00016 #endif 00017 00018 #ifdef __cplusplus 00019 extern "C" { 00020 #endif // __cplusplus 00021 00022 #ifndef __DSOUND_INCLUDED__ 00023 #define __DSOUND_INCLUDED__ 00024 00025 /* Type definitions shared with Direct3D */ 00026 00027 #ifndef DX_SHARED_DEFINES 00028 00029 typedef float D3DVALUE, *LPD3DVALUE; 00030 00031 #ifndef D3DCOLOR_DEFINED 00032 typedef DWORD D3DCOLOR; 00033 #define D3DCOLOR_DEFINED 00034 #endif 00035 00036 #ifndef LPD3DCOLOR_DEFINED 00037 typedef DWORD *LPD3DCOLOR; 00038 #define LPD3DCOLOR_DEFINED 00039 #endif 00040 00041 #ifndef D3DVECTOR_DEFINED 00042 typedef struct _D3DVECTOR { 00043 float x; 00044 float y; 00045 float z; 00046 } D3DVECTOR; 00047 #define D3DVECTOR_DEFINED 00048 #endif 00049 00050 #ifndef LPD3DVECTOR_DEFINED 00051 typedef D3DVECTOR *LPD3DVECTOR; 00052 #define LPD3DVECTOR_DEFINED 00053 #endif 00054 00055 #define DX_SHARED_DEFINES 00056 #endif // DX_SHARED_DEFINES 00057 00058 #define _FACDS 0x878 /* DirectSound's facility code */ 00059 #define MAKE_DSHRESULT(code) MAKE_HRESULT(1, _FACDS, code) 00060 00061 // DirectSound Component GUID {47D4D946-62E8-11CF-93BC-444553540000} 00062 DEFINE_GUID(CLSID_DirectSound, 0x47d4d946, 0x62e8, 0x11cf, 0x93, 0xbc, 0x44, 0x45, 0x53, 0x54, 0x0, 0x0); 00063 00064 // DirectSound 8.0 Component GUID {3901CC3F-84B5-4FA4-BA35-AA8172B8A09B} 00065 DEFINE_GUID(CLSID_DirectSound8, 0x3901cc3f, 0x84b5, 0x4fa4, 0xba, 0x35, 0xaa, 0x81, 0x72, 0xb8, 0xa0, 0x9b); 00066 00067 // DirectSound Capture Component GUID {B0210780-89CD-11D0-AF08-00A0C925CD16} 00068 DEFINE_GUID(CLSID_DirectSoundCapture, 0xb0210780, 0x89cd, 0x11d0, 0xaf, 0x8, 0x0, 0xa0, 0xc9, 0x25, 0xcd, 0x16); 00069 00070 // DirectSound 8.0 Capture Component GUID {E4BCAC13-7F99-4908-9A8E-74E3BF24B6E1} 00071 DEFINE_GUID(CLSID_DirectSoundCapture8, 0xe4bcac13, 0x7f99, 0x4908, 0x9a, 0x8e, 0x74, 0xe3, 0xbf, 0x24, 0xb6, 0xe1); 00072 00073 // DirectSound Full Duplex Component GUID {FEA4300C-7959-4147-B26A-2377B9E7A91D} 00074 DEFINE_GUID(CLSID_DirectSoundFullDuplex, 0xfea4300c, 0x7959, 0x4147, 0xb2, 0x6a, 0x23, 0x77, 0xb9, 0xe7, 0xa9, 0x1d); 00075 00076 00077 // DirectSound default playback device GUID {DEF00000-9C6D-47ED-AAF1-4DDA8F2B5C03} 00078 DEFINE_GUID(DSDEVID_DefaultPlayback, 0xdef00000, 0x9c6d, 0x47ed, 0xaa, 0xf1, 0x4d, 0xda, 0x8f, 0x2b, 0x5c, 0x03); 00079 00080 // DirectSound default capture device GUID {DEF00001-9C6D-47ED-AAF1-4DDA8F2B5C03} 00081 DEFINE_GUID(DSDEVID_DefaultCapture, 0xdef00001, 0x9c6d, 0x47ed, 0xaa, 0xf1, 0x4d, 0xda, 0x8f, 0x2b, 0x5c, 0x03); 00082 00083 // DirectSound default device for voice playback {DEF00002-9C6D-47ED-AAF1-4DDA8F2B5C03} 00084 DEFINE_GUID(DSDEVID_DefaultVoicePlayback, 0xdef00002, 0x9c6d, 0x47ed, 0xaa, 0xf1, 0x4d, 0xda, 0x8f, 0x2b, 0x5c, 0x03); 00085 00086 // DirectSound default device for voice capture {DEF00003-9C6D-47ED-AAF1-4DDA8F2B5C03} 00087 DEFINE_GUID(DSDEVID_DefaultVoiceCapture, 0xdef00003, 0x9c6d, 0x47ed, 0xaa, 0xf1, 0x4d, 0xda, 0x8f, 0x2b, 0x5c, 0x03); 00088 00089 00090 // 00091 // Forward declarations for interfaces. 00092 // 'struct' not 'class' per the way DECLARE_INTERFACE_ is defined 00093 // 00094 00095 #ifdef __cplusplus 00096 struct IDirectSound; 00097 struct IDirectSoundBuffer; 00098 struct IDirectSound3DListener; 00099 struct IDirectSound3DBuffer; 00100 struct IDirectSoundCapture; 00101 struct IDirectSoundCaptureBuffer; 00102 struct IDirectSoundNotify; 00103 #endif // __cplusplus 00104 00105 00106 // 00107 // DirectSound 8.0 interfaces. 00108 // 00109 00110 #if DIRECTSOUND_VERSION >= 0x0800 00111 00112 #ifdef __cplusplus 00113 struct IDirectSound8; 00114 struct IDirectSoundBuffer8; 00115 struct IDirectSoundCaptureBuffer8; 00116 struct IDirectSoundFXGargle; 00117 struct IDirectSoundFXChorus; 00118 struct IDirectSoundFXFlanger; 00119 struct IDirectSoundFXEcho; 00120 struct IDirectSoundFXDistortion; 00121 struct IDirectSoundFXCompressor; 00122 struct IDirectSoundFXParamEq; 00123 struct IDirectSoundFXWavesReverb; 00124 struct IDirectSoundFXI3DL2Reverb; 00125 struct IDirectSoundCaptureFXAec; 00126 struct IDirectSoundCaptureFXNoiseSuppress; 00127 struct IDirectSoundFullDuplex; 00128 #endif // __cplusplus 00129 00130 // IDirectSound8, IDirectSoundBuffer8 and IDirectSoundCaptureBuffer8 are the 00131 // only DirectSound 7.0 interfaces with changed functionality in version 8.0. 00132 // The other level 8 interfaces as equivalent to their level 7 counterparts: 00133 00134 #define IDirectSoundCapture8 IDirectSoundCapture 00135 #define IDirectSound3DListener8 IDirectSound3DListener 00136 #define IDirectSound3DBuffer8 IDirectSound3DBuffer 00137 #define IDirectSoundNotify8 IDirectSoundNotify 00138 #define IDirectSoundFXGargle8 IDirectSoundFXGargle 00139 #define IDirectSoundFXChorus8 IDirectSoundFXChorus 00140 #define IDirectSoundFXFlanger8 IDirectSoundFXFlanger 00141 #define IDirectSoundFXEcho8 IDirectSoundFXEcho 00142 #define IDirectSoundFXDistortion8 IDirectSoundFXDistortion 00143 #define IDirectSoundFXCompressor8 IDirectSoundFXCompressor 00144 #define IDirectSoundFXParamEq8 IDirectSoundFXParamEq 00145 #define IDirectSoundFXWavesReverb8 IDirectSoundFXWavesReverb 00146 #define IDirectSoundFXI3DL2Reverb8 IDirectSoundFXI3DL2Reverb 00147 #define IDirectSoundCaptureFXAec8 IDirectSoundCaptureFXAec 00148 #define IDirectSoundCaptureFXNoiseSuppress8 IDirectSoundCaptureFXNoiseSuppress 00149 #define IDirectSoundFullDuplex8 IDirectSoundFullDuplex 00150 00151 #endif // DIRECTSOUND_VERSION >= 0x0800 00152 00153 00154 typedef struct IDirectSound *LPDIRECTSOUND; 00155 typedef struct IDirectSoundBuffer *LPDIRECTSOUNDBUFFER; 00156 typedef struct IDirectSound3DListener *LPDIRECTSOUND3DLISTENER; 00157 typedef struct IDirectSound3DBuffer *LPDIRECTSOUND3DBUFFER; 00158 typedef struct IDirectSoundCapture *LPDIRECTSOUNDCAPTURE; 00159 typedef struct IDirectSoundCaptureBuffer *LPDIRECTSOUNDCAPTUREBUFFER; 00160 typedef struct IDirectSoundNotify *LPDIRECTSOUNDNOTIFY; 00161 00162 00163 #if DIRECTSOUND_VERSION >= 0x0800 00164 typedef struct IDirectSoundFXGargle *LPDIRECTSOUNDFXGARGLE; 00165 typedef struct IDirectSoundFXChorus *LPDIRECTSOUNDFXCHORUS; 00166 typedef struct IDirectSoundFXFlanger *LPDIRECTSOUNDFXFLANGER; 00167 typedef struct IDirectSoundFXEcho *LPDIRECTSOUNDFXECHO; 00168 typedef struct IDirectSoundFXDistortion *LPDIRECTSOUNDFXDISTORTION; 00169 typedef struct IDirectSoundFXCompressor *LPDIRECTSOUNDFXCOMPRESSOR; 00170 typedef struct IDirectSoundFXParamEq *LPDIRECTSOUNDFXPARAMEQ; 00171 typedef struct IDirectSoundFXWavesReverb *LPDIRECTSOUNDFXWAVESREVERB; 00172 typedef struct IDirectSoundFXI3DL2Reverb *LPDIRECTSOUNDFXI3DL2REVERB; 00173 typedef struct IDirectSoundCaptureFXAec *LPDIRECTSOUNDCAPTUREFXAEC; 00174 typedef struct IDirectSoundCaptureFXNoiseSuppress *LPDIRECTSOUNDCAPTUREFXNOISESUPPRESS; 00175 typedef struct IDirectSoundFullDuplex *LPDIRECTSOUNDFULLDUPLEX; 00176 00177 typedef struct IDirectSound8 *LPDIRECTSOUND8; 00178 typedef struct IDirectSoundBuffer8 *LPDIRECTSOUNDBUFFER8; 00179 typedef struct IDirectSound3DListener8 *LPDIRECTSOUND3DLISTENER8; 00180 typedef struct IDirectSound3DBuffer8 *LPDIRECTSOUND3DBUFFER8; 00181 typedef struct IDirectSoundCapture8 *LPDIRECTSOUNDCAPTURE8; 00182 typedef struct IDirectSoundCaptureBuffer8 *LPDIRECTSOUNDCAPTUREBUFFER8; 00183 typedef struct IDirectSoundNotify8 *LPDIRECTSOUNDNOTIFY8; 00184 typedef struct IDirectSoundFXGargle8 *LPDIRECTSOUNDFXGARGLE8; 00185 typedef struct IDirectSoundFXChorus8 *LPDIRECTSOUNDFXCHORUS8; 00186 typedef struct IDirectSoundFXFlanger8 *LPDIRECTSOUNDFXFLANGER8; 00187 typedef struct IDirectSoundFXEcho8 *LPDIRECTSOUNDFXECHO8; 00188 typedef struct IDirectSoundFXDistortion8 *LPDIRECTSOUNDFXDISTORTION8; 00189 typedef struct IDirectSoundFXCompressor8 *LPDIRECTSOUNDFXCOMPRESSOR8; 00190 typedef struct IDirectSoundFXParamEq8 *LPDIRECTSOUNDFXPARAMEQ8; 00191 typedef struct IDirectSoundFXWavesReverb8 *LPDIRECTSOUNDFXWAVESREVERB8; 00192 typedef struct IDirectSoundFXI3DL2Reverb8 *LPDIRECTSOUNDFXI3DL2REVERB8; 00193 typedef struct IDirectSoundCaptureFXAec8 *LPDIRECTSOUNDCAPTUREFXAEC8; 00194 typedef struct IDirectSoundCaptureFXNoiseSuppress8 *LPDIRECTSOUNDCAPTUREFXNOISESUPPRESS8; 00195 typedef struct IDirectSoundFullDuplex8 *LPDIRECTSOUNDFULLDUPLEX8; 00196 00197 #endif // DIRECTSOUND_VERSION >= 0x0800 00198 00199 // 00200 // IID definitions for the unchanged DirectSound 8.0 interfaces 00201 // 00202 00203 #if DIRECTSOUND_VERSION >= 0x0800 00204 #define IID_IDirectSoundCapture8 IID_IDirectSoundCapture 00205 #define IID_IDirectSound3DListener8 IID_IDirectSound3DListener 00206 #define IID_IDirectSound3DBuffer8 IID_IDirectSound3DBuffer 00207 #define IID_IDirectSoundNotify8 IID_IDirectSoundNotify 00208 #define IID_IDirectSoundFXGargle8 IID_IDirectSoundFXGargle 00209 #define IID_IDirectSoundFXChorus8 IID_IDirectSoundFXChorus 00210 #define IID_IDirectSoundFXFlanger8 IID_IDirectSoundFXFlanger 00211 #define IID_IDirectSoundFXEcho8 IID_IDirectSoundFXEcho 00212 #define IID_IDirectSoundFXDistortion8 IID_IDirectSoundFXDistortion 00213 #define IID_IDirectSoundFXCompressor8 IID_IDirectSoundFXCompressor 00214 #define IID_IDirectSoundFXParamEq8 IID_IDirectSoundFXParamEq 00215 #define IID_IDirectSoundFXWavesReverb8 IID_IDirectSoundFXWavesReverb 00216 #define IID_IDirectSoundFXI3DL2Reverb8 IID_IDirectSoundFXI3DL2Reverb 00217 #define IID_IDirectSoundCaptureFXAec8 IID_IDirectSoundCaptureFXAec 00218 #define IID_IDirectSoundCaptureFXNoiseSuppress8 IID_IDirectSoundCaptureFXNoiseSuppress 00219 #define IID_IDirectSoundFullDuplex8 IID_IDirectSoundFullDuplex 00220 #endif // DIRECTSOUND_VERSION >= 0x0800 00221 00222 // 00223 // Compatibility typedefs 00224 // 00225 00226 #ifndef _LPCWAVEFORMATEX_DEFINED 00227 #define _LPCWAVEFORMATEX_DEFINED 00228 typedef const WAVEFORMATEX *LPCWAVEFORMATEX; 00229 #endif // _LPCWAVEFORMATEX_DEFINED 00230 00231 #ifndef __LPCGUID_DEFINED__ 00232 #define __LPCGUID_DEFINED__ 00233 typedef const GUID *LPCGUID; 00234 #endif // __LPCGUID_DEFINED__ 00235 00236 typedef LPDIRECTSOUND *LPLPDIRECTSOUND; 00237 typedef LPDIRECTSOUNDBUFFER *LPLPDIRECTSOUNDBUFFER; 00238 typedef LPDIRECTSOUND3DLISTENER *LPLPDIRECTSOUND3DLISTENER; 00239 typedef LPDIRECTSOUND3DBUFFER *LPLPDIRECTSOUND3DBUFFER; 00240 typedef LPDIRECTSOUNDCAPTURE *LPLPDIRECTSOUNDCAPTURE; 00241 typedef LPDIRECTSOUNDCAPTUREBUFFER *LPLPDIRECTSOUNDCAPTUREBUFFER; 00242 typedef LPDIRECTSOUNDNOTIFY *LPLPDIRECTSOUNDNOTIFY; 00243 00244 #if DIRECTSOUND_VERSION >= 0x0800 00245 typedef LPDIRECTSOUND8 *LPLPDIRECTSOUND8; 00246 typedef LPDIRECTSOUNDBUFFER8 *LPLPDIRECTSOUNDBUFFER8; 00247 typedef LPDIRECTSOUNDCAPTURE8 *LPLPDIRECTSOUNDCAPTURE8; 00248 typedef LPDIRECTSOUNDCAPTUREBUFFER8 *LPLPDIRECTSOUNDCAPTUREBUFFER8; 00249 #endif // DIRECTSOUND_VERSION >= 0x0800 00250 00251 // 00252 // Structures 00253 // 00254 00255 typedef struct _DSCAPS 00256 { 00257 DWORD dwSize; 00258 DWORD dwFlags; 00259 DWORD dwMinSecondarySampleRate; 00260 DWORD dwMaxSecondarySampleRate; 00261 DWORD dwPrimaryBuffers; 00262 DWORD dwMaxHwMixingAllBuffers; 00263 DWORD dwMaxHwMixingStaticBuffers; 00264 DWORD dwMaxHwMixingStreamingBuffers; 00265 DWORD dwFreeHwMixingAllBuffers; 00266 DWORD dwFreeHwMixingStaticBuffers; 00267 DWORD dwFreeHwMixingStreamingBuffers; 00268 DWORD dwMaxHw3DAllBuffers; 00269 DWORD dwMaxHw3DStaticBuffers; 00270 DWORD dwMaxHw3DStreamingBuffers; 00271 DWORD dwFreeHw3DAllBuffers; 00272 DWORD dwFreeHw3DStaticBuffers; 00273 DWORD dwFreeHw3DStreamingBuffers; 00274 DWORD dwTotalHwMemBytes; 00275 DWORD dwFreeHwMemBytes; 00276 DWORD dwMaxContigFreeHwMemBytes; 00277 DWORD dwUnlockTransferRateHwBuffers; 00278 DWORD dwPlayCpuOverheadSwBuffers; 00279 DWORD dwReserved1; 00280 DWORD dwReserved2; 00281 } DSCAPS, *LPDSCAPS; 00282 00283 typedef const DSCAPS *LPCDSCAPS; 00284 00285 typedef struct _DSBCAPS 00286 { 00287 DWORD dwSize; 00288 DWORD dwFlags; 00289 DWORD dwBufferBytes; 00290 DWORD dwUnlockTransferRate; 00291 DWORD dwPlayCpuOverhead; 00292 } DSBCAPS, *LPDSBCAPS; 00293 00294 typedef const DSBCAPS *LPCDSBCAPS; 00295 00296 #if DIRECTSOUND_VERSION >= 0x0800 00297 00298 typedef struct _DSEFFECTDESC 00299 { 00300 DWORD dwSize; 00301 DWORD dwFlags; 00302 GUID guidDSFXClass; 00303 DWORD dwReserved1; 00304 DWORD dwReserved2; 00305 } DSEFFECTDESC, *LPDSEFFECTDESC; 00306 typedef const DSEFFECTDESC *LPCDSEFFECTDESC; 00307 00308 #define DSFX_LOCHARDWARE 0x00000001 00309 #define DSFX_LOCSOFTWARE 0x00000002 00310 00311 enum 00312 { 00313 DSFXR_PRESENT, // 0 00314 DSFXR_LOCHARDWARE, // 1 00315 DSFXR_LOCSOFTWARE, // 2 00316 DSFXR_UNALLOCATED, // 3 00317 DSFXR_FAILED, // 4 00318 DSFXR_UNKNOWN, // 5 00319 DSFXR_SENDLOOP // 6 00320 }; 00321 00322 typedef struct _DSCEFFECTDESC 00323 { 00324 DWORD dwSize; 00325 DWORD dwFlags; 00326 GUID guidDSCFXClass; 00327 GUID guidDSCFXInstance; 00328 DWORD dwReserved1; 00329 DWORD dwReserved2; 00330 } DSCEFFECTDESC, *LPDSCEFFECTDESC; 00331 typedef const DSCEFFECTDESC *LPCDSCEFFECTDESC; 00332 00333 #define DSCFX_LOCHARDWARE 0x00000001 00334 #define DSCFX_LOCSOFTWARE 0x00000002 00335 00336 #define DSCFXR_LOCHARDWARE 0x00000010 00337 #define DSCFXR_LOCSOFTWARE 0x00000020 00338 #define DSCFXR_UNALLOCATED 0x00000040 00339 #define DSCFXR_FAILED 0x00000080 00340 #define DSCFXR_UNKNOWN 0x00000100 00341 00342 #endif // DIRECTSOUND_VERSION >= 0x0800 00343 00344 typedef struct _DSBUFFERDESC 00345 { 00346 DWORD dwSize; 00347 DWORD dwFlags; 00348 DWORD dwBufferBytes; 00349 DWORD dwReserved; 00350 LPWAVEFORMATEX lpwfxFormat; 00351 #if DIRECTSOUND_VERSION >= 0x0700 00352 GUID guid3DAlgorithm; 00353 #endif 00354 } DSBUFFERDESC, *LPDSBUFFERDESC; 00355 00356 typedef const DSBUFFERDESC *LPCDSBUFFERDESC; 00357 00358 // Older version of this structure: 00359 00360 typedef struct _DSBUFFERDESC1 00361 { 00362 DWORD dwSize; 00363 DWORD dwFlags; 00364 DWORD dwBufferBytes; 00365 DWORD dwReserved; 00366 LPWAVEFORMATEX lpwfxFormat; 00367 } DSBUFFERDESC1, *LPDSBUFFERDESC1; 00368 00369 typedef const DSBUFFERDESC1 *LPCDSBUFFERDESC1; 00370 00371 typedef struct _DS3DBUFFER 00372 { 00373 DWORD dwSize; 00374 D3DVECTOR vPosition; 00375 D3DVECTOR vVelocity; 00376 DWORD dwInsideConeAngle; 00377 DWORD dwOutsideConeAngle; 00378 D3DVECTOR vConeOrientation; 00379 LONG lConeOutsideVolume; 00380 D3DVALUE flMinDistance; 00381 D3DVALUE flMaxDistance; 00382 DWORD dwMode; 00383 } DS3DBUFFER, *LPDS3DBUFFER; 00384 00385 typedef const DS3DBUFFER *LPCDS3DBUFFER; 00386 00387 typedef struct _DS3DLISTENER 00388 { 00389 DWORD dwSize; 00390 D3DVECTOR vPosition; 00391 D3DVECTOR vVelocity; 00392 D3DVECTOR vOrientFront; 00393 D3DVECTOR vOrientTop; 00394 D3DVALUE flDistanceFactor; 00395 D3DVALUE flRolloffFactor; 00396 D3DVALUE flDopplerFactor; 00397 } DS3DLISTENER, *LPDS3DLISTENER; 00398 00399 typedef const DS3DLISTENER *LPCDS3DLISTENER; 00400 00401 typedef struct _DSCCAPS 00402 { 00403 DWORD dwSize; 00404 DWORD dwFlags; 00405 DWORD dwFormats; 00406 DWORD dwChannels; 00407 } DSCCAPS, *LPDSCCAPS; 00408 00409 typedef const DSCCAPS *LPCDSCCAPS; 00410 00411 typedef struct _DSCBUFFERDESC1 00412 { 00413 DWORD dwSize; 00414 DWORD dwFlags; 00415 DWORD dwBufferBytes; 00416 DWORD dwReserved; 00417 LPWAVEFORMATEX lpwfxFormat; 00418 } DSCBUFFERDESC1, *LPDSCBUFFERDESC1; 00419 00420 typedef struct _DSCBUFFERDESC 00421 { 00422 DWORD dwSize; 00423 DWORD dwFlags; 00424 DWORD dwBufferBytes; 00425 DWORD dwReserved; 00426 LPWAVEFORMATEX lpwfxFormat; 00427 #if DIRECTSOUND_VERSION >= 0x0800 00428 DWORD dwFXCount; 00429 LPDSCEFFECTDESC lpDSCFXDesc; 00430 #endif 00431 } DSCBUFFERDESC, *LPDSCBUFFERDESC; 00432 00433 typedef const DSCBUFFERDESC *LPCDSCBUFFERDESC; 00434 00435 typedef struct _DSCBCAPS 00436 { 00437 DWORD dwSize; 00438 DWORD dwFlags; 00439 DWORD dwBufferBytes; 00440 DWORD dwReserved; 00441 } DSCBCAPS, *LPDSCBCAPS; 00442 00443 typedef const DSCBCAPS *LPCDSCBCAPS; 00444 00445 typedef struct _DSBPOSITIONNOTIFY 00446 { 00447 DWORD dwOffset; 00448 HANDLE hEventNotify; 00449 } DSBPOSITIONNOTIFY, *LPDSBPOSITIONNOTIFY; 00450 00451 typedef const DSBPOSITIONNOTIFY *LPCDSBPOSITIONNOTIFY; 00452 00453 // 00454 // DirectSound API 00455 // 00456 00457 typedef BOOL (CALLBACK *LPDSENUMCALLBACKA)(LPGUID, LPCSTR, LPCSTR, LPVOID); 00458 typedef BOOL (CALLBACK *LPDSENUMCALLBACKW)(LPGUID, LPCWSTR, LPCWSTR, LPVOID); 00459 00460 extern HRESULT WINAPI DirectSoundCreate(LPCGUID pcGuidDevice, LPDIRECTSOUND *ppDS, LPUNKNOWN pUnkOuter); 00461 extern HRESULT WINAPI DirectSoundEnumerateA(LPDSENUMCALLBACKA pDSEnumCallback, LPVOID pContext); 00462 extern HRESULT WINAPI DirectSoundEnumerateW(LPDSENUMCALLBACKW pDSEnumCallback, LPVOID pContext); 00463 00464 extern HRESULT WINAPI DirectSoundCaptureCreate(LPCGUID pcGuidDevice, LPDIRECTSOUNDCAPTURE *ppDSC, LPUNKNOWN pUnkOuter); 00465 extern HRESULT WINAPI DirectSoundCaptureEnumerateA(LPDSENUMCALLBACKA pDSEnumCallback, LPVOID pContext); 00466 extern HRESULT WINAPI DirectSoundCaptureEnumerateW(LPDSENUMCALLBACKW pDSEnumCallback, LPVOID pContext); 00467 00468 #if DIRECTSOUND_VERSION >= 0x0800 00469 extern HRESULT WINAPI DirectSoundCreate8(LPCGUID pcGuidDevice, LPDIRECTSOUND8 *ppDS8, LPUNKNOWN pUnkOuter); 00470 extern HRESULT WINAPI DirectSoundCaptureCreate8(LPCGUID pcGuidDevice, LPDIRECTSOUNDCAPTURE8 *ppDSC8, LPUNKNOWN pUnkOuter); 00471 extern HRESULT WINAPI DirectSoundFullDuplexCreate(LPCGUID pcGuidCaptureDevice, LPCGUID pcGuidRenderDevice, 00472 LPCDSCBUFFERDESC pcDSCBufferDesc, LPCDSBUFFERDESC pcDSBufferDesc, HWND hWnd, 00473 DWORD dwLevel, LPDIRECTSOUNDFULLDUPLEX* ppDSFD, LPDIRECTSOUNDCAPTUREBUFFER8 *ppDSCBuffer8, 00474 LPDIRECTSOUNDBUFFER8 *ppDSBuffer8, LPUNKNOWN pUnkOuter); 00475 #define DirectSoundFullDuplexCreate8 DirectSoundFullDuplexCreate 00476 00477 extern HRESULT WINAPI GetDeviceID(LPCGUID pGuidSrc, LPGUID pGuidDest); 00478 #endif // DIRECTSOUND_VERSION >= 0x0800 00479 00480 #ifdef UNICODE 00481 #define LPDSENUMCALLBACK LPDSENUMCALLBACKW 00482 #define DirectSoundEnumerate DirectSoundEnumerateW 00483 #define DirectSoundCaptureEnumerate DirectSoundCaptureEnumerateW 00484 #else // UNICODE 00485 #define LPDSENUMCALLBACK LPDSENUMCALLBACKA 00486 #define DirectSoundEnumerate DirectSoundEnumerateA 00487 #define DirectSoundCaptureEnumerate DirectSoundCaptureEnumerateA 00488 #endif // UNICODE 00489 00490 // 00491 // IUnknown 00492 // 00493 00494 #if !defined(__cplusplus) || defined(CINTERFACE) 00495 #ifndef IUnknown_QueryInterface 00496 #define IUnknown_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) 00497 #endif // IUnknown_QueryInterface 00498 #ifndef IUnknown_AddRef 00499 #define IUnknown_AddRef(p) (p)->lpVtbl->AddRef(p) 00500 #endif // IUnknown_AddRef 00501 #ifndef IUnknown_Release 00502 #define IUnknown_Release(p) (p)->lpVtbl->Release(p) 00503 #endif // IUnknown_Release 00504 #else // !defined(__cplusplus) || defined(CINTERFACE) 00505 #ifndef IUnknown_QueryInterface 00506 #define IUnknown_QueryInterface(p,a,b) (p)->QueryInterface(a,b) 00507 #endif // IUnknown_QueryInterface 00508 #ifndef IUnknown_AddRef 00509 #define IUnknown_AddRef(p) (p)->AddRef() 00510 #endif // IUnknown_AddRef 00511 #ifndef IUnknown_Release 00512 #define IUnknown_Release(p) (p)->Release() 00513 #endif // IUnknown_Release 00514 #endif // !defined(__cplusplus) || defined(CINTERFACE) 00515 00516 #ifndef __IReferenceClock_INTERFACE_DEFINED__ 00517 #define __IReferenceClock_INTERFACE_DEFINED__ 00518 00519 typedef LONGLONG REFERENCE_TIME; 00520 typedef REFERENCE_TIME *LPREFERENCE_TIME; 00521 00522 DEFINE_GUID(IID_IReferenceClock, 0x56a86897, 0x0ad4, 0x11ce, 0xb0, 0x3a, 0x00, 0x20, 0xaf, 0x0b, 0xa7, 0x70); 00523 00524 #undef INTERFACE 00525 #define INTERFACE IReferenceClock 00526 00527 DECLARE_INTERFACE_(IReferenceClock, IUnknown) 00528 { 00529 // IUnknown methods 00530 STDMETHOD(QueryInterface) (THIS_ REFIID, LPVOID *) PURE; 00531 STDMETHOD_(ULONG,AddRef) (THIS) PURE; 00532 STDMETHOD_(ULONG,Release) (THIS) PURE; 00533 00534 // IReferenceClock methods 00535 STDMETHOD(GetTime) (THIS_ REFERENCE_TIME *pTime) PURE; 00536 STDMETHOD(AdviseTime) (THIS_ REFERENCE_TIME rtBaseTime, REFERENCE_TIME rtStreamTime, 00537 HANDLE hEvent, LPDWORD pdwAdviseCookie) PURE; 00538 STDMETHOD(AdvisePeriodic) (THIS_ REFERENCE_TIME rtStartTime, REFERENCE_TIME rtPeriodTime, 00539 HANDLE hSemaphore, LPDWORD pdwAdviseCookie) PURE; 00540 STDMETHOD(Unadvise) (THIS_ DWORD dwAdviseCookie) PURE; 00541 }; 00542 00543 #endif // __IReferenceClock_INTERFACE_DEFINED__ 00544 00545 #ifndef IReferenceClock_QueryInterface 00546 00547 #define IReferenceClock_QueryInterface(p,a,b) IUnknown_QueryInterface(p,a,b) 00548 #define IReferenceClock_AddRef(p) IUnknown_AddRef(p) 00549 #define IReferenceClock_Release(p) IUnknown_Release(p) 00550 00551 #if !defined(__cplusplus) || defined(CINTERFACE) 00552 #define IReferenceClock_GetTime(p,a) (p)->lpVtbl->GetTime(p,a) 00553 #define IReferenceClock_AdviseTime(p,a,b,c,d) (p)->lpVtbl->AdviseTime(p,a,b,c,d) 00554 #define IReferenceClock_AdvisePeriodic(p,a,b,c,d) (p)->lpVtbl->AdvisePeriodic(p,a,b,c,d) 00555 #define IReferenceClock_Unadvise(p,a) (p)->lpVtbl->Unadvise(p,a) 00556 #else // !defined(__cplusplus) || defined(CINTERFACE) 00557 #define IReferenceClock_GetTime(p,a) (p)->GetTime(a) 00558 #define IReferenceClock_AdviseTime(p,a,b,c,d) (p)->AdviseTime(a,b,c,d) 00559 #define IReferenceClock_AdvisePeriodic(p,a,b,c,d) (p)->AdvisePeriodic(a,b,c,d) 00560 #define IReferenceClock_Unadvise(p,a) (p)->Unadvise(a) 00561 #endif // !defined(__cplusplus) || defined(CINTERFACE) 00562 00563 #endif // IReferenceClock_QueryInterface 00564 00565 // 00566 // IDirectSound 00567 // 00568 00569 DEFINE_GUID(IID_IDirectSound, 0x279AFA83, 0x4981, 0x11CE, 0xA5, 0x21, 0x00, 0x20, 0xAF, 0x0B, 0xE5, 0x60); 00570 00571 #undef INTERFACE 00572 #define INTERFACE IDirectSound 00573 00574 DECLARE_INTERFACE_(IDirectSound, IUnknown) 00575 { 00576 // IUnknown methods 00577 STDMETHOD(QueryInterface) (THIS_ REFIID, LPVOID *) PURE; 00578 STDMETHOD_(ULONG,AddRef) (THIS) PURE; 00579 STDMETHOD_(ULONG,Release) (THIS) PURE; 00580 00581 // IDirectSound methods 00582 STDMETHOD(CreateSoundBuffer) (THIS_ LPCDSBUFFERDESC pcDSBufferDesc, LPDIRECTSOUNDBUFFER *ppDSBuffer, LPUNKNOWN pUnkOuter) PURE; 00583 STDMETHOD(GetCaps) (THIS_ LPDSCAPS pDSCaps) PURE; 00584 STDMETHOD(DuplicateSoundBuffer) (THIS_ LPDIRECTSOUNDBUFFER pDSBufferOriginal, LPDIRECTSOUNDBUFFER *ppDSBufferDuplicate) PURE; 00585 STDMETHOD(SetCooperativeLevel) (THIS_ HWND hwnd, DWORD dwLevel) PURE; 00586 STDMETHOD(Compact) (THIS) PURE; 00587 STDMETHOD(GetSpeakerConfig) (THIS_ LPDWORD pdwSpeakerConfig) PURE; 00588 STDMETHOD(SetSpeakerConfig) (THIS_ DWORD dwSpeakerConfig) PURE; 00589 STDMETHOD(Initialize) (THIS_ LPCGUID pcGuidDevice) PURE; 00590 }; 00591 00592 #define IDirectSound_QueryInterface(p,a,b) IUnknown_QueryInterface(p,a,b) 00593 #define IDirectSound_AddRef(p) IUnknown_AddRef(p) 00594 #define IDirectSound_Release(p) IUnknown_Release(p) 00595 00596 #if !defined(__cplusplus) || defined(CINTERFACE) 00597 #define IDirectSound_CreateSoundBuffer(p,a,b,c) (p)->lpVtbl->CreateSoundBuffer(p,a,b,c) 00598 #define IDirectSound_GetCaps(p,a) (p)->lpVtbl->GetCaps(p,a) 00599 #define IDirectSound_DuplicateSoundBuffer(p,a,b) (p)->lpVtbl->DuplicateSoundBuffer(p,a,b) 00600 #define IDirectSound_SetCooperativeLevel(p,a,b) (p)->lpVtbl->SetCooperativeLevel(p,a,b) 00601 #define IDirectSound_Compact(p) (p)->lpVtbl->Compact(p) 00602 #define IDirectSound_GetSpeakerConfig(p,a) (p)->lpVtbl->GetSpeakerConfig(p,a) 00603 #define IDirectSound_SetSpeakerConfig(p,b) (p)->lpVtbl->SetSpeakerConfig(p,b) 00604 #define IDirectSound_Initialize(p,a) (p)->lpVtbl->Initialize(p,a) 00605 #else // !defined(__cplusplus) || defined(CINTERFACE) 00606 #define IDirectSound_CreateSoundBuffer(p,a,b,c) (p)->CreateSoundBuffer(a,b,c) 00607 #define IDirectSound_GetCaps(p,a) (p)->GetCaps(a) 00608 #define IDirectSound_DuplicateSoundBuffer(p,a,b) (p)->DuplicateSoundBuffer(a,b) 00609 #define IDirectSound_SetCooperativeLevel(p,a,b) (p)->SetCooperativeLevel(a,b) 00610 #define IDirectSound_Compact(p) (p)->Compact() 00611 #define IDirectSound_GetSpeakerConfig(p,a) (p)->GetSpeakerConfig(a) 00612 #define IDirectSound_SetSpeakerConfig(p,b) (p)->SetSpeakerConfig(b) 00613 #define IDirectSound_Initialize(p,a) (p)->Initialize(a) 00614 #endif // !defined(__cplusplus) || defined(CINTERFACE) 00615 00616 #if DIRECTSOUND_VERSION >= 0x0800 00617 00618 // 00619 // IDirectSound8 00620 // 00621 00622 DEFINE_GUID(IID_IDirectSound8, 0xC50A7E93, 0xF395, 0x4834, 0x9E, 0xF6, 0x7F, 0xA9, 0x9D, 0xE5, 0x09, 0x66); 00623 00624 #undef INTERFACE 00625 #define INTERFACE IDirectSound8 00626 00627 DECLARE_INTERFACE_(IDirectSound8, IDirectSound) 00628 { 00629 // IUnknown methods 00630 STDMETHOD(QueryInterface) (THIS_ REFIID, LPVOID *) PURE; 00631 STDMETHOD_(ULONG,AddRef) (THIS) PURE; 00632 STDMETHOD_(ULONG,Release) (THIS) PURE; 00633 00634 // IDirectSound methods 00635 STDMETHOD(CreateSoundBuffer) (THIS_ LPCDSBUFFERDESC pcDSBufferDesc, LPDIRECTSOUNDBUFFER *ppDSBuffer, LPUNKNOWN pUnkOuter) PURE; 00636 STDMETHOD(GetCaps) (THIS_ LPDSCAPS pDSCaps) PURE; 00637 STDMETHOD(DuplicateSoundBuffer) (THIS_ LPDIRECTSOUNDBUFFER pDSBufferOriginal, LPDIRECTSOUNDBUFFER *ppDSBufferDuplicate) PURE; 00638 STDMETHOD(SetCooperativeLevel) (THIS_ HWND hwnd, DWORD dwLevel) PURE; 00639 STDMETHOD(Compact) (THIS) PURE; 00640 STDMETHOD(GetSpeakerConfig) (THIS_ LPDWORD pdwSpeakerConfig) PURE; 00641 STDMETHOD(SetSpeakerConfig) (THIS_ DWORD dwSpeakerConfig) PURE; 00642 STDMETHOD(Initialize) (THIS_ LPCGUID pcGuidDevice) PURE; 00643 00644 // IDirectSound8 methods 00645 STDMETHOD(VerifyCertification) (THIS_ LPDWORD pdwCertified) PURE; 00646 }; 00647 00648 #define IDirectSound8_QueryInterface(p,a,b) IDirectSound_QueryInterface(p,a,b) 00649 #define IDirectSound8_AddRef(p) IDirectSound_AddRef(p) 00650 #define IDirectSound8_Release(p) IDirectSound_Release(p) 00651 #define IDirectSound8_CreateSoundBuffer(p,a,b,c) IDirectSound_CreateSoundBuffer(p,a,b,c) 00652 #define IDirectSound8_GetCaps(p,a) IDirectSound_GetCaps(p,a) 00653 #define IDirectSound8_DuplicateSoundBuffer(p,a,b) IDirectSound_DuplicateSoundBuffer(p,a,b) 00654 #define IDirectSound8_SetCooperativeLevel(p,a,b) IDirectSound_SetCooperativeLevel(p,a,b) 00655 #define IDirectSound8_Compact(p) IDirectSound_Compact(p) 00656 #define IDirectSound8_GetSpeakerConfig(p,a) IDirectSound_GetSpeakerConfig(p,a) 00657 #define IDirectSound8_SetSpeakerConfig(p,a) IDirectSound_SetSpeakerConfig(p,a) 00658 #define IDirectSound8_Initialize(p,a) IDirectSound_Initialize(p,a) 00659 00660 #if !defined(__cplusplus) || defined(CINTERFACE) 00661 #define IDirectSound8_VerifyCertification(p,a) (p)->lpVtbl->VerifyCertification(p,a) 00662 #else // !defined(__cplusplus) || defined(CINTERFACE) 00663 #define IDirectSound8_VerifyCertification(p,a) (p)->VerifyCertification(a) 00664 #endif // !defined(__cplusplus) || defined(CINTERFACE) 00665 00666 #endif // DIRECTSOUND_VERSION >= 0x0800 00667 00668 // 00669 // IDirectSoundBuffer 00670 // 00671 00672 DEFINE_GUID(IID_IDirectSoundBuffer, 0x279AFA85, 0x4981, 0x11CE, 0xA5, 0x21, 0x00, 0x20, 0xAF, 0x0B, 0xE5, 0x60); 00673 00674 #undef INTERFACE 00675 #define INTERFACE IDirectSoundBuffer 00676 00677 DECLARE_INTERFACE_(IDirectSoundBuffer, IUnknown) 00678 { 00679 // IUnknown methods 00680 STDMETHOD(QueryInterface) (THIS_ REFIID, LPVOID *) PURE; 00681 STDMETHOD_(ULONG,AddRef) (THIS) PURE; 00682 STDMETHOD_(ULONG,Release) (THIS) PURE; 00683 00684 // IDirectSoundBuffer methods 00685 STDMETHOD(GetCaps) (THIS_ LPDSBCAPS pDSBufferCaps) PURE; 00686 STDMETHOD(GetCurrentPosition) (THIS_ LPDWORD pdwCurrentPlayCursor, LPDWORD pdwCurrentWriteCursor) PURE; 00687 STDMETHOD(GetFormat) (THIS_ LPWAVEFORMATEX pwfxFormat, DWORD dwSizeAllocated, LPDWORD pdwSizeWritten) PURE; 00688 STDMETHOD(GetVolume) (THIS_ LPLONG plVolume) PURE; 00689 STDMETHOD(GetPan) (THIS_ LPLONG plPan) PURE; 00690 STDMETHOD(GetFrequency) (THIS_ LPDWORD pdwFrequency) PURE; 00691 STDMETHOD(GetStatus) (THIS_ LPDWORD pdwStatus) PURE; 00692 STDMETHOD(Initialize) (THIS_ LPDIRECTSOUND pDirectSound, LPCDSBUFFERDESC pcDSBufferDesc) PURE; 00693 STDMETHOD(Lock) (THIS_ DWORD dwOffset, DWORD dwBytes, LPVOID *ppvAudioPtr1, LPDWORD pdwAudioBytes1, 00694 LPVOID *ppvAudioPtr2, LPDWORD pdwAudioBytes2, DWORD dwFlags) PURE; 00695 STDMETHOD(Play) (THIS_ DWORD dwReserved1, DWORD dwPriority, DWORD dwFlags) PURE; 00696 STDMETHOD(SetCurrentPosition) (THIS_ DWORD dwNewPosition) PURE; 00697 STDMETHOD(SetFormat) (THIS_ LPCWAVEFORMATEX pcfxFormat) PURE; 00698 STDMETHOD(SetVolume) (THIS_ LONG lVolume) PURE; 00699 STDMETHOD(SetPan) (THIS_ LONG lPan) PURE; 00700 STDMETHOD(SetFrequency) (THIS_ DWORD dwFrequency) PURE; 00701 STDMETHOD(Stop) (THIS) PURE; 00702 STDMETHOD(Unlock) (THIS_ LPVOID pvAudioPtr1, DWORD dwAudioBytes1, LPVOID pvAudioPtr2, DWORD dwAudioBytes2) PURE; 00703 STDMETHOD(Restore) (THIS) PURE; 00704 }; 00705 00706 #define IDirectSoundBuffer_QueryInterface(p,a,b) IUnknown_QueryInterface(p,a,b) 00707 #define IDirectSoundBuffer_AddRef(p) IUnknown_AddRef(p) 00708 #define IDirectSoundBuffer_Release(p) IUnknown_Release(p) 00709 00710 #if !defined(__cplusplus) || defined(CINTERFACE) 00711 #define IDirectSoundBuffer_GetCaps(p,a) (p)->lpVtbl->GetCaps(p,a) 00712 #define IDirectSoundBuffer_GetCurrentPosition(p,a,b) (p)->lpVtbl->GetCurrentPosition(p,a,b) 00713 #define IDirectSoundBuffer_GetFormat(p,a,b,c) (p)->lpVtbl->GetFormat(p,a,b,c) 00714 #define IDirectSoundBuffer_GetVolume(p,a) (p)->lpVtbl->GetVolume(p,a) 00715 #define IDirectSoundBuffer_GetPan(p,a) (p)->lpVtbl->GetPan(p,a) 00716 #define IDirectSoundBuffer_GetFrequency(p,a) (p)->lpVtbl->GetFrequency(p,a) 00717 #define IDirectSoundBuffer_GetStatus(p,a) (p)->lpVtbl->GetStatus(p,a) 00718 #define IDirectSoundBuffer_Initialize(p,a,b) (p)->lpVtbl->Initialize(p,a,b) 00719 #define IDirectSoundBuffer_Lock(p,a,b,c,d,e,f,g) (p)->lpVtbl->Lock(p,a,b,c,d,e,f,g) 00720 #define IDirectSoundBuffer_Play(p,a,b,c) (p)->lpVtbl->Play(p,a,b,c) 00721 #define IDirectSoundBuffer_SetCurrentPosition(p,a) (p)->lpVtbl->SetCurrentPosition(p,a) 00722 #define IDirectSoundBuffer_SetFormat(p,a) (p)->lpVtbl->SetFormat(p,a) 00723 #define IDirectSoundBuffer_SetVolume(p,a) (p)->lpVtbl->SetVolume(p,a) 00724 #define IDirectSoundBuffer_SetPan(p,a) (p)->lpVtbl->SetPan(p,a) 00725 #define IDirectSoundBuffer_SetFrequency(p,a) (p)->lpVtbl->SetFrequency(p,a) 00726 #define IDirectSoundBuffer_Stop(p) (p)->lpVtbl->Stop(p) 00727 #define IDirectSoundBuffer_Unlock(p,a,b,c,d) (p)->lpVtbl->Unlock(p,a,b,c,d) 00728 #define IDirectSoundBuffer_Restore(p) (p)->lpVtbl->Restore(p) 00729 #else // !defined(__cplusplus) || defined(CINTERFACE) 00730 #define IDirectSoundBuffer_GetCaps(p,a) (p)->GetCaps(a) 00731 #define IDirectSoundBuffer_GetCurrentPosition(p,a,b) (p)->GetCurrentPosition(a,b) 00732 #define IDirectSoundBuffer_GetFormat(p,a,b,c) (p)->GetFormat(a,b,c) 00733 #define IDirectSoundBuffer_GetVolume(p,a) (p)->GetVolume(a) 00734 #define IDirectSoundBuffer_GetPan(p,a) (p)->GetPan(a) 00735 #define IDirectSoundBuffer_GetFrequency(p,a) (p)->GetFrequency(a) 00736 #define IDirectSoundBuffer_GetStatus(p,a) (p)->GetStatus(a) 00737 #define IDirectSoundBuffer_Initialize(p,a,b) (p)->Initialize(a,b) 00738 #define IDirectSoundBuffer_Lock(p,a,b,c,d,e,f,g) (p)->Lock(a,b,c,d,e,f,g) 00739 #define IDirectSoundBuffer_Play(p,a,b,c) (p)->Play(a,b,c) 00740 #define IDirectSoundBuffer_SetCurrentPosition(p,a) (p)->SetCurrentPosition(a) 00741 #define IDirectSoundBuffer_SetFormat(p,a) (p)->SetFormat(a) 00742 #define IDirectSoundBuffer_SetVolume(p,a) (p)->SetVolume(a) 00743 #define IDirectSoundBuffer_SetPan(p,a) (p)->SetPan(a) 00744 #define IDirectSoundBuffer_SetFrequency(p,a) (p)->SetFrequency(a) 00745 #define IDirectSoundBuffer_Stop(p) (p)->Stop() 00746 #define IDirectSoundBuffer_Unlock(p,a,b,c,d) (p)->Unlock(a,b,c,d) 00747 #define IDirectSoundBuffer_Restore(p) (p)->Restore() 00748 #endif // !defined(__cplusplus) || defined(CINTERFACE) 00749 00750 #if DIRECTSOUND_VERSION >= 0x0800 00751 00752 // 00753 // IDirectSoundBuffer8 00754 // 00755 00756 DEFINE_GUID(IID_IDirectSoundBuffer8, 0x6825a449, 0x7524, 0x4d82, 0x92, 0x0f, 0x50, 0xe3, 0x6a, 0xb3, 0xab, 0x1e); 00757 00758 #undef INTERFACE 00759 #define INTERFACE IDirectSoundBuffer8 00760 00761 DECLARE_INTERFACE_(IDirectSoundBuffer8, IDirectSoundBuffer) 00762 { 00763 // IUnknown methods 00764 STDMETHOD(QueryInterface) (THIS_ REFIID, LPVOID *) PURE; 00765 STDMETHOD_(ULONG,AddRef) (THIS) PURE; 00766 STDMETHOD_(ULONG,Release) (THIS) PURE; 00767 00768 // IDirectSoundBuffer methods 00769 STDMETHOD(GetCaps) (THIS_ LPDSBCAPS pDSBufferCaps) PURE; 00770 STDMETHOD(GetCurrentPosition) (THIS_ LPDWORD pdwCurrentPlayCursor, LPDWORD pdwCurrentWriteCursor) PURE; 00771 STDMETHOD(GetFormat) (THIS_ LPWAVEFORMATEX pwfxFormat, DWORD dwSizeAllocated, LPDWORD pdwSizeWritten) PURE; 00772 STDMETHOD(GetVolume) (THIS_ LPLONG plVolume) PURE; 00773 STDMETHOD(GetPan) (THIS_ LPLONG plPan) PURE; 00774 STDMETHOD(GetFrequency) (THIS_ LPDWORD pdwFrequency) PURE; 00775 STDMETHOD(GetStatus) (THIS_ LPDWORD pdwStatus) PURE; 00776 STDMETHOD(Initialize) (THIS_ LPDIRECTSOUND pDirectSound, LPCDSBUFFERDESC pcDSBufferDesc) PURE; 00777 STDMETHOD(Lock) (THIS_ DWORD dwOffset, DWORD dwBytes, LPVOID *ppvAudioPtr1, LPDWORD pdwAudioBytes1, 00778 LPVOID *ppvAudioPtr2, LPDWORD pdwAudioBytes2, DWORD dwFlags) PURE; 00779 STDMETHOD(Play) (THIS_ DWORD dwReserved1, DWORD dwPriority, DWORD dwFlags) PURE; 00780 STDMETHOD(SetCurrentPosition) (THIS_ DWORD dwNewPosition) PURE; 00781 STDMETHOD(SetFormat) (THIS_ LPCWAVEFORMATEX pcfxFormat) PURE; 00782 STDMETHOD(SetVolume) (THIS_ LONG lVolume) PURE; 00783 STDMETHOD(SetPan) (THIS_ LONG lPan) PURE; 00784 STDMETHOD(SetFrequency) (THIS_ DWORD dwFrequency) PURE; 00785 STDMETHOD(Stop) (THIS) PURE; 00786 STDMETHOD(Unlock) (THIS_ LPVOID pvAudioPtr1, DWORD dwAudioBytes1, LPVOID pvAudioPtr2, DWORD dwAudioBytes2) PURE; 00787 STDMETHOD(Restore) (THIS) PURE; 00788 00789 // IDirectSoundBuffer8 methods 00790 STDMETHOD(SetFX) (THIS_ DWORD dwEffectsCount, LPDSEFFECTDESC pDSFXDesc, LPDWORD pdwResultCodes) PURE; 00791 STDMETHOD(AcquireResources) (THIS_ DWORD dwFlags, DWORD dwEffectsCount, LPDWORD pdwResultCodes) PURE; 00792 STDMETHOD(GetObjectInPath) (THIS_ REFGUID rguidObject, DWORD dwIndex, REFGUID rguidInterface, LPVOID *ppObject) PURE; 00793 }; 00794 00795 // Special GUID meaning "select all objects" for use in GetObjectInPath() 00796 DEFINE_GUID(GUID_All_Objects, 0xaa114de5, 0xc262, 0x4169, 0xa1, 0xc8, 0x23, 0xd6, 0x98, 0xcc, 0x73, 0xb5); 00797 00798 #define IDirectSoundBuffer8_QueryInterface(p,a,b) IUnknown_QueryInterface(p,a,b) 00799 #define IDirectSoundBuffer8_AddRef(p) IUnknown_AddRef(p) 00800 #define IDirectSoundBuffer8_Release(p) IUnknown_Release(p) 00801 00802 #define IDirectSoundBuffer8_GetCaps(p,a) IDirectSoundBuffer_GetCaps(p,a) 00803 #define IDirectSoundBuffer8_GetCurrentPosition(p,a,b) IDirectSoundBuffer_GetCurrentPosition(p,a,b) 00804 #define IDirectSoundBuffer8_GetFormat(p,a,b,c) IDirectSoundBuffer_GetFormat(p,a,b,c) 00805 #define IDirectSoundBuffer8_GetVolume(p,a) IDirectSoundBuffer_GetVolume(p,a) 00806 #define IDirectSoundBuffer8_GetPan(p,a) IDirectSoundBuffer_GetPan(p,a) 00807 #define IDirectSoundBuffer8_GetFrequency(p,a) IDirectSoundBuffer_GetFrequency(p,a) 00808 #define IDirectSoundBuffer8_GetStatus(p,a) IDirectSoundBuffer_GetStatus(p,a) 00809 #define IDirectSoundBuffer8_Initialize(p,a,b) IDirectSoundBuffer_Initialize(p,a,b) 00810 #define IDirectSoundBuffer8_Lock(p,a,b,c,d,e,f,g) IDirectSoundBuffer_Lock(p,a,b,c,d,e,f,g) 00811 #define IDirectSoundBuffer8_Play(p,a,b,c) IDirectSoundBuffer_Play(p,a,b,c) 00812 #define IDirectSoundBuffer8_SetCurrentPosition(p,a) IDirectSoundBuffer_SetCurrentPosition(p,a) 00813 #define IDirectSoundBuffer8_SetFormat(p,a) IDirectSoundBuffer_SetFormat(p,a) 00814 #define IDirectSoundBuffer8_SetVolume(p,a) IDirectSoundBuffer_SetVolume(p,a) 00815 #define IDirectSoundBuffer8_SetPan(p,a) IDirectSoundBuffer_SetPan(p,a) 00816 #define IDirectSoundBuffer8_SetFrequency(p,a) IDirectSoundBuffer_SetFrequency(p,a) 00817 #define IDirectSoundBuffer8_Stop(p) IDirectSoundBuffer_Stop(p) 00818 #define IDirectSoundBuffer8_Unlock(p,a,b,c,d) IDirectSoundBuffer_Unlock(p,a,b,c,d) 00819 #define IDirectSoundBuffer8_Restore(p) IDirectSoundBuffer_Restore(p) 00820 00821 #if !defined(__cplusplus) || defined(CINTERFACE) 00822 #define IDirectSoundBuffer8_SetFX(p,a,b,c) (p)->lpVtbl->SetFX(p,a,b,c) 00823 #define IDirectSoundBuffer8_AcquireResources(p,a,b,c) (p)->lpVtbl->AcquireResources(p,a,b,c) 00824 #define IDirectSoundBuffer8_GetObjectInPath(p,a,b,c,d) (p)->lpVtbl->GetObjectInPath(p,a,b,c,d) 00825 #else // !defined(__cplusplus) || defined(CINTERFACE) 00826 #define IDirectSoundBuffer8_SetFX(p,a,b,c) (p)->SetFX(a,b,c) 00827 #define IDirectSoundBuffer8_AcquireResources(p,a,b,c) (p)->AcquireResources(a,b,c) 00828 #define IDirectSoundBuffer8_GetObjectInPath(p,a,b,c,d) (p)->GetObjectInPath(a,b,c,d) 00829 #endif // !defined(__cplusplus) || defined(CINTERFACE) 00830 00831 #endif // DIRECTSOUND_VERSION >= 0x0800 00832 00833 // 00834 // IDirectSound3DListener 00835 // 00836 00837 DEFINE_GUID(IID_IDirectSound3DListener, 0x279AFA84, 0x4981, 0x11CE, 0xA5, 0x21, 0x00, 0x20, 0xAF, 0x0B, 0xE5, 0x60); 00838 00839 #undef INTERFACE 00840 #define INTERFACE IDirectSound3DListener 00841 00842 DECLARE_INTERFACE_(IDirectSound3DListener, IUnknown) 00843 { 00844 // IUnknown methods 00845 STDMETHOD(QueryInterface) (THIS_ REFIID, LPVOID *) PURE; 00846 STDMETHOD_(ULONG,AddRef) (THIS) PURE; 00847 STDMETHOD_(ULONG,Release) (THIS) PURE; 00848 00849 // IDirectSound3DListener methods 00850 STDMETHOD(GetAllParameters) (THIS_ LPDS3DLISTENER pListener) PURE; 00851 STDMETHOD(GetDistanceFactor) (THIS_ D3DVALUE* pflDistanceFactor) PURE; 00852 STDMETHOD(GetDopplerFactor) (THIS_ D3DVALUE* pflDopplerFactor) PURE; 00853 STDMETHOD(GetOrientation) (THIS_ D3DVECTOR* pvOrientFront, D3DVECTOR* pvOrientTop) PURE; 00854 STDMETHOD(GetPosition) (THIS_ D3DVECTOR* pvPosition) PURE; 00855 STDMETHOD(GetRolloffFactor) (THIS_ D3DVALUE* pflRolloffFactor) PURE; 00856 STDMETHOD(GetVelocity) (THIS_ D3DVECTOR* pvVelocity) PURE; 00857 STDMETHOD(SetAllParameters) (THIS_ LPCDS3DLISTENER pcListener, DWORD dwApply) PURE; 00858 STDMETHOD(SetDistanceFactor) (THIS_ D3DVALUE flDistanceFactor, DWORD dwApply) PURE; 00859 STDMETHOD(SetDopplerFactor) (THIS_ D3DVALUE flDopplerFactor, DWORD dwApply) PURE; 00860 STDMETHOD(SetOrientation) (THIS_ D3DVALUE xFront, D3DVALUE yFront, D3DVALUE zFront, 00861 D3DVALUE xTop, D3DVALUE yTop, D3DVALUE zTop, DWORD dwApply) PURE; 00862 STDMETHOD(SetPosition) (THIS_ D3DVALUE x, D3DVALUE y, D3DVALUE z, DWORD dwApply) PURE; 00863 STDMETHOD(SetRolloffFactor) (THIS_ D3DVALUE flRolloffFactor, DWORD dwApply) PURE; 00864 STDMETHOD(SetVelocity) (THIS_ D3DVALUE x, D3DVALUE y, D3DVALUE z, DWORD dwApply) PURE; 00865 STDMETHOD(CommitDeferredSettings) (THIS) PURE; 00866 }; 00867 00868 #define IDirectSound3DListener_QueryInterface(p,a,b) IUnknown_QueryInterface(p,a,b) 00869 #define IDirectSound3DListener_AddRef(p) IUnknown_AddRef(p) 00870 #define IDirectSound3DListener_Release(p) IUnknown_Release(p) 00871 00872 #if !defined(__cplusplus) || defined(CINTERFACE) 00873 #define IDirectSound3DListener_GetAllParameters(p,a) (p)->lpVtbl->GetAllParameters(p,a) 00874 #define IDirectSound3DListener_GetDistanceFactor(p,a) (p)->lpVtbl->GetDistanceFactor(p,a) 00875 #define IDirectSound3DListener_GetDopplerFactor(p,a) (p)->lpVtbl->GetDopplerFactor(p,a) 00876 #define IDirectSound3DListener_GetOrientation(p,a,b) (p)->lpVtbl->GetOrientation(p,a,b) 00877 #define IDirectSound3DListener_GetPosition(p,a) (p)->lpVtbl->GetPosition(p,a) 00878 #define IDirectSound3DListener_GetRolloffFactor(p,a) (p)->lpVtbl->GetRolloffFactor(p,a) 00879 #define IDirectSound3DListener_GetVelocity(p,a) (p)->lpVtbl->GetVelocity(p,a) 00880 #define IDirectSound3DListener_SetAllParameters(p,a,b) (p)->lpVtbl->SetAllParameters(p,a,b) 00881 #define IDirectSound3DListener_SetDistanceFactor(p,a,b) (p)->lpVtbl->SetDistanceFactor(p,a,b) 00882 #define IDirectSound3DListener_SetDopplerFactor(p,a,b) (p)->lpVtbl->SetDopplerFactor(p,a,b) 00883 #define IDirectSound3DListener_SetOrientation(p,a,b,c,d,e,f,g) (p)->lpVtbl->SetOrientation(p,a,b,c,d,e,f,g) 00884 #define IDirectSound3DListener_SetPosition(p,a,b,c,d) (p)->lpVtbl->SetPosition(p,a,b,c,d) 00885 #define IDirectSound3DListener_SetRolloffFactor(p,a,b) (p)->lpVtbl->SetRolloffFactor(p,a,b) 00886 #define IDirectSound3DListener_SetVelocity(p,a,b,c,d) (p)->lpVtbl->SetVelocity(p,a,b,c,d) 00887 #define IDirectSound3DListener_CommitDeferredSettings(p) (p)->lpVtbl->CommitDeferredSettings(p) 00888 #else // !defined(__cplusplus) || defined(CINTERFACE) 00889 #define IDirectSound3DListener_GetAllParameters(p,a) (p)->GetAllParameters(a) 00890 #define IDirectSound3DListener_GetDistanceFactor(p,a) (p)->GetDistanceFactor(a) 00891 #define IDirectSound3DListener_GetDopplerFactor(p,a) (p)->GetDopplerFactor(a) 00892 #define IDirectSound3DListener_GetOrientation(p,a,b) (p)->GetOrientation(a,b) 00893 #define IDirectSound3DListener_GetPosition(p,a) (p)->GetPosition(a) 00894 #define IDirectSound3DListener_GetRolloffFactor(p,a) (p)->GetRolloffFactor(a) 00895 #define IDirectSound3DListener_GetVelocity(p,a) (p)->GetVelocity(a) 00896 #define IDirectSound3DListener_SetAllParameters(p,a,b) (p)->SetAllParameters(a,b) 00897 #define IDirectSound3DListener_SetDistanceFactor(p,a,b) (p)->SetDistanceFactor(a,b) 00898 #define IDirectSound3DListener_SetDopplerFactor(p,a,b) (p)->SetDopplerFactor(a,b) 00899 #define IDirectSound3DListener_SetOrientation(p,a,b,c,d,e,f,g) (p)->SetOrientation(a,b,c,d,e,f,g) 00900 #define IDirectSound3DListener_SetPosition(p,a,b,c,d) (p)->SetPosition(a,b,c,d) 00901 #define IDirectSound3DListener_SetRolloffFactor(p,a,b) (p)->SetRolloffFactor(a,b) 00902 #define IDirectSound3DListener_SetVelocity(p,a,b,c,d) (p)->SetVelocity(a,b,c,d) 00903 #define IDirectSound3DListener_CommitDeferredSettings(p) (p)->CommitDeferredSettings() 00904 #endif // !defined(__cplusplus) || defined(CINTERFACE) 00905 00906 // 00907 // IDirectSound3DBuffer 00908 // 00909 00910 DEFINE_GUID(IID_IDirectSound3DBuffer, 0x279AFA86, 0x4981, 0x11CE, 0xA5, 0x21, 0x00, 0x20, 0xAF, 0x0B, 0xE5, 0x60); 00911 00912 #undef INTERFACE 00913 #define INTERFACE IDirectSound3DBuffer 00914 00915 DECLARE_INTERFACE_(IDirectSound3DBuffer, IUnknown) 00916 { 00917 // IUnknown methods 00918 STDMETHOD(QueryInterface) (THIS_ REFIID, LPVOID *) PURE; 00919 STDMETHOD_(ULONG,AddRef) (THIS) PURE; 00920 STDMETHOD_(ULONG,Release) (THIS) PURE; 00921 00922 // IDirectSound3DBuffer methods 00923 STDMETHOD(GetAllParameters) (THIS_ LPDS3DBUFFER pDs3dBuffer) PURE; 00924 STDMETHOD(GetConeAngles) (THIS_ LPDWORD pdwInsideConeAngle, LPDWORD pdwOutsideConeAngle) PURE; 00925 STDMETHOD(GetConeOrientation) (THIS_ D3DVECTOR* pvOrientation) PURE; 00926 STDMETHOD(GetConeOutsideVolume) (THIS_ LPLONG plConeOutsideVolume) PURE; 00927 STDMETHOD(GetMaxDistance) (THIS_ D3DVALUE* pflMaxDistance) PURE; 00928 STDMETHOD(GetMinDistance) (THIS_ D3DVALUE* pflMinDistance) PURE; 00929 STDMETHOD(GetMode) (THIS_ LPDWORD pdwMode) PURE; 00930 STDMETHOD(GetPosition) (THIS_ D3DVECTOR* pvPosition) PURE; 00931 STDMETHOD(GetVelocity) (THIS_ D3DVECTOR* pvVelocity) PURE; 00932 STDMETHOD(SetAllParameters) (THIS_ LPCDS3DBUFFER pcDs3dBuffer, DWORD dwApply) PURE; 00933 STDMETHOD(SetConeAngles) (THIS_ DWORD dwInsideConeAngle, DWORD dwOutsideConeAngle, DWORD dwApply) PURE; 00934 STDMETHOD(SetConeOrientation) (THIS_ D3DVALUE x, D3DVALUE y, D3DVALUE z, DWORD dwApply) PURE; 00935 STDMETHOD(SetConeOutsideVolume) (THIS_ LONG lConeOutsideVolume, DWORD dwApply) PURE; 00936 STDMETHOD(SetMaxDistance) (THIS_ D3DVALUE flMaxDistance, DWORD dwApply) PURE; 00937 STDMETHOD(SetMinDistance) (THIS_ D3DVALUE flMinDistance, DWORD dwApply) PURE; 00938 STDMETHOD(SetMode) (THIS_ DWORD dwMode, DWORD dwApply) PURE; 00939 STDMETHOD(SetPosition) (THIS_ D3DVALUE x, D3DVALUE y, D3DVALUE z, DWORD dwApply) PURE; 00940 STDMETHOD(SetVelocity) (THIS_ D3DVALUE x, D3DVALUE y, D3DVALUE z, DWORD dwApply) PURE; 00941 }; 00942 00943 #define IDirectSound3DBuffer_QueryInterface(p,a,b) IUnknown_QueryInterface(p,a,b) 00944 #define IDirectSound3DBuffer_AddRef(p) IUnknown_AddRef(p) 00945 #define IDirectSound3DBuffer_Release(p) IUnknown_Release(p) 00946 00947 #if !defined(__cplusplus) || defined(CINTERFACE) 00948 #define IDirectSound3DBuffer_GetAllParameters(p,a) (p)->lpVtbl->GetAllParameters(p,a) 00949 #define IDirectSound3DBuffer_GetConeAngles(p,a,b) (p)->lpVtbl->GetConeAngles(p,a,b) 00950 #define IDirectSound3DBuffer_GetConeOrientation(p,a) (p)->lpVtbl->GetConeOrientation(p,a) 00951 #define IDirectSound3DBuffer_GetConeOutsideVolume(p,a) (p)->lpVtbl->GetConeOutsideVolume(p,a) 00952 #define IDirectSound3DBuffer_GetPosition(p,a) (p)->lpVtbl->GetPosition(p,a) 00953 #define IDirectSound3DBuffer_GetMinDistance(p,a) (p)->lpVtbl->GetMinDistance(p,a) 00954 #define IDirectSound3DBuffer_GetMaxDistance(p,a) (p)->lpVtbl->GetMaxDistance(p,a) 00955 #define IDirectSound3DBuffer_GetMode(p,a) (p)->lpVtbl->GetMode(p,a) 00956 #define IDirectSound3DBuffer_GetVelocity(p,a) (p)->lpVtbl->GetVelocity(p,a) 00957 #define IDirectSound3DBuffer_SetAllParameters(p,a,b) (p)->lpVtbl->SetAllParameters(p,a,b) 00958 #define IDirectSound3DBuffer_SetConeAngles(p,a,b,c) (p)->lpVtbl->SetConeAngles(p,a,b,c) 00959 #define IDirectSound3DBuffer_SetConeOrientation(p,a,b,c,d) (p)->lpVtbl->SetConeOrientation(p,a,b,c,d) 00960 #define IDirectSound3DBuffer_SetConeOutsideVolume(p,a,b) (p)->lpVtbl->SetConeOutsideVolume(p,a,b) 00961 #define IDirectSound3DBuffer_SetPosition(p,a,b,c,d) (p)->lpVtbl->SetPosition(p,a,b,c,d) 00962 #define IDirectSound3DBuffer_SetMinDistance(p,a,b) (p)->lpVtbl->SetMinDistance(p,a,b) 00963 #define IDirectSound3DBuffer_SetMaxDistance(p,a,b) (p)->lpVtbl->SetMaxDistance(p,a,b) 00964 #define IDirectSound3DBuffer_SetMode(p,a,b) (p)->lpVtbl->SetMode(p,a,b) 00965 #define IDirectSound3DBuffer_SetVelocity(p,a,b,c,d) (p)->lpVtbl->SetVelocity(p,a,b,c,d) 00966 #else // !defined(__cplusplus) || defined(CINTERFACE) 00967 #define IDirectSound3DBuffer_GetAllParameters(p,a) (p)->GetAllParameters(a) 00968 #define IDirectSound3DBuffer_GetConeAngles(p,a,b) (p)->GetConeAngles(a,b) 00969 #define IDirectSound3DBuffer_GetConeOrientation(p,a) (p)->GetConeOrientation(a) 00970 #define IDirectSound3DBuffer_GetConeOutsideVolume(p,a) (p)->GetConeOutsideVolume(a) 00971 #define IDirectSound3DBuffer_GetPosition(p,a) (p)->GetPosition(a) 00972 #define IDirectSound3DBuffer_GetMinDistance(p,a) (p)->GetMinDistance(a) 00973 #define IDirectSound3DBuffer_GetMaxDistance(p,a) (p)->GetMaxDistance(a) 00974 #define IDirectSound3DBuffer_GetMode(p,a) (p)->GetMode(a) 00975 #define IDirectSound3DBuffer_GetVelocity(p,a) (p)->GetVelocity(a) 00976 #define IDirectSound3DBuffer_SetAllParameters(p,a,b) (p)->SetAllParameters(a,b) 00977 #define IDirectSound3DBuffer_SetConeAngles(p,a,b,c) (p)->SetConeAngles(a,b,c) 00978 #define IDirectSound3DBuffer_SetConeOrientation(p,a,b,c,d) (p)->SetConeOrientation(a,b,c,d) 00979 #define IDirectSound3DBuffer_SetConeOutsideVolume(p,a,b) (p)->SetConeOutsideVolume(a,b) 00980 #define IDirectSound3DBuffer_SetPosition(p,a,b,c,d) (p)->SetPosition(a,b,c,d) 00981 #define IDirectSound3DBuffer_SetMinDistance(p,a,b) (p)->SetMinDistance(a,b) 00982 #define IDirectSound3DBuffer_SetMaxDistance(p,a,b) (p)->SetMaxDistance(a,b) 00983 #define IDirectSound3DBuffer_SetMode(p,a,b) (p)->SetMode(a,b) 00984 #define IDirectSound3DBuffer_SetVelocity(p,a,b,c,d) (p)->SetVelocity(a,b,c,d) 00985 #endif // !defined(__cplusplus) || defined(CINTERFACE) 00986 00987 // 00988 // IDirectSoundCapture 00989 // 00990 00991 DEFINE_GUID(IID_IDirectSoundCapture, 0xb0210781, 0x89cd, 0x11d0, 0xaf, 0x8, 0x0, 0xa0, 0xc9, 0x25, 0xcd, 0x16); 00992 00993 #undef INTERFACE 00994 #define INTERFACE IDirectSoundCapture 00995 00996 DECLARE_INTERFACE_(IDirectSoundCapture, IUnknown) 00997 { 00998 // IUnknown methods 00999 STDMETHOD(QueryInterface) (THIS_ REFIID, LPVOID *) PURE; 01000 STDMETHOD_(ULONG,AddRef) (THIS) PURE; 01001 STDMETHOD_(ULONG,Release) (THIS) PURE; 01002 01003 // IDirectSoundCapture methods 01004 STDMETHOD(CreateCaptureBuffer) (THIS_ LPCDSCBUFFERDESC pcDSCBufferDesc, LPDIRECTSOUNDCAPTUREBUFFER *ppDSCBuffer, LPUNKNOWN pUnkOuter) PURE; 01005 STDMETHOD(GetCaps) (THIS_ LPDSCCAPS pDSCCaps) PURE; 01006 STDMETHOD(Initialize) (THIS_ LPCGUID pcGuidDevice) PURE; 01007 }; 01008 01009 #define IDirectSoundCapture_QueryInterface(p,a,b) IUnknown_QueryInterface(p,a,b) 01010 #define IDirectSoundCapture_AddRef(p) IUnknown_AddRef(p) 01011 #define IDirectSoundCapture_Release(p) IUnknown_Release(p) 01012 01013 #if !defined(__cplusplus) || defined(CINTERFACE) 01014 #define IDirectSoundCapture_CreateCaptureBuffer(p,a,b,c) (p)->lpVtbl->CreateCaptureBuffer(p,a,b,c) 01015 #define IDirectSoundCapture_GetCaps(p,a) (p)->lpVtbl->GetCaps(p,a) 01016 #define IDirectSoundCapture_Initialize(p,a) (p)->lpVtbl->Initialize(p,a) 01017 #else // !defined(__cplusplus) || defined(CINTERFACE) 01018 #define IDirectSoundCapture_CreateCaptureBuffer(p,a,b,c) (p)->CreateCaptureBuffer(a,b,c) 01019 #define IDirectSoundCapture_GetCaps(p,a) (p)->GetCaps(a) 01020 #define IDirectSoundCapture_Initialize(p,a) (p)->Initialize(a) 01021 #endif // !defined(__cplusplus) || defined(CINTERFACE) 01022 01023 // 01024 // IDirectSoundCaptureBuffer 01025 // 01026 01027 DEFINE_GUID(IID_IDirectSoundCaptureBuffer, 0xb0210782, 0x89cd, 0x11d0, 0xaf, 0x8, 0x0, 0xa0, 0xc9, 0x25, 0xcd, 0x16); 01028 01029 #undef INTERFACE 01030 #define INTERFACE IDirectSoundCaptureBuffer 01031 01032 DECLARE_INTERFACE_(IDirectSoundCaptureBuffer, IUnknown) 01033 { 01034 // IUnknown methods 01035 STDMETHOD(QueryInterface) (THIS_ REFIID, LPVOID *) PURE; 01036 STDMETHOD_(ULONG,AddRef) (THIS) PURE; 01037 STDMETHOD_(ULONG,Release) (THIS) PURE; 01038 01039 // IDirectSoundCaptureBuffer methods 01040 STDMETHOD(GetCaps) (THIS_ LPDSCBCAPS pDSCBCaps) PURE; 01041 STDMETHOD(GetCurrentPosition) (THIS_ LPDWORD pdwCapturePosition, LPDWORD pdwReadPosition) PURE; 01042 STDMETHOD(GetFormat) (THIS_ LPWAVEFORMATEX pwfxFormat, DWORD dwSizeAllocated, LPDWORD pdwSizeWritten) PURE; 01043 STDMETHOD(GetStatus) (THIS_ LPDWORD pdwStatus) PURE; 01044 STDMETHOD(Initialize) (THIS_ LPDIRECTSOUNDCAPTURE pDirectSoundCapture, LPCDSCBUFFERDESC pcDSCBufferDesc) PURE; 01045 STDMETHOD(Lock) (THIS_ DWORD dwOffset, DWORD dwBytes, LPVOID *ppvAudioPtr1, LPDWORD pdwAudioBytes1, 01046 LPVOID *ppvAudioPtr2, LPDWORD pdwAudioBytes2, DWORD dwFlags) PURE; 01047 STDMETHOD(Start) (THIS_ DWORD dwFlags) PURE; 01048 STDMETHOD(Stop) (THIS) PURE; 01049 STDMETHOD(Unlock) (THIS_ LPVOID pvAudioPtr1, DWORD dwAudioBytes1, LPVOID pvAudioPtr2, DWORD dwAudioBytes2) PURE; 01050 }; 01051 01052 #define IDirectSoundCaptureBuffer_QueryInterface(p,a,b) IUnknown_QueryInterface(p,a,b) 01053 #define IDirectSoundCaptureBuffer_AddRef(p) IUnknown_AddRef(p) 01054 #define IDirectSoundCaptureBuffer_Release(p) IUnknown_Release(p) 01055 01056 #if !defined(__cplusplus) || defined(CINTERFACE) 01057 #define IDirectSoundCaptureBuffer_GetCaps(p,a) (p)->lpVtbl->GetCaps(p,a) 01058 #define IDirectSoundCaptureBuffer_GetCurrentPosition(p,a,b) (p)->lpVtbl->GetCurrentPosition(p,a,b) 01059 #define IDirectSoundCaptureBuffer_GetFormat(p,a,b,c) (p)->lpVtbl->GetFormat(p,a,b,c) 01060 #define IDirectSoundCaptureBuffer_GetStatus(p,a) (p)->lpVtbl->GetStatus(p,a) 01061 #define IDirectSoundCaptureBuffer_Initialize(p,a,b) (p)->lpVtbl->Initialize(p,a,b) 01062 #define IDirectSoundCaptureBuffer_Lock(p,a,b,c,d,e,f,g) (p)->lpVtbl->Lock(p,a,b,c,d,e,f,g) 01063 #define IDirectSoundCaptureBuffer_Start(p,a) (p)->lpVtbl->Start(p,a) 01064 #define IDirectSoundCaptureBuffer_Stop(p) (p)->lpVtbl->Stop(p) 01065 #define IDirectSoundCaptureBuffer_Unlock(p,a,b,c,d) (p)->lpVtbl->Unlock(p,a,b,c,d) 01066 #else // !defined(__cplusplus) || defined(CINTERFACE) 01067 #define IDirectSoundCaptureBuffer_GetCaps(p,a) (p)->GetCaps(a) 01068 #define IDirectSoundCaptureBuffer_GetCurrentPosition(p,a,b) (p)->GetCurrentPosition(a,b) 01069 #define IDirectSoundCaptureBuffer_GetFormat(p,a,b,c) (p)->GetFormat(a,b,c) 01070 #define IDirectSoundCaptureBuffer_GetStatus(p,a) (p)->GetStatus(a) 01071 #define IDirectSoundCaptureBuffer_Initialize(p,a,b) (p)->Initialize(a,b) 01072 #define IDirectSoundCaptureBuffer_Lock(p,a,b,c,d,e,f,g) (p)->Lock(a,b,c,d,e,f,g) 01073 #define IDirectSoundCaptureBuffer_Start(p,a) (p)->Start(a) 01074 #define IDirectSoundCaptureBuffer_Stop(p) (p)->Stop() 01075 #define IDirectSoundCaptureBuffer_Unlock(p,a,b,c,d) (p)->Unlock(a,b,c,d) 01076 #endif // !defined(__cplusplus) || defined(CINTERFACE) 01077 01078 01079 #if DIRECTSOUND_VERSION >= 0x0800 01080 01081 // 01082 // IDirectSoundCaptureBuffer8 01083 // 01084 01085 DEFINE_GUID(IID_IDirectSoundCaptureBuffer8, 0x990df4, 0xdbb, 0x4872, 0x83, 0x3e, 0x6d, 0x30, 0x3e, 0x80, 0xae, 0xb6); 01086 01087 #undef INTERFACE 01088 #define INTERFACE IDirectSoundCaptureBuffer8 01089 01090 DECLARE_INTERFACE_(IDirectSoundCaptureBuffer8, IDirectSoundCaptureBuffer) 01091 { 01092 // IUnknown methods 01093 STDMETHOD(QueryInterface) (THIS_ REFIID, LPVOID *) PURE; 01094 STDMETHOD_(ULONG,AddRef) (THIS) PURE; 01095 STDMETHOD_(ULONG,Release) (THIS) PURE; 01096 01097 // IDirectSoundCaptureBuffer methods 01098 STDMETHOD(GetCaps) (THIS_ LPDSCBCAPS pDSCBCaps) PURE; 01099 STDMETHOD(GetCurrentPosition) (THIS_ LPDWORD pdwCapturePosition, LPDWORD pdwReadPosition) PURE; 01100 STDMETHOD(GetFormat) (THIS_ LPWAVEFORMATEX pwfxFormat, DWORD dwSizeAllocated, LPDWORD pdwSizeWritten) PURE; 01101 STDMETHOD(GetStatus) (THIS_ LPDWORD pdwStatus) PURE; 01102 STDMETHOD(Initialize) (THIS_ LPDIRECTSOUNDCAPTURE pDirectSoundCapture, LPCDSCBUFFERDESC pcDSCBufferDesc) PURE; 01103 STDMETHOD(Lock) (THIS_ DWORD dwOffset, DWORD dwBytes, LPVOID *ppvAudioPtr1, LPDWORD pdwAudioBytes1, 01104 LPVOID *ppvAudioPtr2, LPDWORD pdwAudioBytes2, DWORD dwFlags) PURE; 01105 STDMETHOD(Start) (THIS_ DWORD dwFlags) PURE; 01106 STDMETHOD(Stop) (THIS) PURE; 01107 STDMETHOD(Unlock) (THIS_ LPVOID pvAudioPtr1, DWORD dwAudioBytes1, LPVOID pvAudioPtr2, DWORD dwAudioBytes2) PURE; 01108 01109 // IDirectSoundCaptureBuffer8 methods 01110 STDMETHOD(GetObjectInPath) (THIS_ REFGUID rguidObject, DWORD dwIndex, REFGUID rguidInterface, LPVOID *ppObject) PURE; 01111 STDMETHOD(GetFXStatus) (DWORD dwFXCount, LPDWORD pdwFXStatus) PURE; 01112 }; 01113 01114 #define IDirectSoundCaptureBuffer8_QueryInterface(p,a,b) IUnknown_QueryInterface(p,a,b) 01115 #define IDirectSoundCaptureBuffer8_AddRef(p) IUnknown_AddRef(p) 01116 #define IDirectSoundCaptureBuffer8_Release(p) IUnknown_Release(p) 01117 01118 #define IDirectSoundCaptureBuffer8_GetCaps(p,a) IDirectSoundCaptureBuffer_GetCaps(p,a) 01119 #define IDirectSoundCaptureBuffer8_GetCurrentPosition(p,a,b) IDirectSoundCaptureBuffer_GetCurrentPosition(p,a,b) 01120 #define IDirectSoundCaptureBuffer8_GetFormat(p,a,b,c) IDirectSoundCaptureBuffer_GetFormat(p,a,b,c) 01121 #define IDirectSoundCaptureBuffer8_GetStatus(p,a) IDirectSoundCaptureBuffer_GetStatus(p,a) 01122 #define IDirectSoundCaptureBuffer8_Initialize(p,a,b) IDirectSoundCaptureBuffer_Initialize(p,a,b) 01123 #define IDirectSoundCaptureBuffer8_Lock(p,a,b,c,d,e,f,g) IDirectSoundCaptureBuffer_Lock(p,a,b,c,d,e,f,g) 01124 #define IDirectSoundCaptureBuffer8_Start(p,a) IDirectSoundCaptureBuffer_Start(p,a) 01125 #define IDirectSoundCaptureBuffer8_Stop(p) IDirectSoundCaptureBuffer_Stop(p)) 01126 #define IDirectSoundCaptureBuffer8_Unlock(p,a,b,c,d) IDirectSoundCaptureBuffer_Unlock(p,a,b,c,d) 01127 01128 #if !defined(__cplusplus) || defined(CINTERFACE) 01129 #define IDirectSoundCaptureBuffer8_GetObjectInPath(p,a,b,c,d) (p)->lpVtbl->GetObjectInPath(p,a,b,c,d) 01130 #define IDirectSoundCaptureBuffer8_GetFXStatus(p,a,b) (p)->lpVtbl->GetFXStatus(p,a,b) 01131 #else // !defined(__cplusplus) || defined(CINTERFACE) 01132 #define IDirectSoundCaptureBuffer8_GetObjectInPath(p,a,b,c,d) (p)->GetObjectInPath(a,b,c,d) 01133 #define IDirectSoundCaptureBuffer8_GetFXStatus(p,a,b) (p)->GetFXStatus(a,b) 01134 #endif // !defined(__cplusplus) || defined(CINTERFACE) 01135 01136 #endif // DIRECTSOUND_VERSION >= 0x0800 01137 01138 // 01139 // IDirectSoundNotify 01140 // 01141 01142 DEFINE_GUID(IID_IDirectSoundNotify, 0xb0210783, 0x89cd, 0x11d0, 0xaf, 0x8, 0x0, 0xa0, 0xc9, 0x25, 0xcd, 0x16); 01143 01144 #undef INTERFACE 01145 #define INTERFACE IDirectSoundNotify 01146 01147 DECLARE_INTERFACE_(IDirectSoundNotify, IUnknown) 01148 { 01149 // IUnknown methods 01150 STDMETHOD(QueryInterface) (THIS_ REFIID, LPVOID *) PURE; 01151 STDMETHOD_(ULONG,AddRef) (THIS) PURE; 01152 STDMETHOD_(ULONG,Release) (THIS) PURE; 01153 01154 // IDirectSoundNotify methods 01155 STDMETHOD(SetNotificationPositions) (THIS_ DWORD dwPositionNotifies, LPCDSBPOSITIONNOTIFY pcPositionNotifies) PURE; 01156 }; 01157 01158 #define IDirectSoundNotify_QueryInterface(p,a,b) IUnknown_QueryInterface(p,a,b) 01159 #define IDirectSoundNotify_AddRef(p) IUnknown_AddRef(p) 01160 #define IDirectSoundNotify_Release(p) IUnknown_Release(p) 01161 01162 #if !defined(__cplusplus) || defined(CINTERFACE) 01163 #define IDirectSoundNotify_SetNotificationPositions(p,a,b) (p)->lpVtbl->SetNotificationPositions(p,a,b) 01164 #else // !defined(__cplusplus) || defined(CINTERFACE) 01165 #define IDirectSoundNotify_SetNotificationPositions(p,a,b) (p)->SetNotificationPositions(a,b) 01166 #endif // !defined(__cplusplus) || defined(CINTERFACE) 01167 01168 // 01169 // IKsPropertySet 01170 // 01171 01172 #ifndef _IKsPropertySet_ 01173 #define _IKsPropertySet_ 01174 01175 #ifdef __cplusplus 01176 // 'struct' not 'class' per the way DECLARE_INTERFACE_ is defined 01177 struct IKsPropertySet; 01178 #endif // __cplusplus 01179 01180 typedef struct IKsPropertySet *LPKSPROPERTYSET; 01181 01182 #define KSPROPERTY_SUPPORT_GET 0x00000001 01183 #define KSPROPERTY_SUPPORT_SET 0x00000002 01184 01185 DEFINE_GUID(IID_IKsPropertySet, 0x31efac30, 0x515c, 0x11d0, 0xa9, 0xaa, 0x00, 0xaa, 0x00, 0x61, 0xbe, 0x93); 01186 01187 #undef INTERFACE 01188 #define INTERFACE IKsPropertySet 01189 01190 DECLARE_INTERFACE_(IKsPropertySet, IUnknown) 01191 { 01192 // IUnknown methods 01193 STDMETHOD(QueryInterface) (THIS_ REFIID, LPVOID *) PURE; 01194 STDMETHOD_(ULONG,AddRef) (THIS) PURE; 01195 STDMETHOD_(ULONG,Release) (THIS) PURE; 01196 01197 // IKsPropertySet methods 01198 STDMETHOD(Get) (THIS_ REFGUID rguidPropSet, ULONG ulId, LPVOID pInstanceData, ULONG ulInstanceLength, 01199 LPVOID pPropertyData, ULONG ulDataLength, PULONG pulBytesReturned) PURE; 01200 STDMETHOD(Set) (THIS_ REFGUID rguidPropSet, ULONG ulId, LPVOID pInstanceData, ULONG ulInstanceLength, 01201 LPVOID pPropertyData, ULONG ulDataLength) PURE; 01202 STDMETHOD(QuerySupport) (THIS_ REFGUID rguidPropSet, ULONG ulId, PULONG pulTypeSupport) PURE; 01203 }; 01204 01205 #define IKsPropertySet_QueryInterface(p,a,b) IUnknown_QueryInterface(p,a,b) 01206 #define IKsPropertySet_AddRef(p) IUnknown_AddRef(p) 01207 #define IKsPropertySet_Release(p) IUnknown_Release(p) 01208 01209 #if !defined(__cplusplus) || defined(CINTERFACE) 01210 #define IKsPropertySet_Get(p,a,b,c,d,e,f,g) (p)->lpVtbl->Get(p,a,b,c,d,e,f,g) 01211 #define IKsPropertySet_Set(p,a,b,c,d,e,f) (p)->lpVtbl->Set(p,a,b,c,d,e,f) 01212 #define IKsPropertySet_QuerySupport(p,a,b,c) (p)->lpVtbl->QuerySupport(p,a,b,c) 01213 #else // !defined(__cplusplus) || defined(CINTERFACE) 01214 #define IKsPropertySet_Get(p,a,b,c,d,e,f,g) (p)->Get(a,b,c,d,e,f,g) 01215 #define IKsPropertySet_Set(p,a,b,c,d,e,f) (p)->Set(a,b,c,d,e,f) 01216 #define IKsPropertySet_QuerySupport(p,a,b,c) (p)->QuerySupport(a,b,c) 01217 #endif // !defined(__cplusplus) || defined(CINTERFACE) 01218 01219 #endif // _IKsPropertySet_ 01220 01221 #if DIRECTSOUND_VERSION >= 0x0800 01222 01223 // 01224 // IDirectSoundFXGargle 01225 // 01226 01227 DEFINE_GUID(IID_IDirectSoundFXGargle, 0xd616f352, 0xd622, 0x11ce, 0xaa, 0xc5, 0x00, 0x20, 0xaf, 0x0b, 0x99, 0xa3); 01228 01229 typedef struct _DSFXGargle 01230 { 01231 DWORD dwRateHz; // Rate of modulation in hz 01232 DWORD dwWaveShape; // DSFXGARGLE_WAVE_xxx 01233 } DSFXGargle, *LPDSFXGargle; 01234 01235 #define DSFXGARGLE_WAVE_TRIANGLE 0 01236 #define DSFXGARGLE_WAVE_SQUARE 1 01237 01238 typedef const DSFXGargle *LPCDSFXGargle; 01239 01240 #define DSFXGARGLE_RATEHZ_MIN 1 01241 #define DSFXGARGLE_RATEHZ_MAX 1000 01242 01243 #undef INTERFACE 01244 #define INTERFACE IDirectSoundFXGargle 01245 01246 DECLARE_INTERFACE_(IDirectSoundFXGargle, IUnknown) 01247 { 01248 // IUnknown methods 01249 STDMETHOD(QueryInterface) (THIS_ REFIID, LPVOID *) PURE; 01250 STDMETHOD_(ULONG,AddRef) (THIS) PURE; 01251 STDMETHOD_(ULONG,Release) (THIS) PURE; 01252 01253 // IDirectSoundFXGargle methods 01254 STDMETHOD(SetAllParameters) (THIS_ LPCDSFXGargle pcDsFxGargle) PURE; 01255 STDMETHOD(GetAllParameters) (THIS_ LPDSFXGargle pDsFxGargle) PURE; 01256 }; 01257 01258 #define IDirectSoundFXGargle_QueryInterface(p,a,b) IUnknown_QueryInterface(p,a,b) 01259 #define IDirectSoundFXGargle_AddRef(p) IUnknown_AddRef(p) 01260 #define IDirectSoundFXGargle_Release(p) IUnknown_Release(p) 01261 01262 #if !defined(__cplusplus) || defined(CINTERFACE) 01263 #define IDirectSoundFXGargle_SetAllParameters(p,a) (p)->lpVtbl->SetAllParameters(p,a) 01264 #define IDirectSoundFXGargle_GetAllParameters(p,a) (p)->lpVtbl->GetAllParameters(p,a) 01265 #else // !defined(__cplusplus) || defined(CINTERFACE) 01266 #define IDirectSoundFXGargle_SetAllParameters(p,a) (p)->SetAllParameters(a) 01267 #define IDirectSoundFXGargle_GetAllParameters(p,a) (p)->GetAllParameters(a) 01268 #endif // !defined(__cplusplus) || defined(CINTERFACE) 01269 01270 // 01271 // IDirectSoundFXChorus 01272 // 01273 01274 DEFINE_GUID(IID_IDirectSoundFXChorus, 0x880842e3, 0x145f, 0x43e6, 0xa9, 0x34, 0xa7, 0x18, 0x06, 0xe5, 0x05, 0x47); 01275 01276 typedef struct _DSFXChorus 01277 { 01278 FLOAT fWetDryMix; 01279 FLOAT fDepth; 01280 FLOAT fFeedback; 01281 FLOAT fFrequency; 01282 LONG lWaveform; // LFO shape; DSFXCHORUS_WAVE_xxx 01283 FLOAT fDelay; 01284 LONG lPhase; 01285 } DSFXChorus, *LPDSFXChorus; 01286 01287 typedef const DSFXChorus *LPCDSFXChorus; 01288 01289 #define DSFXCHORUS_WAVE_TRIANGLE 0 01290 #define DSFXCHORUS_WAVE_SIN 1 01291 01292 #define DSFXCHORUS_WETDRYMIX_MIN 0.0f 01293 #define DSFXCHORUS_WETDRYMIX_MAX 100.0f 01294 #define DSFXCHORUS_DEPTH_MIN 0.0f 01295 #define DSFXCHORUS_DEPTH_MAX 100.0f 01296 #define DSFXCHORUS_FEEDBACK_MIN -99.0f 01297 #define DSFXCHORUS_FEEDBACK_MAX 99.0f 01298 #define DSFXCHORUS_FREQUENCY_MIN 0.0f 01299 #define DSFXCHORUS_FREQUENCY_MAX 10.0f 01300 #define DSFXCHORUS_DELAY_MIN 0.0f 01301 #define DSFXCHORUS_DELAY_MAX 20.0f 01302 #define DSFXCHORUS_PHASE_MIN 0 01303 #define DSFXCHORUS_PHASE_MAX 4 01304 01305 #define DSFXCHORUS_PHASE_NEG_180 0 01306 #define DSFXCHORUS_PHASE_NEG_90 1 01307 #define DSFXCHORUS_PHASE_ZERO 2 01308 #define DSFXCHORUS_PHASE_90 3 01309 #define DSFXCHORUS_PHASE_180 4 01310 01311 #undef INTERFACE 01312 #define INTERFACE IDirectSoundFXChorus 01313 01314 DECLARE_INTERFACE_(IDirectSoundFXChorus, IUnknown) 01315 { 01316 // IUnknown methods 01317 STDMETHOD(QueryInterface) (THIS_ REFIID, LPVOID *) PURE; 01318 STDMETHOD_(ULONG,AddRef) (THIS) PURE; 01319 STDMETHOD_(ULONG,Release) (THIS) PURE; 01320 01321 // IDirectSoundFXChorus methods 01322 STDMETHOD(SetAllParameters) (THIS_ LPCDSFXChorus pcDsFxChorus) PURE; 01323 STDMETHOD(GetAllParameters) (THIS_ LPDSFXChorus pDsFxChorus) PURE; 01324 }; 01325 01326 #define IDirectSoundFXChorus_QueryInterface(p,a,b) IUnknown_QueryInterface(p,a,b) 01327 #define IDirectSoundFXChorus_AddRef(p) IUnknown_AddRef(p) 01328 #define IDirectSoundFXChorus_Release(p) IUnknown_Release(p) 01329 01330 #if !defined(__cplusplus) || defined(CINTERFACE) 01331 #define IDirectSoundFXChorus_SetAllParameters(p,a) (p)->lpVtbl->SetAllParameters(p,a) 01332 #define IDirectSoundFXChorus_GetAllParameters(p,a) (p)->lpVtbl->GetAllParameters(p,a) 01333 #else // !defined(__cplusplus) || defined(CINTERFACE) 01334 #define IDirectSoundFXChorus_SetAllParameters(p,a) (p)->SetAllParameters(a) 01335 #define IDirectSoundFXChorus_GetAllParameters(p,a) (p)->GetAllParameters(a) 01336 #endif // !defined(__cplusplus) || defined(CINTERFACE) 01337 01338 // 01339 // IDirectSoundFXFlanger 01340 // 01341 01342 DEFINE_GUID(IID_IDirectSoundFXFlanger, 0x903e9878, 0x2c92, 0x4072, 0x9b, 0x2c, 0xea, 0x68, 0xf5, 0x39, 0x67, 0x83); 01343 01344 typedef struct _DSFXFlanger 01345 { 01346 FLOAT fWetDryMix; 01347 FLOAT fDepth; 01348 FLOAT fFeedback; 01349 FLOAT fFrequency; 01350 LONG lWaveform; 01351 FLOAT fDelay; 01352 LONG lPhase; 01353 } DSFXFlanger, *LPDSFXFlanger; 01354 01355 typedef const DSFXFlanger *LPCDSFXFlanger; 01356 01357 #define DSFXFLANGER_WAVE_TRIANGLE 0 01358 #define DSFXFLANGER_WAVE_SIN 1 01359 01360 #define DSFXFLANGER_WETDRYMIX_MIN 0.0f 01361 #define DSFXFLANGER_WETDRYMIX_MAX 100.0f 01362 #define DSFXFLANGER_FREQUENCY_MIN 0.0f 01363 #define DSFXFLANGER_FREQUENCY_MAX 10.0f 01364 #define DSFXFLANGER_DEPTH_MIN 0.0f 01365 #define DSFXFLANGER_DEPTH_MAX 100.0f 01366 #define DSFXFLANGER_PHASE_MIN 0 01367 #define DSFXFLANGER_PHASE_MAX 4 01368 #define DSFXFLANGER_FEEDBACK_MIN -99.0f 01369 #define DSFXFLANGER_FEEDBACK_MAX 99.0f 01370 #define DSFXFLANGER_DELAY_MIN 0.0f 01371 #define DSFXFLANGER_DELAY_MAX 4.0f 01372 01373 #define DSFXFLANGER_PHASE_NEG_180 0 01374 #define DSFXFLANGER_PHASE_NEG_90 1 01375 #define DSFXFLANGER_PHASE_ZERO 2 01376 #define DSFXFLANGER_PHASE_90 3 01377 #define DSFXFLANGER_PHASE_180 4 01378 01379 #undef INTERFACE 01380 #define INTERFACE IDirectSoundFXFlanger 01381 01382 DECLARE_INTERFACE_(IDirectSoundFXFlanger, IUnknown) 01383 { 01384 // IUnknown methods 01385 STDMETHOD(QueryInterface) (THIS_ REFIID, LPVOID *) PURE; 01386 STDMETHOD_(ULONG,AddRef) (THIS) PURE; 01387 STDMETHOD_(ULONG,Release) (THIS) PURE; 01388 01389 // IDirectSoundFXFlanger methods 01390 STDMETHOD(SetAllParameters) (THIS_ LPCDSFXFlanger pcDsFxFlanger) PURE; 01391 STDMETHOD(GetAllParameters) (THIS_ LPDSFXFlanger pDsFxFlanger) PURE; 01392 }; 01393 01394 #define IDirectSoundFXFlanger_QueryInterface(p,a,b) IUnknown_QueryInterface(p,a,b) 01395 #define IDirectSoundFXFlanger_AddRef(p) IUnknown_AddRef(p) 01396 #define IDirectSoundFXFlanger_Release(p) IUnknown_Release(p) 01397 01398 #if !defined(__cplusplus) || defined(CINTERFACE) 01399 #define IDirectSoundFXFlanger_SetAllParameters(p,a) (p)->lpVtbl->SetAllParameters(p,a) 01400 #define IDirectSoundFXFlanger_GetAllParameters(p,a) (p)->lpVtbl->GetAllParameters(p,a) 01401 #else // !defined(__cplusplus) || defined(CINTERFACE) 01402 #define IDirectSoundFXFlanger_SetAllParameters(p,a) (p)->SetAllParameters(a) 01403 #define IDirectSoundFXFlanger_GetAllParameters(p,a) (p)->GetAllParameters(a) 01404 #endif // !defined(__cplusplus) || defined(CINTERFACE) 01405 01406 // 01407 // IDirectSoundFXEcho 01408 // 01409 01410 DEFINE_GUID(IID_IDirectSoundFXEcho, 0x8bd28edf, 0x50db, 0x4e92, 0xa2, 0xbd, 0x44, 0x54, 0x88, 0xd1, 0xed, 0x42); 01411 01412 typedef struct _DSFXEcho 01413 { 01414 FLOAT fWetDryMix; 01415 FLOAT fFeedback; 01416 FLOAT fLeftDelay; 01417 FLOAT fRightDelay; 01418 LONG lPanDelay; 01419 } DSFXEcho, *LPDSFXEcho; 01420 01421 typedef const DSFXEcho *LPCDSFXEcho; 01422 01423 #define DSFXECHO_WETDRYMIX_MIN 0.0f 01424 #define DSFXECHO_WETDRYMIX_MAX 100.0f 01425 #define DSFXECHO_FEEDBACK_MIN 0.0f 01426 #define DSFXECHO_FEEDBACK_MAX 100.0f 01427 #define DSFXECHO_LEFTDELAY_MIN 1.0f 01428 #define DSFXECHO_LEFTDELAY_MAX 2000.0f 01429 #define DSFXECHO_RIGHTDELAY_MIN 1.0f 01430 #define DSFXECHO_RIGHTDELAY_MAX 2000.0f 01431 #define DSFXECHO_PANDELAY_MIN 0 01432 #define DSFXECHO_PANDELAY_MAX 1 01433 01434 #undef INTERFACE 01435 #define INTERFACE IDirectSoundFXEcho 01436 01437 DECLARE_INTERFACE_(IDirectSoundFXEcho, IUnknown) 01438 { 01439 // IUnknown methods 01440 STDMETHOD(QueryInterface) (THIS_ REFIID, LPVOID *) PURE; 01441 STDMETHOD_(ULONG,AddRef) (THIS) PURE; 01442 STDMETHOD_(ULONG,Release) (THIS) PURE; 01443 01444 // IDirectSoundFXEcho methods 01445 STDMETHOD(SetAllParameters) (THIS_ LPCDSFXEcho pcDsFxEcho) PURE; 01446 STDMETHOD(GetAllParameters) (THIS_ LPDSFXEcho pDsFxEcho) PURE; 01447 }; 01448 01449 #define IDirectSoundFXEcho_QueryInterface(p,a,b) IUnknown_QueryInterface(p,a,b) 01450 #define IDirectSoundFXEcho_AddRef(p) IUnknown_AddRef(p) 01451 #define IDirectSoundFXEcho_Release(p) IUnknown_Release(p) 01452 01453 #if !defined(__cplusplus) || defined(CINTERFACE) 01454 #define IDirectSoundFXEcho_SetAllParameters(p,a) (p)->lpVtbl->SetAllParameters(p,a) 01455 #define IDirectSoundFXEcho_GetAllParameters(p,a) (p)->lpVtbl->GetAllParameters(p,a) 01456 #else // !defined(__cplusplus) || defined(CINTERFACE) 01457 #define IDirectSoundFXEcho_SetAllParameters(p,a) (p)->SetAllParameters(a) 01458 #define IDirectSoundFXEcho_GetAllParameters(p,a) (p)->GetAllParameters(a) 01459 #endif // !defined(__cplusplus) || defined(CINTERFACE) 01460 01461 // 01462 // IDirectSoundFXDistortion 01463 // 01464 01465 DEFINE_GUID(IID_IDirectSoundFXDistortion, 0x8ecf4326, 0x455f, 0x4d8b, 0xbd, 0xa9, 0x8d, 0x5d, 0x3e, 0x9e, 0x3e, 0x0b); 01466 01467 typedef struct _DSFXDistortion 01468 { 01469 FLOAT fGain; 01470 FLOAT fEdge; 01471 FLOAT fPostEQCenterFrequency; 01472 FLOAT fPostEQBandwidth; 01473 FLOAT fPreLowpassCutoff; 01474 } DSFXDistortion, *LPDSFXDistortion; 01475 01476 typedef const DSFXDistortion *LPCDSFXDistortion; 01477 01478 #define DSFXDISTORTION_GAIN_MIN -60.0f 01479 #define DSFXDISTORTION_GAIN_MAX 0.0f 01480 #define DSFXDISTORTION_EDGE_MIN 0.0f 01481 #define DSFXDISTORTION_EDGE_MAX 100.0f 01482 #define DSFXDISTORTION_POSTEQCENTERFREQUENCY_MIN 100.0f 01483 #define DSFXDISTORTION_POSTEQCENTERFREQUENCY_MAX 8000.0f 01484 #define DSFXDISTORTION_POSTEQBANDWIDTH_MIN 100.0f 01485 #define DSFXDISTORTION_POSTEQBANDWIDTH_MAX 8000.0f 01486 #define DSFXDISTORTION_PRELOWPASSCUTOFF_MIN 100.0f 01487 #define DSFXDISTORTION_PRELOWPASSCUTOFF_MAX 8000.0f 01488 01489 #undef INTERFACE 01490 #define INTERFACE IDirectSoundFXDistortion 01491 01492 DECLARE_INTERFACE_(IDirectSoundFXDistortion, IUnknown) 01493 { 01494 // IUnknown methods 01495 STDMETHOD(QueryInterface) (THIS_ REFIID, LPVOID *) PURE; 01496 STDMETHOD_(ULONG,AddRef) (THIS) PURE; 01497 STDMETHOD_(ULONG,Release) (THIS) PURE; 01498 01499 // IDirectSoundFXDistortion methods 01500 STDMETHOD(SetAllParameters) (THIS_ LPCDSFXDistortion pcDsFxDistortion) PURE; 01501 STDMETHOD(GetAllParameters) (THIS_ LPDSFXDistortion pDsFxDistortion) PURE; 01502 }; 01503 01504 #define IDirectSoundFXDistortion_QueryInterface(p,a,b) IUnknown_QueryInterface(p,a,b) 01505 #define IDirectSoundFXDistortion_AddRef(p) IUnknown_AddRef(p) 01506 #define IDirectSoundFXDistortion_Release(p) IUnknown_Release(p) 01507 01508 #if !defined(__cplusplus) || defined(CINTERFACE) 01509 #define IDirectSoundFXDistortion_SetAllParameters(p,a) (p)->lpVtbl->SetAllParameters(p,a) 01510 #define IDirectSoundFXDistortion_GetAllParameters(p,a) (p)->lpVtbl->GetAllParameters(p,a) 01511 #else // !defined(__cplusplus) || defined(CINTERFACE) 01512 #define IDirectSoundFXDistortion_SetAllParameters(p,a) (p)->SetAllParameters(a) 01513 #define IDirectSoundFXDistortion_GetAllParameters(p,a) (p)->GetAllParameters(a) 01514 #endif // !defined(__cplusplus) || defined(CINTERFACE) 01515 01516 // 01517 // IDirectSoundFXCompressor 01518 // 01519 01520 DEFINE_GUID(IID_IDirectSoundFXCompressor, 0x4bbd1154, 0x62f6, 0x4e2c, 0xa1, 0x5c, 0xd3, 0xb6, 0xc4, 0x17, 0xf7, 0xa0); 01521 01522 typedef struct _DSFXCompressor 01523 { 01524 FLOAT fGain; 01525 FLOAT fAttack; 01526 FLOAT fRelease; 01527 FLOAT fThreshold; 01528 FLOAT fRatio; 01529 FLOAT fPredelay; 01530 } DSFXCompressor, *LPDSFXCompressor; 01531 01532 typedef const DSFXCompressor *LPCDSFXCompressor; 01533 01534 #define DSFXCOMPRESSOR_GAIN_MIN -60.0f 01535 #define DSFXCOMPRESSOR_GAIN_MAX 60.0f 01536 #define DSFXCOMPRESSOR_ATTACK_MIN 0.01f 01537 #define DSFXCOMPRESSOR_ATTACK_MAX 500.0f 01538 #define DSFXCOMPRESSOR_RELEASE_MIN 50.0f 01539 #define DSFXCOMPRESSOR_RELEASE_MAX 3000.0f 01540 #define DSFXCOMPRESSOR_THRESHOLD_MIN -60.0f 01541 #define DSFXCOMPRESSOR_THRESHOLD_MAX 0.0f 01542 #define DSFXCOMPRESSOR_RATIO_MIN 1.0f 01543 #define DSFXCOMPRESSOR_RATIO_MAX 100.0f 01544 #define DSFXCOMPRESSOR_PREDELAY_MIN 0.0f 01545 #define DSFXCOMPRESSOR_PREDELAY_MAX 4.0f 01546 01547 #undef INTERFACE 01548 #define INTERFACE IDirectSoundFXCompressor 01549 01550 DECLARE_INTERFACE_(IDirectSoundFXCompressor, IUnknown) 01551 { 01552 // IUnknown methods 01553 STDMETHOD(QueryInterface) (THIS_ REFIID, LPVOID *) PURE; 01554 STDMETHOD_(ULONG,AddRef) (THIS) PURE; 01555 STDMETHOD_(ULONG,Release) (THIS) PURE; 01556 01557 // IDirectSoundFXCompressor methods 01558 STDMETHOD(SetAllParameters) (THIS_ LPCDSFXCompressor pcDsFxCompressor) PURE; 01559 STDMETHOD(GetAllParameters) (THIS_ LPDSFXCompressor pDsFxCompressor) PURE; 01560 }; 01561 01562 #define IDirectSoundFXCompressor_QueryInterface(p,a,b) IUnknown_QueryInterface(p,a,b) 01563 #define IDirectSoundFXCompressor_AddRef(p) IUnknown_AddRef(p) 01564 #define IDirectSoundFXCompressor_Release(p) IUnknown_Release(p) 01565 01566 #if !defined(__cplusplus) || defined(CINTERFACE) 01567 #define IDirectSoundFXCompressor_SetAllParameters(p,a) (p)->lpVtbl->SetAllParameters(p,a) 01568 #define IDirectSoundFXCompressor_GetAllParameters(p,a) (p)->lpVtbl->GetAllParameters(p,a) 01569 #else // !defined(__cplusplus) || defined(CINTERFACE) 01570 #define IDirectSoundFXCompressor_SetAllParameters(p,a) (p)->SetAllParameters(a) 01571 #define IDirectSoundFXCompressor_GetAllParameters(p,a) (p)->GetAllParameters(a) 01572 #endif // !defined(__cplusplus) || defined(CINTERFACE) 01573 01574 // 01575 // IDirectSoundFXParamEq 01576 // 01577 01578 DEFINE_GUID(IID_IDirectSoundFXParamEq, 0xc03ca9fe, 0xfe90, 0x4204, 0x80, 0x78, 0x82, 0x33, 0x4c, 0xd1, 0x77, 0xda); 01579 01580 typedef struct _DSFXParamEq 01581 { 01582 FLOAT fCenter; 01583 FLOAT fBandwidth; 01584 FLOAT fGain; 01585 } DSFXParamEq, *LPDSFXParamEq; 01586 01587 typedef const DSFXParamEq *LPCDSFXParamEq; 01588 01589 #define DSFXPARAMEQ_CENTER_MIN 80.0f 01590 #define DSFXPARAMEQ_CENTER_MAX 16000.0f 01591 #define DSFXPARAMEQ_BANDWIDTH_MIN 1.0f 01592 #define DSFXPARAMEQ_BANDWIDTH_MAX 36.0f 01593 #define DSFXPARAMEQ_GAIN_MIN -15.0f 01594 #define DSFXPARAMEQ_GAIN_MAX 15.0f 01595 01596 #undef INTERFACE 01597 #define INTERFACE IDirectSoundFXParamEq 01598 01599 DECLARE_INTERFACE_(IDirectSoundFXParamEq, IUnknown) 01600 { 01601 // IUnknown methods 01602 STDMETHOD(QueryInterface) (THIS_ REFIID, LPVOID *) PURE; 01603 STDMETHOD_(ULONG,AddRef) (THIS) PURE; 01604 STDMETHOD_(ULONG,Release) (THIS) PURE; 01605 01606 // IDirectSoundFXParamEq methods 01607 STDMETHOD(SetAllParameters) (THIS_ LPCDSFXParamEq pcDsFxParamEq) PURE; 01608 STDMETHOD(GetAllParameters) (THIS_ LPDSFXParamEq pDsFxParamEq) PURE; 01609 }; 01610 01611 #define IDirectSoundFXParamEq_QueryInterface(p,a,b) IUnknown_QueryInterface(p,a,b) 01612 #define IDirectSoundFXParamEq_AddRef(p) IUnknown_AddRef(p) 01613 #define IDirectSoundFXParamEq_Release(p) IUnknown_Release(p) 01614 01615 #if !defined(__cplusplus) || defined(CINTERFACE) 01616 #define IDirectSoundFXParamEq_SetAllParameters(p,a) (p)->lpVtbl->SetAllParameters(p,a) 01617 #define IDirectSoundFXParamEq_GetAllParameters(p,a) (p)->lpVtbl->GetAllParameters(p,a) 01618 #else // !defined(__cplusplus) || defined(CINTERFACE) 01619 #define IDirectSoundFXParamEq_SetAllParameters(p,a) (p)->SetAllParameters(a) 01620 #define IDirectSoundFXParamEq_GetAllParameters(p,a) (p)->GetAllParameters(a) 01621 #endif // !defined(__cplusplus) || defined(CINTERFACE) 01622 01623 01624 // 01625 // IDirectSoundFXI3DL2Reverb 01626 // 01627 01628 DEFINE_GUID(IID_IDirectSoundFXI3DL2Reverb, 0x4b166a6a, 0x0d66, 0x43f3, 0x80, 0xe3, 0xee, 0x62, 0x80, 0xde, 0xe1, 0xa4); 01629 01630 typedef struct _DSFXI3DL2Reverb 01631 { 01632 LONG lRoom; // [-10000, 0] default: -1000 mB 01633 LONG lRoomHF; // [-10000, 0] default: 0 mB 01634 FLOAT flRoomRolloffFactor; // [0.0, 10.0] default: 0.0 01635 FLOAT flDecayTime; // [0.1, 20.0] default: 1.49s 01636 FLOAT flDecayHFRatio; // [0.1, 2.0] default: 0.83 01637 LONG lReflections; // [-10000, 1000] default: -2602 mB 01638 FLOAT flReflectionsDelay; // [0.0, 0.3] default: 0.007 s 01639 LONG lReverb; // [-10000, 2000] default: 200 mB 01640 FLOAT flReverbDelay; // [0.0, 0.1] default: 0.011 s 01641 FLOAT flDiffusion; // [0.0, 100.0] default: 100.0 % 01642 FLOAT flDensity; // [0.0, 100.0] default: 100.0 % 01643 FLOAT flHFReference; // [20.0, 20000.0] default: 5000.0 Hz 01644 } DSFXI3DL2Reverb, *LPDSFXI3DL2Reverb; 01645 01646 typedef const DSFXI3DL2Reverb *LPCDSFXI3DL2Reverb; 01647 01648 #define DSFX_I3DL2REVERB_ROOM_MIN (-10000) 01649 #define DSFX_I3DL2REVERB_ROOM_MAX 0 01650 #define DSFX_I3DL2REVERB_ROOM_DEFAULT (-1000) 01651 01652 #define DSFX_I3DL2REVERB_ROOMHF_MIN (-10000) 01653 #define DSFX_I3DL2REVERB_ROOMHF_MAX 0 01654 #define DSFX_I3DL2REVERB_ROOMHF_DEFAULT (-100) 01655 01656 #define DSFX_I3DL2REVERB_ROOMROLLOFFFACTOR_MIN 0.0f 01657 #define DSFX_I3DL2REVERB_ROOMROLLOFFFACTOR_MAX 10.0f 01658 #define DSFX_I3DL2REVERB_ROOMROLLOFFFACTOR_DEFAULT 0.0f 01659 01660 #define DSFX_I3DL2REVERB_DECAYTIME_MIN 0.1f 01661 #define DSFX_I3DL2REVERB_DECAYTIME_MAX 20.0f 01662 #define DSFX_I3DL2REVERB_DECAYTIME_DEFAULT 1.49f 01663 01664 #define DSFX_I3DL2REVERB_DECAYHFRATIO_MIN 0.1f 01665 #define DSFX_I3DL2REVERB_DECAYHFRATIO_MAX 2.0f 01666 #define DSFX_I3DL2REVERB_DECAYHFRATIO_DEFAULT 0.83f 01667 01668 #define DSFX_I3DL2REVERB_REFLECTIONS_MIN (-10000) 01669 #define DSFX_I3DL2REVERB_REFLECTIONS_MAX 1000 01670 #define DSFX_I3DL2REVERB_REFLECTIONS_DEFAULT (-2602) 01671 01672 #define DSFX_I3DL2REVERB_REFLECTIONSDELAY_MIN 0.0f 01673 #define DSFX_I3DL2REVERB_REFLECTIONSDELAY_MAX 0.3f 01674 #define DSFX_I3DL2REVERB_REFLECTIONSDELAY_DEFAULT 0.007f 01675 01676 #define DSFX_I3DL2REVERB_REVERB_MIN (-10000) 01677 #define DSFX_I3DL2REVERB_REVERB_MAX 2000 01678 #define DSFX_I3DL2REVERB_REVERB_DEFAULT (200) 01679 01680 #define DSFX_I3DL2REVERB_REVERBDELAY_MIN 0.0f 01681 #define DSFX_I3DL2REVERB_REVERBDELAY_MAX 0.1f 01682 #define DSFX_I3DL2REVERB_REVERBDELAY_DEFAULT 0.011f 01683 01684 #define DSFX_I3DL2REVERB_DIFFUSION_MIN 0.0f 01685 #define DSFX_I3DL2REVERB_DIFFUSION_MAX 100.0f 01686 #define DSFX_I3DL2REVERB_DIFFUSION_DEFAULT 100.0f 01687 01688 #define DSFX_I3DL2REVERB_DENSITY_MIN 0.0f 01689 #define DSFX_I3DL2REVERB_DENSITY_MAX 100.0f 01690 #define DSFX_I3DL2REVERB_DENSITY_DEFAULT 100.0f 01691 01692 #define DSFX_I3DL2REVERB_HFREFERENCE_MIN 20.0f 01693 #define DSFX_I3DL2REVERB_HFREFERENCE_MAX 20000.0f 01694 #define DSFX_I3DL2REVERB_HFREFERENCE_DEFAULT 5000.0f 01695 01696 #define DSFX_I3DL2REVERB_QUALITY_MIN 0 01697 #define DSFX_I3DL2REVERB_QUALITY_MAX 3 01698 #define DSFX_I3DL2REVERB_QUALITY_DEFAULT 2 01699 01700 #undef INTERFACE 01701 #define INTERFACE IDirectSoundFXI3DL2Reverb 01702 01703 DECLARE_INTERFACE_(IDirectSoundFXI3DL2Reverb, IUnknown) 01704 { 01705 // IUnknown methods 01706 STDMETHOD(QueryInterface) (THIS_ REFIID, LPVOID *) PURE; 01707 STDMETHOD_(ULONG,AddRef) (THIS) PURE; 01708 STDMETHOD_(ULONG,Release) (THIS) PURE; 01709 01710 // IDirectSoundFXI3DL2Reverb methods 01711 STDMETHOD(SetAllParameters) (THIS_ LPCDSFXI3DL2Reverb pcDsFxI3DL2Reverb) PURE; 01712 STDMETHOD(GetAllParameters) (THIS_ LPDSFXI3DL2Reverb pDsFxI3DL2Reverb) PURE; 01713 STDMETHOD(SetPreset) (THIS_ DWORD dwPreset) PURE; 01714 STDMETHOD(GetPreset) (THIS_ LPDWORD pdwPreset) PURE; 01715 STDMETHOD(SetQuality) (THIS_ LONG lQuality) PURE; 01716 STDMETHOD(GetQuality) (THIS_ LONG *plQuality) PURE; 01717 }; 01718 01719 #define IDirectSoundFXI3DL2Reverb_QueryInterface(p,a,b) IUnknown_QueryInterface(p,a,b) 01720 #define IDirectSoundFXI3DL2Reverb_AddRef(p) IUnknown_AddRef(p) 01721 #define IDirectSoundFXI3DL2Reverb_Release(p) IUnknown_Release(p) 01722 01723 #if !defined(__cplusplus) || defined(CINTERFACE) 01724 #define IDirectSoundFXI3DL2Reverb_SetAllParameters(p,a) (p)->lpVtbl->SetAllParameters(p,a) 01725 #define IDirectSoundFXI3DL2Reverb_GetAllParameters(p,a) (p)->lpVtbl->GetAllParameters(p,a) 01726 #define IDirectSoundFXI3DL2Reverb_SetPreset(p,a) (p)->lpVtbl->SetPreset(p,a) 01727 #define IDirectSoundFXI3DL2Reverb_GetPreset(p,a) (p)->lpVtbl->GetPreset(p,a) 01728 #else // !defined(__cplusplus) || defined(CINTERFACE) 01729 #define IDirectSoundFXI3DL2Reverb_SetAllParameters(p,a) (p)->SetAllParameters(a) 01730 #define IDirectSoundFXI3DL2Reverb_GetAllParameters(p,a) (p)->GetAllParameters(a) 01731 #define IDirectSoundFXI3DL2Reverb_SetPreset(p,a) (p)->SetPreset(a) 01732 #define IDirectSoundFXI3DL2Reverb_GetPreset(p,a) (p)->GetPreset(a) 01733 #endif // !defined(__cplusplus) || defined(CINTERFACE) 01734 01735 01736 // 01737 // IDirectSoundFXWavesReverb 01738 // 01739 01740 DEFINE_GUID(IID_IDirectSoundFXWavesReverb,0x46858c3a,0x0dc6,0x45e3,0xb7,0x60,0xd4,0xee,0xf1,0x6c,0xb3,0x25); 01741 01742 typedef struct _DSFXWavesReverb 01743 { 01744 FLOAT fInGain; // [-96.0,0.0] default: 0.0 dB 01745 FLOAT fReverbMix; // [-96.0,0.0] default: 0.0 db 01746 FLOAT fReverbTime; // [0.001,3000.0] default: 1000.0 ms 01747 FLOAT fHighFreqRTRatio; // [0.001,0.999] default: 0.001 01748 } DSFXWavesReverb, *LPDSFXWavesReverb; 01749 01750 typedef const DSFXWavesReverb *LPCDSFXWavesReverb; 01751 01752 #define DSFX_WAVESREVERB_INGAIN_MIN -96.0f 01753 #define DSFX_WAVESREVERB_INGAIN_MAX 0.0f 01754 #define DSFX_WAVESREVERB_INGAIN_DEFAULT 0.0f 01755 #define DSFX_WAVESREVERB_REVERBMIX_MIN -96.0f 01756 #define DSFX_WAVESREVERB_REVERBMIX_MAX 0.0f 01757 #define DSFX_WAVESREVERB_REVERBMIX_DEFAULT 0.0f 01758 #define DSFX_WAVESREVERB_REVERBTIME_MIN 0.001f 01759 #define DSFX_WAVESREVERB_REVERBTIME_MAX 3000.0f 01760 #define DSFX_WAVESREVERB_REVERBTIME_DEFAULT 1000.0f 01761 #define DSFX_WAVESREVERB_HIGHFREQRTRATIO_MIN 0.001f 01762 #define DSFX_WAVESREVERB_HIGHFREQRTRATIO_MAX 0.999f 01763 #define DSFX_WAVESREVERB_HIGHFREQRTRATIO_DEFAULT 0.001f 01764 01765 #undef INTERFACE 01766 #define INTERFACE IDirectSoundFXWavesReverb 01767 01768 DECLARE_INTERFACE_(IDirectSoundFXWavesReverb, IUnknown) 01769 { 01770 // IUnknown methods 01771 STDMETHOD(QueryInterface) (THIS_ REFIID, LPVOID *) PURE; 01772 STDMETHOD_(ULONG,AddRef) (THIS) PURE; 01773 STDMETHOD_(ULONG,Release) (THIS) PURE; 01774 01775 // IDirectSoundFXWavesReverb methods 01776 STDMETHOD(SetAllParameters) (THIS_ LPCDSFXWavesReverb pcDsFxWavesReverb) PURE; 01777 STDMETHOD(GetAllParameters) (THIS_ LPDSFXWavesReverb pDsFxWavesReverb) PURE; 01778 }; 01779 01780 #define IDirectSoundFXWavesReverb_QueryInterface(p,a,b) IUnknown_QueryInterface(p,a,b) 01781 #define IDirectSoundFXWavesReverb_AddRef(p) IUnknown_AddRef(p) 01782 #define IDirectSoundFXWavesReverb_Release(p) IUnknown_Release(p) 01783 01784 #if !defined(__cplusplus) || defined(CINTERFACE) 01785 #define IDirectSoundFXWavesReverb_SetAllParameters(p,a) (p)->lpVtbl->SetAllParameters(p,a) 01786 #define IDirectSoundFXWavesReverb_GetAllParameters(p,a) (p)->lpVtbl->GetAllParameters(p,a) 01787 #else // !defined(__cplusplus) || defined(CINTERFACE) 01788 #define IDirectSoundFXWavesReverb_SetAllParameters(p,a) (p)->SetAllParameters(a) 01789 #define IDirectSoundFXWavesReverb_GetAllParameters(p,a) (p)->GetAllParameters(a) 01790 #endif // !defined(__cplusplus) || defined(CINTERFACE) 01791 01792 // 01793 // IDirectSoundCaptureFXAec 01794 // 01795 01796 DEFINE_GUID(IID_IDirectSoundCaptureFXAec, 0x174d3eb9, 0x6696, 0x4fac, 0xa4, 0x6c, 0xa0, 0xac, 0x7b, 0xc9, 0xe2, 0xf); 01797 01798 typedef struct _DSCFXAec 01799 { 01800 BOOL fEnable; 01801 BOOL fReset; 01802 } DSCFXAec, *LPDSCFXAec; 01803 01804 typedef const DSCFXAec *LPCDSCFXAec; 01805 01806 #undef INTERFACE 01807 #define INTERFACE IDirectSoundCaptureFXAec 01808 01809 DECLARE_INTERFACE_(IDirectSoundCaptureFXAec, IUnknown) 01810 { 01811 // IUnknown methods 01812 STDMETHOD(QueryInterface) (THIS_ REFIID, LPVOID *) PURE; 01813 STDMETHOD_(ULONG,AddRef) (THIS) PURE; 01814 STDMETHOD_(ULONG,Release) (THIS) PURE; 01815 01816 // IDirectSoundCaptureFXAec methods 01817 STDMETHOD(SetAllParameters) (THIS_ LPCDSCFXAec pDscFxAec) PURE; 01818 STDMETHOD(GetAllParameters) (THIS_ LPDSCFXAec pDscFxAec) PURE; 01819 }; 01820 01821 #define IDirectSoundCaptureFXAec_QueryInterface(p,a,b) IUnknown_QueryInterface(p,a,b) 01822 #define IDirectSoundCaptureFXAec_AddRef(p) IUnknown_AddRef(p) 01823 #define IDirectSoundCaptureFXAec_Release(p) IUnknown_Release(p) 01824 01825 #if !defined(__cplusplus) || defined(CINTERFACE) 01826 #define IDirectSoundCaptureFXAec_SetAllParameters(p,a) (p)->lpVtbl->SetAllParameters(p,a) 01827 #define IDirectSoundCaptureFXAec_GetAllParameters(p,a) (p)->lpVtbl->GetAllParameters(p,a) 01828 #else // !defined(__cplusplus) || defined(CINTERFACE) 01829 #define IDirectSoundCaptureFXAec_SetAllParameters(p,a) (p)->SetAllParameters(a) 01830 #define IDirectSoundCaptureFXAec_GetAllParameters(p,a) (p)->GetAllParameters(a) 01831 #endif // !defined(__cplusplus) || defined(CINTERFACE) 01832 01833 01834 // 01835 // IDirectSoundCaptureFXNoiseSuppress 01836 // 01837 01838 DEFINE_GUID(IID_IDirectSoundCaptureFXNoiseSuppress, 0xed311e41, 0xfbae, 0x4175, 0x96, 0x25, 0xcd, 0x8, 0x54, 0xf6, 0x93, 0xca); 01839 01840 typedef struct _DSCFXNoiseSuppress 01841 { 01842 BOOL fEnable; 01843 BOOL fReset; 01844 } DSCFXNoiseSuppress, *LPDSCFXNoiseSuppress; 01845 01846 typedef const DSCFXNoiseSuppress *LPCDSCFXNoiseSuppress; 01847 01848 #undef INTERFACE 01849 #define INTERFACE IDirectSoundCaptureFXNoiseSuppress 01850 01851 DECLARE_INTERFACE_(IDirectSoundCaptureFXNoiseSuppress, IUnknown) 01852 { 01853 // IUnknown methods 01854 STDMETHOD(QueryInterface) (THIS_ REFIID, LPVOID *) PURE; 01855 STDMETHOD_(ULONG,AddRef) (THIS) PURE; 01856 STDMETHOD_(ULONG,Release) (THIS) PURE; 01857 01858 // IDirectSoundCaptureFXNoiseSuppress methods 01859 STDMETHOD(SetAllParameters) (THIS_ LPCDSCFXNoiseSuppress pcDscFxNoiseSuppress) PURE; 01860 STDMETHOD(GetAllParameters) (THIS_ LPDSCFXNoiseSuppress pDscFxNoiseSuppress) PURE; 01861 }; 01862 01863 #define IDirectSoundCaptureFXNoiseSuppress_QueryInterface(p,a,b) IUnknown_QueryInterface(p,a,b) 01864 #define IDirectSoundCaptureFXNoiseSuppress_AddRef(p) IUnknown_AddRef(p) 01865 #define IDirectSoundCaptureFXNoiseSuppress_Release(p) IUnknown_Release(p) 01866 01867 #if !defined(__cplusplus) || defined(CINTERFACE) 01868 #define IDirectSoundCaptureFXNoiseSuppress_SetAllParameters(p,a) (p)->lpVtbl->SetAllParameters(p,a) 01869 #define IDirectSoundCaptureFXNoiseSuppress_GetAllParameters(p,a) (p)->lpVtbl->GetAllParameters(p,a) 01870 #else // !defined(__cplusplus) || defined(CINTERFACE) 01871 #define IDirectSoundCaptureFXNoiseSuppress_SetAllParameters(p,a) (p)->SetAllParameters(a) 01872 #define IDirectSoundCaptureFXNoiseSuppress_GetAllParameters(p,a) (p)->GetAllParameters(a) 01873 #endif // !defined(__cplusplus) || defined(CINTERFACE) 01874 01875 01876 // 01877 // IDirectSoundFullDuplex 01878 // 01879 01880 #ifndef _IDirectSoundFullDuplex_ 01881 #define _IDirectSoundFullDuplex_ 01882 01883 #ifdef __cplusplus 01884 // 'struct' not 'class' per the way DECLARE_INTERFACE_ is defined 01885 struct IDirectSoundFullDuplex; 01886 #endif // __cplusplus 01887 01888 typedef struct IDirectSoundFullDuplex *LPDIRECTSOUNDFULLDUPLEX; 01889 01890 DEFINE_GUID(IID_IDirectSoundFullDuplex, 0xedcb4c7a, 0xdaab, 0x4216, 0xa4, 0x2e, 0x6c, 0x50, 0x59, 0x6d, 0xdc, 0x1d); 01891 01892 #undef INTERFACE 01893 #define INTERFACE IDirectSoundFullDuplex 01894 01895 DECLARE_INTERFACE_(IDirectSoundFullDuplex, IUnknown) 01896 { 01897 // IUnknown methods 01898 STDMETHOD(QueryInterface) (THIS_ REFIID, LPVOID *) PURE; 01899 STDMETHOD_(ULONG,AddRef) (THIS) PURE; 01900 STDMETHOD_(ULONG,Release) (THIS) PURE; 01901 01902 // IDirectSoundFullDuplex methods 01903 STDMETHOD(Initialize) (THIS_ LPCGUID pCaptureGuid, LPCGUID pRenderGuid, LPCDSCBUFFERDESC lpDscBufferDesc, LPCDSBUFFERDESC lpDsBufferDesc, HWND hWnd, DWORD dwLevel, LPLPDIRECTSOUNDCAPTUREBUFFER8 lplpDirectSoundCaptureBuffer8, LPLPDIRECTSOUNDBUFFER8 lplpDirectSoundBuffer8) PURE; 01904 }; 01905 01906 #define IDirectSoundFullDuplex_QueryInterface(p,a,b) IUnknown_QueryInterface(p,a,b) 01907 #define IDirectSoundFullDuplex_AddRef(p) IUnknown_AddRef(p) 01908 #define IDirectSoundFullDuplex_Release(p) IUnknown_Release(p) 01909 01910 #if !defined(__cplusplus) || defined(CINTERFACE) 01911 #define IDirectSoundFullDuplex_Initialize(p,a,b,c,d,e,f,g,h) (p)->lpVtbl->Initialize(p,a,b,c,d,e,f,g,h) 01912 #else // !defined(__cplusplus) || defined(CINTERFACE) 01913 #define IDirectSoundFullDuplex_Initialize(p,a,b,c,d,e,f,g,h) (p)->Initialize(a,b,c,d,e,f,g,h) 01914 #endif // !defined(__cplusplus) || defined(CINTERFACE) 01915 01916 #endif // _IDirectSoundFullDuplex_ 01917 01918 #endif // DIRECTSOUND_VERSION >= 0x0800 01919 01920 // 01921 // Return Codes 01922 // 01923 01924 // The function completed successfully 01925 #define DS_OK S_OK 01926 01927 // The call succeeded, but we had to substitute the 3D algorithm 01928 #define DS_NO_VIRTUALIZATION MAKE_HRESULT(0, _FACDS, 10) 01929 01930 // The call succeeded, but not all of the optional effects were obtained. 01931 #define DS_INCOMPLETE MAKE_HRESULT(0, _FACDS, 20) 01932 01933 // The call failed because resources (such as a priority level) 01934 // were already being used by another caller 01935 #define DSERR_ALLOCATED MAKE_DSHRESULT(10) 01936 01937 // The control (vol, pan, etc.) requested by the caller is not available 01938 #define DSERR_CONTROLUNAVAIL MAKE_DSHRESULT(30) 01939 01940 // An invalid parameter was passed to the returning function 01941 #define DSERR_INVALIDPARAM E_INVALIDARG 01942 01943 // This call is not valid for the current state of this object 01944 #define DSERR_INVALIDCALL MAKE_DSHRESULT(50) 01945 01946 // An undetermined error occurred inside the DirectSound subsystem 01947 #define DSERR_GENERIC E_FAIL 01948 01949 // The caller does not have the priority level required for the function to 01950 // succeed 01951 #define DSERR_PRIOLEVELNEEDED MAKE_DSHRESULT(70) 01952 01953 // Not enough free memory is available to complete the operation 01954 #define DSERR_OUTOFMEMORY E_OUTOFMEMORY 01955 01956 // The specified WAVE format is not supported 01957 #define DSERR_BADFORMAT MAKE_DSHRESULT(100) 01958 01959 // The function called is not supported at this time 01960 #define DSERR_UNSUPPORTED E_NOTIMPL 01961 01962 // No sound driver is available for use 01963 #define DSERR_NODRIVER MAKE_DSHRESULT(120) 01964 01965 // This object is already initialized 01966 #define DSERR_ALREADYINITIALIZED MAKE_DSHRESULT(130) 01967 01968 // This object does not support aggregation 01969 #define DSERR_NOAGGREGATION CLASS_E_NOAGGREGATION 01970 01971 // The buffer memory has been lost, and must be restored 01972 #define DSERR_BUFFERLOST MAKE_DSHRESULT(150) 01973 01974 // Another app has a higher priority level, preventing this call from 01975 // succeeding 01976 #define DSERR_OTHERAPPHASPRIO MAKE_DSHRESULT(160) 01977 01978 // This object has not been initialized 01979 #define DSERR_UNINITIALIZED MAKE_DSHRESULT(170) 01980 01981 // The requested COM interface is not available 01982 #define DSERR_NOINTERFACE E_NOINTERFACE 01983 01984 // Access is denied 01985 #define DSERR_ACCESSDENIED E_ACCESSDENIED 01986 01987 // Tried to create a DSBCAPS_CTRLFX buffer shorter than DSBSIZE_FX_MIN milliseconds 01988 #define DSERR_BUFFERTOOSMALL MAKE_DSHRESULT(180) 01989 01990 // Attempt to use DirectSound 8 functionality on an older DirectSound object 01991 #define DSERR_DS8_REQUIRED MAKE_DSHRESULT(190) 01992 01993 // A circular loop of send effects was detected 01994 #define DSERR_SENDLOOP MAKE_DSHRESULT(200) 01995 01996 // The GUID specified in an audiopath file does not match a valid MIXIN buffer 01997 #define DSERR_BADSENDBUFFERGUID MAKE_DSHRESULT(210) 01998 01999 // The object requested was not found (numerically equal to DMUS_E_NOT_FOUND) 02000 #define DSERR_OBJECTNOTFOUND MAKE_DSHRESULT(4449) 02001 02002 // 02003 // Flags 02004 // 02005 02006 #define DSCAPS_PRIMARYMONO 0x00000001 02007 #define DSCAPS_PRIMARYSTEREO 0x00000002 02008 #define DSCAPS_PRIMARY8BIT 0x00000004 02009 #define DSCAPS_PRIMARY16BIT 0x00000008 02010 #define DSCAPS_CONTINUOUSRATE 0x00000010 02011 #define DSCAPS_EMULDRIVER 0x00000020 02012 #define DSCAPS_CERTIFIED 0x00000040 02013 #define DSCAPS_SECONDARYMONO 0x00000100 02014 #define DSCAPS_SECONDARYSTEREO 0x00000200 02015 #define DSCAPS_SECONDARY8BIT 0x00000400 02016 #define DSCAPS_SECONDARY16BIT 0x00000800 02017 02018 #define DSSCL_NORMAL 0x00000001 02019 #define DSSCL_PRIORITY 0x00000002 02020 #define DSSCL_EXCLUSIVE 0x00000003 02021 #define DSSCL_WRITEPRIMARY 0x00000004 02022 02023 #define DSSPEAKER_HEADPHONE 0x00000001 02024 #define DSSPEAKER_MONO 0x00000002 02025 #define DSSPEAKER_QUAD 0x00000003 02026 #define DSSPEAKER_STEREO 0x00000004 02027 #define DSSPEAKER_SURROUND 0x00000005 02028 #define DSSPEAKER_5POINT1 0x00000006 02029 02030 #define DSSPEAKER_GEOMETRY_MIN 0x00000005 // 5 degrees 02031 #define DSSPEAKER_GEOMETRY_NARROW 0x0000000A // 10 degrees 02032 #define DSSPEAKER_GEOMETRY_WIDE 0x00000014 // 20 degrees 02033 #define DSSPEAKER_GEOMETRY_MAX 0x000000B4 // 180 degrees 02034 02035 #define DSSPEAKER_COMBINED(c, g) ((DWORD)(((BYTE)(c)) | ((DWORD)((BYTE)(g))) << 16)) 02036 #define DSSPEAKER_CONFIG(a) ((BYTE)(a)) 02037 #define DSSPEAKER_GEOMETRY(a) ((BYTE)(((DWORD)(a) >> 16) & 0x00FF)) 02038 02039 #define DSBCAPS_PRIMARYBUFFER 0x00000001 02040 #define DSBCAPS_STATIC 0x00000002 02041 #define DSBCAPS_LOCHARDWARE 0x00000004 02042 #define DSBCAPS_LOCSOFTWARE 0x00000008 02043 #define DSBCAPS_CTRL3D 0x00000010 02044 #define DSBCAPS_CTRLFREQUENCY 0x00000020 02045 #define DSBCAPS_CTRLPAN 0x00000040 02046 #define DSBCAPS_CTRLVOLUME 0x00000080 02047 #define DSBCAPS_CTRLPOSITIONNOTIFY 0x00000100 02048 #define DSBCAPS_CTRLFX 0x00000200 02049 #define DSBCAPS_STICKYFOCUS 0x00004000 02050 #define DSBCAPS_GLOBALFOCUS 0x00008000 02051 #define DSBCAPS_GETCURRENTPOSITION2 0x00010000 02052 #define DSBCAPS_MUTE3DATMAXDISTANCE 0x00020000 02053 #define DSBCAPS_LOCDEFER 0x00040000 02054 02055 #define DSBPLAY_LOOPING 0x00000001 02056 #define DSBPLAY_LOCHARDWARE 0x00000002 02057 #define DSBPLAY_LOCSOFTWARE 0x00000004 02058 #define DSBPLAY_TERMINATEBY_TIME 0x00000008 02059 #define DSBPLAY_TERMINATEBY_DISTANCE 0x000000010 02060 #define DSBPLAY_TERMINATEBY_PRIORITY 0x000000020 02061 02062 #define DSBSTATUS_PLAYING 0x00000001 02063 #define DSBSTATUS_BUFFERLOST 0x00000002 02064 #define DSBSTATUS_LOOPING 0x00000004 02065 #define DSBSTATUS_LOCHARDWARE 0x00000008 02066 #define DSBSTATUS_LOCSOFTWARE 0x00000010 02067 #define DSBSTATUS_TERMINATED 0x00000020 02068 02069 #define DSBLOCK_FROMWRITECURSOR 0x00000001 02070 #define DSBLOCK_ENTIREBUFFER 0x00000002 02071 02072 #define DSBFREQUENCY_MIN 100 02073 #define DSBFREQUENCY_MAX 100000 02074 #define DSBFREQUENCY_ORIGINAL 0 02075 02076 #define DSBPAN_LEFT -10000 02077 #define DSBPAN_CENTER 0 02078 #define DSBPAN_RIGHT 10000 02079 02080 #define DSBVOLUME_MIN -10000 02081 #define DSBVOLUME_MAX 0 02082 02083 #define DSBSIZE_MIN 4 02084 #define DSBSIZE_MAX 0x0FFFFFFF 02085 #define DSBSIZE_FX_MIN 150 // NOTE: Milliseconds, not bytes 02086 02087 #define DS3DMODE_NORMAL 0x00000000 02088 #define DS3DMODE_HEADRELATIVE 0x00000001 02089 #define DS3DMODE_DISABLE 0x00000002 02090 02091 #define DS3D_IMMEDIATE 0x00000000 02092 #define DS3D_DEFERRED 0x00000001 02093 02094 #define DS3D_MINDISTANCEFACTOR FLT_MIN 02095 #define DS3D_MAXDISTANCEFACTOR FLT_MAX 02096 #define DS3D_DEFAULTDISTANCEFACTOR 1.0f 02097 02098 #define DS3D_MINROLLOFFFACTOR 0.0f 02099 #define DS3D_MAXROLLOFFFACTOR 10.0f 02100 #define DS3D_DEFAULTROLLOFFFACTOR 1.0f 02101 02102 #define DS3D_MINDOPPLERFACTOR 0.0f 02103 #define DS3D_MAXDOPPLERFACTOR 10.0f 02104 #define DS3D_DEFAULTDOPPLERFACTOR 1.0f 02105 02106 #define DS3D_DEFAULTMINDISTANCE 1.0f 02107 #define DS3D_DEFAULTMAXDISTANCE 1000000000.0f 02108 02109 #define DS3D_MINCONEANGLE 0 02110 #define DS3D_MAXCONEANGLE 360 02111 #define DS3D_DEFAULTCONEANGLE 360 02112 02113 #define DS3D_DEFAULTCONEOUTSIDEVOLUME DSBVOLUME_MAX 02114 02115 // IDirectSoundCapture attributes 02116 02117 #define DSCCAPS_EMULDRIVER DSCAPS_EMULDRIVER 02118 #define DSCCAPS_CERTIFIED DSCAPS_CERTIFIED 02119 02120 // IDirectSoundCaptureBuffer attributes 02121 02122 #define DSCBCAPS_WAVEMAPPED 0x80000000 02123 02124 #if DIRECTSOUND_VERSION >= 0x0800 02125 #define DSCBCAPS_CTRLFX 0x00000200 02126 #endif 02127 02128 02129 #define DSCBLOCK_ENTIREBUFFER 0x00000001 02130 02131 #define DSCBSTATUS_CAPTURING 0x00000001 02132 #define DSCBSTATUS_LOOPING 0x00000002 02133 02134 #define DSCBSTART_LOOPING 0x00000001 02135 02136 #define DSBPN_OFFSETSTOP 0xFFFFFFFF 02137 02138 #define DS_CERTIFIED 0x00000000 02139 #define DS_UNCERTIFIED 0x00000001 02140 02141 // Dsound SYSTEM resource constants 02142 // Matches the KSAUDIO_CPU_RESOURCES_xxx_HOST_CPU values defined 02143 // in ksmedia.h. 02144 #define DS_SYSTEM_RESOURCES_NO_HOST_RESOURCES 0x00000000 02145 #define DS_SYSTEM_RESOURCES_ALL_HOST_RESOURCES 0x7FFFFFFF 02146 #define DS_SYSTEM_RESOURCES_UNDEFINED 0x80000000 02147 02148 02149 // 02150 // I3DL2 Material Presets 02151 // 02152 02153 enum 02154 { 02155 DSFX_I3DL2_MATERIAL_PRESET_SINGLEWINDOW, 02156 DSFX_I3DL2_MATERIAL_PRESET_DOUBLEWINDOW, 02157 DSFX_I3DL2_MATERIAL_PRESET_THINDOOR, 02158 DSFX_I3DL2_MATERIAL_PRESET_THICKDOOR, 02159 DSFX_I3DL2_MATERIAL_PRESET_WOODWALL, 02160 DSFX_I3DL2_MATERIAL_PRESET_BRICKWALL, 02161 DSFX_I3DL2_MATERIAL_PRESET_STONEWALL, 02162 DSFX_I3DL2_MATERIAL_PRESET_CURTAIN 02163 }; 02164 02165 #define I3DL2_MATERIAL_PRESET_SINGLEWINDOW -2800,0.71f 02166 #define I3DL2_MATERIAL_PRESET_DOUBLEWINDOW -5000,0.40f 02167 #define I3DL2_MATERIAL_PRESET_THINDOOR -1800,0.66f 02168 #define I3DL2_MATERIAL_PRESET_THICKDOOR -4400,0.64f 02169 #define I3DL2_MATERIAL_PRESET_WOODWALL -4000,0.50f 02170 #define I3DL2_MATERIAL_PRESET_BRICKWALL -5000,0.60f 02171 #define I3DL2_MATERIAL_PRESET_STONEWALL -6000,0.68f 02172 #define I3DL2_MATERIAL_PRESET_CURTAIN -1200,0.15f 02173 02174 02175 enum 02176 { 02177 DSFX_I3DL2_ENVIRONMENT_PRESET_DEFAULT, 02178 DSFX_I3DL2_ENVIRONMENT_PRESET_GENERIC, 02179 DSFX_I3DL2_ENVIRONMENT_PRESET_PADDEDCELL, 02180 DSFX_I3DL2_ENVIRONMENT_PRESET_ROOM, 02181 DSFX_I3DL2_ENVIRONMENT_PRESET_BATHROOM, 02182 DSFX_I3DL2_ENVIRONMENT_PRESET_LIVINGROOM, 02183 DSFX_I3DL2_ENVIRONMENT_PRESET_STONEROOM, 02184 DSFX_I3DL2_ENVIRONMENT_PRESET_AUDITORIUM, 02185 DSFX_I3DL2_ENVIRONMENT_PRESET_CONCERTHALL, 02186 DSFX_I3DL2_ENVIRONMENT_PRESET_CAVE, 02187 DSFX_I3DL2_ENVIRONMENT_PRESET_ARENA, 02188 DSFX_I3DL2_ENVIRONMENT_PRESET_HANGAR, 02189 DSFX_I3DL2_ENVIRONMENT_PRESET_CARPETEDHALLWAY, 02190 DSFX_I3DL2_ENVIRONMENT_PRESET_HALLWAY, 02191 DSFX_I3DL2_ENVIRONMENT_PRESET_STONECORRIDOR, 02192 DSFX_I3DL2_ENVIRONMENT_PRESET_ALLEY, 02193 DSFX_I3DL2_ENVIRONMENT_PRESET_FOREST, 02194 DSFX_I3DL2_ENVIRONMENT_PRESET_CITY, 02195 DSFX_I3DL2_ENVIRONMENT_PRESET_MOUNTAINS, 02196 DSFX_I3DL2_ENVIRONMENT_PRESET_QUARRY, 02197 DSFX_I3DL2_ENVIRONMENT_PRESET_PLAIN, 02198 DSFX_I3DL2_ENVIRONMENT_PRESET_PARKINGLOT, 02199 DSFX_I3DL2_ENVIRONMENT_PRESET_SEWERPIPE, 02200 DSFX_I3DL2_ENVIRONMENT_PRESET_UNDERWATER, 02201 DSFX_I3DL2_ENVIRONMENT_PRESET_SMALLROOM, 02202 DSFX_I3DL2_ENVIRONMENT_PRESET_MEDIUMROOM, 02203 DSFX_I3DL2_ENVIRONMENT_PRESET_LARGEROOM, 02204 DSFX_I3DL2_ENVIRONMENT_PRESET_MEDIUMHALL, 02205 DSFX_I3DL2_ENVIRONMENT_PRESET_LARGEHALL, 02206 DSFX_I3DL2_ENVIRONMENT_PRESET_PLATE 02207 }; 02208 02209 // 02210 // I3DL2 Reverberation Presets Values 02211 // 02212 02213 #define I3DL2_ENVIRONMENT_PRESET_DEFAULT -1000, -100, 0.0f, 1.49f, 0.83f, -2602, 0.007f, 200, 0.011f, 100.0f, 100.0f, 5000.0f 02214 #define I3DL2_ENVIRONMENT_PRESET_GENERIC -1000, -100, 0.0f, 1.49f, 0.83f, -2602, 0.007f, 200, 0.011f, 100.0f, 100.0f, 5000.0f 02215 #define I3DL2_ENVIRONMENT_PRESET_PADDEDCELL -1000,-6000, 0.0f, 0.17f, 0.10f, -1204, 0.001f, 207, 0.002f, 100.0f, 100.0f, 5000.0f 02216 #define I3DL2_ENVIRONMENT_PRESET_ROOM -1000, -454, 0.0f, 0.40f, 0.83f, -1646, 0.002f, 53, 0.003f, 100.0f, 100.0f, 5000.0f 02217 #define I3DL2_ENVIRONMENT_PRESET_BATHROOM -1000,-1200, 0.0f, 1.49f, 0.54f, -370, 0.007f, 1030, 0.011f, 100.0f, 60.0f, 5000.0f 02218 #define I3DL2_ENVIRONMENT_PRESET_LIVINGROOM -1000,-6000, 0.0f, 0.50f, 0.10f, -1376, 0.003f, -1104, 0.004f, 100.0f, 100.0f, 5000.0f 02219 #define I3DL2_ENVIRONMENT_PRESET_STONEROOM -1000, -300, 0.0f, 2.31f, 0.64f, -711, 0.012f, 83, 0.017f, 100.0f, 100.0f, 5000.0f 02220 #define I3DL2_ENVIRONMENT_PRESET_AUDITORIUM -1000, -476, 0.0f, 4.32f, 0.59f, -789, 0.020f, -289, 0.030f, 100.0f, 100.0f, 5000.0f 02221 #define I3DL2_ENVIRONMENT_PRESET_CONCERTHALL -1000, -500, 0.0f, 3.92f, 0.70f, -1230, 0.020f, -2, 0.029f, 100.0f, 100.0f, 5000.0f 02222 #define I3DL2_ENVIRONMENT_PRESET_CAVE -1000, 0, 0.0f, 2.91f, 1.30f, -602, 0.015f, -302, 0.022f, 100.0f, 100.0f, 5000.0f 02223 #define I3DL2_ENVIRONMENT_PRESET_ARENA -1000, -698, 0.0f, 7.24f, 0.33f, -1166, 0.020f, 16, 0.030f, 100.0f, 100.0f, 5000.0f 02224 #define I3DL2_ENVIRONMENT_PRESET_HANGAR -1000,-1000, 0.0f,10.05f, 0.23f, -602, 0.020f, 198, 0.030f, 100.0f, 100.0f, 5000.0f 02225 #define I3DL2_ENVIRONMENT_PRESET_CARPETEDHALLWAY -1000,-4000, 0.0f, 0.30f, 0.10f, -1831, 0.002f, -1630, 0.030f, 100.0f, 100.0f, 5000.0f 02226 #define I3DL2_ENVIRONMENT_PRESET_HALLWAY -1000, -300, 0.0f, 1.49f, 0.59f, -1219, 0.007f, 441, 0.011f, 100.0f, 100.0f, 5000.0f 02227 #define I3DL2_ENVIRONMENT_PRESET_STONECORRIDOR -1000, -237, 0.0f, 2.70f, 0.79f, -1214, 0.013f, 395, 0.020f, 100.0f, 100.0f, 5000.0f 02228 #define I3DL2_ENVIRONMENT_PRESET_ALLEY -1000, -270, 0.0f, 1.49f, 0.86f, -1204, 0.007f, -4, 0.011f, 100.0f, 100.0f, 5000.0f 02229 #define I3DL2_ENVIRONMENT_PRESET_FOREST -1000,-3300, 0.0f, 1.49f, 0.54f, -2560, 0.162f, -613, 0.088f, 79.0f, 100.0f, 5000.0f 02230 #define I3DL2_ENVIRONMENT_PRESET_CITY -1000, -800, 0.0f, 1.49f, 0.67f, -2273, 0.007f, -2217, 0.011f, 50.0f, 100.0f, 5000.0f 02231 #define I3DL2_ENVIRONMENT_PRESET_MOUNTAINS -1000,-2500, 0.0f, 1.49f, 0.21f, -2780, 0.300f, -2014, 0.100f, 27.0f, 100.0f, 5000.0f 02232 #define I3DL2_ENVIRONMENT_PRESET_QUARRY -1000,-1000, 0.0f, 1.49f, 0.83f,-10000, 0.061f, 500, 0.025f, 100.0f, 100.0f, 5000.0f 02233 #define I3DL2_ENVIRONMENT_PRESET_PLAIN -1000,-2000, 0.0f, 1.49f, 0.50f, -2466, 0.179f, -2514, 0.100f, 21.0f, 100.0f, 5000.0f 02234 #define I3DL2_ENVIRONMENT_PRESET_PARKINGLOT -1000, 0, 0.0f, 1.65f, 1.50f, -1363, 0.008f, -1153, 0.012f, 100.0f, 100.0f, 5000.0f 02235 #define I3DL2_ENVIRONMENT_PRESET_SEWERPIPE -1000,-1000, 0.0f, 2.81f, 0.14f, 429, 0.014f, 648, 0.021f, 80.0f, 60.0f, 5000.0f 02236 #define I3DL2_ENVIRONMENT_PRESET_UNDERWATER -1000,-4000, 0.0f, 1.49f, 0.10f, -449, 0.007f, 1700, 0.011f, 100.0f, 100.0f, 5000.0f 02237 02238 // 02239 // Examples simulating 'musical' reverb presets 02240 // 02241 // Name Decay time Description 02242 // Small Room 1.1s A small size room with a length of 5m or so. 02243 // Medium Room 1.3s A medium size room with a length of 10m or so. 02244 // Large Room 1.5s A large size room suitable for live performances. 02245 // Medium Hall 1.8s A medium size concert hall. 02246 // Large Hall 1.8s A large size concert hall suitable for a full orchestra. 02247 // Plate 1.3s A plate reverb simulation. 02248 // 02249 02250 #define I3DL2_ENVIRONMENT_PRESET_SMALLROOM -1000, -600, 0.0f, 1.10f, 0.83f, -400, 0.005f, 500, 0.010f, 100.0f, 100.0f, 5000.0f 02251 #define I3DL2_ENVIRONMENT_PRESET_MEDIUMROOM -1000, -600, 0.0f, 1.30f, 0.83f, -1000, 0.010f, -200, 0.020f, 100.0f, 100.0f, 5000.0f 02252 #define I3DL2_ENVIRONMENT_PRESET_LARGEROOM -1000, -600, 0.0f, 1.50f, 0.83f, -1600, 0.020f, -1000, 0.040f, 100.0f, 100.0f, 5000.0f 02253 #define I3DL2_ENVIRONMENT_PRESET_MEDIUMHALL -1000, -600, 0.0f, 1.80f, 0.70f, -1300, 0.015f, -800, 0.030f, 100.0f, 100.0f, 5000.0f 02254 #define I3DL2_ENVIRONMENT_PRESET_LARGEHALL -1000, -600, 0.0f, 1.80f, 0.70f, -2000, 0.030f, -1400, 0.060f, 100.0f, 100.0f, 5000.0f 02255 #define I3DL2_ENVIRONMENT_PRESET_PLATE -1000, -200, 0.0f, 1.30f, 0.90f, 0, 0.002f, 0, 0.010f, 100.0f, 75.0f, 5000.0f 02256 02257 // 02258 // DirectSound3D Algorithms 02259 // 02260 02261 // Default DirectSound3D algorithm {00000000-0000-0000-0000-000000000000} 02262 #define DS3DALG_DEFAULT GUID_NULL 02263 02264 // No virtualization (Pan3D) {C241333F-1C1B-11d2-94F5-00C04FC28ACA} 02265 DEFINE_GUID(DS3DALG_NO_VIRTUALIZATION, 0xc241333f, 0x1c1b, 0x11d2, 0x94, 0xf5, 0x0, 0xc0, 0x4f, 0xc2, 0x8a, 0xca); 02266 02267 // High-quality HRTF algorithm {C2413340-1C1B-11d2-94F5-00C04FC28ACA} 02268 DEFINE_GUID(DS3DALG_HRTF_FULL, 0xc2413340, 0x1c1b, 0x11d2, 0x94, 0xf5, 0x0, 0xc0, 0x4f, 0xc2, 0x8a, 0xca); 02269 02270 // Lower-quality HRTF algorithm {C2413342-1C1B-11d2-94F5-00C04FC28ACA} 02271 DEFINE_GUID(DS3DALG_HRTF_LIGHT, 0xc2413342, 0x1c1b, 0x11d2, 0x94, 0xf5, 0x0, 0xc0, 0x4f, 0xc2, 0x8a, 0xca); 02272 02273 02274 #if DIRECTSOUND_VERSION >= 0x0800 02275 02276 // 02277 // DirectSound Internal Effect Algorithms 02278 // 02279 02280 02281 // Gargle {DAFD8210-5711-4B91-9FE3-F75B7AE279BF} 02282 DEFINE_GUID(GUID_DSFX_STANDARD_GARGLE, 0xdafd8210, 0x5711, 0x4b91, 0x9f, 0xe3, 0xf7, 0x5b, 0x7a, 0xe2, 0x79, 0xbf); 02283 02284 // Chorus {EFE6629C-81F7-4281-BD91-C9D604A95AF6} 02285 DEFINE_GUID(GUID_DSFX_STANDARD_CHORUS, 0xefe6629c, 0x81f7, 0x4281, 0xbd, 0x91, 0xc9, 0xd6, 0x04, 0xa9, 0x5a, 0xf6); 02286 02287 // Flanger {EFCA3D92-DFD8-4672-A603-7420894BAD98} 02288 DEFINE_GUID(GUID_DSFX_STANDARD_FLANGER, 0xefca3d92, 0xdfd8, 0x4672, 0xa6, 0x03, 0x74, 0x20, 0x89, 0x4b, 0xad, 0x98); 02289 02290 // Echo/Delay {EF3E932C-D40B-4F51-8CCF-3F98F1B29D5D} 02291 DEFINE_GUID(GUID_DSFX_STANDARD_ECHO, 0xef3e932c, 0xd40b, 0x4f51, 0x8c, 0xcf, 0x3f, 0x98, 0xf1, 0xb2, 0x9d, 0x5d); 02292 02293 // Distortion {EF114C90-CD1D-484E-96E5-09CFAF912A21} 02294 DEFINE_GUID(GUID_DSFX_STANDARD_DISTORTION, 0xef114c90, 0xcd1d, 0x484e, 0x96, 0xe5, 0x09, 0xcf, 0xaf, 0x91, 0x2a, 0x21); 02295 02296 // Compressor/Limiter {EF011F79-4000-406D-87AF-BFFB3FC39D57} 02297 DEFINE_GUID(GUID_DSFX_STANDARD_COMPRESSOR, 0xef011f79, 0x4000, 0x406d, 0x87, 0xaf, 0xbf, 0xfb, 0x3f, 0xc3, 0x9d, 0x57); 02298 02299 // Parametric Equalization {120CED89-3BF4-4173-A132-3CB406CF3231} 02300 DEFINE_GUID(GUID_DSFX_STANDARD_PARAMEQ, 0x120ced89, 0x3bf4, 0x4173, 0xa1, 0x32, 0x3c, 0xb4, 0x06, 0xcf, 0x32, 0x31); 02301 02302 02303 // I3DL2 Environmental Reverberation: Reverb (Listener) Effect {EF985E71-D5C7-42D4-BA4D-2D073E2E96F4} 02304 DEFINE_GUID(GUID_DSFX_STANDARD_I3DL2REVERB, 0xef985e71, 0xd5c7, 0x42d4, 0xba, 0x4d, 0x2d, 0x07, 0x3e, 0x2e, 0x96, 0xf4); 02305 02306 // Waves Reverberation {87FC0268-9A55-4360-95AA-004A1D9DE26C} 02307 DEFINE_GUID(GUID_DSFX_WAVES_REVERB, 0x87fc0268, 0x9a55, 0x4360, 0x95, 0xaa, 0x00, 0x4a, 0x1d, 0x9d, 0xe2, 0x6c); 02308 02309 // 02310 // DirectSound Capture Effect Algorithms 02311 // 02312 02313 02314 // Acoustic Echo Canceller {BF963D80-C559-11D0-8A2B-00A0C9255AC1} 02315 // Matches KSNODETYPE_ACOUSTIC_ECHO_CANCEL in ksmedia.h 02316 DEFINE_GUID(GUID_DSCFX_CLASS_AEC, 0xBF963D80L, 0xC559, 0x11D0, 0x8A, 0x2B, 0x00, 0xA0, 0xC9, 0x25, 0x5A, 0xC1); 02317 02318 // Microsoft AEC {CDEBB919-379A-488a-8765-F53CFD36DE40} 02319 DEFINE_GUID(GUID_DSCFX_MS_AEC, 0xcdebb919, 0x379a, 0x488a, 0x87, 0x65, 0xf5, 0x3c, 0xfd, 0x36, 0xde, 0x40); 02320 02321 // System AEC {1C22C56D-9879-4f5b-A389-27996DDC2810} 02322 DEFINE_GUID(GUID_DSCFX_SYSTEM_AEC, 0x1c22c56d, 0x9879, 0x4f5b, 0xa3, 0x89, 0x27, 0x99, 0x6d, 0xdc, 0x28, 0x10); 02323 02324 // Noise Supression {E07F903F-62FD-4e60-8CDD-DEA7236665B5} 02325 // Matches KSNODETYPE_NOISE_SUPPRESS in post Windows ME DDK's ksmedia.h 02326 DEFINE_GUID(GUID_DSCFX_CLASS_NS, 0xe07f903f, 0x62fd, 0x4e60, 0x8c, 0xdd, 0xde, 0xa7, 0x23, 0x66, 0x65, 0xb5); 02327 02328 // Microsoft Noise Suppresion {11C5C73B-66E9-4ba1-A0BA-E814C6EED92D} 02329 DEFINE_GUID(GUID_DSCFX_MS_NS, 0x11c5c73b, 0x66e9, 0x4ba1, 0xa0, 0xba, 0xe8, 0x14, 0xc6, 0xee, 0xd9, 0x2d); 02330 02331 // System Noise Suppresion {5AB0882E-7274-4516-877D-4EEE99BA4FD0} 02332 DEFINE_GUID(GUID_DSCFX_SYSTEM_NS, 0x5ab0882e, 0x7274, 0x4516, 0x87, 0x7d, 0x4e, 0xee, 0x99, 0xba, 0x4f, 0xd0); 02333 02334 02335 #endif // DIRECTSOUND_VERSION >= 0x0800 02336 02337 #endif // __DSOUND_INCLUDED__ 02338 02339 02340 02341 #ifdef __cplusplus 02342 }; 02343 #endif // __cplusplus 02344 02345