Reactos
at master 1203 lines 61 kB view raw
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 31extern "C" { 32#endif /* defined(__cplusplus) */ 33 34#ifndef DX_SHARED_DEFINES 35 36typedef float D3DVALUE, *LPD3DVALUE; 37 38#ifndef D3DCOLOR_DEFINED 39typedef DWORD D3DCOLOR, *LPD3DCOLOR; 40#define D3DCOLOR_DEFINED 41#endif 42 43#ifndef D3DVECTOR_DEFINED 44typedef struct _D3DVECTOR { 45 float x; 46 float y; 47 float z; 48} D3DVECTOR; 49#define D3DVECTOR_DEFINED 50#endif 51 52#ifndef LPD3DVECTOR_DEFINED 53typedef 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 */ 63DEFINE_GUID(CLSID_DirectSound, 0x47d4d946, 0x62e8, 0x11cf, 0x93, 0xbc, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00); 64DEFINE_GUID(CLSID_DirectSound8, 0x3901cc3f, 0x84b5, 0x4fa4, 0xba, 0x35, 0xaa, 0x81, 0x72, 0xb8, 0xa0, 0x9b); 65DEFINE_GUID(CLSID_DirectSoundCapture, 0xb0210780, 0x89cd, 0x11d0, 0xaf, 0x08, 0x00, 0xa0, 0xc9, 0x25, 0xcd, 0x16); 66DEFINE_GUID(CLSID_DirectSoundCapture8, 0xe4bcac13, 0x7f99, 0x4908, 0x9a, 0x8e, 0x74, 0xe3, 0xbf, 0x24, 0xb6, 0xe1); 67DEFINE_GUID(CLSID_DirectSoundFullDuplex,0xfea4300c, 0x7959, 0x4147, 0xb2, 0x6a, 0x23, 0x77, 0xb9, 0xe7, 0xa9, 0x1d); 68 69DEFINE_GUID(IID_IDirectSound, 0x279AFA83,0x4981,0x11CE,0xA5,0x21,0x00,0x20,0xAF,0x0B,0xE5,0x60); 70typedef struct IDirectSound *LPDIRECTSOUND,**LPLPDIRECTSOUND; 71 72DEFINE_GUID(IID_IDirectSound8, 0xC50A7E93,0xF395,0x4834,0x9E,0xF6,0x7F,0xA9,0x9D,0xE5,0x09,0x66); 73typedef struct IDirectSound8 *LPDIRECTSOUND8,**LPLPDIRECTSOUND8; 74 75DEFINE_GUID(IID_IDirectSoundBuffer, 0x279AFA85,0x4981,0x11CE,0xA5,0x21,0x00,0x20,0xAF,0x0B,0xE5,0x60); 76typedef struct IDirectSoundBuffer *LPDIRECTSOUNDBUFFER,**LPLPDIRECTSOUNDBUFFER; 77 78DEFINE_GUID(IID_IDirectSoundBuffer8, 0x6825A449,0x7524,0x4D82,0x92,0x0F,0x50,0xE3,0x6A,0xB3,0xAB,0x1E); 79typedef struct IDirectSoundBuffer8 *LPDIRECTSOUNDBUFFER8,**LPLPDIRECTSOUNDBUFFER8; 80 81DEFINE_GUID(IID_IDirectSoundNotify, 0xB0210783,0x89cd,0x11d0,0xAF,0x08,0x00,0xA0,0xC9,0x25,0xCD,0x16); 82typedef struct IDirectSoundNotify *LPDIRECTSOUNDNOTIFY,**LPLPDIRECTSOUNDNOTIFY; 83#define IID_IDirectSoundNotify8 IID_IDirectSoundNotify 84 85DEFINE_GUID(IID_IDirectSound3DListener, 0x279AFA84,0x4981,0x11CE,0xA5,0x21,0x00,0x20,0xAF,0x0B,0xE5,0x60); 86typedef struct IDirectSound3DListener *LPDIRECTSOUND3DLISTENER,**LPLPDIRECTSOUND3DLISTENER; 87 88DEFINE_GUID(IID_IDirectSound3DBuffer, 0x279AFA86,0x4981,0x11CE,0xA5,0x21,0x00,0x20,0xAF,0x0B,0xE5,0x60); 89typedef struct IDirectSound3DBuffer *LPDIRECTSOUND3DBUFFER,**LPLPDIRECTSOUND3DBUFFER; 90 91DEFINE_GUID(IID_IDirectSoundCapture, 0xB0210781,0x89CD,0x11D0,0xAF,0x08,0x00,0xA0,0xC9,0x25,0xCD,0x16); 92typedef struct IDirectSoundCapture *LPDIRECTSOUNDCAPTURE,**LPLPDIRECTSOUNDCAPTURE; 93#define IID_IDirectSoundCapture8 IID_IDirectSoundCapture 94typedef struct IDirectSoundCapture IDirectSoundCapture8,*LPDIRECTSOUNDCAPTURE8,**LPLPDIRECTSOUNDCAPTURE8; 95 96DEFINE_GUID(IID_IDirectSoundCaptureBuffer,0xB0210782,0x89CD,0x11D0,0xAF,0x08,0x00,0xA0,0xC9,0x25,0xCD,0x16); 97typedef struct IDirectSoundCaptureBuffer *LPDIRECTSOUNDCAPTUREBUFFER,**LPLPDIRECTSOUNDCAPTUREBUFFER; 98 99DEFINE_GUID(IID_IDirectSoundCaptureBuffer8,0x00990DF4,0x0DBB,0x4872,0x83,0x3E,0x6D,0x30,0x3E,0x80,0xAE,0xB6); 100typedef struct IDirectSoundCaptureBuffer8 *LPDIRECTSOUNDCAPTUREBUFFER8,**LPLPDIRECTSOUNDCAPTUREBUFFER8; 101 102DEFINE_GUID(IID_IDirectSoundFullDuplex, 0xEDCB4C7A,0xDAAB,0x4216,0xA4,0x2E,0x6C,0x50,0x59,0x6D,0xDC,0x1D); 103typedef struct IDirectSoundFullDuplex *LPDIRECTSOUNDFULLDUPLEX,**LPLPDIRECTSOUNDFULLDUPLEX; 104#define IID_IDirectSoundFullDuplex8 IID_IDirectSoundFullDuplex 105 106DEFINE_GUID(DSDEVID_DefaultPlayback, 0xDEF00000,0x9C6D,0x47Ed,0xAA,0xF1,0x4D,0xDA,0x8F,0x2B,0x5C,0x03); 107DEFINE_GUID(DSDEVID_DefaultCapture, 0xDEF00001,0x9C6D,0x47Ed,0xAA,0xF1,0x4D,0xDA,0x8F,0x2B,0x5C,0x03); 108DEFINE_GUID(DSDEVID_DefaultVoicePlayback,0xDEF00002,0x9C6D,0x47Ed,0xAA,0xF1,0x4D,0xDA,0x8F,0x2B,0x5C,0x03); 109DEFINE_GUID(DSDEVID_DefaultVoiceCapture, 0xDEF00003,0x9C6D,0x47ED,0xAA,0xF1,0x4D,0xDA,0x8F,0x2B,0x5C,0x03); 110 111DEFINE_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 160typedef 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; 187typedef 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 237typedef struct _DSBCAPS 238{ 239 DWORD dwSize; 240 DWORD dwFlags; 241 DWORD dwBufferBytes; 242 DWORD dwUnlockTransferRate; 243 DWORD dwPlayCpuOverhead; 244} DSBCAPS,*LPDSBCAPS; 245typedef 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 252typedef struct _DSEFFECTDESC 253{ 254 DWORD dwSize; 255 DWORD dwFlags; 256 GUID guidDSFXClass; 257 DWORD_PTR dwReserved1; 258 DWORD_PTR dwReserved2; 259} DSEFFECTDESC,*LPDSEFFECTDESC; 260typedef const DSEFFECTDESC *LPCDSEFFECTDESC; 261 262#define DSFX_LOCHARDWARE 0x00000001 263#define DSFX_LOCSOFTWARE 0x00000002 264 265enum 266{ 267 DSFXR_PRESENT, 268 DSFXR_LOCHARDWARE, 269 DSFXR_LOCSOFTWARE, 270 DSFXR_UNALLOCATED, 271 DSFXR_FAILED, 272 DSFXR_UNKNOWN, 273 DSFXR_SENDLOOP 274}; 275 276typedef struct _DSBUFFERDESC1 277{ 278 DWORD dwSize; 279 DWORD dwFlags; 280 DWORD dwBufferBytes; 281 DWORD dwReserved; 282 LPWAVEFORMATEX lpwfxFormat; 283} DSBUFFERDESC1,*LPDSBUFFERDESC1; 284typedef const DSBUFFERDESC1 *LPCDSBUFFERDESC1; 285 286typedef struct _DSBUFFERDESC 287{ 288 DWORD dwSize; 289 DWORD dwFlags; 290 DWORD dwBufferBytes; 291 DWORD dwReserved; 292 LPWAVEFORMATEX lpwfxFormat; 293 GUID guid3DAlgorithm; 294} DSBUFFERDESC,*LPDSBUFFERDESC; 295typedef const DSBUFFERDESC *LPCDSBUFFERDESC; 296 297typedef struct _DSBPOSITIONNOTIFY 298{ 299 DWORD dwOffset; 300 HANDLE hEventNotify; 301} DSBPOSITIONNOTIFY,*LPDSBPOSITIONNOTIFY; 302typedef 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 329typedef struct _DSCEFFECTDESC 330{ 331 DWORD dwSize; 332 DWORD dwFlags; 333 GUID guidDSCFXClass; 334 GUID guidDSCFXInstance; 335 DWORD dwReserved1; 336 DWORD dwReserved2; 337} DSCEFFECTDESC, *LPDSCEFFECTDESC; 338typedef 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 346typedef struct _DSCBUFFERDESC1 347{ 348 DWORD dwSize; 349 DWORD dwFlags; 350 DWORD dwBufferBytes; 351 DWORD dwReserved; 352 LPWAVEFORMATEX lpwfxFormat; 353} DSCBUFFERDESC1, *LPDSCBUFFERDESC1; 354 355typedef 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; 365typedef const DSCBUFFERDESC *LPCDSCBUFFERDESC; 366 367typedef struct _DSCCAPS 368{ 369 DWORD dwSize; 370 DWORD dwFlags; 371 DWORD dwFormats; 372 DWORD dwChannels; 373} DSCCAPS, *LPDSCCAPS; 374typedef const DSCCAPS *LPCDSCCAPS; 375 376typedef struct _DSCBCAPS 377{ 378 DWORD dwSize; 379 DWORD dwFlags; 380 DWORD dwBufferBytes; 381 DWORD dwReserved; 382} DSCBCAPS, *LPDSCBCAPS; 383typedef 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__ 401typedef const GUID *LPCGUID; 402#endif 403 404typedef BOOL (CALLBACK *LPDSENUMCALLBACKW)(LPGUID,LPCWSTR,LPCWSTR,LPVOID); 405typedef BOOL (CALLBACK *LPDSENUMCALLBACKA)(LPGUID,LPCSTR,LPCSTR,LPVOID); 406DECL_WINELIB_TYPE_AW(LPDSENUMCALLBACK) 407 408extern HRESULT WINAPI DirectSoundCreate(LPCGUID lpGUID,LPDIRECTSOUND *ppDS,LPUNKNOWN pUnkOuter); 409extern HRESULT WINAPI DirectSoundEnumerateA(LPDSENUMCALLBACKA, LPVOID); 410extern HRESULT WINAPI DirectSoundEnumerateW(LPDSENUMCALLBACKW, LPVOID); 411#define DirectSoundEnumerate WINELIB_NAME_AW(DirectSoundEnumerate) 412extern HRESULT WINAPI DirectSoundCaptureCreate(LPCGUID lpGUID, LPDIRECTSOUNDCAPTURE *ppDSC, LPUNKNOWN pUnkOuter); 413extern HRESULT WINAPI DirectSoundCaptureEnumerateA(LPDSENUMCALLBACKA, LPVOID); 414extern HRESULT WINAPI DirectSoundCaptureEnumerateW(LPDSENUMCALLBACKW, LPVOID); 415#define DirectSoundCaptureEnumerate WINELIB_NAME_AW(DirectSoundCaptureEnumerate) 416 417extern HRESULT WINAPI DirectSoundCreate8(LPCGUID lpGUID,LPDIRECTSOUND8 *ppDS8,LPUNKNOWN pUnkOuter); 418extern HRESULT WINAPI DirectSoundCaptureCreate8(LPCGUID lpGUID, LPDIRECTSOUNDCAPTURE8 *ppDSC8, LPUNKNOWN pUnkOuter); 419extern 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 423extern HRESULT WINAPI GetDeviceID(LPCGUID lpGuidSrc, LPGUID lpGuidDest); 424 425 426/***************************************************************************** 427 * IDirectSound interface 428 */ 429#undef INTERFACE 430#define INTERFACE IDirectSound 431DECLARE_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 484DECLARE_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 542DECLARE_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 625DECLARE_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 719DECLARE_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 756DECLARE_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 811DECLARE_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 879DECLARE_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 938typedef 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 949typedef const DS3DLISTENER *LPCDS3DLISTENER; 950 951#define INTERFACE IDirectSound3DListener 952DECLARE_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 */ 1025typedef 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 1038typedef const DS3DBUFFER *LPCDS3DBUFFER; 1039 1040#define INTERFACE IDirectSound3DBuffer 1041DECLARE_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 1125typedef struct IKsPropertySet *LPKSPROPERTYSET; 1126 1127DEFINE_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 1133DECLARE_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 1172DECLARE_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__ */