2 * Copyright (C) 2020 Vijay Kiran Kamuju
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., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
19 #ifndef __WINE_XACT3_H
20 #define __WINE_XACT3_H
33 #if XACT3_VER == 0x0300
34 DEFINE_GUID(CLSID_XACTEngine
, 0x3b80ee2a, 0xb0f5, 0x4780, 0x9e, 0x30, 0x90, 0xcb, 0x39, 0x68, 0x5b, 0x03);
35 #elif XACT3_VER == 0x0301
36 DEFINE_GUID(CLSID_XACTEngine
, 0x962f5027, 0x99be, 0x4692, 0xa4, 0x68, 0x85, 0x80, 0x2c, 0xf8, 0xde, 0x61);
37 #elif XACT3_VER == 0x0302
38 DEFINE_GUID(CLSID_XACTEngine
, 0xd3332f02, 0x3dd0, 0x4de9, 0x9a, 0xec, 0x20, 0xd8, 0x5c, 0x41, 0x11, 0xb6);
39 #elif XACT3_VER == 0x0303
40 DEFINE_GUID(CLSID_XACTEngine
, 0x94c1affa, 0x66e7, 0x4961, 0x95, 0x21, 0xcf, 0xde, 0xf3, 0x12, 0x8d, 0x4f);
41 #elif XACT3_VER == 0x0304
42 DEFINE_GUID(CLSID_XACTEngine
, 0x0977d092, 0x2d95, 0x4e43, 0x8d, 0x42, 0x9d, 0xdc, 0xc2, 0x54, 0x5e, 0xd5);
43 #elif XACT3_VER == 0x0305
44 DEFINE_GUID(CLSID_XACTEngine
, 0x074b110f, 0x7f58, 0x4743, 0xae, 0xa5, 0x12, 0xf1, 0x5b, 0x50, 0x74, 0xed);
45 #elif XACT3_VER == 0x0306
46 DEFINE_GUID(CLSID_XACTEngine
, 0x248d8a3b, 0x6256, 0x44d3, 0xa0, 0x18, 0x2a, 0xc9, 0x6c, 0x45, 0x9f, 0x47);
47 #else /* XACT3_VER == 0x0307 or not defined */
48 DEFINE_GUID(CLSID_XACTEngine
, 0xbcc782bc, 0x6492, 0x4c22, 0x8c, 0x35, 0xf5, 0xd7, 0x2f, 0xe7, 0x3c, 0x6e);
51 DEFINE_GUID(CLSID_XACTAuditionEngine
, 0x9ecdd80d, 0x0e81, 0x40d8, 0x89, 0x03, 0x2b, 0xf7, 0xb1, 0x31, 0xac, 0x43);
52 DEFINE_GUID(CLSID_XACTDebugEngine
, 0x02860630, 0xbf3b, 0x42a8, 0xb1, 0x4e, 0x91, 0xed, 0xa2, 0xf5, 0x1e, 0xa5);
54 #if XACT3_VER == 0x0300
55 DEFINE_GUID(IID_IXACT3Engine
, 0x9e33f661, 0x2d07, 0x43ec, 0x97, 0x04, 0xbb, 0xcb, 0x71, 0xa5, 0x49, 0x72);
56 #elif XACT3_VER >= 0x0301 && XACT3_VER <= 0x304
57 DEFINE_GUID(IID_IXACT3Engine
, 0xe72c1b9a, 0xd717, 0x41c0, 0x81, 0xa6, 0x50, 0xeb, 0x56, 0xe8, 0x06, 0x49);
59 DEFINE_GUID(IID_IXACT3Engine
, 0xb1ee676a, 0xd9cd, 0x4d2a, 0x89, 0xa8, 0xfa, 0x53, 0xeb, 0x9e, 0x48, 0x0b);
62 typedef struct IXACT3SoundBank IXACT3SoundBank
;
63 typedef struct IXACT3WaveBank IXACT3WaveBank
;
64 typedef struct IXACT3Cue IXACT3Cue
;
65 typedef struct IXACT3Wave IXACT3Wave
;
66 typedef struct IXACT3Engine IXACT3Engine
;
68 typedef WORD XACTCATEGORY
;
69 typedef BYTE XACTCHANNEL
;
70 typedef WORD XACTINDEX
;
71 typedef BYTE XACTINSTANCELIMIT
;
72 typedef BYTE XACTLOOPCOUNT
;
73 typedef BYTE XACTNOTIFICATIONTYPE
;
74 typedef SHORT XACTPITCH
;
75 typedef LONG XACTTIME
;
76 typedef WORD XACTVARIABLEINDEX
;
77 typedef FLOAT XACTVARIABLEVALUE
;
78 typedef BYTE XACTVARIATIONWEIGHT
;
79 typedef FLOAT XACTVOLUME
;
81 static const XACTTIME XACTTIME_MIN
= INT_MIN
;
82 static const XACTTIME XACTTIME_MAX
= INT_MAX
;
83 static const XACTTIME XACTTIME_INFINITE
= INT_MAX
;
84 static const XACTINSTANCELIMIT XACTINSTANCELIMIT_INFINITE
= 0xff;
85 static const XACTINSTANCELIMIT XACTINSTANCELIMIT_MIN
= 0x00;
86 static const XACTINSTANCELIMIT XACTINSTANCELIMIT_MAX
= 0xfe;
87 static const XACTINDEX XACTINDEX_MIN
= 0x0;
88 static const XACTINDEX XACTINDEX_MAX
= 0xfffe;
89 static const XACTINDEX XACTINDEX_INVALID
= 0xffff;
90 static const XACTNOTIFICATIONTYPE XACTNOTIFICATIONTYPE_MIN
= 0x00;
91 static const XACTNOTIFICATIONTYPE XACTNOTIFICATIONTYPE_MAX
= 0xff;
92 static const XACTVARIABLEVALUE XACTVARIABLEVALUE_MIN
= -FLT_MAX
;
93 static const XACTVARIABLEVALUE XACTVARIABLEVALUE_MAX
= FLT_MAX
;
94 static const XACTVARIABLEINDEX XACTVARIABLEINDEX_MIN
= 0x0000;
95 static const XACTVARIABLEINDEX XACTVARIABLEINDEX_MAX
= 0xfffe;
96 static const XACTVARIABLEINDEX XACTVARIABLEINDEX_INVALID
= 0xffff;
97 static const XACTCATEGORY XACTCATEGORY_MIN
= 0x0;
98 static const XACTCATEGORY XACTCATEGORY_MAX
= 0xfffe;
99 static const XACTCATEGORY XACTCATEGORY_INVALID
= 0xffff;
100 static const XACTCHANNEL XACTCHANNEL_MIN
= 0;
101 static const XACTCHANNEL XACTCHANNEL_MAX
= 0xFF;
102 static const XACTPITCH XACTPITCH_MIN
= -1200;
103 static const XACTPITCH XACTPITCH_MAX
= 1200;
104 static const XACTPITCH XACTPITCH_MIN_TOTAL
= -2400;
105 static const XACTPITCH XACTPITCH_MAX_TOTAL
= 2400;
106 static const XACTVOLUME XACTVOLUME_MIN
= 0.0f
;
107 static const XACTVOLUME XACTVOLUME_MAX
= 16777216.0f
;
108 static const XACTVARIABLEVALUE XACTPARAMETERVALUE_MIN
= -FLT_MAX
;
109 static const XACTVARIABLEVALUE XACTPARAMETERVALUE_MAX
= FLT_MAX
;
110 static const XACTLOOPCOUNT XACTLOOPCOUNT_MIN
= 0x0;
111 static const XACTLOOPCOUNT XACTLOOPCOUNT_MAX
= 0xfe;
112 static const XACTLOOPCOUNT XACTLOOPCOUNT_INFINITE
= 0xff;
113 static const DWORD XACTWAVEALIGNMENT_MIN
= 2048;
115 #define FACILITY_XACTENGINE 0xAC7
116 #define XACTENGINEERROR(n) MAKE_HRESULT(SEVERITY_ERROR, FACILITY_XACTENGINE, n)
118 #define XACTENGINE_E_OUTOFMEMORY E_OUTOFMEMORY
119 #define XACTENGINE_E_INVALIDARG E_INVALIDARG
120 #define XACTENGINE_E_NOTIMPL E_NOTIMPL
121 #define XACTENGINE_E_FAIL E_FAIL
123 #define XACTENGINE_E_ALREADYINITIALIZED XACTENGINEERROR(0x001)
124 #define XACTENGINE_E_NOTINITIALIZED XACTENGINEERROR(0x002)
125 #define XACTENGINE_E_EXPIRED XACTENGINEERROR(0x003)
126 #define XACTENGINE_E_NONOTIFICATIONCALLBACK XACTENGINEERROR(0x004)
127 #define XACTENGINE_E_NOTIFICATIONREGISTERED XACTENGINEERROR(0x005)
128 #define XACTENGINE_E_INVALIDUSAGE XACTENGINEERROR(0x006)
129 #define XACTENGINE_E_INVALIDDATA XACTENGINEERROR(0x007)
130 #define XACTENGINE_E_INSTANCELIMITFAILTOPLAY XACTENGINEERROR(0x008)
131 #define XACTENGINE_E_NOGLOBALSETTINGS XACTENGINEERROR(0x009)
132 #define XACTENGINE_E_INVALIDVARIABLEINDEX XACTENGINEERROR(0x00a)
133 #define XACTENGINE_E_INVALIDCATEGORY XACTENGINEERROR(0x00b)
134 #define XACTENGINE_E_INVALIDCUEINDEX XACTENGINEERROR(0x00c)
135 #define XACTENGINE_E_INVALIDWAVEINDEX XACTENGINEERROR(0x00d)
136 #define XACTENGINE_E_INVALIDTRACKINDEX XACTENGINEERROR(0x00e)
137 #define XACTENGINE_E_INVALIDSOUNDOFFSETORINDEX XACTENGINEERROR(0x00f)
138 #define XACTENGINE_E_READFILE XACTENGINEERROR(0x010)
139 #define XACTENGINE_E_UNKNOWNEVENT XACTENGINEERROR(0x011)
140 #define XACTENGINE_E_INCALLBACK XACTENGINEERROR(0x012)
141 #define XACTENGINE_E_NOWAVEBANK XACTENGINEERROR(0x013)
142 #define XACTENGINE_E_SELECTVARIATION XACTENGINEERROR(0x014)
143 #define XACTENGINE_E_MULTIPLEAUDITIONENGINES XACTENGINEERROR(0x015)
144 #define XACTENGINE_E_WAVEBANKNOTPREPARED XACTENGINEERROR(0x016)
145 #define XACTENGINE_E_NORENDERER XACTENGINEERROR(0x017)
146 #define XACTENGINE_E_INVALIDENTRYCOUNT XACTENGINEERROR(0x018)
147 #define XACTENGINE_E_SEEKTIMEBEYONDCUEEND XACTENGINEERROR(0x019)
148 #define XACTENGINE_E_SEEKTIMEBEYONDWAVEEND XACTENGINEERROR(0x01a)
149 #define XACTENGINE_E_NOFRIENDLYNAMES XACTENGINEERROR(0x01b)
150 #define XACTENGINE_E_AUDITION_WRITEFILE XACTENGINEERROR(0x101)
151 #define XACTENGINE_E_AUDITION_NOSOUNDBANK XACTENGINEERROR(0x102)
152 #define XACTENGINE_E_AUDITION_INVALIDRPCINDEX XACTENGINEERROR(0x103)
153 #define XACTENGINE_E_AUDITION_MISSINGDATA XACTENGINEERROR(0x104)
154 #define XACTENGINE_E_AUDITION_UNKNOWNCOMMAND XACTENGINEERROR(0x105)
155 #define XACTENGINE_E_AUDITION_INVALIDDSPINDEX XACTENGINEERROR(0x106)
156 #define XACTENGINE_E_AUDITION_MISSINGWAVE XACTENGINEERROR(0x107)
157 #define XACTENGINE_E_AUDITION_CREATEDIRECTORYFAILED XACTENGINEERROR(0x108)
158 #define XACTENGINE_E_AUDITION_INVALIDSESSION XACTENGINEERROR(0x109)
160 static const DWORD XACT_FLAG_STOP_RELEASE
= 0x00000000;
161 static const DWORD XACT_FLAG_STOP_IMMEDIATE
= 0x00000001;
163 static const DWORD XACT_FLAG_MANAGEDATA
= 0x00000001;
164 static const DWORD XACT_FLAG_BACKGROUND_MUSIC
= 0x00000002;
165 static const DWORD XACT_FLAG_UNITS_MS
= 0x00000004;
166 static const DWORD XACT_FLAG_UNITS_SAMPLES
= 0x00000008;
168 static const DWORD XACT_STATE_CREATED
= 0x00000001;
169 static const DWORD XACT_STATE_PREPARING
= 0x00000002;
170 static const DWORD XACT_STATE_PREPARED
= 0x00000004;
171 static const DWORD XACT_STATE_PLAYING
= 0x00000008;
172 static const DWORD XACT_STATE_STOPPING
= 0x00000010;
173 static const DWORD XACT_STATE_STOPPED
= 0x00000020;
174 static const DWORD XACT_STATE_PAUSED
= 0x00000040;
175 static const DWORD XACT_STATE_INUSE
= 0x00000080;
176 static const DWORD XACT_STATE_PREPAREFAILED
= 0x80000000;
178 #define XACT_FLAG_GLOBAL_SETTINGS_MANAGEDATA XACT_FLAG_MANAGEDATA
180 #define XACT_RENDERER_ID_LENGTH 0xff
181 #define XACT_RENDERER_NAME_LENGTH 0xff
182 #define XACT_CUE_NAME_LENGTH 0xff
184 #define XACT_CONTENT_VERSION 46
186 #define XACT_ENGINE_LOOKAHEAD_DEFAULT 250
188 static const DWORD XACT_FLAG_API_AUDITION_MODE
= 0x00000001;
189 static const DWORD XACT_FLAG_API_DEBUG_MODE
= 0x00000002;
191 #define XACT_DEBUGENGINE_REGISTRY_KEY L"Software\\Microsoft\\XACT"
192 #define XACT_DEBUGENGINE_REGISTRY_VALUE L"DebugEngine"
194 typedef struct XACT_RENDERER_DETAILS
196 WCHAR rendererID
[XACT_RENDERER_ID_LENGTH
];
197 WCHAR displayName
[XACT_RENDERER_NAME_LENGTH
];
199 } XACT_RENDERER_DETAILS
, *LPXACT_RENDERER_DETAILS
;
201 typedef BOOL (__stdcall
*XACT_READFILE_CALLBACK
)(
204 DWORD nNumberOfBytesRead
,
205 LPDWORD lpNumberOfBytesRead
,
206 LPOVERLAPPED lpOverlapped
208 typedef BOOL (__stdcall
*XACT_GETOVERLAPPEDRESULT_CALLBACK
)(
210 LPOVERLAPPED lpOverlapped
,
211 LPDWORD lpNumberOfBytesTransferred
,
215 typedef struct XACT_FILEIO_CALLBACKS
217 XACT_READFILE_CALLBACK readFileCallback
;
218 XACT_GETOVERLAPPEDRESULT_CALLBACK getOverlappedResultCallback
;
219 } XACT_FILEIO_CALLBACKS
, *PXACT_FILEIO_CALLBACKS
;
220 typedef const XACT_FILEIO_CALLBACKS
*PCXACT_FILEIO_CALLBACKS
;
222 typedef struct XACT_STREAMING_PARAMETERS
228 } XACT_STREAMING_PARAMETERS
, *LPXACT_STREAMING_PARAMETERS
, XACT_WAVEBANK_STREAMING_PARAMETERS
, *LPXACT_WAVEBANK_STREAMING_PARAMETERS
;
229 typedef const XACT_STREAMING_PARAMETERS
*LPCXACT_STREAMING_PARAMETERS
;
230 typedef const XACT_WAVEBANK_STREAMING_PARAMETERS
*LPCXACT_WAVEBANK_STREAMING_PARAMETERS
;
232 typedef struct XACT_CUE_PROPERTIES
234 char friendlyName
[XACT_CUE_NAME_LENGTH
];
236 XACTINDEX iaVariableIndex
;
237 XACTINDEX numVariations
;
238 XACTINSTANCELIMIT maxInstances
;
239 XACTINSTANCELIMIT currentInstances
;
240 } XACT_CUE_PROPERTIES
, *LPXACT_CUE_PROPERTIES
;
242 typedef struct XACT_TRACK_PROPERTIES
245 XACTINDEX numVariations
;
246 XACTCHANNEL numChannels
;
247 XACTINDEX waveVariation
;
248 XACTLOOPCOUNT loopCount
;
249 } XACT_TRACK_PROPERTIES
, *LPXACT_TRACK_PROPERTIES
;
251 typedef struct XACT_VARIATION_PROPERTIES
254 XACTVARIATIONWEIGHT weight
;
255 XACTVARIABLEVALUE iaVariableMin
;
256 XACTVARIABLEVALUE iaVariableMax
;
258 } XACT_VARIATION_PROPERTIES
, *LPXACT_VARIATION_PROPERTIES
;
260 typedef struct XACT_SOUND_PROPERTIES
262 XACTCATEGORY category
;
267 XACT_TRACK_PROPERTIES arrTrackProperties
[1];
268 } XACT_SOUND_PROPERTIES
, *LPXACT_SOUND_PROPERTIES
;
270 typedef struct XACT_SOUND_VARIATION_PROPERTIES
272 XACT_VARIATION_PROPERTIES variationProperties
;
273 XACT_SOUND_PROPERTIES soundProperties
;
274 } XACT_SOUND_VARIATION_PROPERTIES
, *LPXACT_SOUND_VARIATION_PROPERTIES
;
276 typedef struct XACT_CUE_INSTANCE_PROPERTIES
278 DWORD allocAttributes
;
279 XACT_CUE_PROPERTIES cueProperties
;
280 XACT_SOUND_VARIATION_PROPERTIES activeVariationProperties
;
281 } XACT_CUE_INSTANCE_PROPERTIES
, *LPXACT_CUE_INSTANCE_PROPERTIES
;
283 typedef struct XACTCHANNELMAPENTRY
285 XACTCHANNEL InputChannel
;
286 XACTCHANNEL OutputChannel
;
288 } XACTCHANNELMAPENTRY
, *LPXACTCHANNELMAPENTRY
;
289 typedef const XACTCHANNELMAPENTRY
*LPCXACTCHANNELMAPENTRY
;
291 typedef struct XACTCHANNELMAP
293 XACTCHANNEL EntryCount
;
294 XACTCHANNELMAPENTRY
* paEntries
;
295 } XACTCHANNELMAP
, *LPXACTCHANNELMAP
;
296 typedef const XACTCHANNELMAP
*LPCXACTCHANNELMAP
;
298 typedef struct XACTCHANNELVOLUMEENTRY
300 XACTCHANNEL EntryIndex
;
302 } XACTCHANNELVOLUMEENTRY
, *LPXACTCHANNELVOLUMEENTRY
;
303 typedef const XACTCHANNELVOLUMEENTRY
*LPCXACTCHANNELVOLUMEENTRY
;
305 typedef struct XACTCHANNELVOLUME
307 XACTCHANNEL EntryCount
;
308 XACTCHANNELVOLUMEENTRY
* paEntries
;
309 } XACTCHANNELVOLUME
, *LPXACTCHANNELVOLUME
;
310 typedef const XACTCHANNELVOLUME
*LPCXACTCHANNELVOLUME
;
312 static const XACTNOTIFICATIONTYPE XACTNOTIFICATIONTYPE_CUEPREPARED
= 1;
313 static const XACTNOTIFICATIONTYPE XACTNOTIFICATIONTYPE_CUEPLAY
= 2;
314 static const XACTNOTIFICATIONTYPE XACTNOTIFICATIONTYPE_CUESTOP
= 3;
315 static const XACTNOTIFICATIONTYPE XACTNOTIFICATIONTYPE_CUEDESTROYED
= 4;
316 static const XACTNOTIFICATIONTYPE XACTNOTIFICATIONTYPE_MARKER
= 5;
317 static const XACTNOTIFICATIONTYPE XACTNOTIFICATIONTYPE_SOUNDBANKDESTROYED
= 6;
318 static const XACTNOTIFICATIONTYPE XACTNOTIFICATIONTYPE_WAVEBANKDESTROYED
= 7;
319 static const XACTNOTIFICATIONTYPE XACTNOTIFICATIONTYPE_LOCALVARIABLECHANGED
= 8;
320 static const XACTNOTIFICATIONTYPE XACTNOTIFICATIONTYPE_GLOBALVARIABLECHANGED
= 9;
321 static const XACTNOTIFICATIONTYPE XACTNOTIFICATIONTYPE_GUICONNECTED
= 10;
322 static const XACTNOTIFICATIONTYPE XACTNOTIFICATIONTYPE_GUIDISCONNECTED
= 11;
323 static const XACTNOTIFICATIONTYPE XACTNOTIFICATIONTYPE_WAVEPREPARED
= 12;
324 static const XACTNOTIFICATIONTYPE XACTNOTIFICATIONTYPE_WAVEPLAY
= 13;
325 static const XACTNOTIFICATIONTYPE XACTNOTIFICATIONTYPE_WAVESTOP
= 14;
326 static const XACTNOTIFICATIONTYPE XACTNOTIFICATIONTYPE_WAVELOOPED
= 15;
327 static const XACTNOTIFICATIONTYPE XACTNOTIFICATIONTYPE_WAVEDESTROYED
= 16;
328 static const XACTNOTIFICATIONTYPE XACTNOTIFICATIONTYPE_WAVEBANKPREPARED
= 17;
329 static const XACTNOTIFICATIONTYPE XACTNOTIFICATIONTYPE_WAVEBANKSTREAMING_INVALIDCONTENT
= 18;
331 static const BYTE XACT_FLAG_NOTIFICATION_PERSIST
= 0x01;
333 #include <pshpack1.h>
335 typedef struct XACT_NOTIFICATION_DESCRIPTION
337 XACTNOTIFICATIONTYPE type
;
339 IXACT3SoundBank
*pSoundBank
;
340 IXACT3WaveBank
*pWaveBank
;
346 } XACT_NOTIFICATION_DESCRIPTION
, *LPXACT_NOTIFICATION_DESCRIPTION
;
347 typedef const XACT_NOTIFICATION_DESCRIPTION
*LPCXACT_NOTIFICATION_DESCRIPTION
;
349 typedef struct XACT_NOTIFICATION_CUE
352 IXACT3SoundBank
*pSoundBank
;
354 } XACT_NOTIFICATION_CUE
, *LPXACT_NOTIFICATION_CUE
;
355 typedef const XACT_NOTIFICATION_CUE
*LPCXACT_NOTIFICATION_CUE
;
357 typedef struct XACT_NOTIFICATION_MARKER
360 IXACT3SoundBank
*pSoundBank
;
363 } XACT_NOTIFICATION_MARKER
, *LPXACT_NOTIFICATION_MARKER
;
364 typedef const XACT_NOTIFICATION_MARKER
*LPCXACT_NOTIFICATION_MARKER
;
366 typedef struct XACT_NOTIFICATION_SOUNDBANK
368 IXACT3SoundBank
*pSoundBank
;
369 } XACT_NOTIFICATION_SOUNDBANK
, *LPXACT_NOTIFICATION_SOUNDBANK
;
370 typedef const XACT_NOTIFICATION_SOUNDBANK
*LPCXACT_NOTIFICATION_SOUNDBANK
;
372 typedef struct XACT_NOTIFICATION_WAVEBANK
374 IXACT3WaveBank
*pWaveBank
;
375 } XACT_NOTIFICATION_WAVEBANK
, *LPXACT_NOTIFICATION_WAVEBANK
;
376 typedef const XACT_NOTIFICATION_WAVEBANK
*LPCXACT_NOTIFICATION_WAVEBANK
;
378 typedef struct XACT_NOTIFICATION_VARIABLE
381 IXACT3SoundBank
*pSoundBank
;
383 XACTVARIABLEINDEX variableIndex
;
384 XACTVARIABLEVALUE variableValue
;
386 } XACT_NOTIFICATION_VARIABLE
, *LPXACT_NOTIFICATION_VARIABLE
;
387 typedef const XACT_NOTIFICATION_VARIABLE
*LPCXACT_NOTIFICATION_VARIABLE
;
389 typedef struct XACT_NOTIFICATION_GUI
392 } XACT_NOTIFICATION_GUI
, *LPXACT_NOTIFICATION_GUI
;
393 typedef const XACT_NOTIFICATION_GUI
*LPCXACT_NOTIFICATION_GUI
;
395 typedef struct XACT_NOTIFICATION_WAVE
397 IXACT3WaveBank
*pWaveBank
;
400 IXACT3SoundBank
*pSoundBank
;
403 } XACT_NOTIFICATION_WAVE
, *LPXACT_NOTIFICATION_WAVE
;
404 typedef const XACT_NOTIFICATION_WAVE
*LPCXACT_NOTIFICATION_NAME
;
406 typedef struct XACT_NOTIFICATION
408 XACTNOTIFICATIONTYPE type
;
413 XACT_NOTIFICATION_CUE cue
;
414 XACT_NOTIFICATION_MARKER marker
;
415 XACT_NOTIFICATION_SOUNDBANK soundBank
;
416 XACT_NOTIFICATION_WAVEBANK waveBank
;
417 XACT_NOTIFICATION_VARIABLE variable
;
418 XACT_NOTIFICATION_GUI gui
;
419 XACT_NOTIFICATION_WAVE wave
;
421 } XACT_NOTIFICATION
, *LPXACT_NOTIFICATION
;
422 typedef const XACT_NOTIFICATION
*LPCXACT_NOTIFICATION
;
424 typedef void (__stdcall
*XACT_NOTIFICATION_CALLBACK
)(
425 const XACT_NOTIFICATION
*pNotification
430 typedef struct XACT_WAVE_PROPERTIES
432 char friendlyName
[WAVEBANK_ENTRYNAME_LENGTH
];
433 WAVEBANKMINIWAVEFORMAT format
;
434 DWORD durationInSamples
;
435 WAVEBANKSAMPLEREGION loopRegion
;
437 } XACT_WAVE_PROPERTIES
, *LPXACT_WAVE_PROPERTIES
;
438 typedef const XACT_WAVE_PROPERTIES
*LPCXACT_WAVE_PROPERTIES
;
440 typedef struct XACT_WAVE_INSTANCE_PROPERTIES
442 XACT_WAVE_PROPERTIES properties
;
443 BOOL backgroundMusic
;
444 } XACT_WAVE_INSTANCE_PROPERTIES
, *LPXACT_WAVE_INSTANCE_PROPERTIES
;
445 typedef const XACT_WAVE_INSTANCE_PROPERTIES
*LPCXACT_WAVE_INSTANCE_PROPERTIES
;
447 typedef struct XACT_RUNTIME_PARAMETERS
450 void* pGlobalSettingsBuffer
;
451 DWORD globalSettingsBufferSize
;
452 DWORD globalSettingsFlags
;
453 DWORD globalSettingsAllocAttributes
;
454 XACT_FILEIO_CALLBACKS fileIOCallbacks
;
455 XACT_NOTIFICATION_CALLBACK fnNotificationCallback
;
458 IXAudio2MasteringVoice
*pMasteringVoice
;
459 } XACT_RUNTIME_PARAMETERS
, *LPXACT_RUNTIME_PARAMETERS
;
460 typedef const XACT_RUNTIME_PARAMETERS
*LPCXACT_RUNTIME_PARAMETERS
;
462 #define XACT_FLAG_CUE_STOP_RELEASE XACT_FLAG_STOP_RELEASE
463 #define XACT_FLAG_CUE_STOP_IMMEDIATE XACT_FLAG_STOP_IMMEDIATE
465 #define XACT_CUESTATE_CREATED XACT_STATE_CREATED
466 #define XACT_CUESTATE_PREPARING XACT_STATE_PREPARING
467 #define XACT_CUESTATE_PREPARED XACT_STATE_PREPARED
468 #define XACT_CUESTATE_PLAYING XACT_STATE_PLAYING
469 #define XACT_CUESTATE_STOPPING XACT_STATE_STOPPING
470 #define XACT_CUESTATE_STOPPED XACT_STATE_STOPPED
471 #define XACT_CUESTATE_PAUSED XACT_STATE_PAUSED
473 /*****************************************************************************
474 * IXACT3Cue interface
476 #define INTERFACE IXACT3Cue
477 DECLARE_INTERFACE(IXACT3Cue
)
479 /*** IXACT3Cue methods ***/
480 STDMETHOD(Play
)(THIS
) PURE
;
481 STDMETHOD(Stop
)(THIS_ DWORD pdwFlags
) PURE
;
482 STDMETHOD(GetState
)(THIS_ DWORD
*pdwState
) PURE
;
483 STDMETHOD(Destroy
)(THIS
) PURE
;
484 STDMETHOD(SetMatrixCoefficients
)(THIS_ UINT32 uSrcChannelCount
, UINT32 uDstChannelCount
, float *pMatrixCoefficients
) PURE
;
485 STDMETHOD_(XACTVARIABLEINDEX
,GetVariableIndex
)(THIS_ PCSTR szFriendlyName
) PURE
;
486 STDMETHOD(SetVariable
)(THIS_ XACTVARIABLEINDEX nIndex
, XACTVARIABLEVALUE nValue
) PURE
;
487 STDMETHOD(GetVariable
)(THIS_ XACTVARIABLEINDEX nIndex
, XACTVARIABLEVALUE
*nValue
) PURE
;
488 STDMETHOD(Pause
)(THIS_ BOOL fPause
) PURE
;
489 STDMETHOD(GetProperties
)(THIS_ LPXACT_CUE_INSTANCE_PROPERTIES
*ppProperties
) PURE
;
490 STDMETHOD(SetOutputVoices
)(THIS_
const XAUDIO2_VOICE_SENDS
*pSendList
) PURE
;
491 STDMETHOD(SetOutputVoiceMatrix
)(THIS_ IXAudio2Voice
*pDestinationVoice
, UINT32 SourceChannels
, UINT32 DestinationChannels
, const float *pLevelMatrix
) PURE
;
495 #if !defined(__cplusplus) || defined(CINTERFACE)
496 /*** IXACT3Cue methods ***/
497 #define IXACT3Cue_Play(p) (p)->lpVtbl->Destroy(p)
498 #define IXACT3Cue_Stop(p,a) (p)->lpVtbl->Stop(p,a)
499 #define IXACT3Cue_GetState(p,a) (p)->lpVtbl->GetState(p,a)
500 #define IXACT3Cue_Destroy(p) (p)->lpVtbl->Destroy(p)
501 #define IXACT3Cue_SetMatrixCoefficients(p,a,b,c) (p)->lpVtbl->SetMatrixCoefficients(p,a,b,c)
502 #define IXACT3Cue_GetVariableIndex(p,a) (p)->lpVtbl->GetVariableIndex(p,a)
503 #define IXACT3Cue_SetVariable(p,a,b) (p)->lpVtbl->SetVariable(p,a,b)
504 #define IXACT3Cue_GetVariable(p,a,b) (p)->lpVtbl->GetVariable(p,a,b)
505 #define IXACT3Cue_Pause(p,a) (p)->lpVtbl->Pause(p,a)
506 #define IXACT3Cue_GetProperties(p,a) (p)->lpVtbl->GetProperties(p,a)
507 #define IXACT3Cue_SetOutputVoices(p,a) (p)->lpVtbl->SetOutputVoices(p,a)
508 #define IXACT3Cue_SetOutputVoiceMatrix(p,a,b,c,d) (p)->lpVtbl->SetOutputVoiceMatrix(p,a,b,c,d)
510 /*** IXACT3Cue methods ***/
511 #define IXACT3Cue_Play(p) (p)->Destroy()
512 #define IXACT3Cue_Stop(p,a) (p)->Stop(a)
513 #define IXACT3Cue_GetState(p,a) (p)->Stop(a)
514 #define IXACT3Cue_Destroy(p) (p)->Destroy()
515 #define IXACT3Cue_SetMatrixCoefficients(p,a,b,c) (p)->SetMatrixCoefficients(a,b,c)
516 #define IXACT3Cue_GetVariableIndex(p,a) (p)->GetVariableIndex(a)
517 #define IXACT3Cue_SetVariable(p,a,b) (p)->SetVariable(a,b)
518 #define IXACT3Cue_GetVariable(p,a,b) (p)->GetVariable(a,b)
519 #define IXACT3Cue_Pause(p,a) (p)->Pause(a)
520 #define IXACT3Cue_GetProperties(p,a) (p)->GetProperties(a)
521 #define IXACT3Cue_SetOutputVoices(p,a) (p)->SetOutputVoices(a)
522 #define IXACT3Cue_SetOutputVoiceMatrix(p,a,b,c,d) (p)->SetOutputVoiceMatrix(a,b,c,d)
525 /*****************************************************************************
526 * IXACT3Wave interface
528 #define INTERFACE IXACT3Wave
529 DECLARE_INTERFACE(IXACT3Wave
)
531 /*** IXACT3Wave methods ***/
532 STDMETHOD(Destroy
)(THIS
) PURE
;
533 STDMETHOD(Play
)(THIS
) PURE
;
534 STDMETHOD(Stop
)(THIS_ DWORD pdwFlags
) PURE
;
535 STDMETHOD(Pause
)(THIS_ BOOL fPause
) PURE
;
536 STDMETHOD(GetState
)(THIS_ DWORD
*pdwState
) PURE
;
537 STDMETHOD(SetPitch
)(THIS_ XACTPITCH pitch
) PURE
;
538 STDMETHOD(SetVolume
)(THIS_ XACTVOLUME volume
) PURE
;
539 STDMETHOD(SetMatrixCoefficients
)(THIS_ UINT32 uSrcChannelCount
, UINT32 uDstChannelCount
, float *pMatrixCoefficients
) PURE
;
540 STDMETHOD(GetProperties
)(THIS_ LPXACT_WAVE_INSTANCE_PROPERTIES pProperties
) PURE
;
544 #if !defined(__cplusplus) || defined(CINTERFACE)
545 /*** IXACT3Wave methods ***/
546 #define IXACT3Wave_Destroy(p) (p)->lpVtbl->Destroy(p)
547 #define IXACT3Wave_Play(p) (p)->lpVtbl->Destroy(p)
548 #define IXACT3Wave_Stop(p,a) (p)->lpVtbl->Stop(p,a)
549 #define IXACT3Wave_Pause(p,a) (p)->lpVtbl->Pause(p,a)
550 #define IXACT3Wave_GetState(p,a) (p)->lpVtbl->GetState(p,a)
551 #define IXACT3Wave_SetPitch(p,a) (p)->lpVtbl->SetPitch(p,a)
552 #define IXACT3Wave_SetVolume(p,a) (p)->lpVtbl->SetVolume(p,a)
553 #define IXACT3Wave_SetMatrixCoefficients(p,a,b,c) (p)->lpVtbl->SetMatrixCoefficients(p,a,b,c)
554 #define IXACT3Wave_GetProperties(p,a) (p)->lpVtbl->GetProperties(p,a)
556 /*** IXACT3Wave methods ***/
557 #define IXACT3Wave_Destroy(p) (p)->Destroy()
558 #define IXACT3Wave_Play(p) (p)->Destroy()
559 #define IXACT3Wave_Stop(p,a) (p)->Stop(a)
560 #define IXACT3Wave_Pause(p,a) (p)->Pause(a)
561 #define IXACT3Wave_GetState(p,a) (p)->Stop(a)
562 #define IXACT3Wave_SetPitch(p,a) (p)->SetVariable(a)
563 #define IXACT3Wave_SetVolume(p,a) (p)->SetVolume(a)
564 #define IXACT3Wave_SetMatrixCoefficients(p,a,b,c) (p)->SetMatrixCoefficients(a,b,c)
565 #define IXACT3Wave_GetProperties(p,a) (p)->GetProperties(a)
568 #define XACT_FLAG_SOUNDBANK_STOP_IMMEDIATE XACT_FLAG_STOP_IMMEDIATE
569 #define XACT_SOUNDBANKSTATE_INUSE XACT_STATE_INUSE
571 /*****************************************************************************
572 * IXACT3SoundBank interface
574 #define INTERFACE IXACT3SoundBank
575 DECLARE_INTERFACE(IXACT3SoundBank
)
577 /*** IXACT3SoundBank methods ***/
578 STDMETHOD_(XACTINDEX
,GetCueIndex
)(THIS_ PCSTR szFriendlyName
) PURE
;
579 STDMETHOD(GetNumCues
)(THIS_ XACTINDEX
*pnNumCues
) PURE
;
580 STDMETHOD(GetCueProperties
)(THIS_ XACTINDEX nCueIndex
, LPXACT_CUE_PROPERTIES pProperties
) PURE
;
581 STDMETHOD(Prepare
)(THIS_ XACTINDEX nCueIndex
, DWORD dwFlags
, XACTTIME timeOffset
, IXACT3Cue
**ppCue
) PURE
;
582 STDMETHOD(Play
)(THIS_ XACTINDEX nCueIndex
, DWORD dwFlags
, XACTTIME timeOffset
, IXACT3Cue
**ppCue
) PURE
;
583 STDMETHOD(Stop
)(THIS_ XACTINDEX nCueIndex
, DWORD dwFlags
) PURE
;
584 STDMETHOD(Destroy
)(THIS
) PURE
;
585 STDMETHOD(GetState
)(THIS_ DWORD
*pdwState
) PURE
;
589 #if !defined(__cplusplus) || defined(CINTERFACE)
590 /*** IXACT3SoundBank methods ***/
591 #define IXACT3SoundBank_GetCueIndex(p,a) (p)->lpVtbl->GetCueIndex(p,a)
592 #define IXACT3SoundBank_GetNumCues(p,a) (p)->lpVtbl->GetNumCues(p,a)
593 #define IXACT3SoundBank_GetCueProperties(p,a,b) (p)->lpVtbl->GetCueProperties(p,a,b)
594 #define IXACT3SoundBank_Prepare(p,a,b,c,d) (p)->lpVtbl->Prepare(p,a,b,c,d)
595 #define IXACT3SoundBank_Play(p,a,b,c,d) (p)->lpVtbl->Play(p,a,b,c,d)
596 #define IXACT3SoundBank_Stop(p,a,b) (p)->lpVtbl->Stop(p,a,b)
597 #define IXACT3SoundBank_Destroy(p) (p)->lpVtbl->Destroy(p)
598 #define IXACT3SoundBank_GetState(p,a) (p)->lpVtbl->GetState(p,a)
600 /*** IXACT3SoundBank methods ***/
601 #define IXACT3SoundBank_GetCueIndex(p,a) (p)->GetCueIndex(a)
602 #define IXACT3SoundBank_GetNumCues(p,a) (p)->GetNumCues(a)
603 #define IXACT3SoundBank_GetCueProperties(p,a,b) (p)->GetCueProperties(a,b)
604 #define IXACT3SoundBank_Prepare(p,a,b,c,d) (p)->Prepare(a,b,c,d)
605 #define IXACT3SoundBank_Play(p,a,b,c,d) (p)->Play(a,b,c,d)
606 #define IXACT3SoundBank_Stop(p,a,b) (p)->Stop(a,b)
607 #define IXACT3SoundBank_Destroy(p) (p)->Destroy()
608 #define IXACT3SoundBank_GetState(p,a) (p)->GetState(a)
611 #define XACT_WAVEBANKSTATE_INUSE XACT_STATE_INUSE
612 #define XACT_WAVEBANKSTATE_PREPARED XACT_STATE_PREPARED
613 #define XACT_WAVEBANKSTATE_PREPAREFAILED XACT_STATE_PREPAREFAILED
615 /*****************************************************************************
616 * IXACT3WaveBank interface
618 #define INTERFACE IXACT3WaveBank
619 DECLARE_INTERFACE(IXACT3WaveBank
)
621 /*** IXACT3WaveBank methods ***/
622 STDMETHOD(Destroy
)(THIS
) PURE
;
623 STDMETHOD(GetNumWaves
)(THIS_ XACTINDEX
*pnNumWaves
) PURE
;
624 STDMETHOD_(XACTINDEX
,GetWaveIndex
)(THIS_ PCSTR szFriendlyName
) PURE
;
625 STDMETHOD(GetWaveProperties
)(THIS_ XACTINDEX nWaveIndex
, LPXACT_WAVE_PROPERTIES pWaveProperties
) PURE
;
626 STDMETHOD(Prepare
)(THIS_ XACTINDEX nWaveIndex
, DWORD dwFlags
, DWORD dwPlayOffset
, XACTLOOPCOUNT nLoopCount
, IXACT3Wave
**ppWave
) PURE
;
627 STDMETHOD(Play
)(THIS_ XACTINDEX nWaveIndex
, DWORD dwFlags
, DWORD dwPlayOffset
, XACTLOOPCOUNT nLoopCount
, IXACT3Wave
**ppWave
) PURE
;
628 STDMETHOD(Stop
)(THIS_ XACTINDEX nWaveIndex
, DWORD dwFlags
) PURE
;
629 STDMETHOD(GetState
)(THIS_ DWORD
*pdwState
) PURE
;
633 #if !defined(__cplusplus) || defined(CINTERFACE)
634 /*** IXACT3WaveBank methods ***/
635 #define IXACT3WaveBank_Destroy(p) (p)->lpVtbl->Destroy(p)
636 #define IXACT3WaveBank_GetNumWaves(p,a) (p)->lpVtbl->GetNumCues(p,a)
637 #define IXACT3WaveBank_GetWaveIndex(p,a) (p)->lpVtbl->GetWaveIndex(p,a)
638 #define IXACT3WaveBank_GetWaveProperties(p,a,b) (p)->lpVtbl->GetWaveProperties(p,a,b)
639 #define IXACT3WaveBank_Prepare(p,a,b,c,d,e) (p)->lpVtbl->Prepare(p,a,b,c,d,e)
640 #define IXACT3WaveBank_Play(p,a,b,c,d,e) (p)->lpVtbl->Play(p,a,b,c,d,e)
641 #define IXACT3WaveBank_Stop(p,a,b) (p)->lpVtbl->Stop(p,a,b)
642 #define IXACT3WaveBank_GetState(p,a) (p)->lpVtbl->GetState(p,a)
644 /*** IXACT3WaveBank methods ***/
645 #define IXACT3WaveBank_Destroy(p) (p)->Destroy()
646 #define IXACT3WaveBank_GetNumWaves(p,a) (p)->GetNumWaves(a)
647 #define IXACT3WaveBank_GetWaveIndex(p,a) (p)->GetWaveIndex(a)
648 #define IXACT3WaveBank_GetWaveProperties(p,a,b) (p)->GetWaveProperties(a,b)
649 #define IXACT3WaveBank_Prepare(p,a,b,c,d,e) (p)->Prepare(a,b,c,d,e)
650 #define IXACT3WaveBank_Play(p,a,b,c,d,e) (p)->Play(a,b,c,d,e)
651 #define IXACT3WaveBank_Stop(p,a,b) (p)->Stop(a,b)
652 #define IXACT3WaveBank_GetState(p,a) (p)->GetState(a)
655 #define XACT_FLAG_ENGINE_CREATE_MANAGEDATA XACT_FLAG_MANAGEDATA
656 #define XACT_FLAG_ENGINE_STOP_IMMEDIATE XACT_FLAG_STOP_IMMEDIATE
658 /*****************************************************************************
659 * IXACT3Engine interface
661 #define INTERFACE IXACT3Engine
662 DECLARE_INTERFACE_(IXACT3Engine
,IUnknown
)
664 /*** IUnknown methods ***/
665 STDMETHOD_(HRESULT
,QueryInterface
)(THIS_ REFIID riid
, void** ppvObject
) PURE
;
666 STDMETHOD_(ULONG
,AddRef
)(THIS
) PURE
;
667 STDMETHOD_(ULONG
,Release
)(THIS
) PURE
;
668 /*** IXACT3Engine methods ***/
669 STDMETHOD(GetRendererCount
)(THIS_ XACTINDEX
*pnRendererCount
) PURE
;
670 STDMETHOD(GetRendererDetails
)(THIS_ XACTINDEX nRendererIndex
, LPXACT_RENDERER_DETAILS pRendererDetails
) PURE
;
671 STDMETHOD(GetFinalMixFormat
)(THIS_ WAVEFORMATEXTENSIBLE
*pFinalMixFormat
) PURE
;
672 STDMETHOD(Initialize
)(THIS_
const XACT_RUNTIME_PARAMETERS
*pParams
) PURE
;
673 STDMETHOD(Shutdown
)(THIS
) PURE
;
674 STDMETHOD(DoWork
)(THIS
) PURE
;
675 STDMETHOD(CreateSoundBank
)(THIS_
const void *pvBuffer
, DWORD dwSize
, DWORD dwFlags
, DWORD dwAllocAttributes
, IXACT3SoundBank
**ppSoundBank
) PURE
;
676 STDMETHOD(CreateInMemoryWaveBank
)(THIS_
const void *pvBuffer
, DWORD dwSize
, DWORD dwFlags
, DWORD dwAllocAttributes
, IXACT3WaveBank
**ppWaveBank
) PURE
;
677 STDMETHOD(CreateStreamingWaveBank
)(THIS_
const XACT_WAVEBANK_STREAMING_PARAMETERS
*pParams
, IXACT3WaveBank
**ppWaveBank
) PURE
;
678 STDMETHOD(PrepareWave
)(THIS_ DWORD dwFlags
, PCSTR szWavePath
, WORD wStreamingPacketSize
, DWORD dwAlignment
,
679 DWORD dwPlayOffset
, XACTLOOPCOUNT nLoopCount
, IXACT3Wave
**ppWave
) PURE
;
680 STDMETHOD(PrepareInMemoryWave
)(THIS_ DWORD dwFlags
, WAVEBANKENTRY entry
, DWORD
*pdwSeekTable
, BYTE
*pbWaveData
,
681 DWORD dwPlayOffset
, XACTLOOPCOUNT nLoopCount
, IXACT3Wave
**ppWave
) PURE
;
682 STDMETHOD(PrepareStreamingWave
)(THIS_ DWORD dwFlags
, WAVEBANKENTRY entry
, XACT_STREAMING_PARAMETERS streamingParams
, DWORD dwAlignment
, DWORD
*pdwSeekTable
,
683 DWORD dwPlayOffset
, XACTLOOPCOUNT nLoopCount
, IXACT3Wave
**ppWave
) PURE
;
684 STDMETHOD(RegisterNotification
)(THIS_
const XACT_NOTIFICATION_DESCRIPTION
*pNotificationDesc
) PURE
;
685 STDMETHOD(UnRegisterNotification
)(THIS_
const XACT_NOTIFICATION_DESCRIPTION
*pNotificationDesc
) PURE
;
686 STDMETHOD_(XACTCATEGORY
,GetCategory
)(THIS_ PCSTR szFriendlyName
) PURE
;
687 STDMETHOD(Stop
)(THIS_ XACTCATEGORY nCategory
, DWORD dwFlags
) PURE
;
688 STDMETHOD(SetVolume
)(THIS_ XACTCATEGORY nCategory
, XACTVOLUME nVolume
) PURE
;
689 STDMETHOD(Pause
)(THIS_ XACTCATEGORY nCategory
, BOOL fPause
) PURE
;
690 STDMETHOD_(XACTVARIABLEINDEX
,GetGlobalVariableIndex
)(THIS_ PCSTR szFriendlyName
) PURE
;
691 STDMETHOD(SetGlobalVariable
)(THIS_ XACTVARIABLEINDEX nIndex
, XACTVARIABLEVALUE nValue
) PURE
;
692 STDMETHOD(GetGlobalVariable
)(THIS_ XACTVARIABLEINDEX nIndex
, XACTVARIABLEVALUE
*nValue
) PURE
;
696 #if !defined(__cplusplus) || defined(CINTERFACE)
697 /*** IUnknown methods ***/
698 #define IXACT3Engine_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
699 #define IXACT3Engine_AddRef(p) (p)->lpVtbl->AddRef(p)
700 #define IXACT3Engine_Release(p) (p)->lpVtbl->Release(p)
701 /*** IXACT3Engine methods ***/
702 #define IXACT3Engine_GetRendererCount(p,a) (p)->lpVtbl->GetRendererCount(p,a)
703 #define IXACT3Engine_GetRendererDetails(p,a,b) (p)->lpVtbl->GetRendererDetails(p,a,b)
704 #define IXACT3Engine_GetFinalMixFormat(p,a) (p)->lpVtbl->GetFinalMixFormat(p,a)
705 #define IXACT3Engine_Initialize(p,a) (p)->lpVtbl->Initialize(p,a)
706 #define IXACT3Engine_Shutdown(p) (p)->lpVtbl->Shutdown(p)
707 #define IXACT3Engine_DoWork(p) (p)->lpVtbl->DoWork(p)
708 #define IXACT3Engine_CreateSoundBank(p,a,b,c,d,e) (p)->lpVtbl->CreateSoundBank(p,a,b,c,d,e)
709 #define IXACT3Engine_CreateInMemoryWaveBank(p,a,b,c,d,e) (p)->lpVtbl->CreateInMemoryWaveBank(p,a,b,c,d,e)
710 #define IXACT3Engine_CreateStreamingWaveBank(p,a,b) (p)->lpVtbl->CreateStreamingWaveBank(p,a,b)
711 #define IXACT3Engine_PrepareWave(p,a,b,c,d,e,f,g) (p)->lpVtbl->PrepareWave(p,a,b,c,d,e,f,g)
712 #define IXACT3Engine_PrepareInMemoryWave(p,a,b,c,d,e,f,g) (p)->lpVtbl->PrepareInMemoryWave(p,a,b,c,d,e,f,g)
713 #define IXACT3Engine_PrepareStreamingWave(p,a,b,c,d,e,f,g,h) (p)->lpVtbl->PrepareStreamingWave(p,a,b,c,d,e,f,g,h)
714 #define IXACT3Engine_RegisterNotification(p,a) (p)->lpVtbl->RegisterNotification(p,a)
715 #define IXACT3Engine_UnRegisterNotification(p,a) (p)->lpVtbl->UnRegisterNotification(p,a)
716 #define IXACT3Engine_GetCategory(p,a) (p)->lpVtbl->GetCategory(p,a)
717 #define IXACT3Engine_Stop(p,a,b) (p)->lpVtbl->Stop(a,b)
718 #define IXACT3Engine_SetVolume(p,a,b) (p)->lpVtbl->SetVolume(p,a,b)
719 #define IXACT3Engine_Pause(p,a,b) (p)->lpVtbl->Pause(a,b)
720 #define IXACT3Engine_GetGlobalVariableIndex(p,a) (p)->lpVtbl->GetGlobalVariableIndex(p,a)
721 #define IXACT3Engine_SetGlobalVariable(p,a,b) (p)->lpVtbl->SetGlobalVariable(p,a,b)
722 #define IXACT3Engine_GetGlobalVariable(p,a,b) (p)->lpVtbl->GetGlobalVariable(p,a,b)
724 /*** IUnknown methods ***/
725 #define IXACT3Engine_QueryInterface(p,a,b) (p)->QueryInterface(a,b)
726 #define IXACT3Engine_AddRef(p) (p)->AddRef()
727 #define IXACT3Engine_Release(p) (p)->Release()
728 /*** IXACT3Engine methods ***/
729 #define IXACT3Engine_GetRendererCount(p,a) (p)->GetRendererCount(a)
730 #define IXACT3Engine_GetRendererDetails(p,a,b) (p)->GetRendererDetails(a,b)
731 #define IXACT3Engine_GetFinalMixFormat(p,a) (p)->GetFinalMixFormat(a)
732 #define IXACT3Engine_Initialize(p,a) (p)->Initialize(a)
733 #define IXACT3Engine_Shutdown(p) (p)->Shutdown()
734 #define IXACT3Engine_DoWork(p) (p)->DoWork()
735 #define IXACT3Engine_CreateSoundBank(p,a,b,c,d,e) (p)->CreateSoundBank(a,b,c,d,e)
736 #define IXACT3Engine_CreateInMemoryWaveBank(p,a,b,c,d,e) (p)->CreateInMemoryWaveBank(a,b,c,d,e)
737 #define IXACT3Engine_CreateStreamingWaveBank(p,a,b) (p)->CreateStreamingWaveBank(a,b)
738 #define IXACT3Engine_PrepareWave(p,a,b,c,d,e,f,g) (p)->PrepareWave(a,b,c,d,e,f,g)
739 #define IXACT3Engine_PrepareInMemoryWave(p,a,b,c,d,e,f,g) (p)->PrepareInMemoryWave(a,b,c,d,e,f,g)
740 #define IXACT3Engine_PrepareStreamingWave(p,a,b,c,d,e,f,g,h) (p)->PrepareStreamingWave(a,b,c,d,e,f,g,h)
741 #define IXACT3Engine_RegisterNotification(p,a) (p)->RegisterNotification(a)
742 #define IXACT3Engine_UnRegisterNotification(p,a) (p)->UnRegisterNotification(a)
743 #define IXACT3Engine_GetCategory(p,a) (p)->GetCategory(a)
744 #define IXACT3Engine_Stop(p,a,b) (p)->Stop(a,b)
745 #define IXACT3Engine_SetVolume(p,a,b) (p)->SetVolume(p,a,b)
746 #define IXACT3Engine_Pause(p,a,b) (p)->Pause(a,b)
747 #define IXACT3Engine_GetGlobalVariableIndex(p,a) (p)->GetGlobalVariableIndex(a)
748 #define IXACT3Engine_SetGlobalVariable(p,a,b) (p)->SetGlobalVariable(a,b)
749 #define IXACT3Engine_GetGlobalVariable(p,a,b) (p)->GetGlobalVariable(a,b)
756 #endif /* __WINE_XACT3_H */