summary refs log tree commit diff stats
path: root/vendor/fmod/inc/fmod_common.h
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/fmod/inc/fmod_common.h')
-rw-r--r--vendor/fmod/inc/fmod_common.h880
1 files changed, 880 insertions, 0 deletions
diff --git a/vendor/fmod/inc/fmod_common.h b/vendor/fmod/inc/fmod_common.h new file mode 100644 index 0000000..a938bb0 --- /dev/null +++ b/vendor/fmod/inc/fmod_common.h
@@ -0,0 +1,880 @@
1/* ======================================================================================== */
2/* FMOD Core API - Common C/C++ header file. */
3/* Copyright (c), Firelight Technologies Pty, Ltd. 2004-2021. */
4/* */
5/* This header is included by fmod.hpp (C++ interface) and fmod.h (C interface) */
6/* */
7/* For more detail visit: */
8/* https://fmod.com/resources/documentation-api?version=2.0&page=core-api-common.html */
9/* ======================================================================================== */
10#ifndef _FMOD_COMMON_H
11#define _FMOD_COMMON_H
12
13/*
14 Library import helpers
15*/
16#if defined(_WIN32) || defined(__CYGWIN__)
17 #define F_CALL __stdcall
18#else
19 #define F_CALL
20#endif
21
22#if defined(_WIN32) || defined(__CYGWIN__) || defined(__ORBIS__) || defined(F_USE_DECLSPEC)
23 #define F_EXPORT __declspec(dllexport)
24#elif defined(__APPLE__) || defined(__ANDROID__) || defined(__linux__) || defined(F_USE_ATTRIBUTE)
25 #define F_EXPORT __attribute__((visibility("default")))
26#else
27 #define F_EXPORT
28#endif
29
30#ifdef DLL_EXPORTS
31 #define F_API F_EXPORT F_CALL
32#else
33 #define F_API F_CALL
34#endif
35
36#define F_CALLBACK F_CALL
37
38/*
39 FMOD core types
40*/
41typedef int FMOD_BOOL;
42typedef struct FMOD_SYSTEM FMOD_SYSTEM;
43typedef struct FMOD_SOUND FMOD_SOUND;
44typedef struct FMOD_CHANNELCONTROL FMOD_CHANNELCONTROL;
45typedef struct FMOD_CHANNEL FMOD_CHANNEL;
46typedef struct FMOD_CHANNELGROUP FMOD_CHANNELGROUP;
47typedef struct FMOD_SOUNDGROUP FMOD_SOUNDGROUP;
48typedef struct FMOD_REVERB3D FMOD_REVERB3D;
49typedef struct FMOD_DSP FMOD_DSP;
50typedef struct FMOD_DSPCONNECTION FMOD_DSPCONNECTION;
51typedef struct FMOD_POLYGON FMOD_POLYGON;
52typedef struct FMOD_GEOMETRY FMOD_GEOMETRY;
53typedef struct FMOD_SYNCPOINT FMOD_SYNCPOINT;
54typedef struct FMOD_ASYNCREADINFO FMOD_ASYNCREADINFO;
55typedef unsigned long long FMOD_PORT_INDEX;
56
57/*
58 FMOD constants
59*/
60#define FMOD_VERSION 0x00020205 /* 0xaaaabbcc -> aaaa = product version, bb = major version, cc = minor version.*/
61
62typedef unsigned int FMOD_DEBUG_FLAGS;
63#define FMOD_DEBUG_LEVEL_NONE 0x00000000
64#define FMOD_DEBUG_LEVEL_ERROR 0x00000001
65#define FMOD_DEBUG_LEVEL_WARNING 0x00000002
66#define FMOD_DEBUG_LEVEL_LOG 0x00000004
67#define FMOD_DEBUG_TYPE_MEMORY 0x00000100
68#define FMOD_DEBUG_TYPE_FILE 0x00000200
69#define FMOD_DEBUG_TYPE_CODEC 0x00000400
70#define FMOD_DEBUG_TYPE_TRACE 0x00000800
71#define FMOD_DEBUG_DISPLAY_TIMESTAMPS 0x00010000
72#define FMOD_DEBUG_DISPLAY_LINENUMBERS 0x00020000
73#define FMOD_DEBUG_DISPLAY_THREAD 0x00040000
74
75typedef unsigned int FMOD_MEMORY_TYPE;
76#define FMOD_MEMORY_NORMAL 0x00000000
77#define FMOD_MEMORY_STREAM_FILE 0x00000001
78#define FMOD_MEMORY_STREAM_DECODE 0x00000002
79#define FMOD_MEMORY_SAMPLEDATA 0x00000004
80#define FMOD_MEMORY_DSP_BUFFER 0x00000008
81#define FMOD_MEMORY_PLUGIN 0x00000010
82#define FMOD_MEMORY_PERSISTENT 0x00200000
83#define FMOD_MEMORY_ALL 0xFFFFFFFF
84
85typedef unsigned int FMOD_INITFLAGS;
86#define FMOD_INIT_NORMAL 0x00000000
87#define FMOD_INIT_STREAM_FROM_UPDATE 0x00000001
88#define FMOD_INIT_MIX_FROM_UPDATE 0x00000002
89#define FMOD_INIT_3D_RIGHTHANDED 0x00000004
90#define FMOD_INIT_CHANNEL_LOWPASS 0x00000100
91#define FMOD_INIT_CHANNEL_DISTANCEFILTER 0x00000200
92#define FMOD_INIT_PROFILE_ENABLE 0x00010000
93#define FMOD_INIT_VOL0_BECOMES_VIRTUAL 0x00020000
94#define FMOD_INIT_GEOMETRY_USECLOSEST 0x00040000
95#define FMOD_INIT_PREFER_DOLBY_DOWNMIX 0x00080000
96#define FMOD_INIT_THREAD_UNSAFE 0x00100000
97#define FMOD_INIT_PROFILE_METER_ALL 0x00200000
98#define FMOD_INIT_MEMORY_TRACKING 0x00400000
99
100typedef unsigned int FMOD_DRIVER_STATE;
101#define FMOD_DRIVER_STATE_CONNECTED 0x00000001
102#define FMOD_DRIVER_STATE_DEFAULT 0x00000002
103
104typedef unsigned int FMOD_TIMEUNIT;
105#define FMOD_TIMEUNIT_MS 0x00000001
106#define FMOD_TIMEUNIT_PCM 0x00000002
107#define FMOD_TIMEUNIT_PCMBYTES 0x00000004
108#define FMOD_TIMEUNIT_RAWBYTES 0x00000008
109#define FMOD_TIMEUNIT_PCMFRACTION 0x00000010
110#define FMOD_TIMEUNIT_MODORDER 0x00000100
111#define FMOD_TIMEUNIT_MODROW 0x00000200
112#define FMOD_TIMEUNIT_MODPATTERN 0x00000400
113
114typedef unsigned int FMOD_SYSTEM_CALLBACK_TYPE;
115#define FMOD_SYSTEM_CALLBACK_DEVICELISTCHANGED 0x00000001
116#define FMOD_SYSTEM_CALLBACK_DEVICELOST 0x00000002
117#define FMOD_SYSTEM_CALLBACK_MEMORYALLOCATIONFAILED 0x00000004
118#define FMOD_SYSTEM_CALLBACK_THREADCREATED 0x00000008
119#define FMOD_SYSTEM_CALLBACK_BADDSPCONNECTION 0x00000010
120#define FMOD_SYSTEM_CALLBACK_PREMIX 0x00000020
121#define FMOD_SYSTEM_CALLBACK_POSTMIX 0x00000040
122#define FMOD_SYSTEM_CALLBACK_ERROR 0x00000080
123#define FMOD_SYSTEM_CALLBACK_MIDMIX 0x00000100
124#define FMOD_SYSTEM_CALLBACK_THREADDESTROYED 0x00000200
125#define FMOD_SYSTEM_CALLBACK_PREUPDATE 0x00000400
126#define FMOD_SYSTEM_CALLBACK_POSTUPDATE 0x00000800
127#define FMOD_SYSTEM_CALLBACK_RECORDLISTCHANGED 0x00001000
128#define FMOD_SYSTEM_CALLBACK_BUFFEREDNOMIX 0x00002000
129#define FMOD_SYSTEM_CALLBACK_DEVICEREINITIALIZE 0x00004000
130#define FMOD_SYSTEM_CALLBACK_OUTPUTUNDERRUN 0x00008000
131#define FMOD_SYSTEM_CALLBACK_ALL 0xFFFFFFFF
132
133typedef unsigned int FMOD_MODE;
134#define FMOD_DEFAULT 0x00000000
135#define FMOD_LOOP_OFF 0x00000001
136#define FMOD_LOOP_NORMAL 0x00000002
137#define FMOD_LOOP_BIDI 0x00000004
138#define FMOD_2D 0x00000008
139#define FMOD_3D 0x00000010
140#define FMOD_CREATESTREAM 0x00000080
141#define FMOD_CREATESAMPLE 0x00000100
142#define FMOD_CREATECOMPRESSEDSAMPLE 0x00000200
143#define FMOD_OPENUSER 0x00000400
144#define FMOD_OPENMEMORY 0x00000800
145#define FMOD_OPENMEMORY_POINT 0x10000000
146#define FMOD_OPENRAW 0x00001000
147#define FMOD_OPENONLY 0x00002000
148#define FMOD_ACCURATETIME 0x00004000
149#define FMOD_MPEGSEARCH 0x00008000
150#define FMOD_NONBLOCKING 0x00010000
151#define FMOD_UNIQUE 0x00020000
152#define FMOD_3D_HEADRELATIVE 0x00040000
153#define FMOD_3D_WORLDRELATIVE 0x00080000
154#define FMOD_3D_INVERSEROLLOFF 0x00100000
155#define FMOD_3D_LINEARROLLOFF 0x00200000
156#define FMOD_3D_LINEARSQUAREROLLOFF 0x00400000
157#define FMOD_3D_INVERSETAPEREDROLLOFF 0x00800000
158#define FMOD_3D_CUSTOMROLLOFF 0x04000000
159#define FMOD_3D_IGNOREGEOMETRY 0x40000000
160#define FMOD_IGNORETAGS 0x02000000
161#define FMOD_LOWMEM 0x08000000
162#define FMOD_VIRTUAL_PLAYFROMSTART 0x80000000
163
164typedef unsigned int FMOD_CHANNELMASK;
165#define FMOD_CHANNELMASK_FRONT_LEFT 0x00000001
166#define FMOD_CHANNELMASK_FRONT_RIGHT 0x00000002
167#define FMOD_CHANNELMASK_FRONT_CENTER 0x00000004
168#define FMOD_CHANNELMASK_LOW_FREQUENCY 0x00000008
169#define FMOD_CHANNELMASK_SURROUND_LEFT 0x00000010
170#define FMOD_CHANNELMASK_SURROUND_RIGHT 0x00000020
171#define FMOD_CHANNELMASK_BACK_LEFT 0x00000040
172#define FMOD_CHANNELMASK_BACK_RIGHT 0x00000080
173#define FMOD_CHANNELMASK_BACK_CENTER 0x00000100
174#define FMOD_CHANNELMASK_MONO (FMOD_CHANNELMASK_FRONT_LEFT)
175#define FMOD_CHANNELMASK_STEREO (FMOD_CHANNELMASK_FRONT_LEFT | FMOD_CHANNELMASK_FRONT_RIGHT)
176#define FMOD_CHANNELMASK_LRC (FMOD_CHANNELMASK_FRONT_LEFT | FMOD_CHANNELMASK_FRONT_RIGHT | FMOD_CHANNELMASK_FRONT_CENTER)
177#define FMOD_CHANNELMASK_QUAD (FMOD_CHANNELMASK_FRONT_LEFT | FMOD_CHANNELMASK_FRONT_RIGHT | FMOD_CHANNELMASK_SURROUND_LEFT | FMOD_CHANNELMASK_SURROUND_RIGHT)
178#define FMOD_CHANNELMASK_SURROUND (FMOD_CHANNELMASK_FRONT_LEFT | FMOD_CHANNELMASK_FRONT_RIGHT | FMOD_CHANNELMASK_FRONT_CENTER | FMOD_CHANNELMASK_SURROUND_LEFT | FMOD_CHANNELMASK_SURROUND_RIGHT)
179#define FMOD_CHANNELMASK_5POINT1 (FMOD_CHANNELMASK_FRONT_LEFT | FMOD_CHANNELMASK_FRONT_RIGHT | FMOD_CHANNELMASK_FRONT_CENTER | FMOD_CHANNELMASK_LOW_FREQUENCY | FMOD_CHANNELMASK_SURROUND_LEFT | FMOD_CHANNELMASK_SURROUND_RIGHT)
180#define FMOD_CHANNELMASK_5POINT1_REARS (FMOD_CHANNELMASK_FRONT_LEFT | FMOD_CHANNELMASK_FRONT_RIGHT | FMOD_CHANNELMASK_FRONT_CENTER | FMOD_CHANNELMASK_LOW_FREQUENCY | FMOD_CHANNELMASK_BACK_LEFT | FMOD_CHANNELMASK_BACK_RIGHT)
181#define FMOD_CHANNELMASK_7POINT0 (FMOD_CHANNELMASK_FRONT_LEFT | FMOD_CHANNELMASK_FRONT_RIGHT | FMOD_CHANNELMASK_FRONT_CENTER | FMOD_CHANNELMASK_SURROUND_LEFT | FMOD_CHANNELMASK_SURROUND_RIGHT | FMOD_CHANNELMASK_BACK_LEFT | FMOD_CHANNELMASK_BACK_RIGHT)
182#define FMOD_CHANNELMASK_7POINT1 (FMOD_CHANNELMASK_FRONT_LEFT | FMOD_CHANNELMASK_FRONT_RIGHT | FMOD_CHANNELMASK_FRONT_CENTER | FMOD_CHANNELMASK_LOW_FREQUENCY | FMOD_CHANNELMASK_SURROUND_LEFT | FMOD_CHANNELMASK_SURROUND_RIGHT | FMOD_CHANNELMASK_BACK_LEFT | FMOD_CHANNELMASK_BACK_RIGHT)
183
184typedef int FMOD_THREAD_PRIORITY;
185/* Platform specific priority range */
186#define FMOD_THREAD_PRIORITY_PLATFORM_MIN (-32 * 1024)
187#define FMOD_THREAD_PRIORITY_PLATFORM_MAX ( 32 * 1024)
188/* Platform agnostic priorities, maps internally to platform specific value */
189#define FMOD_THREAD_PRIORITY_DEFAULT (FMOD_THREAD_PRIORITY_PLATFORM_MIN - 1)
190#define FMOD_THREAD_PRIORITY_LOW (FMOD_THREAD_PRIORITY_PLATFORM_MIN - 2)
191#define FMOD_THREAD_PRIORITY_MEDIUM (FMOD_THREAD_PRIORITY_PLATFORM_MIN - 3)
192#define FMOD_THREAD_PRIORITY_HIGH (FMOD_THREAD_PRIORITY_PLATFORM_MIN - 4)
193#define FMOD_THREAD_PRIORITY_VERY_HIGH (FMOD_THREAD_PRIORITY_PLATFORM_MIN - 5)
194#define FMOD_THREAD_PRIORITY_EXTREME (FMOD_THREAD_PRIORITY_PLATFORM_MIN - 6)
195#define FMOD_THREAD_PRIORITY_CRITICAL (FMOD_THREAD_PRIORITY_PLATFORM_MIN - 7)
196/* Thread defaults */
197#define FMOD_THREAD_PRIORITY_MIXER FMOD_THREAD_PRIORITY_EXTREME
198#define FMOD_THREAD_PRIORITY_FEEDER FMOD_THREAD_PRIORITY_CRITICAL
199#define FMOD_THREAD_PRIORITY_STREAM FMOD_THREAD_PRIORITY_VERY_HIGH
200#define FMOD_THREAD_PRIORITY_FILE FMOD_THREAD_PRIORITY_HIGH
201#define FMOD_THREAD_PRIORITY_NONBLOCKING FMOD_THREAD_PRIORITY_HIGH
202#define FMOD_THREAD_PRIORITY_RECORD FMOD_THREAD_PRIORITY_HIGH
203#define FMOD_THREAD_PRIORITY_GEOMETRY FMOD_THREAD_PRIORITY_LOW
204#define FMOD_THREAD_PRIORITY_PROFILER FMOD_THREAD_PRIORITY_MEDIUM
205#define FMOD_THREAD_PRIORITY_STUDIO_UPDATE FMOD_THREAD_PRIORITY_MEDIUM
206#define FMOD_THREAD_PRIORITY_STUDIO_LOAD_BANK FMOD_THREAD_PRIORITY_MEDIUM
207#define FMOD_THREAD_PRIORITY_STUDIO_LOAD_SAMPLE FMOD_THREAD_PRIORITY_MEDIUM
208#define FMOD_THREAD_PRIORITY_CONVOLUTION1 FMOD_THREAD_PRIORITY_VERY_HIGH
209#define FMOD_THREAD_PRIORITY_CONVOLUTION2 FMOD_THREAD_PRIORITY_VERY_HIGH
210
211typedef unsigned int FMOD_THREAD_STACK_SIZE;
212#define FMOD_THREAD_STACK_SIZE_DEFAULT 0
213#define FMOD_THREAD_STACK_SIZE_MIXER (80 * 1024)
214#define FMOD_THREAD_STACK_SIZE_FEEDER (16 * 1024)
215#define FMOD_THREAD_STACK_SIZE_STREAM (96 * 1024)
216#define FMOD_THREAD_STACK_SIZE_FILE (64 * 1024)
217#define FMOD_THREAD_STACK_SIZE_NONBLOCKING (112 * 1024)
218#define FMOD_THREAD_STACK_SIZE_RECORD (16 * 1024)
219#define FMOD_THREAD_STACK_SIZE_GEOMETRY (48 * 1024)
220#define FMOD_THREAD_STACK_SIZE_PROFILER (128 * 1024)
221#define FMOD_THREAD_STACK_SIZE_STUDIO_UPDATE (96 * 1024)
222#define FMOD_THREAD_STACK_SIZE_STUDIO_LOAD_BANK (96 * 1024)
223#define FMOD_THREAD_STACK_SIZE_STUDIO_LOAD_SAMPLE (96 * 1024)
224#define FMOD_THREAD_STACK_SIZE_CONVOLUTION1 (16 * 1024)
225#define FMOD_THREAD_STACK_SIZE_CONVOLUTION2 (16 * 1024)
226
227typedef long long FMOD_THREAD_AFFINITY;
228/* Platform agnostic thread groupings */
229#define FMOD_THREAD_AFFINITY_GROUP_DEFAULT 0x4000000000000000
230#define FMOD_THREAD_AFFINITY_GROUP_A 0x4000000000000001
231#define FMOD_THREAD_AFFINITY_GROUP_B 0x4000000000000002
232#define FMOD_THREAD_AFFINITY_GROUP_C 0x4000000000000003
233/* Thread defaults */
234#define FMOD_THREAD_AFFINITY_MIXER FMOD_THREAD_AFFINITY_GROUP_A
235#define FMOD_THREAD_AFFINITY_FEEDER FMOD_THREAD_AFFINITY_GROUP_C
236#define FMOD_THREAD_AFFINITY_STREAM FMOD_THREAD_AFFINITY_GROUP_C
237#define FMOD_THREAD_AFFINITY_FILE FMOD_THREAD_AFFINITY_GROUP_C
238#define FMOD_THREAD_AFFINITY_NONBLOCKING FMOD_THREAD_AFFINITY_GROUP_C
239#define FMOD_THREAD_AFFINITY_RECORD FMOD_THREAD_AFFINITY_GROUP_C
240#define FMOD_THREAD_AFFINITY_GEOMETRY FMOD_THREAD_AFFINITY_GROUP_C
241#define FMOD_THREAD_AFFINITY_PROFILER FMOD_THREAD_AFFINITY_GROUP_C
242#define FMOD_THREAD_AFFINITY_STUDIO_UPDATE FMOD_THREAD_AFFINITY_GROUP_B
243#define FMOD_THREAD_AFFINITY_STUDIO_LOAD_BANK FMOD_THREAD_AFFINITY_GROUP_C
244#define FMOD_THREAD_AFFINITY_STUDIO_LOAD_SAMPLE FMOD_THREAD_AFFINITY_GROUP_C
245#define FMOD_THREAD_AFFINITY_CONVOLUTION1 FMOD_THREAD_AFFINITY_GROUP_C
246#define FMOD_THREAD_AFFINITY_CONVOLUTION2 FMOD_THREAD_AFFINITY_GROUP_C
247
248/* Core mask, valid up to 1 << 62 */
249#define FMOD_THREAD_AFFINITY_CORE_ALL 0
250#define FMOD_THREAD_AFFINITY_CORE_0 (1 << 0)
251#define FMOD_THREAD_AFFINITY_CORE_1 (1 << 1)
252#define FMOD_THREAD_AFFINITY_CORE_2 (1 << 2)
253#define FMOD_THREAD_AFFINITY_CORE_3 (1 << 3)
254#define FMOD_THREAD_AFFINITY_CORE_4 (1 << 4)
255#define FMOD_THREAD_AFFINITY_CORE_5 (1 << 5)
256#define FMOD_THREAD_AFFINITY_CORE_6 (1 << 6)
257#define FMOD_THREAD_AFFINITY_CORE_7 (1 << 7)
258#define FMOD_THREAD_AFFINITY_CORE_8 (1 << 8)
259#define FMOD_THREAD_AFFINITY_CORE_9 (1 << 9)
260#define FMOD_THREAD_AFFINITY_CORE_10 (1 << 10)
261#define FMOD_THREAD_AFFINITY_CORE_11 (1 << 11)
262#define FMOD_THREAD_AFFINITY_CORE_12 (1 << 12)
263#define FMOD_THREAD_AFFINITY_CORE_13 (1 << 13)
264#define FMOD_THREAD_AFFINITY_CORE_14 (1 << 14)
265#define FMOD_THREAD_AFFINITY_CORE_15 (1 << 15)
266
267/* Preset for FMOD_REVERB_PROPERTIES */
268#define FMOD_PRESET_OFF { 1000, 7, 11, 5000, 100, 100, 100, 250, 0, 20, 96, -80.0f }
269#define FMOD_PRESET_GENERIC { 1500, 7, 11, 5000, 83, 100, 100, 250, 0, 14500, 96, -8.0f }
270#define FMOD_PRESET_PADDEDCELL { 170, 1, 2, 5000, 10, 100, 100, 250, 0, 160, 84, -7.8f }
271#define FMOD_PRESET_ROOM { 400, 2, 3, 5000, 83, 100, 100, 250, 0, 6050, 88, -9.4f }
272#define FMOD_PRESET_BATHROOM { 1500, 7, 11, 5000, 54, 100, 60, 250, 0, 2900, 83, 0.5f }
273#define FMOD_PRESET_LIVINGROOM { 500, 3, 4, 5000, 10, 100, 100, 250, 0, 160, 58, -19.0f }
274#define FMOD_PRESET_STONEROOM { 2300, 12, 17, 5000, 64, 100, 100, 250, 0, 7800, 71, -8.5f }
275#define FMOD_PRESET_AUDITORIUM { 4300, 20, 30, 5000, 59, 100, 100, 250, 0, 5850, 64, -11.7f }
276#define FMOD_PRESET_CONCERTHALL { 3900, 20, 29, 5000, 70, 100, 100, 250, 0, 5650, 80, -9.8f }
277#define FMOD_PRESET_CAVE { 2900, 15, 22, 5000, 100, 100, 100, 250, 0, 20000, 59, -11.3f }
278#define FMOD_PRESET_ARENA { 7200, 20, 30, 5000, 33, 100, 100, 250, 0, 4500, 80, -9.6f }
279#define FMOD_PRESET_HANGAR { 10000, 20, 30, 5000, 23, 100, 100, 250, 0, 3400, 72, -7.4f }
280#define FMOD_PRESET_CARPETTEDHALLWAY { 300, 2, 30, 5000, 10, 100, 100, 250, 0, 500, 56, -24.0f }
281#define FMOD_PRESET_HALLWAY { 1500, 7, 11, 5000, 59, 100, 100, 250, 0, 7800, 87, -5.5f }
282#define FMOD_PRESET_STONECORRIDOR { 270, 13, 20, 5000, 79, 100, 100, 250, 0, 9000, 86, -6.0f }
283#define FMOD_PRESET_ALLEY { 1500, 7, 11, 5000, 86, 100, 100, 250, 0, 8300, 80, -9.8f }
284#define FMOD_PRESET_FOREST { 1500, 162, 88, 5000, 54, 79, 100, 250, 0, 760, 94, -12.3f }
285#define FMOD_PRESET_CITY { 1500, 7, 11, 5000, 67, 50, 100, 250, 0, 4050, 66, -26.0f }
286#define FMOD_PRESET_MOUNTAINS { 1500, 300, 100, 5000, 21, 27, 100, 250, 0, 1220, 82, -24.0f }
287#define FMOD_PRESET_QUARRY { 1500, 61, 25, 5000, 83, 100, 100, 250, 0, 3400, 100, -5.0f }
288#define FMOD_PRESET_PLAIN { 1500, 179, 100, 5000, 50, 21, 100, 250, 0, 1670, 65, -28.0f }
289#define FMOD_PRESET_PARKINGLOT { 1700, 8, 12, 5000, 100, 100, 100, 250, 0, 20000, 56, -19.5f }
290#define FMOD_PRESET_SEWERPIPE { 2800, 14, 21, 5000, 14, 80, 60, 250, 0, 3400, 66, 1.2f }
291#define FMOD_PRESET_UNDERWATER { 1500, 7, 11, 5000, 10, 100, 100, 250, 0, 500, 92, 7.0f }
292
293#define FMOD_MAX_CHANNEL_WIDTH 32
294#define FMOD_MAX_SYSTEMS 8
295#define FMOD_MAX_LISTENERS 8
296#define FMOD_REVERB_MAXINSTANCES 4
297#define FMOD_PORT_INDEX_NONE 0xFFFFFFFFFFFFFFFF
298
299typedef enum FMOD_THREAD_TYPE
300{
301 FMOD_THREAD_TYPE_MIXER,
302 FMOD_THREAD_TYPE_FEEDER,
303 FMOD_THREAD_TYPE_STREAM,
304 FMOD_THREAD_TYPE_FILE,
305 FMOD_THREAD_TYPE_NONBLOCKING,
306 FMOD_THREAD_TYPE_RECORD,
307 FMOD_THREAD_TYPE_GEOMETRY,
308 FMOD_THREAD_TYPE_PROFILER,
309 FMOD_THREAD_TYPE_STUDIO_UPDATE,
310 FMOD_THREAD_TYPE_STUDIO_LOAD_BANK,
311 FMOD_THREAD_TYPE_STUDIO_LOAD_SAMPLE,
312 FMOD_THREAD_TYPE_CONVOLUTION1,
313 FMOD_THREAD_TYPE_CONVOLUTION2,
314
315 FMOD_THREAD_TYPE_MAX,
316 FMOD_THREAD_TYPE_FORCEINT = 65536
317} FMOD_THREAD_TYPE;
318
319typedef enum FMOD_RESULT
320{
321 FMOD_OK,
322 FMOD_ERR_BADCOMMAND,
323 FMOD_ERR_CHANNEL_ALLOC,
324 FMOD_ERR_CHANNEL_STOLEN,
325 FMOD_ERR_DMA,
326 FMOD_ERR_DSP_CONNECTION,
327 FMOD_ERR_DSP_DONTPROCESS,
328 FMOD_ERR_DSP_FORMAT,
329 FMOD_ERR_DSP_INUSE,
330 FMOD_ERR_DSP_NOTFOUND,
331 FMOD_ERR_DSP_RESERVED,
332 FMOD_ERR_DSP_SILENCE,
333 FMOD_ERR_DSP_TYPE,
334 FMOD_ERR_FILE_BAD,
335 FMOD_ERR_FILE_COULDNOTSEEK,
336 FMOD_ERR_FILE_DISKEJECTED,
337 FMOD_ERR_FILE_EOF,
338 FMOD_ERR_FILE_ENDOFDATA,
339 FMOD_ERR_FILE_NOTFOUND,
340 FMOD_ERR_FORMAT,
341 FMOD_ERR_HEADER_MISMATCH,
342 FMOD_ERR_HTTP,
343 FMOD_ERR_HTTP_ACCESS,
344 FMOD_ERR_HTTP_PROXY_AUTH,
345 FMOD_ERR_HTTP_SERVER_ERROR,
346 FMOD_ERR_HTTP_TIMEOUT,
347 FMOD_ERR_INITIALIZATION,
348 FMOD_ERR_INITIALIZED,
349 FMOD_ERR_INTERNAL,
350 FMOD_ERR_INVALID_FLOAT,
351 FMOD_ERR_INVALID_HANDLE,
352 FMOD_ERR_INVALID_PARAM,
353 FMOD_ERR_INVALID_POSITION,
354 FMOD_ERR_INVALID_SPEAKER,
355 FMOD_ERR_INVALID_SYNCPOINT,
356 FMOD_ERR_INVALID_THREAD,
357 FMOD_ERR_INVALID_VECTOR,
358 FMOD_ERR_MAXAUDIBLE,
359 FMOD_ERR_MEMORY,
360 FMOD_ERR_MEMORY_CANTPOINT,
361 FMOD_ERR_NEEDS3D,
362 FMOD_ERR_NEEDSHARDWARE,
363 FMOD_ERR_NET_CONNECT,
364 FMOD_ERR_NET_SOCKET_ERROR,
365 FMOD_ERR_NET_URL,
366 FMOD_ERR_NET_WOULD_BLOCK,
367 FMOD_ERR_NOTREADY,
368 FMOD_ERR_OUTPUT_ALLOCATED,
369 FMOD_ERR_OUTPUT_CREATEBUFFER,
370 FMOD_ERR_OUTPUT_DRIVERCALL,
371 FMOD_ERR_OUTPUT_FORMAT,
372 FMOD_ERR_OUTPUT_INIT,
373 FMOD_ERR_OUTPUT_NODRIVERS,
374 FMOD_ERR_PLUGIN,
375 FMOD_ERR_PLUGIN_MISSING,
376 FMOD_ERR_PLUGIN_RESOURCE,
377 FMOD_ERR_PLUGIN_VERSION,
378 FMOD_ERR_RECORD,
379 FMOD_ERR_REVERB_CHANNELGROUP,
380 FMOD_ERR_REVERB_INSTANCE,
381 FMOD_ERR_SUBSOUNDS,
382 FMOD_ERR_SUBSOUND_ALLOCATED,
383 FMOD_ERR_SUBSOUND_CANTMOVE,
384 FMOD_ERR_TAGNOTFOUND,
385 FMOD_ERR_TOOMANYCHANNELS,
386 FMOD_ERR_TRUNCATED,
387 FMOD_ERR_UNIMPLEMENTED,
388 FMOD_ERR_UNINITIALIZED,
389 FMOD_ERR_UNSUPPORTED,
390 FMOD_ERR_VERSION,
391 FMOD_ERR_EVENT_ALREADY_LOADED,
392 FMOD_ERR_EVENT_LIVEUPDATE_BUSY,
393 FMOD_ERR_EVENT_LIVEUPDATE_MISMATCH,
394 FMOD_ERR_EVENT_LIVEUPDATE_TIMEOUT,
395 FMOD_ERR_EVENT_NOTFOUND,
396 FMOD_ERR_STUDIO_UNINITIALIZED,
397 FMOD_ERR_STUDIO_NOT_LOADED,
398 FMOD_ERR_INVALID_STRING,
399 FMOD_ERR_ALREADY_LOCKED,
400 FMOD_ERR_NOT_LOCKED,
401 FMOD_ERR_RECORD_DISCONNECTED,
402 FMOD_ERR_TOOMANYSAMPLES,
403
404 FMOD_RESULT_FORCEINT = 65536
405} FMOD_RESULT;
406
407typedef enum FMOD_CHANNELCONTROL_TYPE
408{
409 FMOD_CHANNELCONTROL_CHANNEL,
410 FMOD_CHANNELCONTROL_CHANNELGROUP,
411
412 FMOD_CHANNELCONTROL_MAX,
413 FMOD_CHANNELCONTROL_FORCEINT = 65536
414} FMOD_CHANNELCONTROL_TYPE;
415
416typedef enum FMOD_OUTPUTTYPE
417{
418 FMOD_OUTPUTTYPE_AUTODETECT,
419 FMOD_OUTPUTTYPE_UNKNOWN,
420 FMOD_OUTPUTTYPE_NOSOUND,
421 FMOD_OUTPUTTYPE_WAVWRITER,
422 FMOD_OUTPUTTYPE_NOSOUND_NRT,
423 FMOD_OUTPUTTYPE_WAVWRITER_NRT,
424 FMOD_OUTPUTTYPE_WASAPI,
425 FMOD_OUTPUTTYPE_ASIO,
426 FMOD_OUTPUTTYPE_PULSEAUDIO,
427 FMOD_OUTPUTTYPE_ALSA,
428 FMOD_OUTPUTTYPE_COREAUDIO,
429 FMOD_OUTPUTTYPE_AUDIOTRACK,
430 FMOD_OUTPUTTYPE_OPENSL,
431 FMOD_OUTPUTTYPE_AUDIOOUT,
432 FMOD_OUTPUTTYPE_AUDIO3D,
433 FMOD_OUTPUTTYPE_WEBAUDIO,
434 FMOD_OUTPUTTYPE_NNAUDIO,
435 FMOD_OUTPUTTYPE_WINSONIC,
436 FMOD_OUTPUTTYPE_AAUDIO,
437 FMOD_OUTPUTTYPE_AUDIOWORKLET,
438
439 FMOD_OUTPUTTYPE_MAX,
440 FMOD_OUTPUTTYPE_FORCEINT = 65536
441} FMOD_OUTPUTTYPE;
442
443typedef enum FMOD_DEBUG_MODE
444{
445 FMOD_DEBUG_MODE_TTY,
446 FMOD_DEBUG_MODE_FILE,
447 FMOD_DEBUG_MODE_CALLBACK,
448
449 FMOD_DEBUG_MODE_FORCEINT = 65536
450} FMOD_DEBUG_MODE;
451
452typedef enum FMOD_SPEAKERMODE
453{
454 FMOD_SPEAKERMODE_DEFAULT,
455 FMOD_SPEAKERMODE_RAW,
456 FMOD_SPEAKERMODE_MONO,
457 FMOD_SPEAKERMODE_STEREO,
458 FMOD_SPEAKERMODE_QUAD,
459 FMOD_SPEAKERMODE_SURROUND,
460 FMOD_SPEAKERMODE_5POINT1,
461 FMOD_SPEAKERMODE_7POINT1,
462 FMOD_SPEAKERMODE_7POINT1POINT4,
463
464 FMOD_SPEAKERMODE_MAX,
465 FMOD_SPEAKERMODE_FORCEINT = 65536
466} FMOD_SPEAKERMODE;
467
468typedef enum FMOD_SPEAKER
469{
470 FMOD_SPEAKER_NONE = -1,
471 FMOD_SPEAKER_FRONT_LEFT = 0,
472 FMOD_SPEAKER_FRONT_RIGHT,
473 FMOD_SPEAKER_FRONT_CENTER,
474 FMOD_SPEAKER_LOW_FREQUENCY,
475 FMOD_SPEAKER_SURROUND_LEFT,
476 FMOD_SPEAKER_SURROUND_RIGHT,
477 FMOD_SPEAKER_BACK_LEFT,
478 FMOD_SPEAKER_BACK_RIGHT,
479 FMOD_SPEAKER_TOP_FRONT_LEFT,
480 FMOD_SPEAKER_TOP_FRONT_RIGHT,
481 FMOD_SPEAKER_TOP_BACK_LEFT,
482 FMOD_SPEAKER_TOP_BACK_RIGHT,
483
484 FMOD_SPEAKER_MAX,
485 FMOD_SPEAKER_FORCEINT = 65536
486} FMOD_SPEAKER;
487
488typedef enum FMOD_CHANNELORDER
489{
490 FMOD_CHANNELORDER_DEFAULT,
491 FMOD_CHANNELORDER_WAVEFORMAT,
492 FMOD_CHANNELORDER_PROTOOLS,
493 FMOD_CHANNELORDER_ALLMONO,
494 FMOD_CHANNELORDER_ALLSTEREO,
495 FMOD_CHANNELORDER_ALSA,
496
497 FMOD_CHANNELORDER_MAX,
498 FMOD_CHANNELORDER_FORCEINT = 65536
499} FMOD_CHANNELORDER;
500
501typedef enum FMOD_PLUGINTYPE
502{
503 FMOD_PLUGINTYPE_OUTPUT,
504 FMOD_PLUGINTYPE_CODEC,
505 FMOD_PLUGINTYPE_DSP,
506
507 FMOD_PLUGINTYPE_MAX,
508 FMOD_PLUGINTYPE_FORCEINT = 65536
509} FMOD_PLUGINTYPE;
510
511typedef enum FMOD_SOUND_TYPE
512{
513 FMOD_SOUND_TYPE_UNKNOWN,
514 FMOD_SOUND_TYPE_AIFF,
515 FMOD_SOUND_TYPE_ASF,
516 FMOD_SOUND_TYPE_DLS,
517 FMOD_SOUND_TYPE_FLAC,
518 FMOD_SOUND_TYPE_FSB,
519 FMOD_SOUND_TYPE_IT,
520 FMOD_SOUND_TYPE_MIDI,
521 FMOD_SOUND_TYPE_MOD,
522 FMOD_SOUND_TYPE_MPEG,
523 FMOD_SOUND_TYPE_OGGVORBIS,
524 FMOD_SOUND_TYPE_PLAYLIST,
525 FMOD_SOUND_TYPE_RAW,
526 FMOD_SOUND_TYPE_S3M,
527 FMOD_SOUND_TYPE_USER,
528 FMOD_SOUND_TYPE_WAV,
529 FMOD_SOUND_TYPE_XM,
530 FMOD_SOUND_TYPE_XMA,
531 FMOD_SOUND_TYPE_AUDIOQUEUE,
532 FMOD_SOUND_TYPE_AT9,
533 FMOD_SOUND_TYPE_VORBIS,
534 FMOD_SOUND_TYPE_MEDIA_FOUNDATION,
535 FMOD_SOUND_TYPE_MEDIACODEC,
536 FMOD_SOUND_TYPE_FADPCM,
537 FMOD_SOUND_TYPE_OPUS,
538
539 FMOD_SOUND_TYPE_MAX,
540 FMOD_SOUND_TYPE_FORCEINT = 65536
541} FMOD_SOUND_TYPE;
542
543typedef enum FMOD_SOUND_FORMAT
544{
545 FMOD_SOUND_FORMAT_NONE,
546 FMOD_SOUND_FORMAT_PCM8,
547 FMOD_SOUND_FORMAT_PCM16,
548 FMOD_SOUND_FORMAT_PCM24,
549 FMOD_SOUND_FORMAT_PCM32,
550 FMOD_SOUND_FORMAT_PCMFLOAT,
551 FMOD_SOUND_FORMAT_BITSTREAM,
552
553 FMOD_SOUND_FORMAT_MAX,
554 FMOD_SOUND_FORMAT_FORCEINT = 65536
555} FMOD_SOUND_FORMAT;
556
557typedef enum FMOD_OPENSTATE
558{
559 FMOD_OPENSTATE_READY,
560 FMOD_OPENSTATE_LOADING,
561 FMOD_OPENSTATE_ERROR,
562 FMOD_OPENSTATE_CONNECTING,
563 FMOD_OPENSTATE_BUFFERING,
564 FMOD_OPENSTATE_SEEKING,
565 FMOD_OPENSTATE_PLAYING,
566 FMOD_OPENSTATE_SETPOSITION,
567
568 FMOD_OPENSTATE_MAX,
569 FMOD_OPENSTATE_FORCEINT = 65536
570} FMOD_OPENSTATE;
571
572typedef enum FMOD_SOUNDGROUP_BEHAVIOR
573{
574 FMOD_SOUNDGROUP_BEHAVIOR_FAIL,
575 FMOD_SOUNDGROUP_BEHAVIOR_MUTE,
576 FMOD_SOUNDGROUP_BEHAVIOR_STEALLOWEST,
577
578 FMOD_SOUNDGROUP_BEHAVIOR_MAX,
579 FMOD_SOUNDGROUP_BEHAVIOR_FORCEINT = 65536
580} FMOD_SOUNDGROUP_BEHAVIOR;
581
582typedef enum FMOD_CHANNELCONTROL_CALLBACK_TYPE
583{
584 FMOD_CHANNELCONTROL_CALLBACK_END,
585 FMOD_CHANNELCONTROL_CALLBACK_VIRTUALVOICE,
586 FMOD_CHANNELCONTROL_CALLBACK_SYNCPOINT,
587 FMOD_CHANNELCONTROL_CALLBACK_OCCLUSION,
588
589 FMOD_CHANNELCONTROL_CALLBACK_MAX,
590 FMOD_CHANNELCONTROL_CALLBACK_FORCEINT = 65536
591} FMOD_CHANNELCONTROL_CALLBACK_TYPE;
592
593typedef enum FMOD_CHANNELCONTROL_DSP_INDEX
594{
595 FMOD_CHANNELCONTROL_DSP_HEAD = -1,
596 FMOD_CHANNELCONTROL_DSP_FADER = -2,
597 FMOD_CHANNELCONTROL_DSP_TAIL = -3,
598
599 FMOD_CHANNELCONTROL_DSP_FORCEINT = 65536
600} FMOD_CHANNELCONTROL_DSP_INDEX;
601
602typedef enum FMOD_ERRORCALLBACK_INSTANCETYPE
603{
604 FMOD_ERRORCALLBACK_INSTANCETYPE_NONE,
605 FMOD_ERRORCALLBACK_INSTANCETYPE_SYSTEM,
606 FMOD_ERRORCALLBACK_INSTANCETYPE_CHANNEL,
607 FMOD_ERRORCALLBACK_INSTANCETYPE_CHANNELGROUP,
608 FMOD_ERRORCALLBACK_INSTANCETYPE_CHANNELCONTROL,
609 FMOD_ERRORCALLBACK_INSTANCETYPE_SOUND,
610 FMOD_ERRORCALLBACK_INSTANCETYPE_SOUNDGROUP,
611 FMOD_ERRORCALLBACK_INSTANCETYPE_DSP,
612 FMOD_ERRORCALLBACK_INSTANCETYPE_DSPCONNECTION,
613 FMOD_ERRORCALLBACK_INSTANCETYPE_GEOMETRY,
614 FMOD_ERRORCALLBACK_INSTANCETYPE_REVERB3D,
615 FMOD_ERRORCALLBACK_INSTANCETYPE_STUDIO_SYSTEM,
616 FMOD_ERRORCALLBACK_INSTANCETYPE_STUDIO_EVENTDESCRIPTION,
617 FMOD_ERRORCALLBACK_INSTANCETYPE_STUDIO_EVENTINSTANCE,
618 FMOD_ERRORCALLBACK_INSTANCETYPE_STUDIO_PARAMETERINSTANCE,
619 FMOD_ERRORCALLBACK_INSTANCETYPE_STUDIO_BUS,
620 FMOD_ERRORCALLBACK_INSTANCETYPE_STUDIO_VCA,
621 FMOD_ERRORCALLBACK_INSTANCETYPE_STUDIO_BANK,
622 FMOD_ERRORCALLBACK_INSTANCETYPE_STUDIO_COMMANDREPLAY,
623
624 FMOD_ERRORCALLBACK_INSTANCETYPE_FORCEINT = 65536
625} FMOD_ERRORCALLBACK_INSTANCETYPE;
626
627typedef enum FMOD_DSP_RESAMPLER
628{
629 FMOD_DSP_RESAMPLER_DEFAULT,
630 FMOD_DSP_RESAMPLER_NOINTERP,
631 FMOD_DSP_RESAMPLER_LINEAR,
632 FMOD_DSP_RESAMPLER_CUBIC,
633 FMOD_DSP_RESAMPLER_SPLINE,
634
635 FMOD_DSP_RESAMPLER_MAX,
636 FMOD_DSP_RESAMPLER_FORCEINT = 65536
637} FMOD_DSP_RESAMPLER;
638
639typedef enum FMOD_DSPCONNECTION_TYPE
640{
641 FMOD_DSPCONNECTION_TYPE_STANDARD,
642 FMOD_DSPCONNECTION_TYPE_SIDECHAIN,
643 FMOD_DSPCONNECTION_TYPE_SEND,
644 FMOD_DSPCONNECTION_TYPE_SEND_SIDECHAIN,
645
646 FMOD_DSPCONNECTION_TYPE_MAX,
647 FMOD_DSPCONNECTION_TYPE_FORCEINT = 65536
648} FMOD_DSPCONNECTION_TYPE;
649
650typedef enum FMOD_TAGTYPE
651{
652 FMOD_TAGTYPE_UNKNOWN,
653 FMOD_TAGTYPE_ID3V1,
654 FMOD_TAGTYPE_ID3V2,
655 FMOD_TAGTYPE_VORBISCOMMENT,
656 FMOD_TAGTYPE_SHOUTCAST,
657 FMOD_TAGTYPE_ICECAST,
658 FMOD_TAGTYPE_ASF,
659 FMOD_TAGTYPE_MIDI,
660 FMOD_TAGTYPE_PLAYLIST,
661 FMOD_TAGTYPE_FMOD,
662 FMOD_TAGTYPE_USER,
663
664 FMOD_TAGTYPE_MAX,
665 FMOD_TAGTYPE_FORCEINT = 65536
666} FMOD_TAGTYPE;
667
668typedef enum FMOD_TAGDATATYPE
669{
670 FMOD_TAGDATATYPE_BINARY,
671 FMOD_TAGDATATYPE_INT,
672 FMOD_TAGDATATYPE_FLOAT,
673 FMOD_TAGDATATYPE_STRING,
674 FMOD_TAGDATATYPE_STRING_UTF16,
675 FMOD_TAGDATATYPE_STRING_UTF16BE,
676 FMOD_TAGDATATYPE_STRING_UTF8,
677
678 FMOD_TAGDATATYPE_MAX,
679 FMOD_TAGDATATYPE_FORCEINT = 65536
680} FMOD_TAGDATATYPE;
681
682typedef enum FMOD_PORT_TYPE
683{
684 FMOD_PORT_TYPE_MUSIC,
685 FMOD_PORT_TYPE_COPYRIGHT_MUSIC,
686 FMOD_PORT_TYPE_VOICE,
687 FMOD_PORT_TYPE_CONTROLLER,
688 FMOD_PORT_TYPE_PERSONAL,
689 FMOD_PORT_TYPE_VIBRATION,
690 FMOD_PORT_TYPE_AUX,
691
692 FMOD_PORT_TYPE_MAX,
693 FMOD_PORT_TYPE_FORCEINT = 65536
694} FMOD_PORT_TYPE;
695
696/*
697 FMOD callbacks
698*/
699typedef FMOD_RESULT (F_CALL *FMOD_DEBUG_CALLBACK) (FMOD_DEBUG_FLAGS flags, const char *file, int line, const char* func, const char* message);
700typedef FMOD_RESULT (F_CALL *FMOD_SYSTEM_CALLBACK) (FMOD_SYSTEM *system, FMOD_SYSTEM_CALLBACK_TYPE type, void *commanddata1, void* commanddata2, void *userdata);
701typedef FMOD_RESULT (F_CALL *FMOD_CHANNELCONTROL_CALLBACK) (FMOD_CHANNELCONTROL *channelcontrol, FMOD_CHANNELCONTROL_TYPE controltype, FMOD_CHANNELCONTROL_CALLBACK_TYPE callbacktype, void *commanddata1, void *commanddata2);
702typedef FMOD_RESULT (F_CALL *FMOD_SOUND_NONBLOCK_CALLBACK) (FMOD_SOUND *sound, FMOD_RESULT result);
703typedef FMOD_RESULT (F_CALL *FMOD_SOUND_PCMREAD_CALLBACK) (FMOD_SOUND *sound, void *data, unsigned int datalen);
704typedef FMOD_RESULT (F_CALL *FMOD_SOUND_PCMSETPOS_CALLBACK) (FMOD_SOUND *sound, int subsound, unsigned int position, FMOD_TIMEUNIT postype);
705typedef FMOD_RESULT (F_CALL *FMOD_FILE_OPEN_CALLBACK) (const char *name, unsigned int *filesize, void **handle, void *userdata);
706typedef FMOD_RESULT (F_CALL *FMOD_FILE_CLOSE_CALLBACK) (void *handle, void *userdata);
707typedef FMOD_RESULT (F_CALL *FMOD_FILE_READ_CALLBACK) (void *handle, void *buffer, unsigned int sizebytes, unsigned int *bytesread, void *userdata);
708typedef FMOD_RESULT (F_CALL *FMOD_FILE_SEEK_CALLBACK) (void *handle, unsigned int pos, void *userdata);
709typedef FMOD_RESULT (F_CALL *FMOD_FILE_ASYNCREAD_CALLBACK) (FMOD_ASYNCREADINFO *info, void *userdata);
710typedef FMOD_RESULT (F_CALL *FMOD_FILE_ASYNCCANCEL_CALLBACK)(FMOD_ASYNCREADINFO *info, void *userdata);
711typedef void (F_CALL *FMOD_FILE_ASYNCDONE_FUNC) (FMOD_ASYNCREADINFO *info, FMOD_RESULT result);
712typedef void* (F_CALL *FMOD_MEMORY_ALLOC_CALLBACK) (unsigned int size, FMOD_MEMORY_TYPE type, const char *sourcestr);
713typedef void* (F_CALL *FMOD_MEMORY_REALLOC_CALLBACK) (void *ptr, unsigned int size, FMOD_MEMORY_TYPE type, const char *sourcestr);
714typedef void (F_CALL *FMOD_MEMORY_FREE_CALLBACK) (void *ptr, FMOD_MEMORY_TYPE type, const char *sourcestr);
715typedef float (F_CALL *FMOD_3D_ROLLOFF_CALLBACK) (FMOD_CHANNELCONTROL *channelcontrol, float distance);
716
717/*
718 FMOD structs
719*/
720struct FMOD_ASYNCREADINFO
721{
722 void *handle;
723 unsigned int offset;
724 unsigned int sizebytes;
725 int priority;
726 void *userdata;
727 void *buffer;
728 unsigned int bytesread;
729 FMOD_FILE_ASYNCDONE_FUNC done;
730};
731
732typedef struct FMOD_VECTOR
733{
734 float x;
735 float y;
736 float z;
737} FMOD_VECTOR;
738
739typedef struct FMOD_3D_ATTRIBUTES
740{
741 FMOD_VECTOR position;
742 FMOD_VECTOR velocity;
743 FMOD_VECTOR forward;
744 FMOD_VECTOR up;
745} FMOD_3D_ATTRIBUTES;
746
747typedef struct FMOD_GUID
748{
749 unsigned int Data1;
750 unsigned short Data2;
751 unsigned short Data3;
752 unsigned char Data4[8];
753} FMOD_GUID;
754
755typedef struct FMOD_PLUGINLIST
756{
757 FMOD_PLUGINTYPE type;
758 void *description;
759} FMOD_PLUGINLIST;
760
761typedef struct FMOD_ADVANCEDSETTINGS
762{
763 int cbSize;
764 int maxMPEGCodecs;
765 int maxADPCMCodecs;
766 int maxXMACodecs;
767 int maxVorbisCodecs;
768 int maxAT9Codecs;
769 int maxFADPCMCodecs;
770 int maxPCMCodecs;
771 int ASIONumChannels;
772 char **ASIOChannelList;
773 FMOD_SPEAKER *ASIOSpeakerList;
774 float vol0virtualvol;
775 unsigned int defaultDecodeBufferSize;
776 unsigned short profilePort;
777 unsigned int geometryMaxFadeTime;
778 float distanceFilterCenterFreq;
779 int reverb3Dinstance;
780 int DSPBufferPoolSize;
781 FMOD_DSP_RESAMPLER resamplerMethod;
782 unsigned int randomSeed;
783 int maxConvolutionThreads;
784 int maxOpusCodecs;
785} FMOD_ADVANCEDSETTINGS;
786
787typedef struct FMOD_TAG
788{
789 FMOD_TAGTYPE type;
790 FMOD_TAGDATATYPE datatype;
791 char *name;
792 void *data;
793 unsigned int datalen;
794 FMOD_BOOL updated;
795} FMOD_TAG;
796
797typedef struct FMOD_CREATESOUNDEXINFO
798{
799 int cbsize;
800 unsigned int length;
801 unsigned int fileoffset;
802 int numchannels;
803 int defaultfrequency;
804 FMOD_SOUND_FORMAT format;
805 unsigned int decodebuffersize;
806 int initialsubsound;
807 int numsubsounds;
808 int *inclusionlist;
809 int inclusionlistnum;
810 FMOD_SOUND_PCMREAD_CALLBACK pcmreadcallback;
811 FMOD_SOUND_PCMSETPOS_CALLBACK pcmsetposcallback;
812 FMOD_SOUND_NONBLOCK_CALLBACK nonblockcallback;
813 const char *dlsname;
814 const char *encryptionkey;
815 int maxpolyphony;
816 void *userdata;
817 FMOD_SOUND_TYPE suggestedsoundtype;
818 FMOD_FILE_OPEN_CALLBACK fileuseropen;
819 FMOD_FILE_CLOSE_CALLBACK fileuserclose;
820 FMOD_FILE_READ_CALLBACK fileuserread;
821 FMOD_FILE_SEEK_CALLBACK fileuserseek;
822 FMOD_FILE_ASYNCREAD_CALLBACK fileuserasyncread;
823 FMOD_FILE_ASYNCCANCEL_CALLBACK fileuserasynccancel;
824 void *fileuserdata;
825 int filebuffersize;
826 FMOD_CHANNELORDER channelorder;
827 FMOD_SOUNDGROUP *initialsoundgroup;
828 unsigned int initialseekposition;
829 FMOD_TIMEUNIT initialseekpostype;
830 int ignoresetfilesystem;
831 unsigned int audioqueuepolicy;
832 unsigned int minmidigranularity;
833 int nonblockthreadid;
834 FMOD_GUID *fsbguid;
835} FMOD_CREATESOUNDEXINFO;
836
837typedef struct FMOD_REVERB_PROPERTIES
838{
839 float DecayTime;
840 float EarlyDelay;
841 float LateDelay;
842 float HFReference;
843 float HFDecayRatio;
844 float Diffusion;
845 float Density;
846 float LowShelfFrequency;
847 float LowShelfGain;
848 float HighCut;
849 float EarlyLateMix;
850 float WetLevel;
851} FMOD_REVERB_PROPERTIES;
852
853typedef struct FMOD_ERRORCALLBACK_INFO
854{
855 FMOD_RESULT result;
856 FMOD_ERRORCALLBACK_INSTANCETYPE instancetype;
857 void *instance;
858 const char *functionname;
859 const char *functionparams;
860} FMOD_ERRORCALLBACK_INFO;
861
862typedef struct FMOD_CPU_USAGE
863{
864 float dsp;
865 float stream;
866 float geometry;
867 float update;
868 float convolution1;
869 float convolution2;
870} FMOD_CPU_USAGE;
871
872
873/*
874 FMOD optional headers for plugin development
875*/
876#include "fmod_codec.h"
877#include "fmod_dsp.h"
878#include "fmod_output.h"
879
880#endif