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