Fix the type of the This pointer in the vtbl functions inherited from
[wine.git] / include / dsound.h
blobddcc37063302f36fcece19d23820d20ed6bd438f
1 /*
2 * Copyright (C) the Wine project
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.
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.
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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
19 #ifndef __WINE_DSOUND_H
20 #define __WINE_DSOUND_H
22 #ifndef DIRECTSOUND_VERSION
23 #define DIRECTSOUND_VERSION 0x0800
24 #endif
26 #include "mmsystem.h"
27 #include "d3dtypes.h"
29 #ifdef __cplusplus
30 extern "C" {
31 #endif /* defined(__cplusplus) */
33 /*****************************************************************************
34 * Predeclare the interfaces
36 DEFINE_GUID(CLSID_DirectSound, 0x47d4d946, 0x62e8, 0x11cf, 0x93, 0xbc, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00);
37 DEFINE_GUID(CLSID_DirectSound8, 0x3901cc3f, 0x84b5, 0x4fa4, 0xba, 0x35, 0xaa, 0x81, 0x72, 0xb8, 0xa0, 0x9b);
38 DEFINE_GUID(CLSID_DirectSoundCapture, 0xb0210780, 0x89cd, 0x11d0, 0xaf, 0x08, 0x00, 0xa0, 0xc9, 0x25, 0xcd, 0x16);
39 DEFINE_GUID(CLSID_DirectSoundCapture8, 0xe4bcac13, 0x7f99, 0x4908, 0x9a, 0x8e, 0x74, 0xe3, 0xbf, 0x24, 0xb6, 0xe1);
40 DEFINE_GUID(CLSID_DirectSoundFullDuplex,0xfea4300c, 0x7959, 0x4147, 0xb2, 0x6a, 0x23, 0x77, 0xb9, 0xe7, 0xa9, 0x1d);
42 DEFINE_GUID(IID_IDirectSound, 0x279AFA83,0x4981,0x11CE,0xA5,0x21,0x00,0x20,0xAF,0x0B,0xE5,0x60);
43 typedef struct IDirectSound IDirectSound,*LPDIRECTSOUND;
45 DEFINE_GUID(IID_IDirectSound8, 0xC50A7E93,0xF395,0x4834,0x9E,0xF6,0x7F,0xA9,0x9D,0xE5,0x09,0x66);
46 typedef struct IDirectSound8 IDirectSound8,*LPDIRECTSOUND8;
48 DEFINE_GUID(IID_IDirectSoundBuffer, 0x279AFA85,0x4981,0x11CE,0xA5,0x21,0x00,0x20,0xAF,0x0B,0xE5,0x60);
49 typedef struct IDirectSoundBuffer IDirectSoundBuffer,*LPDIRECTSOUNDBUFFER,**LPLPDIRECTSOUNDBUFFER;
51 DEFINE_GUID(IID_IDirectSoundBuffer8, 0x6825A449,0x7524,0x4D82,0x92,0x0F,0x50,0xE3,0x6A,0xB3,0xAB,0x1E);
52 typedef struct IDirectSoundBuffer8 IDirectSoundBuffer8,*LPDIRECTSOUNDBUFFER8,**LPLPDIRECTSOUNDBUFFER8;
54 DEFINE_GUID(IID_IDirectSoundNotify, 0xB0210783,0x89cd,0x11d0,0xAF,0x08,0x00,0xA0,0xC9,0x25,0xCD,0x16);
55 typedef struct IDirectSoundNotify IDirectSoundNotify,*LPDIRECTSOUNDNOTIFY;
57 DEFINE_GUID(IID_IDirectSound3DListener, 0x279AFA84,0x4981,0x11CE,0xA5,0x21,0x00,0x20,0xAF,0x0B,0xE5,0x60);
58 typedef struct IDirectSound3DListener IDirectSound3DListener,*LPDIRECTSOUND3DLISTENER;
60 DEFINE_GUID(IID_IDirectSound3DBuffer, 0x279AFA86,0x4981,0x11CE,0xA5,0x21,0x00,0x20,0xAF,0x0B,0xE5,0x60);
61 typedef struct IDirectSound3DBuffer IDirectSound3DBuffer,*LPDIRECTSOUND3DBUFFER;
63 DEFINE_GUID(IID_IDirectSoundCapture, 0xB0210781,0x89CD,0x11D0,0xAF,0x08,0x00,0xA0,0xC9,0x25,0xCD,0x16);
64 typedef struct IDirectSoundCapture IDirectSoundCapture,*LPDIRECTSOUNDCAPTURE;
66 DEFINE_GUID(IID_IDirectSoundCaptureBuffer,0xB0210782,0x89CD,0x11D0,0xAF,0x08,0x00,0xA0,0xC9,0x25,0xCD,0x16);
67 typedef struct IDirectSoundCaptureBuffer IDirectSoundCaptureBuffer,*LPDIRECTSOUNDCAPTUREBUFFER;
69 DEFINE_GUID(DSDEVID_WinePlayback, 0x40316A1D,0x605B,0xD611,0x87,0xC6,0x00,0x80,0xAD,0x00,0x02,0xFE);
71 DEFINE_GUID(IID_IKsPropertySet, 0x31EFAC30,0x515C,0x11D0,0xA9,0xAA,0x00,0xAA,0x00,0x61,0xBE,0x93);
72 typedef struct IKsPropertySet IKsPropertySet,*LPKSPROPERTYSET;
74 DEFINE_GUID(IID_IDirectSoundCaptureBuffer8,0x00990DF4,0x0DBB,0x4872,0x83,0x3E,0x6D,0x30,0x3E,0x80,0xAE,0xB6);
75 typedef struct IDirectSoundCaptureBuffer8 IDirectSoundCaptureBuffer8,*LPDIRECTSOUNDCAPTUREBUFFER8;
77 DEFINE_GUID(DSDEVID_DefaultPlayback, 0xDEF00000,0x9C6D,0x47Ed,0xAA,0xF1,0x4D,0xDA,0x8F,0x2B,0x5C,0x03);
78 DEFINE_GUID(DSDEVID_DefaultCapture, 0xDEF00001,0x9C6D,0x47Ed,0xAA,0xF1,0x4D,0xDA,0x8F,0x2B,0x5C,0x03);
79 DEFINE_GUID(DSDEVID_DefaultVoicePlayback,0xDEF00002,0x9C6D,0x47Ed,0xAA,0xF1,0x4D,0xDA,0x8F,0x2B,0x5C,0x03);
80 DEFINE_GUID(DSDEVID_DefaultVoiceCapture, 0xDEF00003,0x9C6D,0x47ED,0xAA,0xF1,0x4D,0xDA,0x8F,0x2B,0x5C,0x03);
83 #define _FACDS 0x878
84 #define MAKE_DSHRESULT(code) MAKE_HRESULT(1,_FACDS,code)
86 #define DS_OK 0
87 #define DSERR_ALLOCATED MAKE_DSHRESULT(10)
88 #define DSERR_CONTROLUNAVAIL MAKE_DSHRESULT(30)
89 #define DSERR_INVALIDPARAM E_INVALIDARG
90 #define DSERR_INVALIDCALL MAKE_DSHRESULT(50)
91 #define DSERR_GENERIC E_FAIL
92 #define DSERR_PRIOLEVELNEEDED MAKE_DSHRESULT(70)
93 #define DSERR_OUTOFMEMORY E_OUTOFMEMORY
94 #define DSERR_BADFORMAT MAKE_DSHRESULT(100)
95 #define DSERR_UNSUPPORTED E_NOTIMPL
96 #define DSERR_NODRIVER MAKE_DSHRESULT(120)
97 #define DSERR_ALREADYINITIALIZED MAKE_DSHRESULT(130)
98 #define DSERR_NOAGGREGATION CLASS_E_NOAGGREGATION
99 #define DSERR_BUFFERLOST MAKE_DSHRESULT(150)
100 #define DSERR_OTHERAPPHASPRIO MAKE_DSHRESULT(160)
101 #define DSERR_UNINITIALIZED MAKE_DSHRESULT(170)
103 #define DSCAPS_PRIMARYMONO 0x00000001
104 #define DSCAPS_PRIMARYSTEREO 0x00000002
105 #define DSCAPS_PRIMARY8BIT 0x00000004
106 #define DSCAPS_PRIMARY16BIT 0x00000008
107 #define DSCAPS_CONTINUOUSRATE 0x00000010
108 #define DSCAPS_EMULDRIVER 0x00000020
109 #define DSCAPS_CERTIFIED 0x00000040
110 #define DSCAPS_SECONDARYMONO 0x00000100
111 #define DSCAPS_SECONDARYSTEREO 0x00000200
112 #define DSCAPS_SECONDARY8BIT 0x00000400
113 #define DSCAPS_SECONDARY16BIT 0x00000800
115 #define DSSCL_NORMAL 1
116 #define DSSCL_PRIORITY 2
117 #define DSSCL_EXCLUSIVE 3
118 #define DSSCL_WRITEPRIMARY 4
120 typedef struct _DSCAPS
122 DWORD dwSize;
123 DWORD dwFlags;
124 DWORD dwMinSecondarySampleRate;
125 DWORD dwMaxSecondarySampleRate;
126 DWORD dwPrimaryBuffers;
127 DWORD dwMaxHwMixingAllBuffers;
128 DWORD dwMaxHwMixingStaticBuffers;
129 DWORD dwMaxHwMixingStreamingBuffers;
130 DWORD dwFreeHwMixingAllBuffers;
131 DWORD dwFreeHwMixingStaticBuffers;
132 DWORD dwFreeHwMixingStreamingBuffers;
133 DWORD dwMaxHw3DAllBuffers;
134 DWORD dwMaxHw3DStaticBuffers;
135 DWORD dwMaxHw3DStreamingBuffers;
136 DWORD dwFreeHw3DAllBuffers;
137 DWORD dwFreeHw3DStaticBuffers;
138 DWORD dwFreeHw3DStreamingBuffers;
139 DWORD dwTotalHwMemBytes;
140 DWORD dwFreeHwMemBytes;
141 DWORD dwMaxContigFreeHwMemBytes;
142 DWORD dwUnlockTransferRateHwBuffers;
143 DWORD dwPlayCpuOverheadSwBuffers;
144 DWORD dwReserved1;
145 DWORD dwReserved2;
146 } DSCAPS,*LPDSCAPS;
148 #define DSBPLAY_LOOPING 0x00000001
150 #define DSBSTATUS_PLAYING 0x00000001
151 #define DSBSTATUS_BUFFERLOST 0x00000002
152 #define DSBSTATUS_LOOPING 0x00000004
155 #define DSBLOCK_FROMWRITECURSOR 0x00000001
156 #define DSBLOCK_ENTIREBUFFER 0x00000002
158 #define DSBCAPS_PRIMARYBUFFER 0x00000001
159 #define DSBCAPS_STATIC 0x00000002
160 #define DSBCAPS_LOCHARDWARE 0x00000004
161 #define DSBCAPS_LOCSOFTWARE 0x00000008
162 #define DSBCAPS_CTRL3D 0x00000010
163 #define DSBCAPS_CTRLFREQUENCY 0x00000020
164 #define DSBCAPS_CTRLPAN 0x00000040
165 #define DSBCAPS_CTRLVOLUME 0x00000080
166 #define DSBCAPS_CTRLPOSITIONNOTIFY 0x00000100
167 #define DSBCAPS_CTRLDEFAULT 0x000000E0 /* Pan + volume + frequency. */
168 #define DSBCAPS_CTRLALL 0x000001F0 /* All control capabilities */
169 #define DSBCAPS_STICKYFOCUS 0x00004000
170 #define DSBCAPS_GLOBALFOCUS 0x00008000
171 #define DSBCAPS_GETCURRENTPOSITION2 0x00010000 /* More accurate play cursor under emulation*/
172 #define DSBCAPS_MUTE3DATMAXDISTANCE 0x00020000
174 #define DSBSIZE_MIN 4
175 #define DSBSIZE_MAX 0xFFFFFFF
176 #define DSBPAN_LEFT -10000
177 #define DSBPAN_RIGHT 10000
178 #define DSBVOLUME_MAX 0
179 #define DSBVOLUME_MIN -10000
180 #define DSBFREQUENCY_MIN 100
181 #define DSBFREQUENCY_MAX 100000
182 #define DSBFREQUENCY_ORIGINAL 0
184 typedef struct _DSBCAPS
186 DWORD dwSize;
187 DWORD dwFlags;
188 DWORD dwBufferBytes;
189 DWORD dwUnlockTransferRate;
190 DWORD dwPlayCpuOverhead;
191 } DSBCAPS,*LPDSBCAPS;
193 #define DSSCL_NORMAL 1
194 #define DSSCL_PRIORITY 2
195 #define DSSCL_EXCLUSIVE 3
196 #define DSSCL_WRITEPRIMARY 4
198 typedef struct _DSEFFECTDESC
200 DWORD dwSize;
201 DWORD dwFlags;
202 GUID guidDSFXClass;
203 DWORD_PTR dwReserved1;
204 DWORD_PTR dwReserved2;
205 } DSEFFECTDESC,*LPDSEFFECTDESC;
206 typedef const DSEFFECTDESC *LPCDSEFFECTDESC;
208 #define DSFX_LOCHARDWARE 0x00000001
209 #define DSFX_LOCSOFTWARE 0x00000002
211 enum
213 DSFXR_PRESENT,
214 DSFXR_LOCHARDWARE,
215 DSFXR_LOCSOFTWARE,
216 DSFXR_UNALLOCATED,
217 DSFXR_FAILED,
218 DSFXR_UNKNOWN,
219 DSFXR_SENDLOOP
222 typedef struct _DSBUFFERDESC
224 DWORD dwSize;
225 DWORD dwFlags;
226 DWORD dwBufferBytes;
227 DWORD dwReserved;
228 LPWAVEFORMATEX lpwfxFormat;
229 #if DIRECTSOUND_VERSION >= 0x0700
230 GUID guid3DAlgorithm;
231 #endif
232 } DSBUFFERDESC,*LPDSBUFFERDESC;
233 typedef const DSBUFFERDESC *LPCDSBUFFERDESC;
235 typedef struct _DSBPOSITIONNOTIFY
237 DWORD dwOffset;
238 HANDLE hEventNotify;
239 } DSBPOSITIONNOTIFY,*LPDSBPOSITIONNOTIFY;
240 typedef const DSBPOSITIONNOTIFY *LPCDSBPOSITIONNOTIFY;
242 #define DSSPEAKER_HEADPHONE 1
243 #define DSSPEAKER_MONO 2
244 #define DSSPEAKER_QUAD 3
245 #define DSSPEAKER_STEREO 4
246 #define DSSPEAKER_SURROUND 5
248 #define DSSPEAKER_GEOMETRY_MIN 0x00000005 /* 5 degrees */
249 #define DSSPEAKER_GEOMETRY_NARROW 0x0000000A /* 10 degrees */
250 #define DSSPEAKER_GEOMETRY_WIDE 0x00000014 /* 20 degrees */
251 #define DSSPEAKER_GEOMETRY_MAX 0x000000B4 /* 180 degrees */
253 #define DS_CERTIFIED 0x00000000
254 #define DS_UNCERTIFIED 0x00000001
256 typedef struct _DSCBUFFERDESC
258 DWORD dwSize;
259 DWORD dwFlags;
260 DWORD dwBufferBytes;
261 DWORD dwReserved;
262 LPWAVEFORMATEX lpwfxFormat;
263 } DSCBUFFERDESC, *LPDSCBUFFERDESC;
264 typedef const DSCBUFFERDESC *LPCDSCBUFFERDESC;
266 typedef struct _DSCCAPS
268 DWORD DwSize;
269 DWORD dwFlags;
270 DWORD dwFormats;
271 DWORD dwChannels;
272 } DSCCAPS, *LPDSCCAPS;
273 typedef const DSCCAPS *LPCDSCCAPS;
275 typedef struct _DSCBCAPS
277 DWORD dwSize;
278 DWORD dwFlags;
279 DWORD dwBufferBytes;
280 DWORD dwReserved;
281 } DSCBCAPS, *LPDSCBCAPS;
282 typedef const DSCBCAPS *LPCDSCBCAPS;
284 #ifndef __LPCGUID_DEFINED__
285 #define __LPCGUID_DEFINED__
286 typedef const GUID *LPCGUID;
287 #endif
289 typedef LPVOID* LPLPVOID;
291 typedef BOOL (CALLBACK *LPDSENUMCALLBACKW)(LPGUID,LPCWSTR,LPCWSTR,LPVOID);
292 typedef BOOL (CALLBACK *LPDSENUMCALLBACKA)(LPGUID,LPCSTR,LPCSTR,LPVOID);
294 extern HRESULT WINAPI DirectSoundCreate(LPCGUID lpGUID,LPDIRECTSOUND *ppDS,LPUNKNOWN pUnkOuter);
295 extern HRESULT WINAPI DirectSoundEnumerateA(LPDSENUMCALLBACKA, LPVOID);
296 extern HRESULT WINAPI DirectSoundEnumerateW(LPDSENUMCALLBACKW, LPVOID);
298 extern HRESULT WINAPI DirectSoundCaptureCreate(LPCGUID lpGUID, LPDIRECTSOUNDCAPTURE *ppDSC, LPUNKNOWN pUnkOuter);
299 extern HRESULT WINAPI DirectSoundCaptureEnumerateA(LPDSENUMCALLBACKA, LPVOID);
300 extern HRESULT WINAPI DirectSoundCaptureEnumerateW(LPDSENUMCALLBACKW, LPVOID);
302 extern HRESULT WINAPI DirectSoundCreate8(LPCGUID lpGUID,LPDIRECTSOUND8 *ppDS8,LPUNKNOWN pUnkOuter);
303 extern HRESULT WINAPI DirectSoundCaptureCreate(LPCGUID lpGUID, LPDIRECTSOUNDCAPTURE *ppDSC8, LPUNKNOWN pUnkOuter);
304 /* FIXME: DirectSoundFullDuplexCreate */
305 extern HRESULT WINAPI GetDeviceID(LPCGUID lpGuidSrc, LPGUID lpGuidDest);
308 /*****************************************************************************
309 * IDirectSound interface
311 #define ICOM_INTERFACE IDirectSound
312 #define IDirectSound_METHODS \
313 ICOM_METHOD3(HRESULT,CreateSoundBuffer, LPDSBUFFERDESC,lpcDSBufferDesc, LPLPDIRECTSOUNDBUFFER,lplpDirectSoundBuffer, IUnknown*,pUnkOuter) \
314 ICOM_METHOD1(HRESULT,GetCaps, LPDSCAPS,lpDSCaps) \
315 ICOM_METHOD2(HRESULT,DuplicateSoundBuffer, LPDIRECTSOUNDBUFFER,lpDsbOriginal, LPLPDIRECTSOUNDBUFFER,lplpDsbDuplicate) \
316 ICOM_METHOD2(HRESULT,SetCooperativeLevel, HWND,hwnd, DWORD,dwLevel) \
317 ICOM_METHOD (HRESULT,Compact) \
318 ICOM_METHOD1(HRESULT,GetSpeakerConfig, LPDWORD,lpdwSpeakerConfig) \
319 ICOM_METHOD1(HRESULT,SetSpeakerConfig, DWORD,dwSpeakerConfig) \
320 ICOM_METHOD1(HRESULT,Initialize, LPCGUID,lpcGuid)
321 #define IDirectSound_IMETHODS \
322 IUnknown_IMETHODS \
323 IDirectSound_METHODS
324 ICOM_DEFINE(IDirectSound,IUnknown)
325 #undef ICOM_INTERFACE
327 /*** IUnknown methods ***/
328 #define IDirectSound_QueryInterface(p,a,b) ICOM_CALL2(QueryInterface,p,a,b)
329 #define IDirectSound_AddRef(p) ICOM_CALL (AddRef,p)
330 #define IDirectSound_Release(p) ICOM_CALL (Release,p)
331 /*** IDirectSound methods ***/
332 #define IDirectSound_CreateSoundBuffer(p,a,b,c) ICOM_CALL3(CreateSoundBuffer,p,a,b,c)
333 #define IDirectSound_GetCaps(p,a) ICOM_CALL1(GetCaps,p,a)
334 #define IDirectSound_DuplicateSoundBuffer(p,a,b) ICOM_CALL2(DuplicateSoundBuffer,p,a,b)
335 #define IDirectSound_SetCooperativeLevel(p,a,b) ICOM_CALL2(SetCooperativeLevel,p,a,b)
336 #define IDirectSound_Compact(p) ICOM_CALL (Compact,p)
337 #define IDirectSound_GetSpeakerConfig(p,a) ICOM_CALL1(GetSpeakerConfig,p,a)
338 #define IDirectSound_SetSpeakerConfig(p,a) ICOM_CALL1(SetSpeakerConfig,p,a)
339 #define IDirectSound_Initialize(p,a) ICOM_CALL1(Initialize,p,a)
342 /*****************************************************************************
343 * IDirectSound8 interface
345 #define ICOM_INTERFACE IDirectSound8
346 #define IDirectSound8_METHODS \
347 ICOM_METHOD3(HRESULT,CreateSoundBuffer, LPDSBUFFERDESC,lpcDSBufferDesc, LPLPDIRECTSOUNDBUFFER8,lplpDirectSoundBuffer, IUnknown*,pUnkOuter) \
348 ICOM_METHOD1(HRESULT,GetCaps, LPDSCAPS,lpDSCaps) \
349 ICOM_METHOD2(HRESULT,DuplicateSoundBuffer, LPDIRECTSOUNDBUFFER8,lpDsbOriginal, LPLPDIRECTSOUNDBUFFER8,lplpDsbDuplicate) \
350 ICOM_METHOD2(HRESULT,SetCooperativeLevel, HWND,hwnd, DWORD,dwLevel) \
351 ICOM_METHOD (HRESULT,Compact) \
352 ICOM_METHOD1(HRESULT,GetSpeakerConfig, LPDWORD,lpdwSpeakerConfig) \
353 ICOM_METHOD1(HRESULT,SetSpeakerConfig, DWORD,dwSpeakerConfig) \
354 ICOM_METHOD1(HRESULT,Initialize, LPCGUID,lpcGuid) \
355 ICOM_METHOD1(HRESULT,VerifyCertification, LPDWORD,pdwCertified)
356 #define IDirectSound8_IMETHODS \
357 IUnknown_IMETHODS \
358 IDirectSound8_METHODS
359 ICOM_DEFINE(IDirectSound8,IUnknown)
360 #undef ICOM_INTERFACE
362 /*** IUnknown methods ***/
363 #define IDirectSound8_QueryInterface(p,a,b) ICOM_CALL2(QueryInterface,p,a,b)
364 #define IDirectSound8_AddRef(p) ICOM_CALL (AddRef,p)
365 #define IDirectSound8_Release(p) ICOM_CALL (Release,p)
366 /*** IDirectSound methods ***/
367 #define IDirectSound8_CreateSoundBuffer(p,a,b,c) ICOM_CALL3(CreateSoundBuffer,p,a,b,c)
368 #define IDirectSound8_GetCaps(p,a) ICOM_CALL1(GetCaps,p,a)
369 #define IDirectSound8_DuplicateSoundBuffer(p,a,b) ICOM_CALL2(DuplicateSoundBuffer,p,a,b)
370 #define IDirectSound8_SetCooperativeLevel(p,a,b) ICOM_CALL2(SetCooperativeLevel,p,a,b)
371 #define IDirectSound8_Compact(p) ICOM_CALL (Compact,p)
372 #define IDirectSound8_GetSpeakerConfig(p,a) ICOM_CALL1(GetSpeakerConfig,p,a)
373 #define IDirectSound8_SetSpeakerConfig(p,a) ICOM_CALL1(SetSpeakerConfig,p,a)
374 #define IDirectSound8_Initialize(p,a) ICOM_CALL1(Initialize,p,a)
375 /*** IDirectSound8 methods ***/
376 #define IDirectSound8_VerifyCertification(p,a) ICOM_CALL1(VerifyCertification,p,a)
379 /*****************************************************************************
380 * IDirectSoundBuffer interface
382 #define ICOM_INTERFACE IDirectSoundBuffer
383 #define IDirectSoundBuffer_METHODS \
384 ICOM_METHOD1(HRESULT,GetCaps, LPDSBCAPS,lpDSBufferCaps) \
385 ICOM_METHOD2(HRESULT,GetCurrentPosition, LPDWORD,lpdwCurrentPlayCursor, LPDWORD,lpdwCurrentWriteCursor) \
386 ICOM_METHOD3(HRESULT,GetFormat, LPWAVEFORMATEX,lpwfxFormat, DWORD,dwSizeAllocated, LPDWORD,lpdwSizeWritten) \
387 ICOM_METHOD1(HRESULT,GetVolume, LPLONG,lplVolume) \
388 ICOM_METHOD1(HRESULT,GetPan, LPLONG,lplpan) \
389 ICOM_METHOD1(HRESULT,GetFrequency, LPDWORD,lpdwFrequency) \
390 ICOM_METHOD1(HRESULT,GetStatus, LPDWORD,lpdwStatus) \
391 ICOM_METHOD2(HRESULT,Initialize, LPDIRECTSOUND,lpDirectSound, LPDSBUFFERDESC,lpcDSBufferDesc) \
392 ICOM_METHOD7(HRESULT,Lock, DWORD,dwWriteCursor, DWORD,dwWriteBytes, LPVOID,lplpvAudioPtr1, LPDWORD,lpdwAudioBytes1, LPVOID,lplpvAudioPtr2, LPDWORD,lpdwAudioBytes2, DWORD,dwFlags) \
393 ICOM_METHOD3(HRESULT,Play, DWORD,dwReserved1, DWORD,dwReserved2, DWORD,dwFlags) \
394 ICOM_METHOD1(HRESULT,SetCurrentPosition, DWORD,dwNewPosition) \
395 ICOM_METHOD1(HRESULT,SetFormat, LPWAVEFORMATEX,lpcfxFormat) \
396 ICOM_METHOD1(HRESULT,SetVolume, LONG,lVolume) \
397 ICOM_METHOD1(HRESULT,SetPan, LONG,lPan) \
398 ICOM_METHOD1(HRESULT,SetFrequency, DWORD,dwFrequency) \
399 ICOM_METHOD (HRESULT,Stop) \
400 ICOM_METHOD4(HRESULT,Unlock, LPVOID,lpvAudioPtr1, DWORD,dwAudioBytes1, LPVOID,lpvAudioPtr2, DWORD,dwAudioPtr2) \
401 ICOM_METHOD (HRESULT,Restore)
402 #define IDirectSoundBuffer_IMETHODS \
403 IUnknown_IMETHODS \
404 IDirectSoundBuffer_METHODS
405 ICOM_DEFINE(IDirectSoundBuffer,IUnknown)
406 #undef ICOM_INTERFACE
408 /*** IUnknown methods ***/
409 #define IDirectSoundBuffer_QueryInterface(p,a,b) ICOM_CALL2(QueryInterface,p,a,b)
410 #define IDirectSoundBuffer_AddRef(p) ICOM_CALL (AddRef,p)
411 #define IDirectSoundBuffer_Release(p) ICOM_CALL (Release,p)
412 /*** IDirectSoundBuffer methods ***/
413 #define IDirectSoundBuffer_GetCaps(p,a) ICOM_CALL1(GetCaps,p,a)
414 #define IDirectSoundBuffer_GetCurrentPosition(p,a,b) ICOM_CALL2(GetCurrentPosition,p,a,b)
415 #define IDirectSoundBuffer_GetFormat(p,a,b,c) ICOM_CALL3(GetFormat,p,a,b,c)
416 #define IDirectSoundBuffer_GetVolume(p,a) ICOM_CALL1(GetVolume,p,a)
417 #define IDirectSoundBuffer_GetPan(p,a) ICOM_CALL1(GetPan,p,a)
418 #define IDirectSoundBuffer_GetFrequency(p,a) ICOM_CALL1(GetFrequency,p,a)
419 #define IDirectSoundBuffer_GetStatus(p,a) ICOM_CALL1(GetStatus,p,a)
420 #define IDirectSoundBuffer_Initialize(p,a,b) ICOM_CALL2(Initialize,p,a,b)
421 #define IDirectSoundBuffer_Lock(p,a,b,c,d,e,f,g) ICOM_CALL7(Lock,p,a,b,c,d,e,f,g)
422 #define IDirectSoundBuffer_Play(p,a,b,c) ICOM_CALL3(Play,p,a,b,c)
423 #define IDirectSoundBuffer_SetCurrentPosition(p,a) ICOM_CALL1(SetCurrentPosition,p,a)
424 #define IDirectSoundBuffer_SetFormat(p,a) ICOM_CALL1(SetFormat,p,a)
425 #define IDirectSoundBuffer_SetVolume(p,a) ICOM_CALL1(SetVolume,p,a)
426 #define IDirectSoundBuffer_SetPan(p,a) ICOM_CALL1(SetPan,p,a)
427 #define IDirectSoundBuffer_SetFrequency(p,a) ICOM_CALL1(SetFrequency,p,a)
428 #define IDirectSoundBuffer_Stop(p) ICOM_CALL (Stop,p)
429 #define IDirectSoundBuffer_Unlock(p,a,b,c,d) ICOM_CALL4(Unlock,p,a,b,c,d)
430 #define IDirectSoundBuffer_Restore(p) ICOM_CALL (Restore,p)
433 /*****************************************************************************
434 * IDirectSoundBuffer8 interface
436 #define ICOM_INTERFACE IDirectSoundBuffer8
437 #define IDirectSoundBuffer8_METHODS \
438 ICOM_METHOD1(HRESULT,GetCaps, LPDSBCAPS,lpDSBufferCaps) \
439 ICOM_METHOD2(HRESULT,GetCurrentPosition, LPDWORD,lpdwCurrentPlayCursor, LPDWORD,lpdwCurrentWriteCursor) \
440 ICOM_METHOD3(HRESULT,GetFormat, LPWAVEFORMATEX,lpwfxFormat, DWORD,dwSizeAllocated, LPDWORD,lpdwSizeWritten) \
441 ICOM_METHOD1(HRESULT,GetVolume, LPLONG,lplVolume) \
442 ICOM_METHOD1(HRESULT,GetPan, LPLONG,lplpan) \
443 ICOM_METHOD1(HRESULT,GetFrequency, LPDWORD,lpdwFrequency) \
444 ICOM_METHOD1(HRESULT,GetStatus, LPDWORD,lpdwStatus) \
445 ICOM_METHOD2(HRESULT,Initialize, LPDIRECTSOUND8,lpDirectSound, LPDSBUFFERDESC,lpcDSBufferDesc) \
446 ICOM_METHOD7(HRESULT,Lock, DWORD,dwWriteCursor, DWORD,dwWriteBytes, LPVOID,lplpvAudioPtr1, LPDWORD,lpdwAudioBytes1, LPVOID,lplpvAudioPtr2, LPDWORD,lpdwAudioBytes2, DWORD,dwFlags) \
447 ICOM_METHOD3(HRESULT,Play, DWORD,dwReserved1, DWORD,dwReserved2, DWORD,dwFlags) \
448 ICOM_METHOD1(HRESULT,SetCurrentPosition, DWORD,dwNewPosition) \
449 ICOM_METHOD1(HRESULT,SetFormat, LPWAVEFORMATEX,lpcfxFormat) \
450 ICOM_METHOD1(HRESULT,SetVolume, LONG,lVolume) \
451 ICOM_METHOD1(HRESULT,SetPan, LONG,lPan) \
452 ICOM_METHOD1(HRESULT,SetFrequency, DWORD,dwFrequency) \
453 ICOM_METHOD (HRESULT,Stop) \
454 ICOM_METHOD4(HRESULT,Unlock, LPVOID,lpvAudioPtr1, DWORD,dwAudioBytes1, LPVOID,lpvAudioPtr2, DWORD,dwAudioPtr2) \
455 ICOM_METHOD (HRESULT,Restore) \
456 ICOM_METHOD3(HRESULT,SetFX, DWORD,dwEffectsCount, LPDSEFFECTDESC,pDSFXDesc, LPDWORD,pdwResultCodes) \
457 ICOM_METHOD3(HRESULT,AcquireResources, DWORD,dwFlags, DWORD,dwEffectsCount, LPDWORD,pdwResultCodes) \
458 ICOM_METHOD4(HRESULT,GetObjectInPath, REFGUID,rguidObject, DWORD,dwIndex, REFGUID,rguidInterface, LPVOID*,ppObject)
459 #define IDirectSoundBuffer8_IMETHODS \
460 IUnknown_IMETHODS \
461 IDirectSoundBuffer8_METHODS
462 ICOM_DEFINE(IDirectSoundBuffer8,IUnknown)
463 #undef ICOM_INTERFACE
465 /*** IUnknown methods ***/
466 #define IDirectSoundBuffer8_QueryInterface(p,a,b) ICOM_CALL2(QueryInterface,p,a,b)
467 #define IDirectSoundBuffer8_AddRef(p) ICOM_CALL (AddRef,p)
468 #define IDirectSoundBuffer8_Release(p) ICOM_CALL (Release,p)
469 /*** IDirectSoundBuffer methods ***/
470 #define IDirectSoundBuffer8_GetCaps(p,a) ICOM_CALL1(GetCaps,p,a)
471 #define IDirectSoundBuffer8_GetCurrentPosition(p,a,b) ICOM_CALL2(GetCurrentPosition,p,a,b)
472 #define IDirectSoundBuffer8_GetFormat(p,a,b,c) ICOM_CALL3(GetFormat,p,a,b,c)
473 #define IDirectSoundBuffer8_GetVolume(p,a) ICOM_CALL1(GetVolume,p,a)
474 #define IDirectSoundBuffer8_GetPan(p,a) ICOM_CALL1(GetPan,p,a)
475 #define IDirectSoundBuffer8_GetFrequency(p,a) ICOM_CALL1(GetFrequency,p,a)
476 #define IDirectSoundBuffer8_GetStatus(p,a) ICOM_CALL1(GetStatus,p,a)
477 #define IDirectSoundBuffer8_Initialize(p,a,b) ICOM_CALL2(Initialize,p,a,b)
478 #define IDirectSoundBuffer8_Lock(p,a,b,c,d,e,f,g) ICOM_CALL7(Lock,p,a,b,c,d,e,f,g)
479 #define IDirectSoundBuffer8_Play(p,a,b,c) ICOM_CALL3(Play,p,a,b,c)
480 #define IDirectSoundBuffer8_SetCurrentPosition(p,a) ICOM_CALL1(SetCurrentPosition,p,a)
481 #define IDirectSoundBuffer8_SetFormat(p,a) ICOM_CALL1(SetFormat,p,a)
482 #define IDirectSoundBuffer8_SetVolume(p,a) ICOM_CALL1(SetVolume,p,a)
483 #define IDirectSoundBuffer8_SetPan(p,a) ICOM_CALL1(SetPan,p,a)
484 #define IDirectSoundBuffer8_SetFrequency(p,a) ICOM_CALL1(SetFrequency,p,a)
485 #define IDirectSoundBuffer8_Stop(p) ICOM_CALL (Stop,p)
486 #define IDirectSoundBuffer8_Unlock(p,a,b,c,d) ICOM_CALL4(Unlock,p,a,b,c,d)
487 #define IDirectSoundBuffer8_Restore(p) ICOM_CALL (Restore,p)
488 /*** IDirectSoundBuffer8 methods ***/
489 #define IDirectSoundBuffer8_SetFX(p,a,b,c) ICOM_CALL3(SetFX,p,a,b,c)
490 #define IDirectSoundBuffer8_AcquireResources(p,a,b,c) ICOM_CALL3(AcquireResources,p,a,b,c)
491 #define IDirectSoundBuffer8_GetObjectInPath(p,a,b,c) ICOM_CALL3(GetObjectInPath,p,a,b,c)
494 /*****************************************************************************
495 * IDirectSoundCapture interface
497 #define ICOM_INTERFACE IDirectSoundCapture
498 #define IDirectSoundCapture_METHODS \
499 ICOM_METHOD3(HRESULT,CreateCaptureBuffer, LPCDSCBUFFERDESC,lpcDSCBufferDesc,LPDIRECTSOUNDCAPTUREBUFFER*,lplpDSCaptureBuffer, LPUNKNOWN,pUnk) \
500 ICOM_METHOD1(HRESULT,GetCaps, LPDSCCAPS,lpDSCCaps) \
501 ICOM_METHOD1(HRESULT,Initialize, LPCGUID,lpcGUID)
503 #define IDirectSoundCapture_IMETHODS \
504 IUnknown_IMETHODS \
505 IDirectSoundCapture_METHODS
506 ICOM_DEFINE(IDirectSoundCapture,IUnknown)
507 #undef ICOM_INTERFACE
509 #define IDirectSoundCapture_QueryInterface(p,a,b) ICOM_CALL2(QueryInterface,p,a,b)
510 #define IDirectSoundCapture_AddRef(p) ICOM_CALL (AddRef,p)
511 #define IDirectSoundCapture_Release(p) ICOM_CALL (Release,p)
512 #define IDirectSoundCapture_CreateCaptureBuffer(p,a,b,c) ICOM_CALL3(CreateCaptureBuffer,p,a,b,c)
513 #define IDirectSoundCapture_GetCaps(p,a) ICOM_CALL (GetCaps,p,a)
514 #define IDirectSoundCapture_Initialize(p,a) ICOM_CALL (Initialize,p,a)
516 /*****************************************************************************
517 * IDirectSoundCaptureBuffer interface
519 #define ICOM_INTERFACE IDirectSoundCaptureBuffer
520 #define IDirectSoundCaptureBuffer_METHODS \
521 ICOM_METHOD1(HRESULT,GetCaps, LPDSCBCAPS,lpDSCBCaps) \
522 ICOM_METHOD2(HRESULT,GetCurrentPosition, LPDWORD,lpdwCapturePosition,LPDWORD,lpdwReadPosition) \
523 ICOM_METHOD3(HRESULT,GetFormat, LPWAVEFORMATEX,lpwfxFormat, DWORD,dwSizeAllocated, LPDWORD,lpdwSizeWritten) \
524 ICOM_METHOD1(HRESULT,GetStatus, LPDWORD,lpdwStatus) \
525 ICOM_METHOD2(HRESULT,Initialize, LPDIRECTSOUNDCAPTURE,lpDSC, LPCDSCBUFFERDESC,lpcDSCBDesc) \
526 ICOM_METHOD7(HRESULT,Lock, DWORD,dwReadCusor, DWORD,dwReadBytes, LPVOID*,lplpvAudioPtr1, LPDWORD,lpdwAudioBytes1, LPVOID*,lplpvAudioPtr2, LPDWORD,lpdwAudioBytes2, DWORD,dwFlags) \
527 ICOM_METHOD1(HRESULT,Start, DWORD,dwFlags) \
528 ICOM_METHOD (HRESULT,Stop) \
529 ICOM_METHOD4(HRESULT,Unlock, LPVOID,lpvAudioPtr1, DWORD,dwAudioBytes1, LPVOID,lpvAudioPtr2, DWORD,dwAudioBytes2)
531 #define IDirectSoundCaptureBuffer_IMETHODS \
532 IUnknown_IMETHODS \
533 IDirectSoundCaptureBuffer_METHODS
534 ICOM_DEFINE(IDirectSoundCaptureBuffer,IUnknown)
535 #undef ICOM_INTERFACE
537 #define IDirectSoundCaptureBuffer_QueryInterface(p,a,b) ICOM_CALL2(QueryInterface,p,a,b)
538 #define IDirectSoundCaptureBuffer_AddRef(p) ICOM_CALL (AddRef,p)
539 #define IDirectSoundCaptureBuffer_Release(p) ICOM_CALL (Release,p)
540 #define IDirectSoundCaptureBuffer_GetCurrentPosition(p,a,b) ICOM_CALL2(GetCurrentPosition,p,a,b)
541 #define IDirectSoundCaptureBuffer_GetFormat(p,a,b,c) ICOM_CALL3(GetFormat,p,a,b,c)
542 #define IDirectSoundCaptureBuffer_GetStatus(p,a) ICOM_CALL1(GetStatus,p,a)
543 #define IDirectSoundCaptureBuffer_Initialize(p,a,b) ICOM_CALL2(Initialize,p,a,b)
544 #define IDirectSoundCaptureBuffer_Lock(p,a,b,c,d,e,f,g) ICOM_CALL7(Lock,p,a,b,c,d,e,f,g)
545 #define IDirectSoundCaptureBuffer_Start(p,a) ICOM_CALL1(Start,p,a)
546 #define IDirectSoundCaptureBuffer_Stop(p) ICOM_CALL (Stop,p)
547 #define IDirectSoundCaptureBuffer_Unlock(p,a,b,c,d) ICOM_CALL4(Unlock,p,a,b,c,d)
549 /*****************************************************************************
550 * IDirectSoundCaptureBuffer8 interface
552 #define ICOM_INTERFACE IDirectSoundCaptureBuffer8
553 #define IDirectSoundCaptureBuffer8_METHODS \
554 ICOM_METHOD4(HRESULT,GetObjectInPath, REFGUID,rguidObject, DWORD,dwIndex, REFGUID,rguidInterface, LPVOID*,ppObject) \
555 ICOM_METHOD2(HRESULT,GetFXStatus, DWORD,dwFXCount, LPDWORD,pdwFXStatus)
557 #define IDirectSoundCaptureBuffer8_IMETHODS \
558 IDirectSoundCaptureBuffer_IMETHODS \
559 IDirectSoundCaptureBuffer8_METHODS
560 ICOM_DEFINE(IDirectSoundCaptureBuffer8,IDirectSoundCaptureBuffer)
561 #undef ICOM_INTERFACE
563 #define IDirectSoundCaptureBuffer8_QueryInterface(p,a,b) ICOM_CALL2(QueryInterface,p,a,b)
564 #define IDirectSoundCaptureBuffer8_AddRef(p) ICOM_CALL (AddRef,p)
565 #define IDirectSoundCaptureBuffer8_Release(p) ICOM_CALL (Release,p)
566 #define IDirectSoundCaptureBuffer8_GetCurrentPosition(p,a,b) ICOM_CALL2(GetCurrentPosition,p,a,b)
567 #define IDirectSoundCaptureBuffer8_GetFormat(p,a,b,c) ICOM_CALL3(GetFormat,p,a,b,c)
568 #define IDirectSoundCaptureBuffer8_GetStatus(p,a) ICOM_CALL1(GetStatus,p,a)
569 #define IDirectSoundCaptureBuffer8_Initialize(p,a,b) ICOM_CALL2(Initialize,p,a,b)
570 #define IDirectSoundCaptureBuffer8_Lock(p,a,b,c,d,e,f,g) ICOM_CALL7(Lock,p,a,b,c,d,e,f,g)
571 #define IDirectSoundCaptureBuffer8_Start(p,a) ICOM_CALL1(Start,p,a)
572 #define IDirectSoundCaptureBuffer8_Stop(p) ICOM_CALL (Stop,p)
573 #define IDirectSoundCaptureBuffer8_Unlock(p,a,b,c,d) ICOM_CALL4(Unlock,p,a,b,c,d)
574 #define IDirectSoundCaptureBuffer8_GetObjectInPath(p,a,b,c,d) ICOM_CALL4(GetObjectInPath,p,a,b,c,d)
575 #define IDirectSoundCaptureBuffer8_GetFXStatus(p,a,b) ICOM_CALL2(GetFXStatus,p,a,b)
577 /*****************************************************************************
578 * IDirectSoundNotify interface
580 #define WINE_NOBUFFER 0x80000000
582 #define DSBPN_OFFSETSTOP -1
584 #define ICOM_INTERFACE IDirectSoundNotify
585 #define IDirectSoundNotify_METHODS \
586 ICOM_METHOD2(HRESULT,SetNotificationPositions, DWORD,cPositionNotifies, LPCDSBPOSITIONNOTIFY,lpcPositionNotifies)
587 #define IDirectSoundNotify_IMETHODS \
588 IUnknown_IMETHODS \
589 IDirectSoundNotify_METHODS
590 ICOM_DEFINE(IDirectSoundNotify,IUnknown)
591 #undef ICOM_INTERFACE
593 /*** IUnknown methods ***/
594 #define IDirectSoundNotify_QueryInterface(p,a,b) ICOM_CALL2(QueryInterface,p,a,b)
595 #define IDirectSoundNotify_AddRef(p) ICOM_CALL (AddRef,p)
596 #define IDirectSoundNotify_Release(p) ICOM_CALL (Release,p)
597 /*** IDirectSoundNotify methods ***/
598 #define IDirectSoundNotify_SetNotificationPositions(p,a,b) ICOM_CALL2(SetNotificationPositions,p,a,b)
601 /*****************************************************************************
602 * IDirectSound3DListener interface
604 #define DS3DMODE_NORMAL 0x00000000
605 #define DS3DMODE_HEADRELATIVE 0x00000001
606 #define DS3DMODE_DISABLE 0x00000002
608 #define DS3D_IMMEDIATE 0x00000000
609 #define DS3D_DEFERRED 0x00000001
611 #define DS3D_MINDISTANCEFACTOR 0.0f
612 #define DS3D_MAXDISTANCEFACTOR 10.0f
613 #define DS3D_DEFAULTDISTANCEFACTOR 1.0f
615 #define DS3D_MINROLLOFFFACTOR 0.0f
616 #define DS3D_MAXROLLOFFFACTOR 10.0f
617 #define DS3D_DEFAULTROLLOFFFACTOR 1.0f
619 #define DS3D_MINDOPPLERFACTOR 0.0f
620 #define DS3D_MAXDOPPLERFACTOR 10.0f
621 #define DS3D_DEFAULTDOPPLERFACTOR 1.0f
623 #define DS3D_DEFAULTMINDISTANCE 1.0f
624 #define DS3D_DEFAULTMAXDISTANCE 1000000000.0f
626 #define DS3D_MINCONEANGLE 0
627 #define DS3D_MAXCONEANGLE 360
628 #define DS3D_DEFAULTCONEANGLE 360
630 #define DS3D_DEFAULTCONEOUTSIDEVOLUME 0
632 typedef struct _DS3DLISTENER {
633 DWORD dwSize;
634 D3DVECTOR vPosition;
635 D3DVECTOR vVelocity;
636 D3DVECTOR vOrientFront;
637 D3DVECTOR vOrientTop;
638 D3DVALUE flDistanceFactor;
639 D3DVALUE flRolloffFactor;
640 D3DVALUE flDopplerFactor;
641 } DS3DLISTENER, *LPDS3DLISTENER;
643 typedef const DS3DLISTENER *LPCDS3DLISTENER;
645 #define ICOM_INTERFACE IDirectSound3DListener
646 #define IDirectSound3DListener_METHODS \
647 ICOM_METHOD1(HRESULT,GetAllParameters, LPDS3DLISTENER,lpListener) \
648 ICOM_METHOD1(HRESULT,GetDistanceFactor, LPD3DVALUE,lpflDistanceFactor) \
649 ICOM_METHOD1(HRESULT,GetDopplerFactor, LPD3DVALUE,lpflDopplerFactor) \
650 ICOM_METHOD2(HRESULT,GetOrientation, LPD3DVECTOR,lpvOrientFront, LPD3DVECTOR,lpvOrientTop) \
651 ICOM_METHOD1(HRESULT,GetPosition, LPD3DVECTOR,lpvPosition) \
652 ICOM_METHOD1(HRESULT,GetRolloffFactor, LPD3DVALUE,lpflRolloffFactor) \
653 ICOM_METHOD1(HRESULT,GetVelocity, LPD3DVECTOR,lpvVelocity) \
654 ICOM_METHOD2(HRESULT,SetAllParameters, LPCDS3DLISTENER,lpcListener, DWORD,dwApply) \
655 ICOM_METHOD2(HRESULT,SetDistanceFactor, D3DVALUE,flDistanceFactor, DWORD,dwApply) \
656 ICOM_METHOD2(HRESULT,SetDopplerFactor, D3DVALUE,flDopplerFactor, DWORD,dwApply) \
657 ICOM_METHOD7(HRESULT,SetOrientation, D3DVALUE,xFront, D3DVALUE,yFront, D3DVALUE,zFront, D3DVALUE,xTop, D3DVALUE,yTop, D3DVALUE,zTop, DWORD,dwApply) \
658 ICOM_METHOD4(HRESULT,SetPosition, D3DVALUE,x, D3DVALUE,y, D3DVALUE,z, DWORD,dwApply) \
659 ICOM_METHOD2(HRESULT,SetRolloffFactor, D3DVALUE,flRolloffFactor, DWORD,dwApply) \
660 ICOM_METHOD4(HRESULT,SetVelocity, D3DVALUE,x, D3DVALUE,y, D3DVALUE,z, DWORD,dwApply) \
661 ICOM_METHOD (HRESULT,CommitDeferredSettings)
662 #define IDirectSound3DListener_IMETHODS \
663 IUnknown_IMETHODS \
664 IDirectSound3DListener_METHODS
665 ICOM_DEFINE(IDirectSound3DListener,IUnknown)
666 #undef ICOM_INTERFACE
668 /*** IUnknown methods ***/
669 #define IDirectSound3DListener_QueryInterface(p,a,b) ICOM_CALL2(QueryInterface,p,a,b)
670 #define IDirectSound3DListener_AddRef(p) ICOM_CALL (AddRef,p)
671 #define IDirectSound3DListener_Release(p) ICOM_CALL (Release,p)
672 /*** IDirectSound3DListener methods ***/
673 #define IDirectSound3DListener_GetAllParameters(p,a) ICOM_CALL1(GetAllParameters,p,a)
674 #define IDirectSound3DListener_GetDistanceFactor(p,a) ICOM_CALL1(GetDistanceFactor,p,a)
675 #define IDirectSound3DListener_GetDopplerFactor(p,a) ICOM_CALL1(GetDopplerFactor,p,a)
676 #define IDirectSound3DListener_GetOrientation(p,a,b) ICOM_CALL2(GetOrientation,p,a,b)
677 #define IDirectSound3DListener_GetPosition(p,a) ICOM_CALL1(GetPosition,p,a)
678 #define IDirectSound3DListener_GetRolloffFactor(p,a) ICOM_CALL1(GetRolloffFactor,p,a)
679 #define IDirectSound3DListener_GetVelocity(p,a) ICOM_CALL1(GetVelocity,p,a)
680 #define IDirectSound3DListener_SetAllParameters(p,a,b) ICOM_CALL2(SetAllParameters,p,a,b)
681 #define IDirectSound3DListener_SetDistanceFactor(p,a,b) ICOM_CALL2(SetDistanceFactor,p,a,b)
682 #define IDirectSound3DListener_SetDopplerFactor(p,a,b) ICOM_CALL2(SetDopplerFactor,p,a,b)
683 #define IDirectSound3DListener_SetOrientation(p,a,b,c,d,e,f,g) ICOM_CALL7(SetOrientation,p,a,b,c,d,e,f,g)
684 #define IDirectSound3DListener_SetPosition(p,a,b,c,d) ICOM_CALL4(SetPosition,p,a,b,c,d)
685 #define IDirectSound3DListener_SetRolloffFactor(p,a,b) ICOM_CALL2(SetRolloffFactor,p,a,b)
686 #define IDirectSound3DListener_SetVelocity(p,a,b,c,d) ICOM_CALL4(SetVelocity,p,a,b,c,d)
687 #define IDirectSound3DListener_CommitDeferredSettings(p) ICOM_CALL (CommitDeferredSettings,p)
690 /*****************************************************************************
691 * IDirectSound3DBuffer interface
693 typedef struct _DS3DBUFFER {
694 DWORD dwSize;
695 D3DVECTOR vPosition;
696 D3DVECTOR vVelocity;
697 DWORD dwInsideConeAngle;
698 DWORD dwOutsideConeAngle;
699 D3DVECTOR vConeOrientation;
700 LONG lConeOutsideVolume;
701 D3DVALUE flMinDistance;
702 D3DVALUE flMaxDistance;
703 DWORD dwMode;
704 } DS3DBUFFER, *LPDS3DBUFFER;
706 typedef const DS3DBUFFER *LPCDS3DBUFFER;
708 #define ICOM_INTERFACE IDirectSound3DBuffer
709 #define IDirectSound3DBuffer_METHODS \
710 ICOM_METHOD1(HRESULT,GetAllParameters, LPDS3DBUFFER,lpDs3dBuffer) \
711 ICOM_METHOD2(HRESULT,GetConeAngles, LPDWORD,lpdwInsideConeAngle, LPDWORD,lpdwOutsideConeAngle) \
712 ICOM_METHOD1(HRESULT,GetConeOrientation, LPD3DVECTOR,lpvOrientation) \
713 ICOM_METHOD1(HRESULT,GetConeOutsideVolume, LPLONG,lplConeOutsideVolume) \
714 ICOM_METHOD1(HRESULT,GetMaxDistance, LPD3DVALUE,lpflMaxDistance) \
715 ICOM_METHOD1(HRESULT,GetMinDistance, LPD3DVALUE,lpflMinDistance) \
716 ICOM_METHOD1(HRESULT,GetMode, LPDWORD,lpwdMode) \
717 ICOM_METHOD1(HRESULT,GetPosition, LPD3DVECTOR,lpvPosition) \
718 ICOM_METHOD1(HRESULT,GetVelocity, LPD3DVECTOR,lpvVelocity) \
719 ICOM_METHOD2(HRESULT,SetAllParameters, LPCDS3DBUFFER,lpcDs3dBuffer, DWORD,dwApply) \
720 ICOM_METHOD3(HRESULT,SetConeAngles, DWORD,dwInsideConeAngle, DWORD,dwOutsideConeAngle, DWORD,dwApply) \
721 ICOM_METHOD4(HRESULT,SetConeOrientation, D3DVALUE,x, D3DVALUE,y, D3DVALUE,z, DWORD,dwApply) \
722 ICOM_METHOD2(HRESULT,SetConeOutsideVolume, LONG,lConeOutsideVolume, DWORD,dwApply) \
723 ICOM_METHOD2(HRESULT,SetMaxDistance, D3DVALUE,flMaxDistance, DWORD,dwApply) \
724 ICOM_METHOD2(HRESULT,SetMinDistance, D3DVALUE,flMinDistance, DWORD,dwApply) \
725 ICOM_METHOD2(HRESULT,SetMode, DWORD,dwMode, DWORD,dwApply) \
726 ICOM_METHOD4(HRESULT,SetPosition, D3DVALUE,x, D3DVALUE,y, D3DVALUE,z, DWORD,dwApply) \
727 ICOM_METHOD4(HRESULT,SetVelocity, D3DVALUE,x, D3DVALUE,y, D3DVALUE,z, DWORD,dwApply)
728 #define IDirectSound3DBuffer_IMETHODS \
729 IUnknown_IMETHODS \
730 IDirectSound3DBuffer_METHODS
731 ICOM_DEFINE(IDirectSound3DBuffer,IUnknown)
732 #undef ICOM_INTERFACE
734 /*** IUnknown methods ***/
735 #define IDirectSound3DBuffer_QueryInterface(p,a,b) ICOM_CALL2(QueryInterface,p,a,b)
736 #define IDirectSound3DBuffer_AddRef(p) ICOM_CALL (AddRef,p)
737 #define IDirectSound3DBuffer_Release(p) ICOM_CALL (Release,p)
738 /*** IDirectSound3DBuffer methods ***/
739 #define IDirectSound3DBuffer_GetAllParameters(p,a) ICOM_CALL1(GetAllParameters,p,a)
740 #define IDirectSound3DBuffer_GetConeAngles(p,a,b) ICOM_CALL2(GetConeAngles,p,a,b)
741 #define IDirectSound3DBuffer_GetConeOrientation(p,a) ICOM_CALL1(GetConeOrientation,p,a)
742 #define IDirectSound3DBuffer_GetConeOutsideVolume(p,a) ICOM_CALL1(GetConeOutsideVolume,p,a)
743 #define IDirectSound3DBuffer_GetMaxDistance(p,a) ICOM_CALL1(GetMaxDistance,p,a)
744 #define IDirectSound3DBuffer_GetMinDistance(p,a) ICOM_CALL1(GetMinDistance,p,a)
745 #define IDirectSound3DBuffer_GetMode(p,a) ICOM_CALL1(GetMode,p,a)
746 #define IDirectSound3DBuffer_GetPosition(p,a) ICOM_CALL1(GetPosition,p,a)
747 #define IDirectSound3DBuffer_GetVelocity(p,a) ICOM_CALL1(GetVelocity,p,a)
748 #define IDirectSound3DBuffer_SetAllParameters(p,a,b) ICOM_CALL2(SetAllParameters,p,a,b)
749 #define IDirectSound3DBuffer_SetConeAngles(p,a,b) ICOM_CALL3(SetConeAngles,p,a,b)
750 #define IDirectSound3DBuffer_SetConeOrientation(p,a,b,c,d) ICOM_CALL4(SetConeOrientation,p,a,b,c,d)
751 #define IDirectSound3DBuffer_SetConeOutsideVolume(p,a,b) ICOM_CALL2(SetConeOutsideVolume,p,a,b)
752 #define IDirectSound3DBuffer_SetMaxDistance(p,a,b) ICOM_CALL2(SetMaxDistance,p,a,b)
753 #define IDirectSound3DBuffer_SetMinDistance(p,a,b) ICOM_CALL2(SetMinDistance,p,a,b)
754 #define IDirectSound3DBuffer_SetMode(p,a,b) ICOM_CALL2(SetMode,p,a,b)
755 #define IDirectSound3DBuffer_SetPosition(p,a,b,c,d) ICOM_CALL4(SetPosition,p,a,b,c,d)
756 #define IDirectSound3DBuffer_SetVelocity(p,a,b,c,d) ICOM_CALL4(SetVelocity,p,a,b,c,d)
758 /*****************************************************************************
759 * IKsPropertySet interface
761 #define KSPROPERTY_SUPPORT_GET 1
762 #define KSPROPERTY_SUPPORT_SET 2
764 #define ICOM_INTERFACE IKsPropertySet
765 #define IKsPropertySet_METHODS \
766 ICOM_METHOD7(HRESULT,Get,REFGUID,rgid,ULONG,x1,LPVOID,p1,ULONG,x2,LPVOID,p2,ULONG,x3,ULONG*,px4)\
767 ICOM_METHOD6(HRESULT,Set,REFGUID,rgid,ULONG,x1,LPVOID,p1,ULONG,x2,LPVOID,p2,ULONG,x3)\
768 ICOM_METHOD3(HRESULT,QuerySupport,REFGUID,rgid,ULONG,x1,ULONG*,px2)
769 #define IKsPropertySet_IMETHODS \
770 IUnknown_IMETHODS \
771 IKsPropertySet_METHODS
772 ICOM_DEFINE(IKsPropertySet,IUnknown)
773 #undef ICOM_INTERFACE
775 #define IKsPropertySet_QueryInterface(p,a,b) ICOM_CALL2(QueryInterface,p,a,b)
776 #define IKsPropertySet_AddRef(p) ICOM_CALL (AddRef,p)
777 #define IKsPropertySet_Release(p) ICOM_CALL (Release,p)
778 #define IKsPropertySet_Get(p,a,b,c,d,e,f,g) ICOM_CALL7(Get,p,a,b,c,d,e,f,g)
779 #define IKsPropertySet_Set(p,a,b,c,d,e,f) ICOM_CALL6(Set,p,a,b,c,d,e,f)
780 #define IKsPropertySet_QuerySupport(p,a,b,c) ICOM_CALL3(QuerySupport,p,a,b,c)
783 #ifdef __cplusplus
784 } /* extern "C" */
785 #endif /* defined(__cplusplus) */
787 #endif /* __WINE_DSOUND_H */