1 /* 2 * Copyright (C) the Wine project 3 * 4 * This library is free software; you can redistribute it and/or 5 * modify it under the terms of the GNU Lesser General Public 6 * License as published by the Free Software Foundation; either 7 * version 2.1 of the License, or (at your option) any later version. 8 * 9 * This library is distributed in the hope that it will be useful, 10 * but WITHOUT ANY WARRANTY; without even the implied warranty of 11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 12 * Lesser General Public License for more details. 13 * 14 * You should have received a copy of the GNU Lesser General Public 15 * License along with this library; if not, write to the Free Software 16 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA 17 */ 18 19 #ifndef __DSOUND_INCLUDED__ 20 #define __DSOUND_INCLUDED__ 21 22 #ifndef DIRECTSOUND_VERSION 23 #define DIRECTSOUND_VERSION 0x0900 24 #endif 25 26 #define COM_NO_WINDOWS_H 27 #include <objbase.h> 28 #include <float.h> 29 30 #ifdef __cplusplus 31 extern "C" { 32 #endif /* defined(__cplusplus) */ 33 34 #ifndef DX_SHARED_DEFINES 35 36 typedef float D3DVALUE, *LPD3DVALUE; 37 38 #ifndef D3DCOLOR_DEFINED 39 typedef DWORD D3DCOLOR, *LPD3DCOLOR; 40 #define D3DCOLOR_DEFINED 41 #endif 42 43 #ifndef D3DVECTOR_DEFINED 44 typedef struct _D3DVECTOR { 45 float x; 46 float y; 47 float z; 48 } D3DVECTOR; 49 #define D3DVECTOR_DEFINED 50 #endif 51 52 #ifndef LPD3DVECTOR_DEFINED 53 typedef D3DVECTOR *LPD3DVECTOR; 54 #define LPD3DVECTOR_DEFINED 55 #endif 56 57 #define DX_SHARED_DEFINES 58 #endif /* DX_SHARED_DEFINES */ 59 60 /***************************************************************************** 61 * Predeclare the interfaces 62 */ 63 DEFINE_GUID(CLSID_DirectSound, 0x47d4d946, 0x62e8, 0x11cf, 0x93, 0xbc, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00); 64 DEFINE_GUID(CLSID_DirectSound8, 0x3901cc3f, 0x84b5, 0x4fa4, 0xba, 0x35, 0xaa, 0x81, 0x72, 0xb8, 0xa0, 0x9b); 65 DEFINE_GUID(CLSID_DirectSoundCapture, 0xb0210780, 0x89cd, 0x11d0, 0xaf, 0x08, 0x00, 0xa0, 0xc9, 0x25, 0xcd, 0x16); 66 DEFINE_GUID(CLSID_DirectSoundCapture8, 0xe4bcac13, 0x7f99, 0x4908, 0x9a, 0x8e, 0x74, 0xe3, 0xbf, 0x24, 0xb6, 0xe1); 67 DEFINE_GUID(CLSID_DirectSoundFullDuplex,0xfea4300c, 0x7959, 0x4147, 0xb2, 0x6a, 0x23, 0x77, 0xb9, 0xe7, 0xa9, 0x1d); 68 69 DEFINE_GUID(IID_IDirectSound, 0x279AFA83,0x4981,0x11CE,0xA5,0x21,0x00,0x20,0xAF,0x0B,0xE5,0x60); 70 typedef struct IDirectSound *LPDIRECTSOUND,**LPLPDIRECTSOUND; 71 72 DEFINE_GUID(IID_IDirectSound8, 0xC50A7E93,0xF395,0x4834,0x9E,0xF6,0x7F,0xA9,0x9D,0xE5,0x09,0x66); 73 typedef struct IDirectSound8 *LPDIRECTSOUND8,**LPLPDIRECTSOUND8; 74 75 DEFINE_GUID(IID_IDirectSoundBuffer, 0x279AFA85,0x4981,0x11CE,0xA5,0x21,0x00,0x20,0xAF,0x0B,0xE5,0x60); 76 typedef struct IDirectSoundBuffer *LPDIRECTSOUNDBUFFER,**LPLPDIRECTSOUNDBUFFER; 77 78 DEFINE_GUID(IID_IDirectSoundBuffer8, 0x6825A449,0x7524,0x4D82,0x92,0x0F,0x50,0xE3,0x6A,0xB3,0xAB,0x1E); 79 typedef struct IDirectSoundBuffer8 *LPDIRECTSOUNDBUFFER8,**LPLPDIRECTSOUNDBUFFER8; 80 81 DEFINE_GUID(IID_IDirectSoundNotify, 0xB0210783,0x89cd,0x11d0,0xAF,0x08,0x00,0xA0,0xC9,0x25,0xCD,0x16); 82 typedef struct IDirectSoundNotify *LPDIRECTSOUNDNOTIFY,**LPLPDIRECTSOUNDNOTIFY; 83 #define IID_IDirectSoundNotify8 IID_IDirectSoundNotify 84 85 DEFINE_GUID(IID_IDirectSound3DListener, 0x279AFA84,0x4981,0x11CE,0xA5,0x21,0x00,0x20,0xAF,0x0B,0xE5,0x60); 86 typedef struct IDirectSound3DListener *LPDIRECTSOUND3DLISTENER,**LPLPDIRECTSOUND3DLISTENER; 87 88 DEFINE_GUID(IID_IDirectSound3DBuffer, 0x279AFA86,0x4981,0x11CE,0xA5,0x21,0x00,0x20,0xAF,0x0B,0xE5,0x60); 89 typedef struct IDirectSound3DBuffer *LPDIRECTSOUND3DBUFFER,**LPLPDIRECTSOUND3DBUFFER; 90 91 DEFINE_GUID(IID_IDirectSoundCapture, 0xB0210781,0x89CD,0x11D0,0xAF,0x08,0x00,0xA0,0xC9,0x25,0xCD,0x16); 92 typedef struct IDirectSoundCapture *LPDIRECTSOUNDCAPTURE,**LPLPDIRECTSOUNDCAPTURE; 93 #define IID_IDirectSoundCapture8 IID_IDirectSoundCapture 94 typedef struct IDirectSoundCapture IDirectSoundCapture8,*LPDIRECTSOUNDCAPTURE8,**LPLPDIRECTSOUNDCAPTURE8; 95 96 DEFINE_GUID(IID_IDirectSoundCaptureBuffer,0xB0210782,0x89CD,0x11D0,0xAF,0x08,0x00,0xA0,0xC9,0x25,0xCD,0x16); 97 typedef struct IDirectSoundCaptureBuffer *LPDIRECTSOUNDCAPTUREBUFFER,**LPLPDIRECTSOUNDCAPTUREBUFFER; 98 99 DEFINE_GUID(IID_IDirectSoundCaptureBuffer8,0x00990DF4,0x0DBB,0x4872,0x83,0x3E,0x6D,0x30,0x3E,0x80,0xAE,0xB6); 100 typedef struct IDirectSoundCaptureBuffer8 *LPDIRECTSOUNDCAPTUREBUFFER8,**LPLPDIRECTSOUNDCAPTUREBUFFER8; 101 102 DEFINE_GUID(IID_IDirectSoundFullDuplex, 0xEDCB4C7A,0xDAAB,0x4216,0xA4,0x2E,0x6C,0x50,0x59,0x6D,0xDC,0x1D); 103 typedef struct IDirectSoundFullDuplex *LPDIRECTSOUNDFULLDUPLEX,**LPLPDIRECTSOUNDFULLDUPLEX; 104 #define IID_IDirectSoundFullDuplex8 IID_IDirectSoundFullDuplex 105 106 DEFINE_GUID(DSDEVID_DefaultPlayback, 0xDEF00000,0x9C6D,0x47Ed,0xAA,0xF1,0x4D,0xDA,0x8F,0x2B,0x5C,0x03); 107 DEFINE_GUID(DSDEVID_DefaultCapture, 0xDEF00001,0x9C6D,0x47Ed,0xAA,0xF1,0x4D,0xDA,0x8F,0x2B,0x5C,0x03); 108 DEFINE_GUID(DSDEVID_DefaultVoicePlayback,0xDEF00002,0x9C6D,0x47Ed,0xAA,0xF1,0x4D,0xDA,0x8F,0x2B,0x5C,0x03); 109 DEFINE_GUID(DSDEVID_DefaultVoiceCapture, 0xDEF00003,0x9C6D,0x47ED,0xAA,0xF1,0x4D,0xDA,0x8F,0x2B,0x5C,0x03); 110 111 DEFINE_GUID(DSDEVID_WinePlayback, 0x40316A1D,0x605B,0xD611,0x87,0xC6,0x00,0x80,0xAD,0x00,0x02,0xFE); 112 113 #define _FACDS 0x878 114 #define MAKE_DSHRESULT(code) MAKE_HRESULT(1,_FACDS,code) 115 116 #define DS_OK 0 117 #define DS_NO_VIRTUALIZATION MAKE_HRESULT(0, _FACDS, 10) 118 #define DS_INCOMPLETE MAKE_HRESULT(0, _FACDS, 20) 119 #define DSERR_ALLOCATED MAKE_DSHRESULT(10) 120 #define DSERR_CONTROLUNAVAIL MAKE_DSHRESULT(30) 121 #define DSERR_INVALIDPARAM E_INVALIDARG 122 #define DSERR_INVALIDCALL MAKE_DSHRESULT(50) 123 #define DSERR_GENERIC E_FAIL 124 #define DSERR_PRIOLEVELNEEDED MAKE_DSHRESULT(70) 125 #define DSERR_OUTOFMEMORY E_OUTOFMEMORY 126 #define DSERR_BADFORMAT MAKE_DSHRESULT(100) 127 #define DSERR_UNSUPPORTED E_NOTIMPL 128 #define DSERR_NODRIVER MAKE_DSHRESULT(120) 129 #define DSERR_ALREADYINITIALIZED MAKE_DSHRESULT(130) 130 #define DSERR_NOAGGREGATION CLASS_E_NOAGGREGATION 131 #define DSERR_BUFFERLOST MAKE_DSHRESULT(150) 132 #define DSERR_OTHERAPPHASPRIO MAKE_DSHRESULT(160) 133 #define DSERR_UNINITIALIZED MAKE_DSHRESULT(170) 134 #define DSERR_NOINTERFACE E_NOINTERFACE 135 #define DSERR_ACCESSDENIED E_ACCESSDENIED 136 #define DSERR_BUFFERTOOSMALL MAKE_DSHRESULT(180) 137 #define DSERR_DS8_REQUIRED MAKE_DSHRESULT(190) 138 #define DSERR_SENDLOOP MAKE_DSHRESULT(200) 139 #define DSERR_BADSENDBUFFERGUID MAKE_DSHRESULT(210) 140 #define DSERR_FXUNAVAILABLE MAKE_DSHRESULT(220) 141 #define DSERR_OBJECTNOTFOUND MAKE_DSHRESULT(4449) 142 143 #define DSCAPS_PRIMARYMONO 0x00000001 144 #define DSCAPS_PRIMARYSTEREO 0x00000002 145 #define DSCAPS_PRIMARY8BIT 0x00000004 146 #define DSCAPS_PRIMARY16BIT 0x00000008 147 #define DSCAPS_CONTINUOUSRATE 0x00000010 148 #define DSCAPS_EMULDRIVER 0x00000020 149 #define DSCAPS_CERTIFIED 0x00000040 150 #define DSCAPS_SECONDARYMONO 0x00000100 151 #define DSCAPS_SECONDARYSTEREO 0x00000200 152 #define DSCAPS_SECONDARY8BIT 0x00000400 153 #define DSCAPS_SECONDARY16BIT 0x00000800 154 155 #define DSSCL_NORMAL 1 156 #define DSSCL_PRIORITY 2 157 #define DSSCL_EXCLUSIVE 3 158 #define DSSCL_WRITEPRIMARY 4 159 160 typedef struct _DSCAPS 161 { 162 DWORD dwSize; 163 DWORD dwFlags; 164 DWORD dwMinSecondarySampleRate; 165 DWORD dwMaxSecondarySampleRate; 166 DWORD dwPrimaryBuffers; 167 DWORD dwMaxHwMixingAllBuffers; 168 DWORD dwMaxHwMixingStaticBuffers; 169 DWORD dwMaxHwMixingStreamingBuffers; 170 DWORD dwFreeHwMixingAllBuffers; 171 DWORD dwFreeHwMixingStaticBuffers; 172 DWORD dwFreeHwMixingStreamingBuffers; 173 DWORD dwMaxHw3DAllBuffers; 174 DWORD dwMaxHw3DStaticBuffers; 175 DWORD dwMaxHw3DStreamingBuffers; 176 DWORD dwFreeHw3DAllBuffers; 177 DWORD dwFreeHw3DStaticBuffers; 178 DWORD dwFreeHw3DStreamingBuffers; 179 DWORD dwTotalHwMemBytes; 180 DWORD dwFreeHwMemBytes; 181 DWORD dwMaxContigFreeHwMemBytes; 182 DWORD dwUnlockTransferRateHwBuffers; 183 DWORD dwPlayCpuOverheadSwBuffers; 184 DWORD dwReserved1; 185 DWORD dwReserved2; 186 } DSCAPS,*LPDSCAPS; 187 typedef const DSCAPS *LPCDSCAPS; 188 189 #define DSBPLAY_LOOPING 0x00000001 190 #define DSBPLAY_LOCHARDWARE 0x00000002 191 #define DSBPLAY_LOCSOFTWARE 0x00000004 192 #define DSBPLAY_TERMINATEBY_TIME 0x00000008 193 #define DSBPLAY_TERMINATEBY_DISTANCE 0x000000010 194 #define DSBPLAY_TERMINATEBY_PRIORITY 0x000000020 195 196 #define DSBSTATUS_PLAYING 0x00000001 197 #define DSBSTATUS_BUFFERLOST 0x00000002 198 #define DSBSTATUS_LOOPING 0x00000004 199 #define DSBSTATUS_LOCHARDWARE 0x00000008 200 #define DSBSTATUS_LOCSOFTWARE 0x00000010 201 #define DSBSTATUS_TERMINATED 0x00000020 202 203 #define DSBLOCK_FROMWRITECURSOR 0x00000001 204 #define DSBLOCK_ENTIREBUFFER 0x00000002 205 206 #define DSBCAPS_PRIMARYBUFFER 0x00000001 207 #define DSBCAPS_STATIC 0x00000002 208 #define DSBCAPS_LOCHARDWARE 0x00000004 209 #define DSBCAPS_LOCSOFTWARE 0x00000008 210 #define DSBCAPS_CTRL3D 0x00000010 211 #define DSBCAPS_CTRLFREQUENCY 0x00000020 212 #define DSBCAPS_CTRLPAN 0x00000040 213 #define DSBCAPS_CTRLVOLUME 0x00000080 214 #define DSBCAPS_CTRLDEFAULT 0x000000E0 /* Pan + volume + frequency. */ 215 #define DSBCAPS_CTRLPOSITIONNOTIFY 0x00000100 216 #define DSBCAPS_CTRLFX 0x00000200 217 #define DSBCAPS_CTRLALL 0x000001F0 /* All control capabilities */ 218 #define DSBCAPS_STICKYFOCUS 0x00004000 219 #define DSBCAPS_GLOBALFOCUS 0x00008000 220 #define DSBCAPS_GETCURRENTPOSITION2 0x00010000 /* More accurate play cursor under emulation*/ 221 #define DSBCAPS_MUTE3DATMAXDISTANCE 0x00020000 222 #define DSBCAPS_LOCDEFER 0x00040000 223 224 #define DSBSIZE_MIN 4 225 #define DSBSIZE_MAX 0xFFFFFFF 226 #define DSBPAN_LEFT -10000 227 #define DSBPAN_CENTER 0 228 #define DSBPAN_RIGHT 10000 229 #define DSBVOLUME_MAX 0 230 #define DSBVOLUME_MIN -10000 231 #define DSBFREQUENCY_MIN 100 232 #define DSBFREQUENCY_MAX 200000 233 #define DSBFREQUENCY_ORIGINAL 0 234 235 #define DSBNOTIFICATIONS_MAX 100000U 236 237 typedef struct _DSBCAPS 238 { 239 DWORD dwSize; 240 DWORD dwFlags; 241 DWORD dwBufferBytes; 242 DWORD dwUnlockTransferRate; 243 DWORD dwPlayCpuOverhead; 244 } DSBCAPS,*LPDSBCAPS; 245 typedef const DSBCAPS *LPCDSBCAPS; 246 247 #define DSSCL_NORMAL 1 248 #define DSSCL_PRIORITY 2 249 #define DSSCL_EXCLUSIVE 3 250 #define DSSCL_WRITEPRIMARY 4 251 252 typedef struct _DSEFFECTDESC 253 { 254 DWORD dwSize; 255 DWORD dwFlags; 256 GUID guidDSFXClass; 257 DWORD_PTR dwReserved1; 258 DWORD_PTR dwReserved2; 259 } DSEFFECTDESC,*LPDSEFFECTDESC; 260 typedef const DSEFFECTDESC *LPCDSEFFECTDESC; 261 262 #define DSFX_LOCHARDWARE 0x00000001 263 #define DSFX_LOCSOFTWARE 0x00000002 264 265 enum 266 { 267 DSFXR_PRESENT, 268 DSFXR_LOCHARDWARE, 269 DSFXR_LOCSOFTWARE, 270 DSFXR_UNALLOCATED, 271 DSFXR_FAILED, 272 DSFXR_UNKNOWN, 273 DSFXR_SENDLOOP 274 }; 275 276 typedef struct _DSBUFFERDESC1 277 { 278 DWORD dwSize; 279 DWORD dwFlags; 280 DWORD dwBufferBytes; 281 DWORD dwReserved; 282 LPWAVEFORMATEX lpwfxFormat; 283 } DSBUFFERDESC1,*LPDSBUFFERDESC1; 284 typedef const DSBUFFERDESC1 *LPCDSBUFFERDESC1; 285 286 typedef struct _DSBUFFERDESC 287 { 288 DWORD dwSize; 289 DWORD dwFlags; 290 DWORD dwBufferBytes; 291 DWORD dwReserved; 292 LPWAVEFORMATEX lpwfxFormat; 293 GUID guid3DAlgorithm; 294 } DSBUFFERDESC,*LPDSBUFFERDESC; 295 typedef const DSBUFFERDESC *LPCDSBUFFERDESC; 296 297 typedef struct _DSBPOSITIONNOTIFY 298 { 299 DWORD dwOffset; 300 HANDLE hEventNotify; 301 } DSBPOSITIONNOTIFY,*LPDSBPOSITIONNOTIFY; 302 typedef const DSBPOSITIONNOTIFY *LPCDSBPOSITIONNOTIFY; 303 304 #define DSSPEAKER_DIRECTOUT 0 305 #define DSSPEAKER_HEADPHONE 1 306 #define DSSPEAKER_MONO 2 307 #define DSSPEAKER_QUAD 3 308 #define DSSPEAKER_STEREO 4 309 #define DSSPEAKER_SURROUND 5 310 #define DSSPEAKER_5POINT1 6 311 #define DSSPEAKER_5POINT1_BACK 6 312 #define DSSPEAKER_7POINT1 7 313 #define DSSPEAKER_7POINT1_WIDE 7 314 #define DSSPEAKER_7POINT1_SURROUND 8 315 #define DSSPEAKER_5POINT1_SURROUND 9 316 317 #define DSSPEAKER_GEOMETRY_MIN 0x00000005 /* 5 degrees */ 318 #define DSSPEAKER_GEOMETRY_NARROW 0x0000000A /* 10 degrees */ 319 #define DSSPEAKER_GEOMETRY_WIDE 0x00000014 /* 20 degrees */ 320 #define DSSPEAKER_GEOMETRY_MAX 0x000000B4 /* 180 degrees */ 321 322 #define DSSPEAKER_COMBINED(c, g) ((DWORD)(((BYTE)(c)) | ((DWORD)((BYTE)(g))) << 16)) 323 #define DSSPEAKER_CONFIG(a) ((BYTE)(a)) 324 #define DSSPEAKER_GEOMETRY(a) ((BYTE)(((DWORD)(a) >> 16) & 0x00FF)) 325 326 #define DS_CERTIFIED 0x00000000 327 #define DS_UNCERTIFIED 0x00000001 328 329 typedef struct _DSCEFFECTDESC 330 { 331 DWORD dwSize; 332 DWORD dwFlags; 333 GUID guidDSCFXClass; 334 GUID guidDSCFXInstance; 335 DWORD dwReserved1; 336 DWORD dwReserved2; 337 } DSCEFFECTDESC, *LPDSCEFFECTDESC; 338 typedef const DSCEFFECTDESC *LPCDSCEFFECTDESC; 339 340 #define DSCFX_LOCHARDWARE 0x00000001 341 #define DSCFX_LOCSOFTWARE 0x00000002 342 343 #define DSCFXR_LOCHARDWARE 0x00000010 344 #define DSCFXR_LOCSOFTWARE 0x00000020 345 346 typedef struct _DSCBUFFERDESC1 347 { 348 DWORD dwSize; 349 DWORD dwFlags; 350 DWORD dwBufferBytes; 351 DWORD dwReserved; 352 LPWAVEFORMATEX lpwfxFormat; 353 } DSCBUFFERDESC1, *LPDSCBUFFERDESC1; 354 355 typedef struct _DSCBUFFERDESC 356 { 357 DWORD dwSize; 358 DWORD dwFlags; 359 DWORD dwBufferBytes; 360 DWORD dwReserved; 361 LPWAVEFORMATEX lpwfxFormat; 362 DWORD dwFXCount; 363 LPDSCEFFECTDESC lpDSCFXDesc; 364 } DSCBUFFERDESC, *LPDSCBUFFERDESC; 365 typedef const DSCBUFFERDESC *LPCDSCBUFFERDESC; 366 367 typedef struct _DSCCAPS 368 { 369 DWORD dwSize; 370 DWORD dwFlags; 371 DWORD dwFormats; 372 DWORD dwChannels; 373 } DSCCAPS, *LPDSCCAPS; 374 typedef const DSCCAPS *LPCDSCCAPS; 375 376 typedef struct _DSCBCAPS 377 { 378 DWORD dwSize; 379 DWORD dwFlags; 380 DWORD dwBufferBytes; 381 DWORD dwReserved; 382 } DSCBCAPS, *LPDSCBCAPS; 383 typedef const DSCBCAPS *LPCDSCBCAPS; 384 385 #define DSCCAPS_EMULDRIVER DSCAPS_EMULDRIVER 386 #define DSCCAPS_CERTIFIED DSCAPS_CERTIFIED 387 #define DSCCAPS_MULTIPLECAPTURE 0x00000001 388 389 #define DSCBCAPS_WAVEMAPPED 0x80000000 390 #define DSCBCAPS_CTRLFX 0x00000200 391 392 #define DSCBLOCK_ENTIREBUFFER 0x00000001 393 #define DSCBSTART_LOOPING 0x00000001 394 #define DSCBPN_OFFSET_STOP 0xffffffff 395 396 #define DSCBSTATUS_CAPTURING 0x00000001 397 #define DSCBSTATUS_LOOPING 0x00000002 398 399 #ifndef __LPCGUID_DEFINED__ 400 #define __LPCGUID_DEFINED__ 401 typedef const GUID *LPCGUID; 402 #endif 403 404 typedef BOOL (CALLBACK *LPDSENUMCALLBACKW)(LPGUID,LPCWSTR,LPCWSTR,LPVOID); 405 typedef BOOL (CALLBACK *LPDSENUMCALLBACKA)(LPGUID,LPCSTR,LPCSTR,LPVOID); 406 DECL_WINELIB_TYPE_AW(LPDSENUMCALLBACK) 407 408 extern HRESULT WINAPI DirectSoundCreate(LPCGUID lpGUID,LPDIRECTSOUND *ppDS,LPUNKNOWN pUnkOuter); 409 extern HRESULT WINAPI DirectSoundEnumerateA(LPDSENUMCALLBACKA, LPVOID); 410 extern HRESULT WINAPI DirectSoundEnumerateW(LPDSENUMCALLBACKW, LPVOID); 411 #define DirectSoundEnumerate WINELIB_NAME_AW(DirectSoundEnumerate) 412 extern HRESULT WINAPI DirectSoundCaptureCreate(LPCGUID lpGUID, LPDIRECTSOUNDCAPTURE *ppDSC, LPUNKNOWN pUnkOuter); 413 extern HRESULT WINAPI DirectSoundCaptureEnumerateA(LPDSENUMCALLBACKA, LPVOID); 414 extern HRESULT WINAPI DirectSoundCaptureEnumerateW(LPDSENUMCALLBACKW, LPVOID); 415 #define DirectSoundCaptureEnumerate WINELIB_NAME_AW(DirectSoundCaptureEnumerate) 416 417 extern HRESULT WINAPI DirectSoundCreate8(LPCGUID lpGUID,LPDIRECTSOUND8 *ppDS8,LPUNKNOWN pUnkOuter); 418 extern HRESULT WINAPI DirectSoundCaptureCreate8(LPCGUID lpGUID, LPDIRECTSOUNDCAPTURE8 *ppDSC8, LPUNKNOWN pUnkOuter); 419 extern HRESULT WINAPI DirectSoundFullDuplexCreate(LPCGUID pcGuidCaptureDevice, LPCGUID pcGuidRenderDevice, 420 LPCDSCBUFFERDESC pcDSCBufferDesc, LPCDSBUFFERDESC pcDSBufferDesc, HWND hWnd, DWORD dwLevel, 421 LPDIRECTSOUNDFULLDUPLEX *ppDSFD, LPDIRECTSOUNDCAPTUREBUFFER8 *ppDSCBuffer8, LPDIRECTSOUNDBUFFER8 *ppDSBuffer8, LPUNKNOWN pUnkOuter); 422 #define DirectSoundFullDuplexCreate8 DirectSoundFullDuplexCreate 423 extern HRESULT WINAPI GetDeviceID(LPCGUID lpGuidSrc, LPGUID lpGuidDest); 424 425 426 /***************************************************************************** 427 * IDirectSound interface 428 */ 429 #undef INTERFACE 430 #define INTERFACE IDirectSound 431 DECLARE_INTERFACE_(IDirectSound,IUnknown) 432 { 433 /*** IUnknown methods ***/ 434 STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; 435 STDMETHOD_(ULONG,AddRef)(THIS) PURE; 436 STDMETHOD_(ULONG,Release)(THIS) PURE; 437 /*** IDirectSound methods ***/ 438 STDMETHOD(CreateSoundBuffer)(THIS_ LPCDSBUFFERDESC lpcDSBufferDesc, LPLPDIRECTSOUNDBUFFER lplpDirectSoundBuffer, IUnknown *pUnkOuter) PURE; 439 STDMETHOD(GetCaps)(THIS_ LPDSCAPS lpDSCaps) PURE; 440 STDMETHOD(DuplicateSoundBuffer)(THIS_ LPDIRECTSOUNDBUFFER lpDsbOriginal, LPLPDIRECTSOUNDBUFFER lplpDsbDuplicate) PURE; 441 STDMETHOD(SetCooperativeLevel)(THIS_ HWND hwnd, DWORD dwLevel) PURE; 442 STDMETHOD(Compact)(THIS) PURE; 443 STDMETHOD(GetSpeakerConfig)(THIS_ LPDWORD lpdwSpeakerConfig) PURE; 444 STDMETHOD(SetSpeakerConfig)(THIS_ DWORD dwSpeakerConfig) PURE; 445 STDMETHOD(Initialize)(THIS_ LPCGUID lpcGuid) PURE; 446 }; 447 #undef INTERFACE 448 449 #if !defined(__cplusplus) || defined(CINTERFACE) 450 /*** IUnknown methods ***/ 451 #define IDirectSound_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) 452 #define IDirectSound_AddRef(p) (p)->lpVtbl->AddRef(p) 453 #define IDirectSound_Release(p) (p)->lpVtbl->Release(p) 454 /*** IDirectSound methods ***/ 455 #define IDirectSound_CreateSoundBuffer(p,a,b,c) (p)->lpVtbl->CreateSoundBuffer(p,a,b,c) 456 #define IDirectSound_GetCaps(p,a) (p)->lpVtbl->GetCaps(p,a) 457 #define IDirectSound_DuplicateSoundBuffer(p,a,b) (p)->lpVtbl->DuplicateSoundBuffer(p,a,b) 458 #define IDirectSound_SetCooperativeLevel(p,a,b) (p)->lpVtbl->SetCooperativeLevel(p,a,b) 459 #define IDirectSound_Compact(p) (p)->lpVtbl->Compact(p) 460 #define IDirectSound_GetSpeakerConfig(p,a) (p)->lpVtbl->GetSpeakerConfig(p,a) 461 #define IDirectSound_SetSpeakerConfig(p,a) (p)->lpVtbl->SetSpeakerConfig(p,a) 462 #define IDirectSound_Initialize(p,a) (p)->lpVtbl->Initialize(p,a) 463 #else 464 /*** IUnknown methods ***/ 465 #define IDirectSound_QueryInterface(p,a,b) (p)->QueryInterface(a,b) 466 #define IDirectSound_AddRef(p) (p)->AddRef() 467 #define IDirectSound_Release(p) (p)->Release() 468 /*** IDirectSound methods ***/ 469 #define IDirectSound_CreateSoundBuffer(p,a,b,c) (p)->CreateSoundBuffer(a,b,c) 470 #define IDirectSound_GetCaps(p,a) (p)->GetCaps(a) 471 #define IDirectSound_DuplicateSoundBuffer(p,a,b) (p)->DuplicateSoundBuffer(a,b) 472 #define IDirectSound_SetCooperativeLevel(p,a,b) (p)->SetCooperativeLevel(a,b) 473 #define IDirectSound_Compact(p) (p)->Compact() 474 #define IDirectSound_GetSpeakerConfig(p,a) (p)->GetSpeakerConfig(a) 475 #define IDirectSound_SetSpeakerConfig(p,a) (p)->SetSpeakerConfig(a) 476 #define IDirectSound_Initialize(p,a) (p)->Initialize(a) 477 #endif 478 479 480 /***************************************************************************** 481 * IDirectSound8 interface 482 */ 483 #define INTERFACE IDirectSound8 484 DECLARE_INTERFACE_(IDirectSound8,IUnknown) 485 { 486 /*** IUnknown methods ***/ 487 STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; 488 STDMETHOD_(ULONG,AddRef)(THIS) PURE; 489 STDMETHOD_(ULONG,Release)(THIS) PURE; 490 /*** IDirectSound8 methods ***/ 491 STDMETHOD(CreateSoundBuffer)(THIS_ LPCDSBUFFERDESC lpcDSBufferDesc, LPLPDIRECTSOUNDBUFFER lplpDirectSoundBuffer, IUnknown *pUnkOuter) PURE; 492 STDMETHOD(GetCaps)(THIS_ LPDSCAPS lpDSCaps) PURE; 493 STDMETHOD(DuplicateSoundBuffer)(THIS_ LPDIRECTSOUNDBUFFER lpDsbOriginal, LPLPDIRECTSOUNDBUFFER lplpDsbDuplicate) PURE; 494 STDMETHOD(SetCooperativeLevel)(THIS_ HWND hwnd, DWORD dwLevel) PURE; 495 STDMETHOD(Compact)(THIS) PURE; 496 STDMETHOD(GetSpeakerConfig)(THIS_ LPDWORD lpdwSpeakerConfig) PURE; 497 STDMETHOD(SetSpeakerConfig)(THIS_ DWORD dwSpeakerConfig) PURE; 498 STDMETHOD(Initialize)(THIS_ LPCGUID lpcGuid) PURE; 499 STDMETHOD(VerifyCertification)(THIS_ LPDWORD pdwCertified) PURE; 500 }; 501 #undef INTERFACE 502 503 #if !defined(__cplusplus) || defined(CINTERFACE) 504 /*** IUnknown methods ***/ 505 #define IDirectSound8_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) 506 #define IDirectSound8_AddRef(p) (p)->lpVtbl->AddRef(p) 507 #define IDirectSound8_Release(p) (p)->lpVtbl->Release(p) 508 /*** IDirectSound methods ***/ 509 #define IDirectSound8_CreateSoundBuffer(p,a,b,c) (p)->lpVtbl->CreateSoundBuffer(p,a,b,c) 510 #define IDirectSound8_GetCaps(p,a) (p)->lpVtbl->GetCaps(p,a) 511 #define IDirectSound8_DuplicateSoundBuffer(p,a,b) (p)->lpVtbl->DuplicateSoundBuffer(p,a,b) 512 #define IDirectSound8_SetCooperativeLevel(p,a,b) (p)->lpVtbl->SetCooperativeLevel(p,a,b) 513 #define IDirectSound8_Compact(p) (p)->lpVtbl->Compact(p) 514 #define IDirectSound8_GetSpeakerConfig(p,a) (p)->lpVtbl->GetSpeakerConfig(p,a) 515 #define IDirectSound8_SetSpeakerConfig(p,a) (p)->lpVtbl->SetSpeakerConfig(p,a) 516 #define IDirectSound8_Initialize(p,a) (p)->lpVtbl->Initialize(p,a) 517 /*** IDirectSound8 methods ***/ 518 #define IDirectSound8_VerifyCertification(p,a) (p)->lpVtbl->VerifyCertification(p,a) 519 #else 520 /*** IUnknown methods ***/ 521 #define IDirectSound8_QueryInterface(p,a,b) (p)->QueryInterface(a,b) 522 #define IDirectSound8_AddRef(p) (p)->AddRef() 523 #define IDirectSound8_Release(p) (p)->Release() 524 /*** IDirectSound methods ***/ 525 #define IDirectSound8_CreateSoundBuffer(p,a,b,c) (p)->CreateSoundBuffer(a,b,c) 526 #define IDirectSound8_GetCaps(p,a) (p)->GetCaps(a) 527 #define IDirectSound8_DuplicateSoundBuffer(p,a,b) (p)->DuplicateSoundBuffer(a,b) 528 #define IDirectSound8_SetCooperativeLevel(p,a,b) (p)->SetCooperativeLevel(a,b) 529 #define IDirectSound8_Compact(p) (p)->Compact() 530 #define IDirectSound8_GetSpeakerConfig(p,a) (p)->GetSpeakerConfig(a) 531 #define IDirectSound8_SetSpeakerConfig(p,a) (p)->SetSpeakerConfig(a) 532 #define IDirectSound8_Initialize(p,a) (p)->Initialize(a) 533 /*** IDirectSound8 methods ***/ 534 #define IDirectSound8_VerifyCertification(p,a) (p)->VerifyCertification(a) 535 #endif 536 537 538 /***************************************************************************** 539 * IDirectSoundBuffer interface 540 */ 541 #define INTERFACE IDirectSoundBuffer 542 DECLARE_INTERFACE_(IDirectSoundBuffer,IUnknown) 543 { 544 /*** IUnknown methods ***/ 545 STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; 546 STDMETHOD_(ULONG,AddRef)(THIS) PURE; 547 STDMETHOD_(ULONG,Release)(THIS) PURE; 548 /*** IDirectSoundBuffer methods ***/ 549 STDMETHOD(GetCaps)(THIS_ LPDSBCAPS lpDSBufferCaps) PURE; 550 STDMETHOD(GetCurrentPosition)(THIS_ LPDWORD lpdwCurrentPlayCursor, LPDWORD lpdwCurrentWriteCursor) PURE; 551 STDMETHOD(GetFormat)(THIS_ LPWAVEFORMATEX lpwfxFormat, DWORD dwSizeAllocated, LPDWORD lpdwSizeWritten) PURE; 552 STDMETHOD(GetVolume)(THIS_ LPLONG lplVolume) PURE; 553 STDMETHOD(GetPan)(THIS_ LPLONG lplpan) PURE; 554 STDMETHOD(GetFrequency)(THIS_ LPDWORD lpdwFrequency) PURE; 555 STDMETHOD(GetStatus)(THIS_ LPDWORD lpdwStatus) PURE; 556 STDMETHOD(Initialize)(THIS_ LPDIRECTSOUND lpDirectSound, LPCDSBUFFERDESC lpcDSBufferDesc) PURE; 557 STDMETHOD(Lock)(THIS_ DWORD dwOffset, DWORD dwBytes, LPVOID *ppvAudioPtr1, LPDWORD pdwAudioBytes1, LPVOID *ppvAudioPtr2, LPDWORD pdwAudioBytes2, DWORD dwFlags) PURE; 558 STDMETHOD(Play)(THIS_ DWORD dwReserved1, DWORD dwReserved2, DWORD dwFlags) PURE; 559 STDMETHOD(SetCurrentPosition)(THIS_ DWORD dwNewPosition) PURE; 560 STDMETHOD(SetFormat)(THIS_ LPCWAVEFORMATEX lpcfxFormat) PURE; 561 STDMETHOD(SetVolume)(THIS_ LONG lVolume) PURE; 562 STDMETHOD(SetPan)(THIS_ LONG lPan) PURE; 563 STDMETHOD(SetFrequency)(THIS_ DWORD dwFrequency) PURE; 564 STDMETHOD(Stop)(THIS) PURE; 565 STDMETHOD(Unlock)(THIS_ LPVOID pvAudioPtr1, DWORD dwAudioBytes1, LPVOID pvAudioPtr2, DWORD dwAudioPtr2) PURE; 566 STDMETHOD(Restore)(THIS) PURE; 567 }; 568 #undef INTERFACE 569 570 #if !defined(__cplusplus) || defined(CINTERFACE) 571 /*** IUnknown methods ***/ 572 #define IDirectSoundBuffer_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) 573 #define IDirectSoundBuffer_AddRef(p) (p)->lpVtbl->AddRef(p) 574 #define IDirectSoundBuffer_Release(p) (p)->lpVtbl->Release(p) 575 /*** IDirectSoundBuffer methods ***/ 576 #define IDirectSoundBuffer_GetCaps(p,a) (p)->lpVtbl->GetCaps(p,a) 577 #define IDirectSoundBuffer_GetCurrentPosition(p,a,b) (p)->lpVtbl->GetCurrentPosition(p,a,b) 578 #define IDirectSoundBuffer_GetFormat(p,a,b,c) (p)->lpVtbl->GetFormat(p,a,b,c) 579 #define IDirectSoundBuffer_GetVolume(p,a) (p)->lpVtbl->GetVolume(p,a) 580 #define IDirectSoundBuffer_GetPan(p,a) (p)->lpVtbl->GetPan(p,a) 581 #define IDirectSoundBuffer_GetFrequency(p,a) (p)->lpVtbl->GetFrequency(p,a) 582 #define IDirectSoundBuffer_GetStatus(p,a) (p)->lpVtbl->GetStatus(p,a) 583 #define IDirectSoundBuffer_Initialize(p,a,b) (p)->lpVtbl->Initialize(p,a,b) 584 #define IDirectSoundBuffer_Lock(p,a,b,c,d,e,f,g) (p)->lpVtbl->Lock(p,a,b,c,d,e,f,g) 585 #define IDirectSoundBuffer_Play(p,a,b,c) (p)->lpVtbl->Play(p,a,b,c) 586 #define IDirectSoundBuffer_SetCurrentPosition(p,a) (p)->lpVtbl->SetCurrentPosition(p,a) 587 #define IDirectSoundBuffer_SetFormat(p,a) (p)->lpVtbl->SetFormat(p,a) 588 #define IDirectSoundBuffer_SetVolume(p,a) (p)->lpVtbl->SetVolume(p,a) 589 #define IDirectSoundBuffer_SetPan(p,a) (p)->lpVtbl->SetPan(p,a) 590 #define IDirectSoundBuffer_SetFrequency(p,a) (p)->lpVtbl->SetFrequency(p,a) 591 #define IDirectSoundBuffer_Stop(p) (p)->lpVtbl->Stop(p) 592 #define IDirectSoundBuffer_Unlock(p,a,b,c,d) (p)->lpVtbl->Unlock(p,a,b,c,d) 593 #define IDirectSoundBuffer_Restore(p) (p)->lpVtbl->Restore(p) 594 #else 595 /*** IUnknown methods ***/ 596 #define IDirectSoundBuffer_QueryInterface(p,a,b) (p)->QueryInterface(a,b) 597 #define IDirectSoundBuffer_AddRef(p) (p)->AddRef() 598 #define IDirectSoundBuffer_Release(p) (p)->Release() 599 /*** IDirectSoundBuffer methods ***/ 600 #define IDirectSoundBuffer_GetCaps(p,a) (p)->GetCaps(a) 601 #define IDirectSoundBuffer_GetCurrentPosition(p,a,b) (p)->GetCurrentPosition(a,b) 602 #define IDirectSoundBuffer_GetFormat(p,a,b,c) (p)->GetFormat(a,b,c) 603 #define IDirectSoundBuffer_GetVolume(p,a) (p)->GetVolume(a) 604 #define IDirectSoundBuffer_GetPan(p,a) (p)->GetPan(a) 605 #define IDirectSoundBuffer_GetFrequency(p,a) (p)->GetFrequency(a) 606 #define IDirectSoundBuffer_GetStatus(p,a) (p)->GetStatus(a) 607 #define IDirectSoundBuffer_Initialize(p,a,b) (p)->Initialize(a,b) 608 #define IDirectSoundBuffer_Lock(p,a,b,c,d,e,f,g) (p)->Lock(a,b,c,d,e,f,g) 609 #define IDirectSoundBuffer_Play(p,a,b,c) (p)->Play(a,b,c) 610 #define IDirectSoundBuffer_SetCurrentPosition(p,a) (p)->SetCurrentPosition(a) 611 #define IDirectSoundBuffer_SetFormat(p,a) (p)->SetFormat(a) 612 #define IDirectSoundBuffer_SetVolume(p,a) (p)->SetVolume(a) 613 #define IDirectSoundBuffer_SetPan(p,a) (p)->SetPan(a) 614 #define IDirectSoundBuffer_SetFrequency(p,a) (p)->SetFrequency(a) 615 #define IDirectSoundBuffer_Stop(p) (p)->Stop() 616 #define IDirectSoundBuffer_Unlock(p,a,b,c,d) (p)->Unlock(a,b,c,d) 617 #define IDirectSoundBuffer_Restore(p) (p)->Restore() 618 #endif 619 620 621 /***************************************************************************** 622 * IDirectSoundBuffer8 interface 623 */ 624 #define INTERFACE IDirectSoundBuffer8 625 DECLARE_INTERFACE_(IDirectSoundBuffer8,IUnknown) 626 { 627 /*** IUnknown methods ***/ 628 STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; 629 STDMETHOD_(ULONG,AddRef)(THIS) PURE; 630 STDMETHOD_(ULONG,Release)(THIS) PURE; 631 /*** IDirectSoundBuffer8 methods ***/ 632 STDMETHOD(GetCaps)(THIS_ LPDSBCAPS lpDSBufferCaps) PURE; 633 STDMETHOD(GetCurrentPosition)(THIS_ LPDWORD lpdwCurrentPlayCursor, LPDWORD lpdwCurrentWriteCursor) PURE; 634 STDMETHOD(GetFormat)(THIS_ LPWAVEFORMATEX lpwfxFormat, DWORD dwSizeAllocated, LPDWORD lpdwSizeWritten) PURE; 635 STDMETHOD(GetVolume)(THIS_ LPLONG lplVolume) PURE; 636 STDMETHOD(GetPan)(THIS_ LPLONG lplpan) PURE; 637 STDMETHOD(GetFrequency)(THIS_ LPDWORD lpdwFrequency) PURE; 638 STDMETHOD(GetStatus)(THIS_ LPDWORD lpdwStatus) PURE; 639 STDMETHOD(Initialize)(THIS_ LPDIRECTSOUND lpDirectSound, LPCDSBUFFERDESC lpcDSBufferDesc) PURE; 640 STDMETHOD(Lock)(THIS_ DWORD dwOffset, DWORD dwBytes, LPVOID *ppvAudioPtr1, LPDWORD pdwAudioBytes1, LPVOID *ppvAudioPtr2, LPDWORD pdwAudioBytes2, DWORD dwFlags) PURE; 641 STDMETHOD(Play)(THIS_ DWORD dwReserved1, DWORD dwReserved2, DWORD dwFlags) PURE; 642 STDMETHOD(SetCurrentPosition)(THIS_ DWORD dwNewPosition) PURE; 643 STDMETHOD(SetFormat)(THIS_ LPCWAVEFORMATEX lpcfxFormat) PURE; 644 STDMETHOD(SetVolume)(THIS_ LONG lVolume) PURE; 645 STDMETHOD(SetPan)(THIS_ LONG lPan) PURE; 646 STDMETHOD(SetFrequency)(THIS_ DWORD dwFrequency) PURE; 647 STDMETHOD(Stop)(THIS) PURE; 648 STDMETHOD(Unlock)(THIS_ LPVOID pvAudioPtr1, DWORD dwAudioBytes1, LPVOID pvAudioPtr2, DWORD dwAudioPtr2) PURE; 649 STDMETHOD(Restore)(THIS) PURE; 650 STDMETHOD(SetFX)(THIS_ DWORD dwEffectsCount, LPDSEFFECTDESC pDSFXDesc, LPDWORD pdwResultCodes) PURE; 651 STDMETHOD(AcquireResources)(THIS_ DWORD dwFlags, DWORD dwEffectsCount, LPDWORD pdwResultCodes) PURE; 652 STDMETHOD(GetObjectInPath)(THIS_ REFGUID rguidObject, DWORD dwIndex, REFGUID rguidInterface, LPVOID *ppObject) PURE; 653 }; 654 #undef INTERFACE 655 656 #if !defined(__cplusplus) || defined(CINTERFACE) 657 /*** IUnknown methods ***/ 658 #define IDirectSoundBuffer8_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) 659 #define IDirectSoundBuffer8_AddRef(p) (p)->lpVtbl->AddRef(p) 660 #define IDirectSoundBuffer8_Release(p) (p)->lpVtbl->Release(p) 661 /*** IDirectSoundBuffer methods ***/ 662 #define IDirectSoundBuffer8_GetCaps(p,a) (p)->lpVtbl->GetCaps(p,a) 663 #define IDirectSoundBuffer8_GetCurrentPosition(p,a,b) (p)->lpVtbl->GetCurrentPosition(p,a,b) 664 #define IDirectSoundBuffer8_GetFormat(p,a,b,c) (p)->lpVtbl->GetFormat(p,a,b,c) 665 #define IDirectSoundBuffer8_GetVolume(p,a) (p)->lpVtbl->GetVolume(p,a) 666 #define IDirectSoundBuffer8_GetPan(p,a) (p)->lpVtbl->GetPan(p,a) 667 #define IDirectSoundBuffer8_GetFrequency(p,a) (p)->lpVtbl->GetFrequency(p,a) 668 #define IDirectSoundBuffer8_GetStatus(p,a) (p)->lpVtbl->GetStatus(p,a) 669 #define IDirectSoundBuffer8_Initialize(p,a,b) (p)->lpVtbl->Initialize(p,a,b) 670 #define IDirectSoundBuffer8_Lock(p,a,b,c,d,e,f,g) (p)->lpVtbl->Lock(p,a,b,c,d,e,f,g) 671 #define IDirectSoundBuffer8_Play(p,a,b,c) (p)->lpVtbl->Play(p,a,b,c) 672 #define IDirectSoundBuffer8_SetCurrentPosition(p,a) (p)->lpVtbl->SetCurrentPosition(p,a) 673 #define IDirectSoundBuffer8_SetFormat(p,a) (p)->lpVtbl->SetFormat(p,a) 674 #define IDirectSoundBuffer8_SetVolume(p,a) (p)->lpVtbl->SetVolume(p,a) 675 #define IDirectSoundBuffer8_SetPan(p,a) (p)->lpVtbl->SetPan(p,a) 676 #define IDirectSoundBuffer8_SetFrequency(p,a) (p)->lpVtbl->SetFrequency(p,a) 677 #define IDirectSoundBuffer8_Stop(p) (p)->lpVtbl->Stop(p) 678 #define IDirectSoundBuffer8_Unlock(p,a,b,c,d) (p)->lpVtbl->Unlock(p,a,b,c,d) 679 #define IDirectSoundBuffer8_Restore(p) (p)->lpVtbl->Restore(p) 680 /*** IDirectSoundBuffer8 methods ***/ 681 #define IDirectSoundBuffer8_SetFX(p,a,b,c) (p)->lpVtbl->SetFX(p,a,b,c) 682 #define IDirectSoundBuffer8_AcquireResources(p,a,b,c) (p)->lpVtbl->AcquireResources(p,a,b,c) 683 #define IDirectSoundBuffer8_GetObjectInPath(p,a,b,c,d) (p)->lpVtbl->GetObjectInPath(p,a,b,c,d) 684 #else 685 /*** IUnknown methods ***/ 686 #define IDirectSoundBuffer8_QueryInterface(p,a,b) (p)->QueryInterface(a,b) 687 #define IDirectSoundBuffer8_AddRef(p) (p)->AddRef() 688 #define IDirectSoundBuffer8_Release(p) (p)->Release() 689 /*** IDirectSoundBuffer methods ***/ 690 #define IDirectSoundBuffer8_GetCaps(p,a) (p)->GetCaps(a) 691 #define IDirectSoundBuffer8_GetCurrentPosition(p,a,b) (p)->GetCurrentPosition(a,b) 692 #define IDirectSoundBuffer8_GetFormat(p,a,b,c) (p)->GetFormat(a,b,c) 693 #define IDirectSoundBuffer8_GetVolume(p,a) (p)->GetVolume(a) 694 #define IDirectSoundBuffer8_GetPan(p,a) (p)->GetPan(a) 695 #define IDirectSoundBuffer8_GetFrequency(p,a) (p)->GetFrequency(a) 696 #define IDirectSoundBuffer8_GetStatus(p,a) (p)->GetStatus(a) 697 #define IDirectSoundBuffer8_Initialize(p,a,b) (p)->Initialize(a,b) 698 #define IDirectSoundBuffer8_Lock(p,a,b,c,d,e,f,g) (p)->Lock(a,b,c,d,e,f,g) 699 #define IDirectSoundBuffer8_Play(p,a,b,c) (p)->Play(a,b,c) 700 #define IDirectSoundBuffer8_SetCurrentPosition(p,a) (p)->SetCurrentPosition(a) 701 #define IDirectSoundBuffer8_SetFormat(p,a) (p)->SetFormat(a) 702 #define IDirectSoundBuffer8_SetVolume(p,a) (p)->SetVolume(a) 703 #define IDirectSoundBuffer8_SetPan(p,a) (p)->SetPan(a) 704 #define IDirectSoundBuffer8_SetFrequency(p,a) (p)->SetFrequency(a) 705 #define IDirectSoundBuffer8_Stop(p) (p)->Stop() 706 #define IDirectSoundBuffer8_Unlock(p,a,b,c,d) (p)->Unlock(a,b,c,d) 707 #define IDirectSoundBuffer8_Restore(p) (p)->Restore() 708 /*** IDirectSoundBuffer8 methods ***/ 709 #define IDirectSoundBuffer8_SetFX(p,a,b,c) (p)->SetFX(a,b,c) 710 #define IDirectSoundBuffer8_AcquireResources(p,a,b,c) (p)->AcquireResources(a,b,c) 711 #define IDirectSoundBuffer8_GetObjectInPath(p,a,b,c,d) (p)->GetObjectInPath(a,b,c,d) 712 #endif 713 714 715 /***************************************************************************** 716 * IDirectSoundCapture interface 717 */ 718 #define INTERFACE IDirectSoundCapture 719 DECLARE_INTERFACE_(IDirectSoundCapture,IUnknown) 720 { 721 /*** IUnknown methods ***/ 722 STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; 723 STDMETHOD_(ULONG,AddRef)(THIS) PURE; 724 STDMETHOD_(ULONG,Release)(THIS) PURE; 725 /*** IDirectSoundCapture methods ***/ 726 STDMETHOD(CreateCaptureBuffer)(THIS_ LPCDSCBUFFERDESC lpcDSCBufferDesc,LPDIRECTSOUNDCAPTUREBUFFER *lplpDSCaptureBuffer, LPUNKNOWN pUnk) PURE; 727 STDMETHOD(GetCaps)(THIS_ LPDSCCAPS lpDSCCaps) PURE; 728 STDMETHOD(Initialize)(THIS_ LPCGUID lpcGUID) PURE; 729 }; 730 #undef INTERFACE 731 732 #if !defined(__cplusplus) || defined(CINTERFACE) 733 /*** IUnknown methods ***/ 734 #define IDirectSoundCapture_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) 735 #define IDirectSoundCapture_AddRef(p) (p)->lpVtbl->AddRef(p) 736 #define IDirectSoundCapture_Release(p) (p)->lpVtbl->Release(p) 737 /*** IDirectSoundCapture methods ***/ 738 #define IDirectSoundCapture_CreateCaptureBuffer(p,a,b,c) (p)->lpVtbl->CreateCaptureBuffer(p,a,b,c) 739 #define IDirectSoundCapture_GetCaps(p,a) (p)->lpVtbl->GetCaps(p,a) 740 #define IDirectSoundCapture_Initialize(p,a) (p)->lpVtbl->Initialize(p,a) 741 #else 742 /*** IUnknown methods ***/ 743 #define IDirectSoundCapture_QueryInterface(p,a,b) (p)->QueryInterface(a,b) 744 #define IDirectSoundCapture_AddRef(p) (p)->AddRef() 745 #define IDirectSoundCapture_Release(p) (p)->Release() 746 /*** IDirectSoundCapture methods ***/ 747 #define IDirectSoundCapture_CreateCaptureBuffer(p,a,b,c) (p)->CreateCaptureBuffer(a,b,c) 748 #define IDirectSoundCapture_GetCaps(p,a) (p)->GetCaps(a) 749 #define IDirectSoundCapture_Initialize(p,a) (p)->Initialize(a) 750 #endif 751 752 /***************************************************************************** 753 * IDirectSoundCaptureBuffer interface 754 */ 755 #define INTERFACE IDirectSoundCaptureBuffer 756 DECLARE_INTERFACE_(IDirectSoundCaptureBuffer,IUnknown) 757 { 758 /*** IUnknown methods ***/ 759 STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; 760 STDMETHOD_(ULONG,AddRef)(THIS) PURE; 761 STDMETHOD_(ULONG,Release)(THIS) PURE; 762 /*** IDirectSoundCaptureBuffer methods ***/ 763 STDMETHOD(GetCaps)(THIS_ LPDSCBCAPS lpDSCBCaps) PURE; 764 STDMETHOD(GetCurrentPosition)(THIS_ LPDWORD lpdwCapturePosition,LPDWORD lpdwReadPosition) PURE; 765 STDMETHOD(GetFormat)(THIS_ LPWAVEFORMATEX lpwfxFormat, DWORD dwSizeAllocated, LPDWORD lpdwSizeWritten) PURE; 766 STDMETHOD(GetStatus)(THIS_ LPDWORD lpdwStatus) PURE; 767 STDMETHOD(Initialize)(THIS_ LPDIRECTSOUNDCAPTURE lpDSC, LPCDSCBUFFERDESC lpcDSCBDesc) PURE; 768 STDMETHOD(Lock)(THIS_ DWORD dwReadCusor, DWORD dwReadBytes, LPVOID *lplpvAudioPtr1, LPDWORD lpdwAudioBytes1, LPVOID *lplpvAudioPtr2, LPDWORD lpdwAudioBytes2, DWORD dwFlags) PURE; 769 STDMETHOD(Start)(THIS_ DWORD dwFlags) PURE; 770 STDMETHOD(Stop)(THIS) PURE; 771 STDMETHOD(Unlock)(THIS_ LPVOID lpvAudioPtr1, DWORD dwAudioBytes1, LPVOID lpvAudioPtr2, DWORD dwAudioBytes2) PURE; 772 }; 773 #undef INTERFACE 774 775 #if !defined(__cplusplus) || defined(CINTERFACE) 776 /*** IUnknown methods ***/ 777 #define IDirectSoundCaptureBuffer_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) 778 #define IDirectSoundCaptureBuffer_AddRef(p) (p)->lpVtbl->AddRef(p) 779 #define IDirectSoundCaptureBuffer_Release(p) (p)->lpVtbl->Release(p) 780 /*** IDirectSoundCaptureBuffer methods ***/ 781 #define IDirectSoundCaptureBuffer_GetCaps(p,a) (p)->lpVtbl->GetCaps(p,a) 782 #define IDirectSoundCaptureBuffer_GetCurrentPosition(p,a,b) (p)->lpVtbl->GetCurrentPosition(p,a,b) 783 #define IDirectSoundCaptureBuffer_GetFormat(p,a,b,c) (p)->lpVtbl->GetFormat(p,a,b,c) 784 #define IDirectSoundCaptureBuffer_GetStatus(p,a) (p)->lpVtbl->GetStatus(p,a) 785 #define IDirectSoundCaptureBuffer_Initialize(p,a,b) (p)->lpVtbl->Initialize(p,a,b) 786 #define IDirectSoundCaptureBuffer_Lock(p,a,b,c,d,e,f,g) (p)->lpVtbl->Lock(p,a,b,c,d,e,f,g) 787 #define IDirectSoundCaptureBuffer_Start(p,a) (p)->lpVtbl->Start(p,a) 788 #define IDirectSoundCaptureBuffer_Stop(p) (p)->lpVtbl->Stop(p) 789 #define IDirectSoundCaptureBuffer_Unlock(p,a,b,c,d) (p)->lpVtbl->Unlock(p,a,b,c,d) 790 #else 791 /*** IUnknown methods ***/ 792 #define IDirectSoundCaptureBuffer_QueryInterface(p,a,b) (p)->QueryInterface(a,b) 793 #define IDirectSoundCaptureBuffer_AddRef(p) (p)->AddRef() 794 #define IDirectSoundCaptureBuffer_Release(p) (p)->Release() 795 /*** IDirectSoundCaptureBuffer methods ***/ 796 #define IDirectSoundCaptureBuffer_GetCaps(p,a) (p)->GetCaps(a) 797 #define IDirectSoundCaptureBuffer_GetCurrentPosition(p,a,b) (p)->GetCurrentPosition(a,b) 798 #define IDirectSoundCaptureBuffer_GetFormat(p,a,b,c) (p)->GetFormat(a,b,c) 799 #define IDirectSoundCaptureBuffer_GetStatus(p,a) (p)->GetStatus(a) 800 #define IDirectSoundCaptureBuffer_Initialize(p,a,b) (p)->Initialize(a,b) 801 #define IDirectSoundCaptureBuffer_Lock(p,a,b,c,d,e,f,g) (p)->Lock(a,b,c,d,e,f,g) 802 #define IDirectSoundCaptureBuffer_Start(p,a) (p)->Start(a) 803 #define IDirectSoundCaptureBuffer_Stop(p) (p)->Stop() 804 #define IDirectSoundCaptureBuffer_Unlock(p,a,b,c,d) (p)->Unlock(a,b,c,d) 805 #endif 806 807 /***************************************************************************** 808 * IDirectSoundCaptureBuffer8 interface 809 */ 810 #define INTERFACE IDirectSoundCaptureBuffer8 811 DECLARE_INTERFACE_(IDirectSoundCaptureBuffer8,IDirectSoundCaptureBuffer) 812 { 813 /*** IUnknown methods ***/ 814 STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; 815 STDMETHOD_(ULONG,AddRef)(THIS) PURE; 816 STDMETHOD_(ULONG,Release)(THIS) PURE; 817 /*** IDirectSoundCaptureBuffer methods ***/ 818 STDMETHOD(GetCaps)(THIS_ LPDSCBCAPS lpDSCBCaps) PURE; 819 STDMETHOD(GetCurrentPosition)(THIS_ LPDWORD lpdwCapturePosition,LPDWORD lpdwReadPosition) PURE; 820 STDMETHOD(GetFormat)(THIS_ LPWAVEFORMATEX lpwfxFormat, DWORD dwSizeAllocated, LPDWORD lpdwSizeWritten) PURE; 821 STDMETHOD(GetStatus)(THIS_ LPDWORD lpdwStatus) PURE; 822 STDMETHOD(Initialize)(THIS_ LPDIRECTSOUNDCAPTURE lpDSC, LPCDSCBUFFERDESC lpcDSCBDesc) PURE; 823 STDMETHOD(Lock)(THIS_ DWORD dwReadCusor, DWORD dwReadBytes, LPVOID *lplpvAudioPtr1, LPDWORD lpdwAudioBytes1, LPVOID *lplpvAudioPtr2, LPDWORD lpdwAudioBytes2, DWORD dwFlags) PURE; 824 STDMETHOD(Start)(THIS_ DWORD dwFlags) PURE; 825 STDMETHOD(Stop)(THIS) PURE; 826 STDMETHOD(Unlock)(THIS_ LPVOID lpvAudioPtr1, DWORD dwAudioBytes1, LPVOID lpvAudioPtr2, DWORD dwAudioBytes2) PURE; 827 /*** IDirectSoundCaptureBuffer8 methods ***/ 828 STDMETHOD(GetObjectInPath)(THIS_ REFGUID rguidObject, DWORD dwIndex, REFGUID rguidInterface, LPVOID *ppObject) PURE; 829 STDMETHOD(GetFXStatus)(THIS_ DWORD dwFXCount, LPDWORD pdwFXStatus) PURE; 830 }; 831 #undef INTERFACE 832 833 #if !defined(__cplusplus) || defined(CINTERFACE) 834 /*** IUnknown methods ***/ 835 #define IDirectSoundCaptureBuffer8_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) 836 #define IDirectSoundCaptureBuffer8_AddRef(p) (p)->lpVtbl->AddRef(p) 837 #define IDirectSoundCaptureBuffer8_Release(p) (p)->lpVtbl->Release(p) 838 /*** IDirectSoundCaptureBuffer methods ***/ 839 #define IDirectSoundCaptureBuffer8_GetCaps(p,a) (p)->lpVtbl->GetCaps(p,a) 840 #define IDirectSoundCaptureBuffer8_GetCurrentPosition(p,a,b) (p)->lpVtbl->GetCurrentPosition(p,a,b) 841 #define IDirectSoundCaptureBuffer8_GetFormat(p,a,b,c) (p)->lpVtbl->GetFormat(p,a,b,c) 842 #define IDirectSoundCaptureBuffer8_GetStatus(p,a) (p)->lpVtbl->GetStatus(p,a) 843 #define IDirectSoundCaptureBuffer8_Initialize(p,a,b) (p)->lpVtbl->Initialize(p,a,b) 844 #define IDirectSoundCaptureBuffer8_Lock(p,a,b,c,d,e,f,g) (p)->lpVtbl->Lock(p,a,b,c,d,e,f,g) 845 #define IDirectSoundCaptureBuffer8_Start(p,a) (p)->lpVtbl->Start(p,a) 846 #define IDirectSoundCaptureBuffer8_Stop(p) (p)->lpVtbl->Stop(p) 847 #define IDirectSoundCaptureBuffer8_Unlock(p,a,b,c,d) (p)->lpVtbl->Unlock(p,a,b,c,d) 848 /*** IDirectSoundCaptureBuffer8 methods ***/ 849 #define IDirectSoundCaptureBuffer8_GetObjectInPath(p,a,b,c,d) (p)->lpVtbl->GetObjectInPath(p,a,b,c,d) 850 #define IDirectSoundCaptureBuffer8_GetFXStatus(p,a,b) (p)->lpVtbl->GetFXStatus(p,a,b) 851 #else 852 /*** IUnknown methods ***/ 853 #define IDirectSoundCaptureBuffer8_QueryInterface(p,a,b) (p)->QueryInterface(a,b) 854 #define IDirectSoundCaptureBuffer8_AddRef(p) (p)->AddRef() 855 #define IDirectSoundCaptureBuffer8_Release(p) (p)->Release() 856 /*** IDirectSoundCaptureBuffer methods ***/ 857 #define IDirectSoundCaptureBuffer8_GetCaps(p,a) (p)->GetCaps(a) 858 #define IDirectSoundCaptureBuffer8_GetCurrentPosition(p,a,b) (p)->GetCurrentPosition(a,b) 859 #define IDirectSoundCaptureBuffer8_GetFormat(p,a,b,c) (p)->GetFormat(a,b,c) 860 #define IDirectSoundCaptureBuffer8_GetStatus(p,a) (p)->GetStatus(a) 861 #define IDirectSoundCaptureBuffer8_Initialize(p,a,b) (p)->Initialize(a,b) 862 #define IDirectSoundCaptureBuffer8_Lock(p,a,b,c,d,e,f,g) (p)->Lock(a,b,c,d,e,f,g) 863 #define IDirectSoundCaptureBuffer8_Start(p,a) (p)->Start(a) 864 #define IDirectSoundCaptureBuffer8_Stop(p) (p)->Stop() 865 #define IDirectSoundCaptureBuffer8_Unlock(p,a,b,c,d) (p)->Unlock(a,b,c,d) 866 /*** IDirectSoundCaptureBuffer8 methods ***/ 867 #define IDirectSoundCaptureBuffer8_GetObjectInPath(p,a,b,c,d) (p)->GetObjectInPath(a,b,c,d) 868 #define IDirectSoundCaptureBuffer8_GetFXStatus(p,a,b) (p)->GetFXStatus(a,b) 869 #endif 870 871 /***************************************************************************** 872 * IDirectSoundNotify interface 873 */ 874 #define WINE_NOBUFFER 0x80000000 875 876 #define DSBPN_OFFSETSTOP -1 877 878 #define INTERFACE IDirectSoundNotify 879 DECLARE_INTERFACE_(IDirectSoundNotify,IUnknown) 880 { 881 /*** IUnknown methods ***/ 882 STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; 883 STDMETHOD_(ULONG,AddRef)(THIS) PURE; 884 STDMETHOD_(ULONG,Release)(THIS) PURE; 885 /*** IDirectSoundNotify methods ***/ 886 STDMETHOD(SetNotificationPositions)(THIS_ DWORD cPositionNotifies, LPCDSBPOSITIONNOTIFY lpcPositionNotifies) PURE; 887 }; 888 #undef INTERFACE 889 890 #if !defined(__cplusplus) || defined(CINTERFACE) 891 /*** IUnknown methods ***/ 892 #define IDirectSoundNotify_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) 893 #define IDirectSoundNotify_AddRef(p) (p)->lpVtbl->AddRef(p) 894 #define IDirectSoundNotify_Release(p) (p)->lpVtbl->Release(p) 895 /*** IDirectSoundNotify methods ***/ 896 #define IDirectSoundNotify_SetNotificationPositions(p,a,b) (p)->lpVtbl->SetNotificationPositions(p,a,b) 897 #else 898 /*** IUnknown methods ***/ 899 #define IDirectSoundNotify_QueryInterface(p,a,b) (p)->QueryInterface(a,b) 900 #define IDirectSoundNotify_AddRef(p) (p)->AddRef() 901 #define IDirectSoundNotify_Release(p) (p)->Release() 902 /*** IDirectSoundNotify methods ***/ 903 #define IDirectSoundNotify_SetNotificationPositions(p,a,b) (p)->SetNotificationPositions(a,b) 904 #endif 905 906 907 /***************************************************************************** 908 * IDirectSound3DListener interface 909 */ 910 #define DS3DMODE_NORMAL 0x00000000 911 #define DS3DMODE_HEADRELATIVE 0x00000001 912 #define DS3DMODE_DISABLE 0x00000002 913 914 #define DS3D_IMMEDIATE 0x00000000 915 #define DS3D_DEFERRED 0x00000001 916 917 #define DS3D_MINDISTANCEFACTOR FLT_MIN 918 #define DS3D_MAXDISTANCEFACTOR FLT_MAX 919 #define DS3D_DEFAULTDISTANCEFACTOR 1.0f 920 921 #define DS3D_MINROLLOFFFACTOR 0.0f 922 #define DS3D_MAXROLLOFFFACTOR 10.0f 923 #define DS3D_DEFAULTROLLOFFFACTOR 1.0f 924 925 #define DS3D_MINDOPPLERFACTOR 0.0f 926 #define DS3D_MAXDOPPLERFACTOR 10.0f 927 #define DS3D_DEFAULTDOPPLERFACTOR 1.0f 928 929 #define DS3D_DEFAULTMINDISTANCE 1.0f 930 #define DS3D_DEFAULTMAXDISTANCE 1000000000.0f 931 932 #define DS3D_MINCONEANGLE 0 933 #define DS3D_MAXCONEANGLE 360 934 #define DS3D_DEFAULTCONEANGLE 360 935 936 #define DS3D_DEFAULTCONEOUTSIDEVOLUME DSBVOLUME_MAX 937 938 typedef struct _DS3DLISTENER { 939 DWORD dwSize; 940 D3DVECTOR vPosition; 941 D3DVECTOR vVelocity; 942 D3DVECTOR vOrientFront; 943 D3DVECTOR vOrientTop; 944 D3DVALUE flDistanceFactor; 945 D3DVALUE flRolloffFactor; 946 D3DVALUE flDopplerFactor; 947 } DS3DLISTENER, *LPDS3DLISTENER; 948 949 typedef const DS3DLISTENER *LPCDS3DLISTENER; 950 951 #define INTERFACE IDirectSound3DListener 952 DECLARE_INTERFACE_(IDirectSound3DListener,IUnknown) 953 { 954 /*** IUnknown methods ***/ 955 STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; 956 STDMETHOD_(ULONG,AddRef)(THIS) PURE; 957 STDMETHOD_(ULONG,Release)(THIS) PURE; 958 /*** IDirectSound3DListener methods ***/ 959 STDMETHOD(GetAllParameters)(THIS_ LPDS3DLISTENER lpListener) PURE; 960 STDMETHOD(GetDistanceFactor)(THIS_ LPD3DVALUE lpflDistanceFactor) PURE; 961 STDMETHOD(GetDopplerFactor)(THIS_ LPD3DVALUE lpflDopplerFactor) PURE; 962 STDMETHOD(GetOrientation)(THIS_ LPD3DVECTOR lpvOrientFront, LPD3DVECTOR lpvOrientTop) PURE; 963 STDMETHOD(GetPosition)(THIS_ LPD3DVECTOR lpvPosition) PURE; 964 STDMETHOD(GetRolloffFactor)(THIS_ LPD3DVALUE lpflRolloffFactor) PURE; 965 STDMETHOD(GetVelocity)(THIS_ LPD3DVECTOR lpvVelocity) PURE; 966 STDMETHOD(SetAllParameters)(THIS_ LPCDS3DLISTENER lpcListener, DWORD dwApply) PURE; 967 STDMETHOD(SetDistanceFactor)(THIS_ D3DVALUE flDistanceFactor, DWORD dwApply) PURE; 968 STDMETHOD(SetDopplerFactor)(THIS_ D3DVALUE flDopplerFactor, DWORD dwApply) PURE; 969 STDMETHOD(SetOrientation)(THIS_ D3DVALUE xFront, D3DVALUE yFront, D3DVALUE zFront, D3DVALUE xTop, D3DVALUE yTop, D3DVALUE zTop, DWORD dwApply) PURE; 970 STDMETHOD(SetPosition)(THIS_ D3DVALUE x, D3DVALUE y, D3DVALUE z, DWORD dwApply) PURE; 971 STDMETHOD(SetRolloffFactor)(THIS_ D3DVALUE flRolloffFactor, DWORD dwApply) PURE; 972 STDMETHOD(SetVelocity)(THIS_ D3DVALUE x, D3DVALUE y, D3DVALUE z, DWORD dwApply) PURE; 973 STDMETHOD(CommitDeferredSettings)(THIS) PURE; 974 }; 975 #undef INTERFACE 976 977 #if !defined(__cplusplus) || defined(CINTERFACE) 978 /*** IUnknown methods ***/ 979 #define IDirectSound3DListener_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) 980 #define IDirectSound3DListener_AddRef(p) (p)->lpVtbl->AddRef(p) 981 #define IDirectSound3DListener_Release(p) (p)->lpVtbl->Release(p) 982 /*** IDirectSound3DListener methods ***/ 983 #define IDirectSound3DListener_GetAllParameters(p,a) (p)->lpVtbl->GetAllParameters(p,a) 984 #define IDirectSound3DListener_GetDistanceFactor(p,a) (p)->lpVtbl->GetDistanceFactor(p,a) 985 #define IDirectSound3DListener_GetDopplerFactor(p,a) (p)->lpVtbl->GetDopplerFactor(p,a) 986 #define IDirectSound3DListener_GetOrientation(p,a,b) (p)->lpVtbl->GetOrientation(p,a,b) 987 #define IDirectSound3DListener_GetPosition(p,a) (p)->lpVtbl->GetPosition(p,a) 988 #define IDirectSound3DListener_GetRolloffFactor(p,a) (p)->lpVtbl->GetRolloffFactor(p,a) 989 #define IDirectSound3DListener_GetVelocity(p,a) (p)->lpVtbl->GetVelocity(p,a) 990 #define IDirectSound3DListener_SetAllParameters(p,a,b) (p)->lpVtbl->SetAllParameters(p,a,b) 991 #define IDirectSound3DListener_SetDistanceFactor(p,a,b) (p)->lpVtbl->SetDistanceFactor(p,a,b) 992 #define IDirectSound3DListener_SetDopplerFactor(p,a,b) (p)->lpVtbl->SetDopplerFactor(p,a,b) 993 #define IDirectSound3DListener_SetOrientation(p,a,b,c,d,e,f,g) (p)->lpVtbl->SetOrientation(p,a,b,c,d,e,f,g) 994 #define IDirectSound3DListener_SetPosition(p,a,b,c,d) (p)->lpVtbl->SetPosition(p,a,b,c,d) 995 #define IDirectSound3DListener_SetRolloffFactor(p,a,b) (p)->lpVtbl->SetRolloffFactor(p,a,b) 996 #define IDirectSound3DListener_SetVelocity(p,a,b,c,d) (p)->lpVtbl->SetVelocity(p,a,b,c,d) 997 #define IDirectSound3DListener_CommitDeferredSettings(p) (p)->lpVtbl->CommitDeferredSettings(p) 998 #else 999 /*** IUnknown methods ***/ 1000 #define IDirectSound3DListener_QueryInterface(p,a,b) (p)->QueryInterface(a,b) 1001 #define IDirectSound3DListener_AddRef(p) (p)->AddRef() 1002 #define IDirectSound3DListener_Release(p) (p)->Release() 1003 /*** IDirectSound3DListener methods ***/ 1004 #define IDirectSound3DListener_GetAllParameters(p,a) (p)->GetAllParameters(a) 1005 #define IDirectSound3DListener_GetDistanceFactor(p,a) (p)->GetDistanceFactor(a) 1006 #define IDirectSound3DListener_GetDopplerFactor(p,a) (p)->GetDopplerFactor(a) 1007 #define IDirectSound3DListener_GetOrientation(p,a,b) (p)->GetOrientation(a,b) 1008 #define IDirectSound3DListener_GetPosition(p,a) (p)->GetPosition(a) 1009 #define IDirectSound3DListener_GetRolloffFactor(p,a) (p)->GetRolloffFactor(a) 1010 #define IDirectSound3DListener_GetVelocity(p,a) (p)->GetVelocity(a) 1011 #define IDirectSound3DListener_SetAllParameters(p,a,b) (p)->SetAllParameters(a,b) 1012 #define IDirectSound3DListener_SetDistanceFactor(p,a,b) (p)->SetDistanceFactor(a,b) 1013 #define IDirectSound3DListener_SetDopplerFactor(p,a,b) (p)->SetDopplerFactor(a,b) 1014 #define IDirectSound3DListener_SetOrientation(p,a,b,c,d,e,f,g) (p)->SetOrientation(a,b,c,d,e,f,g) 1015 #define IDirectSound3DListener_SetPosition(p,a,b,c,d) (p)->SetPosition(a,b,c,d) 1016 #define IDirectSound3DListener_SetRolloffFactor(p,a,b) (p)->SetRolloffFactor(a,b) 1017 #define IDirectSound3DListener_SetVelocity(p,a,b,c,d) (p)->SetVelocity(a,b,c,d) 1018 #define IDirectSound3DListener_CommitDeferredSettings(p) (p)->CommitDeferredSettings() 1019 #endif 1020 1021 1022 /***************************************************************************** 1023 * IDirectSound3DBuffer interface 1024 */ 1025 typedef struct _DS3DBUFFER { 1026 DWORD dwSize; 1027 D3DVECTOR vPosition; 1028 D3DVECTOR vVelocity; 1029 DWORD dwInsideConeAngle; 1030 DWORD dwOutsideConeAngle; 1031 D3DVECTOR vConeOrientation; 1032 LONG lConeOutsideVolume; 1033 D3DVALUE flMinDistance; 1034 D3DVALUE flMaxDistance; 1035 DWORD dwMode; 1036 } DS3DBUFFER, *LPDS3DBUFFER; 1037 1038 typedef const DS3DBUFFER *LPCDS3DBUFFER; 1039 1040 #define INTERFACE IDirectSound3DBuffer 1041 DECLARE_INTERFACE_(IDirectSound3DBuffer,IUnknown) 1042 { 1043 /*** IUnknown methods ***/ 1044 STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; 1045 STDMETHOD_(ULONG,AddRef)(THIS) PURE; 1046 STDMETHOD_(ULONG,Release)(THIS) PURE; 1047 /*** IDirectSound3DBuffer methods ***/ 1048 STDMETHOD(GetAllParameters)(THIS_ LPDS3DBUFFER lpDs3dBuffer) PURE; 1049 STDMETHOD(GetConeAngles)(THIS_ LPDWORD lpdwInsideConeAngle, LPDWORD lpdwOutsideConeAngle) PURE; 1050 STDMETHOD(GetConeOrientation)(THIS_ LPD3DVECTOR lpvOrientation) PURE; 1051 STDMETHOD(GetConeOutsideVolume)(THIS_ LPLONG lplConeOutsideVolume) PURE; 1052 STDMETHOD(GetMaxDistance)(THIS_ LPD3DVALUE lpflMaxDistance) PURE; 1053 STDMETHOD(GetMinDistance)(THIS_ LPD3DVALUE lpflMinDistance) PURE; 1054 STDMETHOD(GetMode)(THIS_ LPDWORD lpwdMode) PURE; 1055 STDMETHOD(GetPosition)(THIS_ LPD3DVECTOR lpvPosition) PURE; 1056 STDMETHOD(GetVelocity)(THIS_ LPD3DVECTOR lpvVelocity) PURE; 1057 STDMETHOD(SetAllParameters)(THIS_ LPCDS3DBUFFER lpcDs3dBuffer, DWORD dwApply) PURE; 1058 STDMETHOD(SetConeAngles)(THIS_ DWORD dwInsideConeAngle, DWORD dwOutsideConeAngle, DWORD dwApply) PURE; 1059 STDMETHOD(SetConeOrientation)(THIS_ D3DVALUE x, D3DVALUE y, D3DVALUE z, DWORD dwApply) PURE; 1060 STDMETHOD(SetConeOutsideVolume)(THIS_ LONG lConeOutsideVolume, DWORD dwApply) PURE; 1061 STDMETHOD(SetMaxDistance)(THIS_ D3DVALUE flMaxDistance, DWORD dwApply) PURE; 1062 STDMETHOD(SetMinDistance)(THIS_ D3DVALUE flMinDistance, DWORD dwApply) PURE; 1063 STDMETHOD(SetMode)(THIS_ DWORD dwMode, DWORD dwApply) PURE; 1064 STDMETHOD(SetPosition)(THIS_ D3DVALUE x, D3DVALUE y, D3DVALUE z, DWORD dwApply) PURE; 1065 STDMETHOD(SetVelocity)(THIS_ D3DVALUE x, D3DVALUE y, D3DVALUE z, DWORD dwApply) PURE; 1066 }; 1067 #undef INTERFACE 1068 1069 #if !defined(__cplusplus) || defined(CINTERFACE) 1070 /*** IUnknown methods ***/ 1071 #define IDirectSound3DBuffer_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) 1072 #define IDirectSound3DBuffer_AddRef(p) (p)->lpVtbl->AddRef(p) 1073 #define IDirectSound3DBuffer_Release(p) (p)->lpVtbl->Release(p) 1074 /*** IDirectSound3DBuffer methods ***/ 1075 #define IDirectSound3DBuffer_GetAllParameters(p,a) (p)->lpVtbl->GetAllParameters(p,a) 1076 #define IDirectSound3DBuffer_GetConeAngles(p,a,b) (p)->lpVtbl->GetConeAngles(p,a,b) 1077 #define IDirectSound3DBuffer_GetConeOrientation(p,a) (p)->lpVtbl->GetConeOrientation(p,a) 1078 #define IDirectSound3DBuffer_GetConeOutsideVolume(p,a) (p)->lpVtbl->GetConeOutsideVolume(p,a) 1079 #define IDirectSound3DBuffer_GetMaxDistance(p,a) (p)->lpVtbl->GetMaxDistance(p,a) 1080 #define IDirectSound3DBuffer_GetMinDistance(p,a) (p)->lpVtbl->GetMinDistance(p,a) 1081 #define IDirectSound3DBuffer_GetMode(p,a) (p)->lpVtbl->GetMode(p,a) 1082 #define IDirectSound3DBuffer_GetPosition(p,a) (p)->lpVtbl->GetPosition(p,a) 1083 #define IDirectSound3DBuffer_GetVelocity(p,a) (p)->lpVtbl->GetVelocity(p,a) 1084 #define IDirectSound3DBuffer_SetAllParameters(p,a,b) (p)->lpVtbl->SetAllParameters(p,a,b) 1085 #define IDirectSound3DBuffer_SetConeAngles(p,a,b,c) (p)->lpVtbl->SetConeAngles(p,a,b,c) 1086 #define IDirectSound3DBuffer_SetConeOrientation(p,a,b,c,d) (p)->lpVtbl->SetConeOrientation(p,a,b,c,d) 1087 #define IDirectSound3DBuffer_SetConeOutsideVolume(p,a,b) (p)->lpVtbl->SetConeOutsideVolume(p,a,b) 1088 #define IDirectSound3DBuffer_SetMaxDistance(p,a,b) (p)->lpVtbl->SetMaxDistance(p,a,b) 1089 #define IDirectSound3DBuffer_SetMinDistance(p,a,b) (p)->lpVtbl->SetMinDistance(p,a,b) 1090 #define IDirectSound3DBuffer_SetMode(p,a,b) (p)->lpVtbl->SetMode(p,a,b) 1091 #define IDirectSound3DBuffer_SetPosition(p,a,b,c,d) (p)->lpVtbl->SetPosition(p,a,b,c,d) 1092 #define IDirectSound3DBuffer_SetVelocity(p,a,b,c,d) (p)->lpVtbl->SetVelocity(p,a,b,c,d) 1093 #else 1094 /*** IUnknown methods ***/ 1095 #define IDirectSound3DBuffer_QueryInterface(p,a,b) (p)->QueryInterface(a,b) 1096 #define IDirectSound3DBuffer_AddRef(p) (p)->AddRef() 1097 #define IDirectSound3DBuffer_Release(p) (p)->Release() 1098 /*** IDirectSound3DBuffer methods ***/ 1099 #define IDirectSound3DBuffer_GetAllParameters(p,a) (p)->GetAllParameters(a) 1100 #define IDirectSound3DBuffer_GetConeAngles(p,a,b) (p)->GetConeAngles(a,b) 1101 #define IDirectSound3DBuffer_GetConeOrientation(p,a) (p)->GetConeOrientation(a) 1102 #define IDirectSound3DBuffer_GetConeOutsideVolume(p,a) (p)->GetConeOutsideVolume(a) 1103 #define IDirectSound3DBuffer_GetMaxDistance(p,a) (p)->GetMaxDistance(a) 1104 #define IDirectSound3DBuffer_GetMinDistance(p,a) (p)->GetMinDistance(a) 1105 #define IDirectSound3DBuffer_GetMode(p,a) (p)->GetMode(a) 1106 #define IDirectSound3DBuffer_GetPosition(p,a) (p)->GetPosition(a) 1107 #define IDirectSound3DBuffer_GetVelocity(p,a) (p)->GetVelocity(a) 1108 #define IDirectSound3DBuffer_SetAllParameters(p,a,b) (p)->SetAllParameters(a,b) 1109 #define IDirectSound3DBuffer_SetConeAngles(p,a,b,c) (p)->SetConeAngles(a,b,c) 1110 #define IDirectSound3DBuffer_SetConeOrientation(p,a,b,c,d) (p)->SetConeOrientation(a,b,c,d) 1111 #define IDirectSound3DBuffer_SetConeOutsideVolume(p,a,b) (p)->SetConeOutsideVolume(a,b) 1112 #define IDirectSound3DBuffer_SetMaxDistance(p,a,b) (p)->SetMaxDistance(a,b) 1113 #define IDirectSound3DBuffer_SetMinDistance(p,a,b) (p)->SetMinDistance(a,b) 1114 #define IDirectSound3DBuffer_SetMode(p,a,b) (p)->SetMode(a,b) 1115 #define IDirectSound3DBuffer_SetPosition(p,a,b,c,d) (p)->SetPosition(a,b,c,d) 1116 #define IDirectSound3DBuffer_SetVelocity(p,a,b,c,d) (p)->SetVelocity(a,b,c,d) 1117 #endif 1118 1119 /***************************************************************************** 1120 * IKsPropertySet interface 1121 */ 1122 #ifndef _IKsPropertySet_ 1123 #define _IKsPropertySet_ 1124 1125 typedef struct IKsPropertySet *LPKSPROPERTYSET; 1126 1127 DEFINE_GUID(IID_IKsPropertySet,0x31EFAC30,0x515C,0x11D0,0xA9,0xAA,0x00,0xAA,0x00,0x61,0xBE,0x93); 1128 1129 #define KSPROPERTY_SUPPORT_GET 1 1130 #define KSPROPERTY_SUPPORT_SET 2 1131 1132 #define INTERFACE IKsPropertySet 1133 DECLARE_INTERFACE_(IKsPropertySet,IUnknown) 1134 { 1135 /*** IUnknown methods ***/ 1136 STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; 1137 STDMETHOD_(ULONG,AddRef)(THIS) PURE; 1138 STDMETHOD_(ULONG,Release)(THIS) PURE; 1139 /*** IKsPropertySet methods ***/ 1140 STDMETHOD(Get)(THIS_ REFGUID rgid,ULONG x1,LPVOID p1,ULONG x2,LPVOID p2,ULONG x3,ULONG *px4) PURE; 1141 STDMETHOD(Set)(THIS_ REFGUID rgid,ULONG x1,LPVOID p1,ULONG x2,LPVOID p2,ULONG x3) PURE; 1142 STDMETHOD(QuerySupport)(THIS_ REFGUID rgid,ULONG x1,ULONG *px2) PURE; 1143 }; 1144 #undef INTERFACE 1145 1146 #if !defined(__cplusplus) || defined(CINTERFACE) 1147 /*** IUnknown methods ***/ 1148 #define IKsPropertySet_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) 1149 #define IKsPropertySet_AddRef(p) (p)->lpVtbl->AddRef(p) 1150 #define IKsPropertySet_Release(p) (p)->lpVtbl->Release(p) 1151 /*** IKsPropertySet methods ***/ 1152 #define IKsPropertySet_Get(p,a,b,c,d,e,f,g) (p)->lpVtbl->Get(p,a,b,c,d,e,f,g) 1153 #define IKsPropertySet_Set(p,a,b,c,d,e,f) (p)->lpVtbl->Set(p,a,b,c,d,e,f) 1154 #define IKsPropertySet_QuerySupport(p,a,b,c) (p)->lpVtbl->QuerySupport(p,a,b,c) 1155 #else 1156 /*** IUnknown methods ***/ 1157 #define IKsPropertySet_QueryInterface(p,a,b) (p)->QueryInterface(a,b) 1158 #define IKsPropertySet_AddRef(p) (p)->AddRef() 1159 #define IKsPropertySet_Release(p) (p)->Release() 1160 /*** IKsPropertySet methods ***/ 1161 #define IKsPropertySet_Get(p,a,b,c,d,e,f,g) (p)->Get(a,b,c,d,e,f,g) 1162 #define IKsPropertySet_Set(p,a,b,c,d,e,f) (p)->Set(a,b,c,d,e,f) 1163 #define IKsPropertySet_QuerySupport(p,a,b,c) (p)->QuerySupport(a,b,c) 1164 #endif 1165 1166 #endif /* _IKsPropertySet_ */ 1167 1168 /***************************************************************************** 1169 * IDirectSoundFullDuplex interface 1170 */ 1171 #define INTERFACE IDirectSoundFullDuplex 1172 DECLARE_INTERFACE_(IDirectSoundFullDuplex,IUnknown) 1173 { 1174 /*** IUnknown methods ***/ 1175 STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; 1176 STDMETHOD_(ULONG,AddRef)(THIS) PURE; 1177 STDMETHOD_(ULONG,Release)(THIS) PURE; 1178 /*** IDirectSoundFullDuplex methods ***/ 1179 STDMETHOD(Initialize)(THIS_ LPCGUID pCaptureGuid,LPCGUID pRendererGuid,LPCDSCBUFFERDESC lpDscBufferDesc,LPCDSBUFFERDESC lpDsBufferDesc,HWND hWnd,DWORD dwLevel,LPLPDIRECTSOUNDCAPTUREBUFFER8 lplpDirectSoundCaptureBuffer8,LPLPDIRECTSOUNDBUFFER8 lplpDirectSoundBuffer8) PURE; 1180 }; 1181 #undef INTERFACE 1182 1183 #if !defined(__cplusplus) || defined(CINTERFACE) 1184 /*** IUnknown methods ***/ 1185 #define IDirectSoundFullDuplex_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) 1186 #define IDirectSoundFullDuplex_AddRef(p) (p)->lpVtbl->AddRef(p) 1187 #define IDirectSoundFullDuplex_Release(p) (p)->lpVtbl->Release(p) 1188 /*** IDirectSoundFullDuplex methods ***/ 1189 #define IDirectSoundFullDuplex_Initialize(p,a,b,c,d,e,f,g,h) (p)->lpVtbl->Initialize(p,a,b,c,d,e,f,g,h) 1190 #else 1191 /*** IUnknown methods ***/ 1192 #define IDirectSoundFullDuplex_QueryInterface(p,a,b) (p)->QueryInterface(a,b) 1193 #define IDirectSoundFullDuplex_AddRef(p) (p)->AddRef() 1194 #define IDirectSoundFullDuplex_Release(p) (p)->Release() 1195 /*** IDirectSoundFullDuplex methods ***/ 1196 #define IDirectSoundFullDuplex_Initialize(p,a,b,c,d,e,f,g,h) (p)->Initialize(a,b,c,d,e,f,g,h) 1197 #endif 1198 1199 #ifdef __cplusplus 1200 } /* extern "C" */ 1201 #endif /* defined(__cplusplus) */ 1202 1203 #endif /* __DSOUND_INCLUDED__ */ 1204