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