mf/session: Fix computing fastest and slowest presentation rates.
[wine.git] / include / xact3.h
bloba1df1a51330afce75f581327b344d60fdabd330f
1 /*
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
22 #include <windows.h>
23 #include <objbase.h>
24 #include <float.h>
25 #include <limits.h>
26 #include <xact3wb.h>
27 #include <xaudio2.h>
29 #ifdef __cplusplus
30 extern "C" {
31 #endif
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);
49 #endif
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);
58 #else
59 DEFINE_GUID(IID_IXACT3Engine, 0xb1ee676a, 0xd9cd, 0x4d2a, 0x89, 0xa8, 0xfa, 0x53, 0xeb, 0x9e, 0x48, 0x0b);
60 #endif
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];
198 BOOL defaultDevice;
199 } XACT_RENDERER_DETAILS, *LPXACT_RENDERER_DETAILS;
201 typedef BOOL (__stdcall *XACT_READFILE_CALLBACK)(
202 HANDLE hFile,
203 LPVOID lpBuffer,
204 DWORD nNumberOfBytesRead,
205 LPDWORD lpNumberOfBytesRead,
206 LPOVERLAPPED lpOverlapped
208 typedef BOOL (__stdcall *XACT_GETOVERLAPPEDRESULT_CALLBACK)(
209 HANDLE hFile,
210 LPOVERLAPPED lpOverlapped,
211 LPDWORD lpNumberOfBytesTransferred,
212 BOOL bWait
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
224 HANDLE file;
225 DWORD offset;
226 DWORD flags;
227 WORD packetSize;
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];
235 BOOL interactive;
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
244 XACTTIME duration;
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
253 XACTINDEX index;
254 XACTVARIATIONWEIGHT weight;
255 XACTVARIABLEVALUE iaVariableMin;
256 XACTVARIABLEVALUE iaVariableMax;
257 BOOL linger;
258 } XACT_VARIATION_PROPERTIES, *LPXACT_VARIATION_PROPERTIES;
260 typedef struct XACT_SOUND_PROPERTIES
262 XACTCATEGORY category;
263 BYTE priority;
264 XACTPITCH pitch;
265 XACTVOLUME volume;
266 XACTINDEX numTracks;
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;
287 XACTVOLUME Volume;
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;
301 XACTVOLUME Volume;
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;
338 BYTE flags;
339 IXACT3SoundBank *pSoundBank;
340 IXACT3WaveBank *pWaveBank;
341 IXACT3Cue *pCue;
342 IXACT3Wave *pWave;
343 XACTINDEX cueIndex;
344 XACTINDEX waveIndex;
345 void* pvContext;
346 } XACT_NOTIFICATION_DESCRIPTION, *LPXACT_NOTIFICATION_DESCRIPTION;
347 typedef const XACT_NOTIFICATION_DESCRIPTION *LPCXACT_NOTIFICATION_DESCRIPTION;
349 typedef struct XACT_NOTIFICATION_CUE
351 XACTINDEX cueIndex;
352 IXACT3SoundBank *pSoundBank;
353 IXACT3Cue *pCue;
354 } XACT_NOTIFICATION_CUE, *LPXACT_NOTIFICATION_CUE;
355 typedef const XACT_NOTIFICATION_CUE *LPCXACT_NOTIFICATION_CUE;
357 typedef struct XACT_NOTIFICATION_MARKER
359 XACTINDEX cueIndex;
360 IXACT3SoundBank *pSoundBank;
361 IXACT3Cue *pCue;
362 DWORD marker;
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
380 XACTINDEX cueIndex;
381 IXACT3SoundBank *pSoundBank;
382 IXACT3Cue *pCue;
383 XACTVARIABLEINDEX variableIndex;
384 XACTVARIABLEVALUE variableValue;
385 BOOL local;
386 } XACT_NOTIFICATION_VARIABLE, *LPXACT_NOTIFICATION_VARIABLE;
387 typedef const XACT_NOTIFICATION_VARIABLE *LPCXACT_NOTIFICATION_VARIABLE;
389 typedef struct XACT_NOTIFICATION_GUI
391 DWORD reserved;
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;
398 XACTINDEX waveIndex;
399 XACTINDEX cueIndex;
400 IXACT3SoundBank *pSoundBank;
401 IXACT3Cue *pCue;
402 IXACT3Wave *pWave;
403 } XACT_NOTIFICATION_WAVE, *LPXACT_NOTIFICATION_WAVE;
404 typedef const XACT_NOTIFICATION_WAVE *LPCXACT_NOTIFICATION_NAME;
406 typedef struct XACT_NOTIFICATION
408 XACTNOTIFICATIONTYPE type;
409 LONG timeStamp;
410 PVOID pvContext;
411 union
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
428 #include <poppack.h>
430 typedef struct XACT_WAVE_PROPERTIES
432 char friendlyName[WAVEBANK_ENTRYNAME_LENGTH];
433 WAVEBANKMINIWAVEFORMAT format;
434 DWORD durationInSamples;
435 WAVEBANKSAMPLEREGION loopRegion;
436 BOOL streaming;
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
449 DWORD lookAheadTime;
450 void* pGlobalSettingsBuffer;
451 DWORD globalSettingsBufferSize;
452 DWORD globalSettingsFlags;
453 DWORD globalSettingsAllocAttributes;
454 XACT_FILEIO_CALLBACKS fileIOCallbacks;
455 XACT_NOTIFICATION_CALLBACK fnNotificationCallback;
456 LPCWSTR pRendererID;
457 IXAudio2 *pXAudio2;
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;
493 #undef INTERFACE
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)
509 #else
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)
523 #endif
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;
542 #undef INTERFACE
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)
555 #else
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)
566 #endif
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;
587 #undef INTERFACE
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)
599 #else
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)
609 #endif
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;
631 #undef INTERFACE
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)
643 #else
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)
653 #endif
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;
694 #undef INTERFACE
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)
723 #else
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)
750 #endif
752 #ifdef __cplusplus
754 #endif
756 #endif /* __WINE_XACT3_H */