libfmod/
ffi.rs

1#![allow(non_camel_case_types)]
2#![allow(non_snake_case)]
3#![allow(unused_parens)]
4use std::os::raw::{
5    c_char, c_float, c_int, c_longlong, c_short, c_uchar, c_uint, c_ulonglong, c_ushort, c_void,
6};
7#[repr(C)]
8#[derive(Debug, Copy, Clone)]
9pub struct FMOD_STUDIO_SYSTEM {
10    _unused: [u8; 0],
11}
12#[repr(C)]
13#[derive(Debug, Copy, Clone)]
14pub struct FMOD_STUDIO_EVENTDESCRIPTION {
15    _unused: [u8; 0],
16}
17#[repr(C)]
18#[derive(Debug, Copy, Clone)]
19pub struct FMOD_STUDIO_EVENTINSTANCE {
20    _unused: [u8; 0],
21}
22#[repr(C)]
23#[derive(Debug, Copy, Clone)]
24pub struct FMOD_STUDIO_BUS {
25    _unused: [u8; 0],
26}
27#[repr(C)]
28#[derive(Debug, Copy, Clone)]
29pub struct FMOD_STUDIO_VCA {
30    _unused: [u8; 0],
31}
32#[repr(C)]
33#[derive(Debug, Copy, Clone)]
34pub struct FMOD_STUDIO_BANK {
35    _unused: [u8; 0],
36}
37#[repr(C)]
38#[derive(Debug, Copy, Clone)]
39pub struct FMOD_STUDIO_COMMANDREPLAY {
40    _unused: [u8; 0],
41}
42#[repr(C)]
43#[derive(Debug, Copy, Clone)]
44pub struct FMOD_SYSTEM {
45    _unused: [u8; 0],
46}
47#[repr(C)]
48#[derive(Debug, Copy, Clone)]
49pub struct FMOD_SOUND {
50    _unused: [u8; 0],
51}
52#[repr(C)]
53#[derive(Debug, Copy, Clone)]
54pub struct FMOD_CHANNELCONTROL {
55    _unused: [u8; 0],
56}
57#[repr(C)]
58#[derive(Debug, Copy, Clone)]
59pub struct FMOD_CHANNEL {
60    _unused: [u8; 0],
61}
62#[repr(C)]
63#[derive(Debug, Copy, Clone)]
64pub struct FMOD_CHANNELGROUP {
65    _unused: [u8; 0],
66}
67#[repr(C)]
68#[derive(Debug, Copy, Clone)]
69pub struct FMOD_SOUNDGROUP {
70    _unused: [u8; 0],
71}
72#[repr(C)]
73#[derive(Debug, Copy, Clone)]
74pub struct FMOD_REVERB3D {
75    _unused: [u8; 0],
76}
77#[repr(C)]
78#[derive(Debug, Copy, Clone)]
79pub struct FMOD_DSP {
80    _unused: [u8; 0],
81}
82#[repr(C)]
83#[derive(Debug, Copy, Clone)]
84pub struct FMOD_DSPCONNECTION {
85    _unused: [u8; 0],
86}
87#[repr(C)]
88#[derive(Debug, Copy, Clone)]
89pub struct FMOD_POLYGON {
90    _unused: [u8; 0],
91}
92#[repr(C)]
93#[derive(Debug, Copy, Clone)]
94pub struct FMOD_GEOMETRY {
95    _unused: [u8; 0],
96}
97#[repr(C)]
98#[derive(Debug, Copy, Clone)]
99pub struct FMOD_SYNCPOINT {
100    _unused: [u8; 0],
101}
102pub type FMOD_BOOL = c_int;
103pub const FMOD_STUDIO_LOAD_MEMORY_ALIGNMENT: c_uint = 32;
104pub const FMOD_VERSION: c_uint = 0x00020222;
105pub const FMOD_MAX_CHANNEL_WIDTH: c_uint = 32;
106pub const FMOD_MAX_SYSTEMS: c_uint = 8;
107pub const FMOD_MAX_LISTENERS: c_uint = 8;
108pub const FMOD_REVERB_MAXINSTANCES: c_uint = 4;
109pub const FMOD_CODEC_PLUGIN_VERSION: c_uint = 1;
110pub const FMOD_OUTPUT_PLUGIN_VERSION: c_uint = 5;
111pub const FMOD_PLUGIN_SDK_VERSION: c_uint = 110;
112pub const FMOD_DSP_GETPARAM_VALUESTR_LENGTH: c_uint = 32;
113pub const FMOD_DSP_LOUDNESS_METER_HISTOGRAM_SAMPLES: c_uint = 66;
114pub type FMOD_STUDIO_LOADING_STATE = c_int;
115pub const FMOD_STUDIO_LOADING_STATE_UNLOADING: FMOD_STUDIO_LOADING_STATE = 0;
116pub const FMOD_STUDIO_LOADING_STATE_UNLOADED: FMOD_STUDIO_LOADING_STATE = 1;
117pub const FMOD_STUDIO_LOADING_STATE_LOADING: FMOD_STUDIO_LOADING_STATE = 2;
118pub const FMOD_STUDIO_LOADING_STATE_LOADED: FMOD_STUDIO_LOADING_STATE = 3;
119pub const FMOD_STUDIO_LOADING_STATE_ERROR: FMOD_STUDIO_LOADING_STATE = 4;
120pub const FMOD_STUDIO_LOADING_STATE_FORCEINT: FMOD_STUDIO_LOADING_STATE = 65536;
121pub type FMOD_STUDIO_LOAD_MEMORY_MODE = c_int;
122pub const FMOD_STUDIO_LOAD_MEMORY: FMOD_STUDIO_LOAD_MEMORY_MODE = 0;
123pub const FMOD_STUDIO_LOAD_MEMORY_POINT: FMOD_STUDIO_LOAD_MEMORY_MODE = 1;
124pub const FMOD_STUDIO_LOAD_MEMORY_FORCEINT: FMOD_STUDIO_LOAD_MEMORY_MODE = 65536;
125pub type FMOD_STUDIO_PARAMETER_TYPE = c_int;
126pub const FMOD_STUDIO_PARAMETER_GAME_CONTROLLED: FMOD_STUDIO_PARAMETER_TYPE = 0;
127pub const FMOD_STUDIO_PARAMETER_AUTOMATIC_DISTANCE: FMOD_STUDIO_PARAMETER_TYPE = 1;
128pub const FMOD_STUDIO_PARAMETER_AUTOMATIC_EVENT_CONE_ANGLE: FMOD_STUDIO_PARAMETER_TYPE = 2;
129pub const FMOD_STUDIO_PARAMETER_AUTOMATIC_EVENT_ORIENTATION: FMOD_STUDIO_PARAMETER_TYPE = 3;
130pub const FMOD_STUDIO_PARAMETER_AUTOMATIC_DIRECTION: FMOD_STUDIO_PARAMETER_TYPE = 4;
131pub const FMOD_STUDIO_PARAMETER_AUTOMATIC_ELEVATION: FMOD_STUDIO_PARAMETER_TYPE = 5;
132pub const FMOD_STUDIO_PARAMETER_AUTOMATIC_LISTENER_ORIENTATION: FMOD_STUDIO_PARAMETER_TYPE = 6;
133pub const FMOD_STUDIO_PARAMETER_AUTOMATIC_SPEED: FMOD_STUDIO_PARAMETER_TYPE = 7;
134pub const FMOD_STUDIO_PARAMETER_AUTOMATIC_SPEED_ABSOLUTE: FMOD_STUDIO_PARAMETER_TYPE = 8;
135pub const FMOD_STUDIO_PARAMETER_AUTOMATIC_DISTANCE_NORMALIZED: FMOD_STUDIO_PARAMETER_TYPE = 9;
136pub const FMOD_STUDIO_PARAMETER_MAX: FMOD_STUDIO_PARAMETER_TYPE = 10;
137pub const FMOD_STUDIO_PARAMETER_FORCEINT: FMOD_STUDIO_PARAMETER_TYPE = 65536;
138pub type FMOD_STUDIO_USER_PROPERTY_TYPE = c_int;
139pub const FMOD_STUDIO_USER_PROPERTY_TYPE_INTEGER: FMOD_STUDIO_USER_PROPERTY_TYPE = 0;
140pub const FMOD_STUDIO_USER_PROPERTY_TYPE_BOOLEAN: FMOD_STUDIO_USER_PROPERTY_TYPE = 1;
141pub const FMOD_STUDIO_USER_PROPERTY_TYPE_FLOAT: FMOD_STUDIO_USER_PROPERTY_TYPE = 2;
142pub const FMOD_STUDIO_USER_PROPERTY_TYPE_STRING: FMOD_STUDIO_USER_PROPERTY_TYPE = 3;
143pub const FMOD_STUDIO_USER_PROPERTY_TYPE_FORCEINT: FMOD_STUDIO_USER_PROPERTY_TYPE = 65536;
144pub type FMOD_STUDIO_EVENT_PROPERTY = c_int;
145pub const FMOD_STUDIO_EVENT_PROPERTY_CHANNELPRIORITY: FMOD_STUDIO_EVENT_PROPERTY = 0;
146pub const FMOD_STUDIO_EVENT_PROPERTY_SCHEDULE_DELAY: FMOD_STUDIO_EVENT_PROPERTY = 1;
147pub const FMOD_STUDIO_EVENT_PROPERTY_SCHEDULE_LOOKAHEAD: FMOD_STUDIO_EVENT_PROPERTY = 2;
148pub const FMOD_STUDIO_EVENT_PROPERTY_MINIMUM_DISTANCE: FMOD_STUDIO_EVENT_PROPERTY = 3;
149pub const FMOD_STUDIO_EVENT_PROPERTY_MAXIMUM_DISTANCE: FMOD_STUDIO_EVENT_PROPERTY = 4;
150pub const FMOD_STUDIO_EVENT_PROPERTY_COOLDOWN: FMOD_STUDIO_EVENT_PROPERTY = 5;
151pub const FMOD_STUDIO_EVENT_PROPERTY_MAX: FMOD_STUDIO_EVENT_PROPERTY = 6;
152pub const FMOD_STUDIO_EVENT_PROPERTY_FORCEINT: FMOD_STUDIO_EVENT_PROPERTY = 65536;
153pub type FMOD_STUDIO_PLAYBACK_STATE = c_int;
154pub const FMOD_STUDIO_PLAYBACK_PLAYING: FMOD_STUDIO_PLAYBACK_STATE = 0;
155pub const FMOD_STUDIO_PLAYBACK_SUSTAINING: FMOD_STUDIO_PLAYBACK_STATE = 1;
156pub const FMOD_STUDIO_PLAYBACK_STOPPED: FMOD_STUDIO_PLAYBACK_STATE = 2;
157pub const FMOD_STUDIO_PLAYBACK_STARTING: FMOD_STUDIO_PLAYBACK_STATE = 3;
158pub const FMOD_STUDIO_PLAYBACK_STOPPING: FMOD_STUDIO_PLAYBACK_STATE = 4;
159pub const FMOD_STUDIO_PLAYBACK_FORCEINT: FMOD_STUDIO_PLAYBACK_STATE = 65536;
160pub type FMOD_STUDIO_STOP_MODE = c_int;
161pub const FMOD_STUDIO_STOP_ALLOWFADEOUT: FMOD_STUDIO_STOP_MODE = 0;
162pub const FMOD_STUDIO_STOP_IMMEDIATE: FMOD_STUDIO_STOP_MODE = 1;
163pub const FMOD_STUDIO_STOP_FORCEINT: FMOD_STUDIO_STOP_MODE = 65536;
164pub type FMOD_STUDIO_INSTANCETYPE = c_int;
165pub const FMOD_STUDIO_INSTANCETYPE_NONE: FMOD_STUDIO_INSTANCETYPE = 0;
166pub const FMOD_STUDIO_INSTANCETYPE_SYSTEM: FMOD_STUDIO_INSTANCETYPE = 1;
167pub const FMOD_STUDIO_INSTANCETYPE_EVENTDESCRIPTION: FMOD_STUDIO_INSTANCETYPE = 2;
168pub const FMOD_STUDIO_INSTANCETYPE_EVENTINSTANCE: FMOD_STUDIO_INSTANCETYPE = 3;
169pub const FMOD_STUDIO_INSTANCETYPE_PARAMETERINSTANCE: FMOD_STUDIO_INSTANCETYPE = 4;
170pub const FMOD_STUDIO_INSTANCETYPE_BUS: FMOD_STUDIO_INSTANCETYPE = 5;
171pub const FMOD_STUDIO_INSTANCETYPE_VCA: FMOD_STUDIO_INSTANCETYPE = 6;
172pub const FMOD_STUDIO_INSTANCETYPE_BANK: FMOD_STUDIO_INSTANCETYPE = 7;
173pub const FMOD_STUDIO_INSTANCETYPE_COMMANDREPLAY: FMOD_STUDIO_INSTANCETYPE = 8;
174pub const FMOD_STUDIO_INSTANCETYPE_FORCEINT: FMOD_STUDIO_INSTANCETYPE = 65536;
175pub type FMOD_THREAD_TYPE = c_int;
176pub const FMOD_THREAD_TYPE_MIXER: FMOD_THREAD_TYPE = 0;
177pub const FMOD_THREAD_TYPE_FEEDER: FMOD_THREAD_TYPE = 1;
178pub const FMOD_THREAD_TYPE_STREAM: FMOD_THREAD_TYPE = 2;
179pub const FMOD_THREAD_TYPE_FILE: FMOD_THREAD_TYPE = 3;
180pub const FMOD_THREAD_TYPE_NONBLOCKING: FMOD_THREAD_TYPE = 4;
181pub const FMOD_THREAD_TYPE_RECORD: FMOD_THREAD_TYPE = 5;
182pub const FMOD_THREAD_TYPE_GEOMETRY: FMOD_THREAD_TYPE = 6;
183pub const FMOD_THREAD_TYPE_PROFILER: FMOD_THREAD_TYPE = 7;
184pub const FMOD_THREAD_TYPE_STUDIO_UPDATE: FMOD_THREAD_TYPE = 8;
185pub const FMOD_THREAD_TYPE_STUDIO_LOAD_BANK: FMOD_THREAD_TYPE = 9;
186pub const FMOD_THREAD_TYPE_STUDIO_LOAD_SAMPLE: FMOD_THREAD_TYPE = 10;
187pub const FMOD_THREAD_TYPE_CONVOLUTION1: FMOD_THREAD_TYPE = 11;
188pub const FMOD_THREAD_TYPE_CONVOLUTION2: FMOD_THREAD_TYPE = 12;
189pub const FMOD_THREAD_TYPE_MAX: FMOD_THREAD_TYPE = 13;
190pub const FMOD_THREAD_TYPE_FORCEINT: FMOD_THREAD_TYPE = 65536;
191pub type FMOD_RESULT = c_int;
192pub const FMOD_OK: FMOD_RESULT = 0;
193pub const FMOD_ERR_BADCOMMAND: FMOD_RESULT = 1;
194pub const FMOD_ERR_CHANNEL_ALLOC: FMOD_RESULT = 2;
195pub const FMOD_ERR_CHANNEL_STOLEN: FMOD_RESULT = 3;
196pub const FMOD_ERR_DMA: FMOD_RESULT = 4;
197pub const FMOD_ERR_DSP_CONNECTION: FMOD_RESULT = 5;
198pub const FMOD_ERR_DSP_DONTPROCESS: FMOD_RESULT = 6;
199pub const FMOD_ERR_DSP_FORMAT: FMOD_RESULT = 7;
200pub const FMOD_ERR_DSP_INUSE: FMOD_RESULT = 8;
201pub const FMOD_ERR_DSP_NOTFOUND: FMOD_RESULT = 9;
202pub const FMOD_ERR_DSP_RESERVED: FMOD_RESULT = 10;
203pub const FMOD_ERR_DSP_SILENCE: FMOD_RESULT = 11;
204pub const FMOD_ERR_DSP_TYPE: FMOD_RESULT = 12;
205pub const FMOD_ERR_FILE_BAD: FMOD_RESULT = 13;
206pub const FMOD_ERR_FILE_COULDNOTSEEK: FMOD_RESULT = 14;
207pub const FMOD_ERR_FILE_DISKEJECTED: FMOD_RESULT = 15;
208pub const FMOD_ERR_FILE_EOF: FMOD_RESULT = 16;
209pub const FMOD_ERR_FILE_ENDOFDATA: FMOD_RESULT = 17;
210pub const FMOD_ERR_FILE_NOTFOUND: FMOD_RESULT = 18;
211pub const FMOD_ERR_FORMAT: FMOD_RESULT = 19;
212pub const FMOD_ERR_HEADER_MISMATCH: FMOD_RESULT = 20;
213pub const FMOD_ERR_HTTP: FMOD_RESULT = 21;
214pub const FMOD_ERR_HTTP_ACCESS: FMOD_RESULT = 22;
215pub const FMOD_ERR_HTTP_PROXY_AUTH: FMOD_RESULT = 23;
216pub const FMOD_ERR_HTTP_SERVER_ERROR: FMOD_RESULT = 24;
217pub const FMOD_ERR_HTTP_TIMEOUT: FMOD_RESULT = 25;
218pub const FMOD_ERR_INITIALIZATION: FMOD_RESULT = 26;
219pub const FMOD_ERR_INITIALIZED: FMOD_RESULT = 27;
220pub const FMOD_ERR_INTERNAL: FMOD_RESULT = 28;
221pub const FMOD_ERR_INVALID_FLOAT: FMOD_RESULT = 29;
222pub const FMOD_ERR_INVALID_HANDLE: FMOD_RESULT = 30;
223pub const FMOD_ERR_INVALID_PARAM: FMOD_RESULT = 31;
224pub const FMOD_ERR_INVALID_POSITION: FMOD_RESULT = 32;
225pub const FMOD_ERR_INVALID_SPEAKER: FMOD_RESULT = 33;
226pub const FMOD_ERR_INVALID_SYNCPOINT: FMOD_RESULT = 34;
227pub const FMOD_ERR_INVALID_THREAD: FMOD_RESULT = 35;
228pub const FMOD_ERR_INVALID_VECTOR: FMOD_RESULT = 36;
229pub const FMOD_ERR_MAXAUDIBLE: FMOD_RESULT = 37;
230pub const FMOD_ERR_MEMORY: FMOD_RESULT = 38;
231pub const FMOD_ERR_MEMORY_CANTPOINT: FMOD_RESULT = 39;
232pub const FMOD_ERR_NEEDS3D: FMOD_RESULT = 40;
233pub const FMOD_ERR_NEEDSHARDWARE: FMOD_RESULT = 41;
234pub const FMOD_ERR_NET_CONNECT: FMOD_RESULT = 42;
235pub const FMOD_ERR_NET_SOCKET_ERROR: FMOD_RESULT = 43;
236pub const FMOD_ERR_NET_URL: FMOD_RESULT = 44;
237pub const FMOD_ERR_NET_WOULD_BLOCK: FMOD_RESULT = 45;
238pub const FMOD_ERR_NOTREADY: FMOD_RESULT = 46;
239pub const FMOD_ERR_OUTPUT_ALLOCATED: FMOD_RESULT = 47;
240pub const FMOD_ERR_OUTPUT_CREATEBUFFER: FMOD_RESULT = 48;
241pub const FMOD_ERR_OUTPUT_DRIVERCALL: FMOD_RESULT = 49;
242pub const FMOD_ERR_OUTPUT_FORMAT: FMOD_RESULT = 50;
243pub const FMOD_ERR_OUTPUT_INIT: FMOD_RESULT = 51;
244pub const FMOD_ERR_OUTPUT_NODRIVERS: FMOD_RESULT = 52;
245pub const FMOD_ERR_PLUGIN: FMOD_RESULT = 53;
246pub const FMOD_ERR_PLUGIN_MISSING: FMOD_RESULT = 54;
247pub const FMOD_ERR_PLUGIN_RESOURCE: FMOD_RESULT = 55;
248pub const FMOD_ERR_PLUGIN_VERSION: FMOD_RESULT = 56;
249pub const FMOD_ERR_RECORD: FMOD_RESULT = 57;
250pub const FMOD_ERR_REVERB_CHANNELGROUP: FMOD_RESULT = 58;
251pub const FMOD_ERR_REVERB_INSTANCE: FMOD_RESULT = 59;
252pub const FMOD_ERR_SUBSOUNDS: FMOD_RESULT = 60;
253pub const FMOD_ERR_SUBSOUND_ALLOCATED: FMOD_RESULT = 61;
254pub const FMOD_ERR_SUBSOUND_CANTMOVE: FMOD_RESULT = 62;
255pub const FMOD_ERR_TAGNOTFOUND: FMOD_RESULT = 63;
256pub const FMOD_ERR_TOOMANYCHANNELS: FMOD_RESULT = 64;
257pub const FMOD_ERR_TRUNCATED: FMOD_RESULT = 65;
258pub const FMOD_ERR_UNIMPLEMENTED: FMOD_RESULT = 66;
259pub const FMOD_ERR_UNINITIALIZED: FMOD_RESULT = 67;
260pub const FMOD_ERR_UNSUPPORTED: FMOD_RESULT = 68;
261pub const FMOD_ERR_VERSION: FMOD_RESULT = 69;
262pub const FMOD_ERR_EVENT_ALREADY_LOADED: FMOD_RESULT = 70;
263pub const FMOD_ERR_EVENT_LIVEUPDATE_BUSY: FMOD_RESULT = 71;
264pub const FMOD_ERR_EVENT_LIVEUPDATE_MISMATCH: FMOD_RESULT = 72;
265pub const FMOD_ERR_EVENT_LIVEUPDATE_TIMEOUT: FMOD_RESULT = 73;
266pub const FMOD_ERR_EVENT_NOTFOUND: FMOD_RESULT = 74;
267pub const FMOD_ERR_STUDIO_UNINITIALIZED: FMOD_RESULT = 75;
268pub const FMOD_ERR_STUDIO_NOT_LOADED: FMOD_RESULT = 76;
269pub const FMOD_ERR_INVALID_STRING: FMOD_RESULT = 77;
270pub const FMOD_ERR_ALREADY_LOCKED: FMOD_RESULT = 78;
271pub const FMOD_ERR_NOT_LOCKED: FMOD_RESULT = 79;
272pub const FMOD_ERR_RECORD_DISCONNECTED: FMOD_RESULT = 80;
273pub const FMOD_ERR_TOOMANYSAMPLES: FMOD_RESULT = 81;
274pub const FMOD_RESULT_FORCEINT: FMOD_RESULT = 65536;
275pub type FMOD_CHANNELCONTROL_TYPE = c_int;
276pub const FMOD_CHANNELCONTROL_CHANNEL: FMOD_CHANNELCONTROL_TYPE = 0;
277pub const FMOD_CHANNELCONTROL_CHANNELGROUP: FMOD_CHANNELCONTROL_TYPE = 1;
278pub const FMOD_CHANNELCONTROL_MAX: FMOD_CHANNELCONTROL_TYPE = 2;
279pub const FMOD_CHANNELCONTROL_FORCEINT: FMOD_CHANNELCONTROL_TYPE = 65536;
280pub type FMOD_OUTPUTTYPE = c_int;
281pub const FMOD_OUTPUTTYPE_AUTODETECT: FMOD_OUTPUTTYPE = 0;
282pub const FMOD_OUTPUTTYPE_UNKNOWN: FMOD_OUTPUTTYPE = 1;
283pub const FMOD_OUTPUTTYPE_NOSOUND: FMOD_OUTPUTTYPE = 2;
284pub const FMOD_OUTPUTTYPE_WAVWRITER: FMOD_OUTPUTTYPE = 3;
285pub const FMOD_OUTPUTTYPE_NOSOUND_NRT: FMOD_OUTPUTTYPE = 4;
286pub const FMOD_OUTPUTTYPE_WAVWRITER_NRT: FMOD_OUTPUTTYPE = 5;
287pub const FMOD_OUTPUTTYPE_WASAPI: FMOD_OUTPUTTYPE = 6;
288pub const FMOD_OUTPUTTYPE_ASIO: FMOD_OUTPUTTYPE = 7;
289pub const FMOD_OUTPUTTYPE_PULSEAUDIO: FMOD_OUTPUTTYPE = 8;
290pub const FMOD_OUTPUTTYPE_ALSA: FMOD_OUTPUTTYPE = 9;
291pub const FMOD_OUTPUTTYPE_COREAUDIO: FMOD_OUTPUTTYPE = 10;
292pub const FMOD_OUTPUTTYPE_AUDIOTRACK: FMOD_OUTPUTTYPE = 11;
293pub const FMOD_OUTPUTTYPE_OPENSL: FMOD_OUTPUTTYPE = 12;
294pub const FMOD_OUTPUTTYPE_AUDIOOUT: FMOD_OUTPUTTYPE = 13;
295pub const FMOD_OUTPUTTYPE_AUDIO3D: FMOD_OUTPUTTYPE = 14;
296pub const FMOD_OUTPUTTYPE_WEBAUDIO: FMOD_OUTPUTTYPE = 15;
297pub const FMOD_OUTPUTTYPE_NNAUDIO: FMOD_OUTPUTTYPE = 16;
298pub const FMOD_OUTPUTTYPE_WINSONIC: FMOD_OUTPUTTYPE = 17;
299pub const FMOD_OUTPUTTYPE_AAUDIO: FMOD_OUTPUTTYPE = 18;
300pub const FMOD_OUTPUTTYPE_AUDIOWORKLET: FMOD_OUTPUTTYPE = 19;
301pub const FMOD_OUTPUTTYPE_PHASE: FMOD_OUTPUTTYPE = 20;
302pub const FMOD_OUTPUTTYPE_OHAUDIO: FMOD_OUTPUTTYPE = 21;
303pub const FMOD_OUTPUTTYPE_MAX: FMOD_OUTPUTTYPE = 22;
304pub const FMOD_OUTPUTTYPE_FORCEINT: FMOD_OUTPUTTYPE = 65536;
305pub type FMOD_DEBUG_MODE = c_int;
306pub const FMOD_DEBUG_MODE_TTY: FMOD_DEBUG_MODE = 0;
307pub const FMOD_DEBUG_MODE_FILE: FMOD_DEBUG_MODE = 1;
308pub const FMOD_DEBUG_MODE_CALLBACK: FMOD_DEBUG_MODE = 2;
309pub const FMOD_DEBUG_MODE_FORCEINT: FMOD_DEBUG_MODE = 65536;
310pub type FMOD_SPEAKERMODE = c_int;
311pub const FMOD_SPEAKERMODE_DEFAULT: FMOD_SPEAKERMODE = 0;
312pub const FMOD_SPEAKERMODE_RAW: FMOD_SPEAKERMODE = 1;
313pub const FMOD_SPEAKERMODE_MONO: FMOD_SPEAKERMODE = 2;
314pub const FMOD_SPEAKERMODE_STEREO: FMOD_SPEAKERMODE = 3;
315pub const FMOD_SPEAKERMODE_QUAD: FMOD_SPEAKERMODE = 4;
316pub const FMOD_SPEAKERMODE_SURROUND: FMOD_SPEAKERMODE = 5;
317pub const FMOD_SPEAKERMODE_5POINT1: FMOD_SPEAKERMODE = 6;
318pub const FMOD_SPEAKERMODE_7POINT1: FMOD_SPEAKERMODE = 7;
319pub const FMOD_SPEAKERMODE_7POINT1POINT4: FMOD_SPEAKERMODE = 8;
320pub const FMOD_SPEAKERMODE_MAX: FMOD_SPEAKERMODE = 9;
321pub const FMOD_SPEAKERMODE_FORCEINT: FMOD_SPEAKERMODE = 65536;
322pub type FMOD_SPEAKER = c_int;
323pub const FMOD_SPEAKER_NONE: FMOD_SPEAKER = -1;
324pub const FMOD_SPEAKER_FRONT_LEFT: FMOD_SPEAKER = 0;
325pub const FMOD_SPEAKER_FRONT_RIGHT: FMOD_SPEAKER = 1;
326pub const FMOD_SPEAKER_FRONT_CENTER: FMOD_SPEAKER = 2;
327pub const FMOD_SPEAKER_LOW_FREQUENCY: FMOD_SPEAKER = 3;
328pub const FMOD_SPEAKER_SURROUND_LEFT: FMOD_SPEAKER = 4;
329pub const FMOD_SPEAKER_SURROUND_RIGHT: FMOD_SPEAKER = 5;
330pub const FMOD_SPEAKER_BACK_LEFT: FMOD_SPEAKER = 6;
331pub const FMOD_SPEAKER_BACK_RIGHT: FMOD_SPEAKER = 7;
332pub const FMOD_SPEAKER_TOP_FRONT_LEFT: FMOD_SPEAKER = 8;
333pub const FMOD_SPEAKER_TOP_FRONT_RIGHT: FMOD_SPEAKER = 9;
334pub const FMOD_SPEAKER_TOP_BACK_LEFT: FMOD_SPEAKER = 10;
335pub const FMOD_SPEAKER_TOP_BACK_RIGHT: FMOD_SPEAKER = 11;
336pub const FMOD_SPEAKER_MAX: FMOD_SPEAKER = 12;
337pub const FMOD_SPEAKER_FORCEINT: FMOD_SPEAKER = 65536;
338pub type FMOD_CHANNELORDER = c_int;
339pub const FMOD_CHANNELORDER_DEFAULT: FMOD_CHANNELORDER = 0;
340pub const FMOD_CHANNELORDER_WAVEFORMAT: FMOD_CHANNELORDER = 1;
341pub const FMOD_CHANNELORDER_PROTOOLS: FMOD_CHANNELORDER = 2;
342pub const FMOD_CHANNELORDER_ALLMONO: FMOD_CHANNELORDER = 3;
343pub const FMOD_CHANNELORDER_ALLSTEREO: FMOD_CHANNELORDER = 4;
344pub const FMOD_CHANNELORDER_ALSA: FMOD_CHANNELORDER = 5;
345pub const FMOD_CHANNELORDER_MAX: FMOD_CHANNELORDER = 6;
346pub const FMOD_CHANNELORDER_FORCEINT: FMOD_CHANNELORDER = 65536;
347pub type FMOD_PLUGINTYPE = c_int;
348pub const FMOD_PLUGINTYPE_OUTPUT: FMOD_PLUGINTYPE = 0;
349pub const FMOD_PLUGINTYPE_CODEC: FMOD_PLUGINTYPE = 1;
350pub const FMOD_PLUGINTYPE_DSP: FMOD_PLUGINTYPE = 2;
351pub const FMOD_PLUGINTYPE_MAX: FMOD_PLUGINTYPE = 3;
352pub const FMOD_PLUGINTYPE_FORCEINT: FMOD_PLUGINTYPE = 65536;
353pub type FMOD_SOUND_TYPE = c_int;
354pub const FMOD_SOUND_TYPE_UNKNOWN: FMOD_SOUND_TYPE = 0;
355pub const FMOD_SOUND_TYPE_AIFF: FMOD_SOUND_TYPE = 1;
356pub const FMOD_SOUND_TYPE_ASF: FMOD_SOUND_TYPE = 2;
357pub const FMOD_SOUND_TYPE_DLS: FMOD_SOUND_TYPE = 3;
358pub const FMOD_SOUND_TYPE_FLAC: FMOD_SOUND_TYPE = 4;
359pub const FMOD_SOUND_TYPE_FSB: FMOD_SOUND_TYPE = 5;
360pub const FMOD_SOUND_TYPE_IT: FMOD_SOUND_TYPE = 6;
361pub const FMOD_SOUND_TYPE_MIDI: FMOD_SOUND_TYPE = 7;
362pub const FMOD_SOUND_TYPE_MOD: FMOD_SOUND_TYPE = 8;
363pub const FMOD_SOUND_TYPE_MPEG: FMOD_SOUND_TYPE = 9;
364pub const FMOD_SOUND_TYPE_OGGVORBIS: FMOD_SOUND_TYPE = 10;
365pub const FMOD_SOUND_TYPE_PLAYLIST: FMOD_SOUND_TYPE = 11;
366pub const FMOD_SOUND_TYPE_RAW: FMOD_SOUND_TYPE = 12;
367pub const FMOD_SOUND_TYPE_S3M: FMOD_SOUND_TYPE = 13;
368pub const FMOD_SOUND_TYPE_USER: FMOD_SOUND_TYPE = 14;
369pub const FMOD_SOUND_TYPE_WAV: FMOD_SOUND_TYPE = 15;
370pub const FMOD_SOUND_TYPE_XM: FMOD_SOUND_TYPE = 16;
371pub const FMOD_SOUND_TYPE_XMA: FMOD_SOUND_TYPE = 17;
372pub const FMOD_SOUND_TYPE_AUDIOQUEUE: FMOD_SOUND_TYPE = 18;
373pub const FMOD_SOUND_TYPE_AT9: FMOD_SOUND_TYPE = 19;
374pub const FMOD_SOUND_TYPE_VORBIS: FMOD_SOUND_TYPE = 20;
375pub const FMOD_SOUND_TYPE_MEDIA_FOUNDATION: FMOD_SOUND_TYPE = 21;
376pub const FMOD_SOUND_TYPE_MEDIACODEC: FMOD_SOUND_TYPE = 22;
377pub const FMOD_SOUND_TYPE_FADPCM: FMOD_SOUND_TYPE = 23;
378pub const FMOD_SOUND_TYPE_OPUS: FMOD_SOUND_TYPE = 24;
379pub const FMOD_SOUND_TYPE_MAX: FMOD_SOUND_TYPE = 25;
380pub const FMOD_SOUND_TYPE_FORCEINT: FMOD_SOUND_TYPE = 65536;
381pub type FMOD_SOUND_FORMAT = c_int;
382pub const FMOD_SOUND_FORMAT_NONE: FMOD_SOUND_FORMAT = 0;
383pub const FMOD_SOUND_FORMAT_PCM8: FMOD_SOUND_FORMAT = 1;
384pub const FMOD_SOUND_FORMAT_PCM16: FMOD_SOUND_FORMAT = 2;
385pub const FMOD_SOUND_FORMAT_PCM24: FMOD_SOUND_FORMAT = 3;
386pub const FMOD_SOUND_FORMAT_PCM32: FMOD_SOUND_FORMAT = 4;
387pub const FMOD_SOUND_FORMAT_PCMFLOAT: FMOD_SOUND_FORMAT = 5;
388pub const FMOD_SOUND_FORMAT_BITSTREAM: FMOD_SOUND_FORMAT = 6;
389pub const FMOD_SOUND_FORMAT_MAX: FMOD_SOUND_FORMAT = 7;
390pub const FMOD_SOUND_FORMAT_FORCEINT: FMOD_SOUND_FORMAT = 65536;
391pub type FMOD_OPENSTATE = c_int;
392pub const FMOD_OPENSTATE_READY: FMOD_OPENSTATE = 0;
393pub const FMOD_OPENSTATE_LOADING: FMOD_OPENSTATE = 1;
394pub const FMOD_OPENSTATE_ERROR: FMOD_OPENSTATE = 2;
395pub const FMOD_OPENSTATE_CONNECTING: FMOD_OPENSTATE = 3;
396pub const FMOD_OPENSTATE_BUFFERING: FMOD_OPENSTATE = 4;
397pub const FMOD_OPENSTATE_SEEKING: FMOD_OPENSTATE = 5;
398pub const FMOD_OPENSTATE_PLAYING: FMOD_OPENSTATE = 6;
399pub const FMOD_OPENSTATE_SETPOSITION: FMOD_OPENSTATE = 7;
400pub const FMOD_OPENSTATE_MAX: FMOD_OPENSTATE = 8;
401pub const FMOD_OPENSTATE_FORCEINT: FMOD_OPENSTATE = 65536;
402pub type FMOD_SOUNDGROUP_BEHAVIOR = c_int;
403pub const FMOD_SOUNDGROUP_BEHAVIOR_FAIL: FMOD_SOUNDGROUP_BEHAVIOR = 0;
404pub const FMOD_SOUNDGROUP_BEHAVIOR_MUTE: FMOD_SOUNDGROUP_BEHAVIOR = 1;
405pub const FMOD_SOUNDGROUP_BEHAVIOR_STEALLOWEST: FMOD_SOUNDGROUP_BEHAVIOR = 2;
406pub const FMOD_SOUNDGROUP_BEHAVIOR_MAX: FMOD_SOUNDGROUP_BEHAVIOR = 3;
407pub const FMOD_SOUNDGROUP_BEHAVIOR_FORCEINT: FMOD_SOUNDGROUP_BEHAVIOR = 65536;
408pub type FMOD_CHANNELCONTROL_CALLBACK_TYPE = c_int;
409pub const FMOD_CHANNELCONTROL_CALLBACK_END: FMOD_CHANNELCONTROL_CALLBACK_TYPE = 0;
410pub const FMOD_CHANNELCONTROL_CALLBACK_VIRTUALVOICE: FMOD_CHANNELCONTROL_CALLBACK_TYPE = 1;
411pub const FMOD_CHANNELCONTROL_CALLBACK_SYNCPOINT: FMOD_CHANNELCONTROL_CALLBACK_TYPE = 2;
412pub const FMOD_CHANNELCONTROL_CALLBACK_OCCLUSION: FMOD_CHANNELCONTROL_CALLBACK_TYPE = 3;
413pub const FMOD_CHANNELCONTROL_CALLBACK_MAX: FMOD_CHANNELCONTROL_CALLBACK_TYPE = 4;
414pub const FMOD_CHANNELCONTROL_CALLBACK_FORCEINT: FMOD_CHANNELCONTROL_CALLBACK_TYPE = 65536;
415pub type FMOD_CHANNELCONTROL_DSP_INDEX = c_int;
416pub const FMOD_CHANNELCONTROL_DSP_HEAD: FMOD_CHANNELCONTROL_DSP_INDEX = -1;
417pub const FMOD_CHANNELCONTROL_DSP_FADER: FMOD_CHANNELCONTROL_DSP_INDEX = -2;
418pub const FMOD_CHANNELCONTROL_DSP_TAIL: FMOD_CHANNELCONTROL_DSP_INDEX = -3;
419pub const FMOD_CHANNELCONTROL_DSP_FORCEINT: FMOD_CHANNELCONTROL_DSP_INDEX = 65536;
420pub type FMOD_ERRORCALLBACK_INSTANCETYPE = c_int;
421pub const FMOD_ERRORCALLBACK_INSTANCETYPE_NONE: FMOD_ERRORCALLBACK_INSTANCETYPE = 0;
422pub const FMOD_ERRORCALLBACK_INSTANCETYPE_SYSTEM: FMOD_ERRORCALLBACK_INSTANCETYPE = 1;
423pub const FMOD_ERRORCALLBACK_INSTANCETYPE_CHANNEL: FMOD_ERRORCALLBACK_INSTANCETYPE = 2;
424pub const FMOD_ERRORCALLBACK_INSTANCETYPE_CHANNELGROUP: FMOD_ERRORCALLBACK_INSTANCETYPE = 3;
425pub const FMOD_ERRORCALLBACK_INSTANCETYPE_CHANNELCONTROL: FMOD_ERRORCALLBACK_INSTANCETYPE = 4;
426pub const FMOD_ERRORCALLBACK_INSTANCETYPE_SOUND: FMOD_ERRORCALLBACK_INSTANCETYPE = 5;
427pub const FMOD_ERRORCALLBACK_INSTANCETYPE_SOUNDGROUP: FMOD_ERRORCALLBACK_INSTANCETYPE = 6;
428pub const FMOD_ERRORCALLBACK_INSTANCETYPE_DSP: FMOD_ERRORCALLBACK_INSTANCETYPE = 7;
429pub const FMOD_ERRORCALLBACK_INSTANCETYPE_DSPCONNECTION: FMOD_ERRORCALLBACK_INSTANCETYPE = 8;
430pub const FMOD_ERRORCALLBACK_INSTANCETYPE_GEOMETRY: FMOD_ERRORCALLBACK_INSTANCETYPE = 9;
431pub const FMOD_ERRORCALLBACK_INSTANCETYPE_REVERB3D: FMOD_ERRORCALLBACK_INSTANCETYPE = 10;
432pub const FMOD_ERRORCALLBACK_INSTANCETYPE_STUDIO_SYSTEM: FMOD_ERRORCALLBACK_INSTANCETYPE = 11;
433pub const FMOD_ERRORCALLBACK_INSTANCETYPE_STUDIO_EVENTDESCRIPTION: FMOD_ERRORCALLBACK_INSTANCETYPE =
434    12;
435pub const FMOD_ERRORCALLBACK_INSTANCETYPE_STUDIO_EVENTINSTANCE: FMOD_ERRORCALLBACK_INSTANCETYPE =
436    13;
437pub const FMOD_ERRORCALLBACK_INSTANCETYPE_STUDIO_PARAMETERINSTANCE:
438    FMOD_ERRORCALLBACK_INSTANCETYPE = 14;
439pub const FMOD_ERRORCALLBACK_INSTANCETYPE_STUDIO_BUS: FMOD_ERRORCALLBACK_INSTANCETYPE = 15;
440pub const FMOD_ERRORCALLBACK_INSTANCETYPE_STUDIO_VCA: FMOD_ERRORCALLBACK_INSTANCETYPE = 16;
441pub const FMOD_ERRORCALLBACK_INSTANCETYPE_STUDIO_BANK: FMOD_ERRORCALLBACK_INSTANCETYPE = 17;
442pub const FMOD_ERRORCALLBACK_INSTANCETYPE_STUDIO_COMMANDREPLAY: FMOD_ERRORCALLBACK_INSTANCETYPE =
443    18;
444pub const FMOD_ERRORCALLBACK_INSTANCETYPE_FORCEINT: FMOD_ERRORCALLBACK_INSTANCETYPE = 65536;
445pub type FMOD_DSP_RESAMPLER = c_int;
446pub const FMOD_DSP_RESAMPLER_DEFAULT: FMOD_DSP_RESAMPLER = 0;
447pub const FMOD_DSP_RESAMPLER_NOINTERP: FMOD_DSP_RESAMPLER = 1;
448pub const FMOD_DSP_RESAMPLER_LINEAR: FMOD_DSP_RESAMPLER = 2;
449pub const FMOD_DSP_RESAMPLER_CUBIC: FMOD_DSP_RESAMPLER = 3;
450pub const FMOD_DSP_RESAMPLER_SPLINE: FMOD_DSP_RESAMPLER = 4;
451pub const FMOD_DSP_RESAMPLER_MAX: FMOD_DSP_RESAMPLER = 5;
452pub const FMOD_DSP_RESAMPLER_FORCEINT: FMOD_DSP_RESAMPLER = 65536;
453pub type FMOD_DSP_CALLBACK_TYPE = c_int;
454pub const FMOD_DSP_CALLBACK_DATAPARAMETERRELEASE: FMOD_DSP_CALLBACK_TYPE = 0;
455pub const FMOD_DSP_CALLBACK_MAX: FMOD_DSP_CALLBACK_TYPE = 1;
456pub const FMOD_DSP_CALLBACK_FORCEINT: FMOD_DSP_CALLBACK_TYPE = 65536;
457pub type FMOD_DSPCONNECTION_TYPE = c_int;
458pub const FMOD_DSPCONNECTION_TYPE_STANDARD: FMOD_DSPCONNECTION_TYPE = 0;
459pub const FMOD_DSPCONNECTION_TYPE_SIDECHAIN: FMOD_DSPCONNECTION_TYPE = 1;
460pub const FMOD_DSPCONNECTION_TYPE_SEND: FMOD_DSPCONNECTION_TYPE = 2;
461pub const FMOD_DSPCONNECTION_TYPE_SEND_SIDECHAIN: FMOD_DSPCONNECTION_TYPE = 3;
462pub const FMOD_DSPCONNECTION_TYPE_MAX: FMOD_DSPCONNECTION_TYPE = 4;
463pub const FMOD_DSPCONNECTION_TYPE_FORCEINT: FMOD_DSPCONNECTION_TYPE = 65536;
464pub type FMOD_TAGTYPE = c_int;
465pub const FMOD_TAGTYPE_UNKNOWN: FMOD_TAGTYPE = 0;
466pub const FMOD_TAGTYPE_ID3V1: FMOD_TAGTYPE = 1;
467pub const FMOD_TAGTYPE_ID3V2: FMOD_TAGTYPE = 2;
468pub const FMOD_TAGTYPE_VORBISCOMMENT: FMOD_TAGTYPE = 3;
469pub const FMOD_TAGTYPE_SHOUTCAST: FMOD_TAGTYPE = 4;
470pub const FMOD_TAGTYPE_ICECAST: FMOD_TAGTYPE = 5;
471pub const FMOD_TAGTYPE_ASF: FMOD_TAGTYPE = 6;
472pub const FMOD_TAGTYPE_MIDI: FMOD_TAGTYPE = 7;
473pub const FMOD_TAGTYPE_PLAYLIST: FMOD_TAGTYPE = 8;
474pub const FMOD_TAGTYPE_FMOD: FMOD_TAGTYPE = 9;
475pub const FMOD_TAGTYPE_USER: FMOD_TAGTYPE = 10;
476pub const FMOD_TAGTYPE_MAX: FMOD_TAGTYPE = 11;
477pub const FMOD_TAGTYPE_FORCEINT: FMOD_TAGTYPE = 65536;
478pub type FMOD_TAGDATATYPE = c_int;
479pub const FMOD_TAGDATATYPE_BINARY: FMOD_TAGDATATYPE = 0;
480pub const FMOD_TAGDATATYPE_INT: FMOD_TAGDATATYPE = 1;
481pub const FMOD_TAGDATATYPE_FLOAT: FMOD_TAGDATATYPE = 2;
482pub const FMOD_TAGDATATYPE_STRING: FMOD_TAGDATATYPE = 3;
483pub const FMOD_TAGDATATYPE_STRING_UTF16: FMOD_TAGDATATYPE = 4;
484pub const FMOD_TAGDATATYPE_STRING_UTF16BE: FMOD_TAGDATATYPE = 5;
485pub const FMOD_TAGDATATYPE_STRING_UTF8: FMOD_TAGDATATYPE = 6;
486pub const FMOD_TAGDATATYPE_MAX: FMOD_TAGDATATYPE = 7;
487pub const FMOD_TAGDATATYPE_FORCEINT: FMOD_TAGDATATYPE = 65536;
488pub type FMOD_PORT_TYPE = c_int;
489pub const FMOD_PORT_TYPE_MUSIC: FMOD_PORT_TYPE = 0;
490pub const FMOD_PORT_TYPE_COPYRIGHT_MUSIC: FMOD_PORT_TYPE = 1;
491pub const FMOD_PORT_TYPE_VOICE: FMOD_PORT_TYPE = 2;
492pub const FMOD_PORT_TYPE_CONTROLLER: FMOD_PORT_TYPE = 3;
493pub const FMOD_PORT_TYPE_PERSONAL: FMOD_PORT_TYPE = 4;
494pub const FMOD_PORT_TYPE_VIBRATION: FMOD_PORT_TYPE = 5;
495pub const FMOD_PORT_TYPE_AUX: FMOD_PORT_TYPE = 6;
496pub const FMOD_PORT_TYPE_MAX: FMOD_PORT_TYPE = 7;
497pub const FMOD_PORT_TYPE_FORCEINT: FMOD_PORT_TYPE = 65536;
498pub type FMOD_DSP_PROCESS_OPERATION = c_int;
499pub const FMOD_DSP_PROCESS_PERFORM: FMOD_DSP_PROCESS_OPERATION = 0;
500pub const FMOD_DSP_PROCESS_QUERY: FMOD_DSP_PROCESS_OPERATION = 1;
501pub type FMOD_DSP_PAN_SURROUND_FLAGS = c_int;
502pub const FMOD_DSP_PAN_SURROUND_DEFAULT: FMOD_DSP_PAN_SURROUND_FLAGS = 0;
503pub const FMOD_DSP_PAN_SURROUND_ROTATION_NOT_BIASED: FMOD_DSP_PAN_SURROUND_FLAGS = 1;
504pub const FMOD_DSP_PAN_SURROUND_FLAGS_FORCEINT: FMOD_DSP_PAN_SURROUND_FLAGS = 65536;
505pub type FMOD_DSP_PARAMETER_TYPE = c_int;
506pub const FMOD_DSP_PARAMETER_TYPE_FLOAT: FMOD_DSP_PARAMETER_TYPE = 0;
507pub const FMOD_DSP_PARAMETER_TYPE_INT: FMOD_DSP_PARAMETER_TYPE = 1;
508pub const FMOD_DSP_PARAMETER_TYPE_BOOL: FMOD_DSP_PARAMETER_TYPE = 2;
509pub const FMOD_DSP_PARAMETER_TYPE_DATA: FMOD_DSP_PARAMETER_TYPE = 3;
510pub const FMOD_DSP_PARAMETER_TYPE_MAX: FMOD_DSP_PARAMETER_TYPE = 4;
511pub const FMOD_DSP_PARAMETER_TYPE_FORCEINT: FMOD_DSP_PARAMETER_TYPE = 65536;
512pub type FMOD_DSP_PARAMETER_FLOAT_MAPPING_TYPE = c_int;
513pub const FMOD_DSP_PARAMETER_FLOAT_MAPPING_TYPE_LINEAR: FMOD_DSP_PARAMETER_FLOAT_MAPPING_TYPE = 0;
514pub const FMOD_DSP_PARAMETER_FLOAT_MAPPING_TYPE_AUTO: FMOD_DSP_PARAMETER_FLOAT_MAPPING_TYPE = 1;
515pub const FMOD_DSP_PARAMETER_FLOAT_MAPPING_TYPE_PIECEWISE_LINEAR:
516    FMOD_DSP_PARAMETER_FLOAT_MAPPING_TYPE = 2;
517pub const FMOD_DSP_PARAMETER_FLOAT_MAPPING_TYPE_FORCEINT: FMOD_DSP_PARAMETER_FLOAT_MAPPING_TYPE =
518    65536;
519pub type FMOD_DSP_PARAMETER_DATA_TYPE = c_int;
520pub const FMOD_DSP_PARAMETER_DATA_TYPE_USER: FMOD_DSP_PARAMETER_DATA_TYPE = 0;
521pub const FMOD_DSP_PARAMETER_DATA_TYPE_OVERALLGAIN: FMOD_DSP_PARAMETER_DATA_TYPE = -1;
522pub const FMOD_DSP_PARAMETER_DATA_TYPE_3DATTRIBUTES: FMOD_DSP_PARAMETER_DATA_TYPE = -2;
523pub const FMOD_DSP_PARAMETER_DATA_TYPE_SIDECHAIN: FMOD_DSP_PARAMETER_DATA_TYPE = -3;
524pub const FMOD_DSP_PARAMETER_DATA_TYPE_FFT: FMOD_DSP_PARAMETER_DATA_TYPE = -4;
525pub const FMOD_DSP_PARAMETER_DATA_TYPE_3DATTRIBUTES_MULTI: FMOD_DSP_PARAMETER_DATA_TYPE = -5;
526pub const FMOD_DSP_PARAMETER_DATA_TYPE_ATTENUATION_RANGE: FMOD_DSP_PARAMETER_DATA_TYPE = -6;
527pub type FMOD_DSP_TYPE = c_int;
528pub const FMOD_DSP_TYPE_UNKNOWN: FMOD_DSP_TYPE = 0;
529pub const FMOD_DSP_TYPE_MIXER: FMOD_DSP_TYPE = 1;
530pub const FMOD_DSP_TYPE_OSCILLATOR: FMOD_DSP_TYPE = 2;
531pub const FMOD_DSP_TYPE_LOWPASS: FMOD_DSP_TYPE = 3;
532pub const FMOD_DSP_TYPE_ITLOWPASS: FMOD_DSP_TYPE = 4;
533pub const FMOD_DSP_TYPE_HIGHPASS: FMOD_DSP_TYPE = 5;
534pub const FMOD_DSP_TYPE_ECHO: FMOD_DSP_TYPE = 6;
535pub const FMOD_DSP_TYPE_FADER: FMOD_DSP_TYPE = 7;
536pub const FMOD_DSP_TYPE_FLANGE: FMOD_DSP_TYPE = 8;
537pub const FMOD_DSP_TYPE_DISTORTION: FMOD_DSP_TYPE = 9;
538pub const FMOD_DSP_TYPE_NORMALIZE: FMOD_DSP_TYPE = 10;
539pub const FMOD_DSP_TYPE_LIMITER: FMOD_DSP_TYPE = 11;
540pub const FMOD_DSP_TYPE_PARAMEQ: FMOD_DSP_TYPE = 12;
541pub const FMOD_DSP_TYPE_PITCHSHIFT: FMOD_DSP_TYPE = 13;
542pub const FMOD_DSP_TYPE_CHORUS: FMOD_DSP_TYPE = 14;
543pub const FMOD_DSP_TYPE_VSTPLUGIN: FMOD_DSP_TYPE = 15;
544pub const FMOD_DSP_TYPE_WINAMPPLUGIN: FMOD_DSP_TYPE = 16;
545pub const FMOD_DSP_TYPE_ITECHO: FMOD_DSP_TYPE = 17;
546pub const FMOD_DSP_TYPE_COMPRESSOR: FMOD_DSP_TYPE = 18;
547pub const FMOD_DSP_TYPE_SFXREVERB: FMOD_DSP_TYPE = 19;
548pub const FMOD_DSP_TYPE_LOWPASS_SIMPLE: FMOD_DSP_TYPE = 20;
549pub const FMOD_DSP_TYPE_DELAY: FMOD_DSP_TYPE = 21;
550pub const FMOD_DSP_TYPE_TREMOLO: FMOD_DSP_TYPE = 22;
551pub const FMOD_DSP_TYPE_LADSPAPLUGIN: FMOD_DSP_TYPE = 23;
552pub const FMOD_DSP_TYPE_SEND: FMOD_DSP_TYPE = 24;
553pub const FMOD_DSP_TYPE_RETURN: FMOD_DSP_TYPE = 25;
554pub const FMOD_DSP_TYPE_HIGHPASS_SIMPLE: FMOD_DSP_TYPE = 26;
555pub const FMOD_DSP_TYPE_PAN: FMOD_DSP_TYPE = 27;
556pub const FMOD_DSP_TYPE_THREE_EQ: FMOD_DSP_TYPE = 28;
557pub const FMOD_DSP_TYPE_FFT: FMOD_DSP_TYPE = 29;
558pub const FMOD_DSP_TYPE_LOUDNESS_METER: FMOD_DSP_TYPE = 30;
559pub const FMOD_DSP_TYPE_ENVELOPEFOLLOWER: FMOD_DSP_TYPE = 31;
560pub const FMOD_DSP_TYPE_CONVOLUTIONREVERB: FMOD_DSP_TYPE = 32;
561pub const FMOD_DSP_TYPE_CHANNELMIX: FMOD_DSP_TYPE = 33;
562pub const FMOD_DSP_TYPE_TRANSCEIVER: FMOD_DSP_TYPE = 34;
563pub const FMOD_DSP_TYPE_OBJECTPAN: FMOD_DSP_TYPE = 35;
564pub const FMOD_DSP_TYPE_MULTIBAND_EQ: FMOD_DSP_TYPE = 36;
565pub const FMOD_DSP_TYPE_MAX: FMOD_DSP_TYPE = 37;
566pub const FMOD_DSP_TYPE_FORCEINT: FMOD_DSP_TYPE = 65536;
567pub type FMOD_DSP_OSCILLATOR = c_int;
568pub const FMOD_DSP_OSCILLATOR_TYPE: FMOD_DSP_OSCILLATOR = 0;
569pub const FMOD_DSP_OSCILLATOR_RATE: FMOD_DSP_OSCILLATOR = 1;
570pub type FMOD_DSP_LOWPASS = c_int;
571pub const FMOD_DSP_LOWPASS_CUTOFF: FMOD_DSP_LOWPASS = 0;
572pub const FMOD_DSP_LOWPASS_RESONANCE: FMOD_DSP_LOWPASS = 1;
573pub type FMOD_DSP_ITLOWPASS = c_int;
574pub const FMOD_DSP_ITLOWPASS_CUTOFF: FMOD_DSP_ITLOWPASS = 0;
575pub const FMOD_DSP_ITLOWPASS_RESONANCE: FMOD_DSP_ITLOWPASS = 1;
576pub type FMOD_DSP_HIGHPASS = c_int;
577pub const FMOD_DSP_HIGHPASS_CUTOFF: FMOD_DSP_HIGHPASS = 0;
578pub const FMOD_DSP_HIGHPASS_RESONANCE: FMOD_DSP_HIGHPASS = 1;
579pub type FMOD_DSP_ECHO = c_int;
580pub const FMOD_DSP_ECHO_DELAY: FMOD_DSP_ECHO = 0;
581pub const FMOD_DSP_ECHO_FEEDBACK: FMOD_DSP_ECHO = 1;
582pub const FMOD_DSP_ECHO_DRYLEVEL: FMOD_DSP_ECHO = 2;
583pub const FMOD_DSP_ECHO_WETLEVEL: FMOD_DSP_ECHO = 3;
584pub type FMOD_DSP_FADER = c_int;
585pub const FMOD_DSP_FADER_GAIN: FMOD_DSP_FADER = 0;
586pub const FMOD_DSP_FADER_OVERALL_GAIN: FMOD_DSP_FADER = 1;
587pub type FMOD_DSP_FLANGE = c_int;
588pub const FMOD_DSP_FLANGE_MIX: FMOD_DSP_FLANGE = 0;
589pub const FMOD_DSP_FLANGE_DEPTH: FMOD_DSP_FLANGE = 1;
590pub const FMOD_DSP_FLANGE_RATE: FMOD_DSP_FLANGE = 2;
591pub type FMOD_DSP_DISTORTION = c_int;
592pub const FMOD_DSP_DISTORTION_LEVEL: FMOD_DSP_DISTORTION = 0;
593pub type FMOD_DSP_NORMALIZE = c_int;
594pub const FMOD_DSP_NORMALIZE_FADETIME: FMOD_DSP_NORMALIZE = 0;
595pub const FMOD_DSP_NORMALIZE_THRESHOLD: FMOD_DSP_NORMALIZE = 1;
596pub const FMOD_DSP_NORMALIZE_MAXAMP: FMOD_DSP_NORMALIZE = 2;
597pub type FMOD_DSP_LIMITER = c_int;
598pub const FMOD_DSP_LIMITER_RELEASETIME: FMOD_DSP_LIMITER = 0;
599pub const FMOD_DSP_LIMITER_CEILING: FMOD_DSP_LIMITER = 1;
600pub const FMOD_DSP_LIMITER_MAXIMIZERGAIN: FMOD_DSP_LIMITER = 2;
601pub const FMOD_DSP_LIMITER_MODE: FMOD_DSP_LIMITER = 3;
602pub type FMOD_DSP_PARAMEQ = c_int;
603pub const FMOD_DSP_PARAMEQ_CENTER: FMOD_DSP_PARAMEQ = 0;
604pub const FMOD_DSP_PARAMEQ_BANDWIDTH: FMOD_DSP_PARAMEQ = 1;
605pub const FMOD_DSP_PARAMEQ_GAIN: FMOD_DSP_PARAMEQ = 2;
606pub type FMOD_DSP_MULTIBAND_EQ = c_int;
607pub const FMOD_DSP_MULTIBAND_EQ_A_FILTER: FMOD_DSP_MULTIBAND_EQ = 0;
608pub const FMOD_DSP_MULTIBAND_EQ_A_FREQUENCY: FMOD_DSP_MULTIBAND_EQ = 1;
609pub const FMOD_DSP_MULTIBAND_EQ_A_Q: FMOD_DSP_MULTIBAND_EQ = 2;
610pub const FMOD_DSP_MULTIBAND_EQ_A_GAIN: FMOD_DSP_MULTIBAND_EQ = 3;
611pub const FMOD_DSP_MULTIBAND_EQ_B_FILTER: FMOD_DSP_MULTIBAND_EQ = 4;
612pub const FMOD_DSP_MULTIBAND_EQ_B_FREQUENCY: FMOD_DSP_MULTIBAND_EQ = 5;
613pub const FMOD_DSP_MULTIBAND_EQ_B_Q: FMOD_DSP_MULTIBAND_EQ = 6;
614pub const FMOD_DSP_MULTIBAND_EQ_B_GAIN: FMOD_DSP_MULTIBAND_EQ = 7;
615pub const FMOD_DSP_MULTIBAND_EQ_C_FILTER: FMOD_DSP_MULTIBAND_EQ = 8;
616pub const FMOD_DSP_MULTIBAND_EQ_C_FREQUENCY: FMOD_DSP_MULTIBAND_EQ = 9;
617pub const FMOD_DSP_MULTIBAND_EQ_C_Q: FMOD_DSP_MULTIBAND_EQ = 10;
618pub const FMOD_DSP_MULTIBAND_EQ_C_GAIN: FMOD_DSP_MULTIBAND_EQ = 11;
619pub const FMOD_DSP_MULTIBAND_EQ_D_FILTER: FMOD_DSP_MULTIBAND_EQ = 12;
620pub const FMOD_DSP_MULTIBAND_EQ_D_FREQUENCY: FMOD_DSP_MULTIBAND_EQ = 13;
621pub const FMOD_DSP_MULTIBAND_EQ_D_Q: FMOD_DSP_MULTIBAND_EQ = 14;
622pub const FMOD_DSP_MULTIBAND_EQ_D_GAIN: FMOD_DSP_MULTIBAND_EQ = 15;
623pub const FMOD_DSP_MULTIBAND_EQ_E_FILTER: FMOD_DSP_MULTIBAND_EQ = 16;
624pub const FMOD_DSP_MULTIBAND_EQ_E_FREQUENCY: FMOD_DSP_MULTIBAND_EQ = 17;
625pub const FMOD_DSP_MULTIBAND_EQ_E_Q: FMOD_DSP_MULTIBAND_EQ = 18;
626pub const FMOD_DSP_MULTIBAND_EQ_E_GAIN: FMOD_DSP_MULTIBAND_EQ = 19;
627pub type FMOD_DSP_MULTIBAND_EQ_FILTER_TYPE = c_int;
628pub const FMOD_DSP_MULTIBAND_EQ_FILTER_DISABLED: FMOD_DSP_MULTIBAND_EQ_FILTER_TYPE = 0;
629pub const FMOD_DSP_MULTIBAND_EQ_FILTER_LOWPASS_12DB: FMOD_DSP_MULTIBAND_EQ_FILTER_TYPE = 1;
630pub const FMOD_DSP_MULTIBAND_EQ_FILTER_LOWPASS_24DB: FMOD_DSP_MULTIBAND_EQ_FILTER_TYPE = 2;
631pub const FMOD_DSP_MULTIBAND_EQ_FILTER_LOWPASS_48DB: FMOD_DSP_MULTIBAND_EQ_FILTER_TYPE = 3;
632pub const FMOD_DSP_MULTIBAND_EQ_FILTER_HIGHPASS_12DB: FMOD_DSP_MULTIBAND_EQ_FILTER_TYPE = 4;
633pub const FMOD_DSP_MULTIBAND_EQ_FILTER_HIGHPASS_24DB: FMOD_DSP_MULTIBAND_EQ_FILTER_TYPE = 5;
634pub const FMOD_DSP_MULTIBAND_EQ_FILTER_HIGHPASS_48DB: FMOD_DSP_MULTIBAND_EQ_FILTER_TYPE = 6;
635pub const FMOD_DSP_MULTIBAND_EQ_FILTER_LOWSHELF: FMOD_DSP_MULTIBAND_EQ_FILTER_TYPE = 7;
636pub const FMOD_DSP_MULTIBAND_EQ_FILTER_HIGHSHELF: FMOD_DSP_MULTIBAND_EQ_FILTER_TYPE = 8;
637pub const FMOD_DSP_MULTIBAND_EQ_FILTER_PEAKING: FMOD_DSP_MULTIBAND_EQ_FILTER_TYPE = 9;
638pub const FMOD_DSP_MULTIBAND_EQ_FILTER_BANDPASS: FMOD_DSP_MULTIBAND_EQ_FILTER_TYPE = 10;
639pub const FMOD_DSP_MULTIBAND_EQ_FILTER_NOTCH: FMOD_DSP_MULTIBAND_EQ_FILTER_TYPE = 11;
640pub const FMOD_DSP_MULTIBAND_EQ_FILTER_ALLPASS: FMOD_DSP_MULTIBAND_EQ_FILTER_TYPE = 12;
641pub type FMOD_DSP_PITCHSHIFT = c_int;
642pub const FMOD_DSP_PITCHSHIFT_PITCH: FMOD_DSP_PITCHSHIFT = 0;
643pub const FMOD_DSP_PITCHSHIFT_FFTSIZE: FMOD_DSP_PITCHSHIFT = 1;
644pub const FMOD_DSP_PITCHSHIFT_OVERLAP: FMOD_DSP_PITCHSHIFT = 2;
645pub const FMOD_DSP_PITCHSHIFT_MAXCHANNELS: FMOD_DSP_PITCHSHIFT = 3;
646pub type FMOD_DSP_CHORUS = c_int;
647pub const FMOD_DSP_CHORUS_MIX: FMOD_DSP_CHORUS = 0;
648pub const FMOD_DSP_CHORUS_RATE: FMOD_DSP_CHORUS = 1;
649pub const FMOD_DSP_CHORUS_DEPTH: FMOD_DSP_CHORUS = 2;
650pub type FMOD_DSP_ITECHO = c_int;
651pub const FMOD_DSP_ITECHO_WETDRYMIX: FMOD_DSP_ITECHO = 0;
652pub const FMOD_DSP_ITECHO_FEEDBACK: FMOD_DSP_ITECHO = 1;
653pub const FMOD_DSP_ITECHO_LEFTDELAY: FMOD_DSP_ITECHO = 2;
654pub const FMOD_DSP_ITECHO_RIGHTDELAY: FMOD_DSP_ITECHO = 3;
655pub const FMOD_DSP_ITECHO_PANDELAY: FMOD_DSP_ITECHO = 4;
656pub type FMOD_DSP_COMPRESSOR = c_int;
657pub const FMOD_DSP_COMPRESSOR_THRESHOLD: FMOD_DSP_COMPRESSOR = 0;
658pub const FMOD_DSP_COMPRESSOR_RATIO: FMOD_DSP_COMPRESSOR = 1;
659pub const FMOD_DSP_COMPRESSOR_ATTACK: FMOD_DSP_COMPRESSOR = 2;
660pub const FMOD_DSP_COMPRESSOR_RELEASE: FMOD_DSP_COMPRESSOR = 3;
661pub const FMOD_DSP_COMPRESSOR_GAINMAKEUP: FMOD_DSP_COMPRESSOR = 4;
662pub const FMOD_DSP_COMPRESSOR_USESIDECHAIN: FMOD_DSP_COMPRESSOR = 5;
663pub const FMOD_DSP_COMPRESSOR_LINKED: FMOD_DSP_COMPRESSOR = 6;
664pub type FMOD_DSP_SFXREVERB = c_int;
665pub const FMOD_DSP_SFXREVERB_DECAYTIME: FMOD_DSP_SFXREVERB = 0;
666pub const FMOD_DSP_SFXREVERB_EARLYDELAY: FMOD_DSP_SFXREVERB = 1;
667pub const FMOD_DSP_SFXREVERB_LATEDELAY: FMOD_DSP_SFXREVERB = 2;
668pub const FMOD_DSP_SFXREVERB_HFREFERENCE: FMOD_DSP_SFXREVERB = 3;
669pub const FMOD_DSP_SFXREVERB_HFDECAYRATIO: FMOD_DSP_SFXREVERB = 4;
670pub const FMOD_DSP_SFXREVERB_DIFFUSION: FMOD_DSP_SFXREVERB = 5;
671pub const FMOD_DSP_SFXREVERB_DENSITY: FMOD_DSP_SFXREVERB = 6;
672pub const FMOD_DSP_SFXREVERB_LOWSHELFFREQUENCY: FMOD_DSP_SFXREVERB = 7;
673pub const FMOD_DSP_SFXREVERB_LOWSHELFGAIN: FMOD_DSP_SFXREVERB = 8;
674pub const FMOD_DSP_SFXREVERB_HIGHCUT: FMOD_DSP_SFXREVERB = 9;
675pub const FMOD_DSP_SFXREVERB_EARLYLATEMIX: FMOD_DSP_SFXREVERB = 10;
676pub const FMOD_DSP_SFXREVERB_WETLEVEL: FMOD_DSP_SFXREVERB = 11;
677pub const FMOD_DSP_SFXREVERB_DRYLEVEL: FMOD_DSP_SFXREVERB = 12;
678pub type FMOD_DSP_LOWPASS_SIMPLE = c_int;
679pub const FMOD_DSP_LOWPASS_SIMPLE_CUTOFF: FMOD_DSP_LOWPASS_SIMPLE = 0;
680pub type FMOD_DSP_DELAY = c_int;
681pub const FMOD_DSP_DELAY_CH0: FMOD_DSP_DELAY = 0;
682pub const FMOD_DSP_DELAY_CH1: FMOD_DSP_DELAY = 1;
683pub const FMOD_DSP_DELAY_CH2: FMOD_DSP_DELAY = 2;
684pub const FMOD_DSP_DELAY_CH3: FMOD_DSP_DELAY = 3;
685pub const FMOD_DSP_DELAY_CH4: FMOD_DSP_DELAY = 4;
686pub const FMOD_DSP_DELAY_CH5: FMOD_DSP_DELAY = 5;
687pub const FMOD_DSP_DELAY_CH6: FMOD_DSP_DELAY = 6;
688pub const FMOD_DSP_DELAY_CH7: FMOD_DSP_DELAY = 7;
689pub const FMOD_DSP_DELAY_CH8: FMOD_DSP_DELAY = 8;
690pub const FMOD_DSP_DELAY_CH9: FMOD_DSP_DELAY = 9;
691pub const FMOD_DSP_DELAY_CH10: FMOD_DSP_DELAY = 10;
692pub const FMOD_DSP_DELAY_CH11: FMOD_DSP_DELAY = 11;
693pub const FMOD_DSP_DELAY_CH12: FMOD_DSP_DELAY = 12;
694pub const FMOD_DSP_DELAY_CH13: FMOD_DSP_DELAY = 13;
695pub const FMOD_DSP_DELAY_CH14: FMOD_DSP_DELAY = 14;
696pub const FMOD_DSP_DELAY_CH15: FMOD_DSP_DELAY = 15;
697pub const FMOD_DSP_DELAY_MAXDELAY: FMOD_DSP_DELAY = 16;
698pub type FMOD_DSP_TREMOLO = c_int;
699pub const FMOD_DSP_TREMOLO_FREQUENCY: FMOD_DSP_TREMOLO = 0;
700pub const FMOD_DSP_TREMOLO_DEPTH: FMOD_DSP_TREMOLO = 1;
701pub const FMOD_DSP_TREMOLO_SHAPE: FMOD_DSP_TREMOLO = 2;
702pub const FMOD_DSP_TREMOLO_SKEW: FMOD_DSP_TREMOLO = 3;
703pub const FMOD_DSP_TREMOLO_DUTY: FMOD_DSP_TREMOLO = 4;
704pub const FMOD_DSP_TREMOLO_SQUARE: FMOD_DSP_TREMOLO = 5;
705pub const FMOD_DSP_TREMOLO_PHASE: FMOD_DSP_TREMOLO = 6;
706pub const FMOD_DSP_TREMOLO_SPREAD: FMOD_DSP_TREMOLO = 7;
707pub type FMOD_DSP_SEND = c_int;
708pub const FMOD_DSP_SEND_RETURNID: FMOD_DSP_SEND = 0;
709pub const FMOD_DSP_SEND_LEVEL: FMOD_DSP_SEND = 1;
710pub type FMOD_DSP_RETURN = c_int;
711pub const FMOD_DSP_RETURN_ID: FMOD_DSP_RETURN = 0;
712pub const FMOD_DSP_RETURN_INPUT_SPEAKER_MODE: FMOD_DSP_RETURN = 1;
713pub type FMOD_DSP_HIGHPASS_SIMPLE = c_int;
714pub const FMOD_DSP_HIGHPASS_SIMPLE_CUTOFF: FMOD_DSP_HIGHPASS_SIMPLE = 0;
715pub type FMOD_DSP_PAN_2D_STEREO_MODE_TYPE = c_int;
716pub const FMOD_DSP_PAN_2D_STEREO_MODE_DISTRIBUTED: FMOD_DSP_PAN_2D_STEREO_MODE_TYPE = 0;
717pub const FMOD_DSP_PAN_2D_STEREO_MODE_DISCRETE: FMOD_DSP_PAN_2D_STEREO_MODE_TYPE = 1;
718pub type FMOD_DSP_PAN_MODE_TYPE = c_int;
719pub const FMOD_DSP_PAN_MODE_MONO: FMOD_DSP_PAN_MODE_TYPE = 0;
720pub const FMOD_DSP_PAN_MODE_STEREO: FMOD_DSP_PAN_MODE_TYPE = 1;
721pub const FMOD_DSP_PAN_MODE_SURROUND: FMOD_DSP_PAN_MODE_TYPE = 2;
722pub type FMOD_DSP_PAN_3D_ROLLOFF_TYPE = c_int;
723pub const FMOD_DSP_PAN_3D_ROLLOFF_LINEARSQUARED: FMOD_DSP_PAN_3D_ROLLOFF_TYPE = 0;
724pub const FMOD_DSP_PAN_3D_ROLLOFF_LINEAR: FMOD_DSP_PAN_3D_ROLLOFF_TYPE = 1;
725pub const FMOD_DSP_PAN_3D_ROLLOFF_INVERSE: FMOD_DSP_PAN_3D_ROLLOFF_TYPE = 2;
726pub const FMOD_DSP_PAN_3D_ROLLOFF_INVERSETAPERED: FMOD_DSP_PAN_3D_ROLLOFF_TYPE = 3;
727pub const FMOD_DSP_PAN_3D_ROLLOFF_CUSTOM: FMOD_DSP_PAN_3D_ROLLOFF_TYPE = 4;
728pub type FMOD_DSP_PAN_3D_EXTENT_MODE_TYPE = c_int;
729pub const FMOD_DSP_PAN_3D_EXTENT_MODE_AUTO: FMOD_DSP_PAN_3D_EXTENT_MODE_TYPE = 0;
730pub const FMOD_DSP_PAN_3D_EXTENT_MODE_USER: FMOD_DSP_PAN_3D_EXTENT_MODE_TYPE = 1;
731pub const FMOD_DSP_PAN_3D_EXTENT_MODE_OFF: FMOD_DSP_PAN_3D_EXTENT_MODE_TYPE = 2;
732pub type FMOD_DSP_PAN = c_int;
733pub const FMOD_DSP_PAN_MODE: FMOD_DSP_PAN = 0;
734pub const FMOD_DSP_PAN_2D_STEREO_POSITION: FMOD_DSP_PAN = 1;
735pub const FMOD_DSP_PAN_2D_DIRECTION: FMOD_DSP_PAN = 2;
736pub const FMOD_DSP_PAN_2D_EXTENT: FMOD_DSP_PAN = 3;
737pub const FMOD_DSP_PAN_2D_ROTATION: FMOD_DSP_PAN = 4;
738pub const FMOD_DSP_PAN_2D_LFE_LEVEL: FMOD_DSP_PAN = 5;
739pub const FMOD_DSP_PAN_2D_STEREO_MODE: FMOD_DSP_PAN = 6;
740pub const FMOD_DSP_PAN_2D_STEREO_SEPARATION: FMOD_DSP_PAN = 7;
741pub const FMOD_DSP_PAN_2D_STEREO_AXIS: FMOD_DSP_PAN = 8;
742pub const FMOD_DSP_PAN_ENABLED_SPEAKERS: FMOD_DSP_PAN = 9;
743pub const FMOD_DSP_PAN_3D_POSITION: FMOD_DSP_PAN = 10;
744pub const FMOD_DSP_PAN_3D_ROLLOFF: FMOD_DSP_PAN = 11;
745pub const FMOD_DSP_PAN_3D_MIN_DISTANCE: FMOD_DSP_PAN = 12;
746pub const FMOD_DSP_PAN_3D_MAX_DISTANCE: FMOD_DSP_PAN = 13;
747pub const FMOD_DSP_PAN_3D_EXTENT_MODE: FMOD_DSP_PAN = 14;
748pub const FMOD_DSP_PAN_3D_SOUND_SIZE: FMOD_DSP_PAN = 15;
749pub const FMOD_DSP_PAN_3D_MIN_EXTENT: FMOD_DSP_PAN = 16;
750pub const FMOD_DSP_PAN_3D_PAN_BLEND: FMOD_DSP_PAN = 17;
751pub const FMOD_DSP_PAN_LFE_UPMIX_ENABLED: FMOD_DSP_PAN = 18;
752pub const FMOD_DSP_PAN_OVERALL_GAIN: FMOD_DSP_PAN = 19;
753pub const FMOD_DSP_PAN_SURROUND_SPEAKER_MODE: FMOD_DSP_PAN = 20;
754pub const FMOD_DSP_PAN_2D_HEIGHT_BLEND: FMOD_DSP_PAN = 21;
755pub const FMOD_DSP_PAN_ATTENUATION_RANGE: FMOD_DSP_PAN = 22;
756pub const FMOD_DSP_PAN_OVERRIDE_RANGE: FMOD_DSP_PAN = 23;
757pub type FMOD_DSP_THREE_EQ_CROSSOVERSLOPE_TYPE = c_int;
758pub const FMOD_DSP_THREE_EQ_CROSSOVERSLOPE_12DB: FMOD_DSP_THREE_EQ_CROSSOVERSLOPE_TYPE = 0;
759pub const FMOD_DSP_THREE_EQ_CROSSOVERSLOPE_24DB: FMOD_DSP_THREE_EQ_CROSSOVERSLOPE_TYPE = 1;
760pub const FMOD_DSP_THREE_EQ_CROSSOVERSLOPE_48DB: FMOD_DSP_THREE_EQ_CROSSOVERSLOPE_TYPE = 2;
761pub type FMOD_DSP_THREE_EQ = c_int;
762pub const FMOD_DSP_THREE_EQ_LOWGAIN: FMOD_DSP_THREE_EQ = 0;
763pub const FMOD_DSP_THREE_EQ_MIDGAIN: FMOD_DSP_THREE_EQ = 1;
764pub const FMOD_DSP_THREE_EQ_HIGHGAIN: FMOD_DSP_THREE_EQ = 2;
765pub const FMOD_DSP_THREE_EQ_LOWCROSSOVER: FMOD_DSP_THREE_EQ = 3;
766pub const FMOD_DSP_THREE_EQ_HIGHCROSSOVER: FMOD_DSP_THREE_EQ = 4;
767pub const FMOD_DSP_THREE_EQ_CROSSOVERSLOPE: FMOD_DSP_THREE_EQ = 5;
768pub type FMOD_DSP_FFT_WINDOW = c_int;
769pub const FMOD_DSP_FFT_WINDOW_RECT: FMOD_DSP_FFT_WINDOW = 0;
770pub const FMOD_DSP_FFT_WINDOW_TRIANGLE: FMOD_DSP_FFT_WINDOW = 1;
771pub const FMOD_DSP_FFT_WINDOW_HAMMING: FMOD_DSP_FFT_WINDOW = 2;
772pub const FMOD_DSP_FFT_WINDOW_HANNING: FMOD_DSP_FFT_WINDOW = 3;
773pub const FMOD_DSP_FFT_WINDOW_BLACKMAN: FMOD_DSP_FFT_WINDOW = 4;
774pub const FMOD_DSP_FFT_WINDOW_BLACKMANHARRIS: FMOD_DSP_FFT_WINDOW = 5;
775pub type FMOD_DSP_FFT = c_int;
776pub const FMOD_DSP_FFT_WINDOWSIZE: FMOD_DSP_FFT = 0;
777pub const FMOD_DSP_FFT_WINDOWTYPE: FMOD_DSP_FFT = 1;
778pub const FMOD_DSP_FFT_SPECTRUMDATA: FMOD_DSP_FFT = 2;
779pub const FMOD_DSP_FFT_DOMINANT_FREQ: FMOD_DSP_FFT = 3;
780pub type FMOD_DSP_LOUDNESS_METER = c_int;
781pub const FMOD_DSP_LOUDNESS_METER_STATE: FMOD_DSP_LOUDNESS_METER = 0;
782pub const FMOD_DSP_LOUDNESS_METER_WEIGHTING: FMOD_DSP_LOUDNESS_METER = 1;
783pub const FMOD_DSP_LOUDNESS_METER_INFO: FMOD_DSP_LOUDNESS_METER = 2;
784pub type FMOD_DSP_LOUDNESS_METER_STATE_TYPE = c_int;
785pub const FMOD_DSP_LOUDNESS_METER_STATE_RESET_INTEGRATED: FMOD_DSP_LOUDNESS_METER_STATE_TYPE = -3;
786pub const FMOD_DSP_LOUDNESS_METER_STATE_RESET_MAXPEAK: FMOD_DSP_LOUDNESS_METER_STATE_TYPE = -2;
787pub const FMOD_DSP_LOUDNESS_METER_STATE_RESET_ALL: FMOD_DSP_LOUDNESS_METER_STATE_TYPE = -1;
788pub const FMOD_DSP_LOUDNESS_METER_STATE_PAUSED: FMOD_DSP_LOUDNESS_METER_STATE_TYPE = 0;
789pub const FMOD_DSP_LOUDNESS_METER_STATE_ANALYZING: FMOD_DSP_LOUDNESS_METER_STATE_TYPE = 1;
790pub type FMOD_DSP_ENVELOPEFOLLOWER = c_int;
791pub const FMOD_DSP_ENVELOPEFOLLOWER_ATTACK: FMOD_DSP_ENVELOPEFOLLOWER = 0;
792pub const FMOD_DSP_ENVELOPEFOLLOWER_RELEASE: FMOD_DSP_ENVELOPEFOLLOWER = 1;
793pub const FMOD_DSP_ENVELOPEFOLLOWER_ENVELOPE: FMOD_DSP_ENVELOPEFOLLOWER = 2;
794pub const FMOD_DSP_ENVELOPEFOLLOWER_USESIDECHAIN: FMOD_DSP_ENVELOPEFOLLOWER = 3;
795pub type FMOD_DSP_CONVOLUTION_REVERB = c_int;
796pub const FMOD_DSP_CONVOLUTION_REVERB_PARAM_IR: FMOD_DSP_CONVOLUTION_REVERB = 0;
797pub const FMOD_DSP_CONVOLUTION_REVERB_PARAM_WET: FMOD_DSP_CONVOLUTION_REVERB = 1;
798pub const FMOD_DSP_CONVOLUTION_REVERB_PARAM_DRY: FMOD_DSP_CONVOLUTION_REVERB = 2;
799pub const FMOD_DSP_CONVOLUTION_REVERB_PARAM_LINKED: FMOD_DSP_CONVOLUTION_REVERB = 3;
800pub type FMOD_DSP_CHANNELMIX_OUTPUT = c_int;
801pub const FMOD_DSP_CHANNELMIX_OUTPUT_DEFAULT: FMOD_DSP_CHANNELMIX_OUTPUT = 0;
802pub const FMOD_DSP_CHANNELMIX_OUTPUT_ALLMONO: FMOD_DSP_CHANNELMIX_OUTPUT = 1;
803pub const FMOD_DSP_CHANNELMIX_OUTPUT_ALLSTEREO: FMOD_DSP_CHANNELMIX_OUTPUT = 2;
804pub const FMOD_DSP_CHANNELMIX_OUTPUT_ALLQUAD: FMOD_DSP_CHANNELMIX_OUTPUT = 3;
805pub const FMOD_DSP_CHANNELMIX_OUTPUT_ALL5POINT1: FMOD_DSP_CHANNELMIX_OUTPUT = 4;
806pub const FMOD_DSP_CHANNELMIX_OUTPUT_ALL7POINT1: FMOD_DSP_CHANNELMIX_OUTPUT = 5;
807pub const FMOD_DSP_CHANNELMIX_OUTPUT_ALLLFE: FMOD_DSP_CHANNELMIX_OUTPUT = 6;
808pub const FMOD_DSP_CHANNELMIX_OUTPUT_ALL7POINT1POINT4: FMOD_DSP_CHANNELMIX_OUTPUT = 7;
809pub type FMOD_DSP_CHANNELMIX = c_int;
810pub const FMOD_DSP_CHANNELMIX_OUTPUTGROUPING: FMOD_DSP_CHANNELMIX = 0;
811pub const FMOD_DSP_CHANNELMIX_GAIN_CH0: FMOD_DSP_CHANNELMIX = 1;
812pub const FMOD_DSP_CHANNELMIX_GAIN_CH1: FMOD_DSP_CHANNELMIX = 2;
813pub const FMOD_DSP_CHANNELMIX_GAIN_CH2: FMOD_DSP_CHANNELMIX = 3;
814pub const FMOD_DSP_CHANNELMIX_GAIN_CH3: FMOD_DSP_CHANNELMIX = 4;
815pub const FMOD_DSP_CHANNELMIX_GAIN_CH4: FMOD_DSP_CHANNELMIX = 5;
816pub const FMOD_DSP_CHANNELMIX_GAIN_CH5: FMOD_DSP_CHANNELMIX = 6;
817pub const FMOD_DSP_CHANNELMIX_GAIN_CH6: FMOD_DSP_CHANNELMIX = 7;
818pub const FMOD_DSP_CHANNELMIX_GAIN_CH7: FMOD_DSP_CHANNELMIX = 8;
819pub const FMOD_DSP_CHANNELMIX_GAIN_CH8: FMOD_DSP_CHANNELMIX = 9;
820pub const FMOD_DSP_CHANNELMIX_GAIN_CH9: FMOD_DSP_CHANNELMIX = 10;
821pub const FMOD_DSP_CHANNELMIX_GAIN_CH10: FMOD_DSP_CHANNELMIX = 11;
822pub const FMOD_DSP_CHANNELMIX_GAIN_CH11: FMOD_DSP_CHANNELMIX = 12;
823pub const FMOD_DSP_CHANNELMIX_GAIN_CH12: FMOD_DSP_CHANNELMIX = 13;
824pub const FMOD_DSP_CHANNELMIX_GAIN_CH13: FMOD_DSP_CHANNELMIX = 14;
825pub const FMOD_DSP_CHANNELMIX_GAIN_CH14: FMOD_DSP_CHANNELMIX = 15;
826pub const FMOD_DSP_CHANNELMIX_GAIN_CH15: FMOD_DSP_CHANNELMIX = 16;
827pub const FMOD_DSP_CHANNELMIX_GAIN_CH16: FMOD_DSP_CHANNELMIX = 17;
828pub const FMOD_DSP_CHANNELMIX_GAIN_CH17: FMOD_DSP_CHANNELMIX = 18;
829pub const FMOD_DSP_CHANNELMIX_GAIN_CH18: FMOD_DSP_CHANNELMIX = 19;
830pub const FMOD_DSP_CHANNELMIX_GAIN_CH19: FMOD_DSP_CHANNELMIX = 20;
831pub const FMOD_DSP_CHANNELMIX_GAIN_CH20: FMOD_DSP_CHANNELMIX = 21;
832pub const FMOD_DSP_CHANNELMIX_GAIN_CH21: FMOD_DSP_CHANNELMIX = 22;
833pub const FMOD_DSP_CHANNELMIX_GAIN_CH22: FMOD_DSP_CHANNELMIX = 23;
834pub const FMOD_DSP_CHANNELMIX_GAIN_CH23: FMOD_DSP_CHANNELMIX = 24;
835pub const FMOD_DSP_CHANNELMIX_GAIN_CH24: FMOD_DSP_CHANNELMIX = 25;
836pub const FMOD_DSP_CHANNELMIX_GAIN_CH25: FMOD_DSP_CHANNELMIX = 26;
837pub const FMOD_DSP_CHANNELMIX_GAIN_CH26: FMOD_DSP_CHANNELMIX = 27;
838pub const FMOD_DSP_CHANNELMIX_GAIN_CH27: FMOD_DSP_CHANNELMIX = 28;
839pub const FMOD_DSP_CHANNELMIX_GAIN_CH28: FMOD_DSP_CHANNELMIX = 29;
840pub const FMOD_DSP_CHANNELMIX_GAIN_CH29: FMOD_DSP_CHANNELMIX = 30;
841pub const FMOD_DSP_CHANNELMIX_GAIN_CH30: FMOD_DSP_CHANNELMIX = 31;
842pub const FMOD_DSP_CHANNELMIX_GAIN_CH31: FMOD_DSP_CHANNELMIX = 32;
843pub const FMOD_DSP_CHANNELMIX_OUTPUT_CH0: FMOD_DSP_CHANNELMIX = 33;
844pub const FMOD_DSP_CHANNELMIX_OUTPUT_CH1: FMOD_DSP_CHANNELMIX = 34;
845pub const FMOD_DSP_CHANNELMIX_OUTPUT_CH2: FMOD_DSP_CHANNELMIX = 35;
846pub const FMOD_DSP_CHANNELMIX_OUTPUT_CH3: FMOD_DSP_CHANNELMIX = 36;
847pub const FMOD_DSP_CHANNELMIX_OUTPUT_CH4: FMOD_DSP_CHANNELMIX = 37;
848pub const FMOD_DSP_CHANNELMIX_OUTPUT_CH5: FMOD_DSP_CHANNELMIX = 38;
849pub const FMOD_DSP_CHANNELMIX_OUTPUT_CH6: FMOD_DSP_CHANNELMIX = 39;
850pub const FMOD_DSP_CHANNELMIX_OUTPUT_CH7: FMOD_DSP_CHANNELMIX = 40;
851pub const FMOD_DSP_CHANNELMIX_OUTPUT_CH8: FMOD_DSP_CHANNELMIX = 41;
852pub const FMOD_DSP_CHANNELMIX_OUTPUT_CH9: FMOD_DSP_CHANNELMIX = 42;
853pub const FMOD_DSP_CHANNELMIX_OUTPUT_CH10: FMOD_DSP_CHANNELMIX = 43;
854pub const FMOD_DSP_CHANNELMIX_OUTPUT_CH11: FMOD_DSP_CHANNELMIX = 44;
855pub const FMOD_DSP_CHANNELMIX_OUTPUT_CH12: FMOD_DSP_CHANNELMIX = 45;
856pub const FMOD_DSP_CHANNELMIX_OUTPUT_CH13: FMOD_DSP_CHANNELMIX = 46;
857pub const FMOD_DSP_CHANNELMIX_OUTPUT_CH14: FMOD_DSP_CHANNELMIX = 47;
858pub const FMOD_DSP_CHANNELMIX_OUTPUT_CH15: FMOD_DSP_CHANNELMIX = 48;
859pub const FMOD_DSP_CHANNELMIX_OUTPUT_CH16: FMOD_DSP_CHANNELMIX = 49;
860pub const FMOD_DSP_CHANNELMIX_OUTPUT_CH17: FMOD_DSP_CHANNELMIX = 50;
861pub const FMOD_DSP_CHANNELMIX_OUTPUT_CH18: FMOD_DSP_CHANNELMIX = 51;
862pub const FMOD_DSP_CHANNELMIX_OUTPUT_CH19: FMOD_DSP_CHANNELMIX = 52;
863pub const FMOD_DSP_CHANNELMIX_OUTPUT_CH20: FMOD_DSP_CHANNELMIX = 53;
864pub const FMOD_DSP_CHANNELMIX_OUTPUT_CH21: FMOD_DSP_CHANNELMIX = 54;
865pub const FMOD_DSP_CHANNELMIX_OUTPUT_CH22: FMOD_DSP_CHANNELMIX = 55;
866pub const FMOD_DSP_CHANNELMIX_OUTPUT_CH23: FMOD_DSP_CHANNELMIX = 56;
867pub const FMOD_DSP_CHANNELMIX_OUTPUT_CH24: FMOD_DSP_CHANNELMIX = 57;
868pub const FMOD_DSP_CHANNELMIX_OUTPUT_CH25: FMOD_DSP_CHANNELMIX = 58;
869pub const FMOD_DSP_CHANNELMIX_OUTPUT_CH26: FMOD_DSP_CHANNELMIX = 59;
870pub const FMOD_DSP_CHANNELMIX_OUTPUT_CH27: FMOD_DSP_CHANNELMIX = 60;
871pub const FMOD_DSP_CHANNELMIX_OUTPUT_CH28: FMOD_DSP_CHANNELMIX = 61;
872pub const FMOD_DSP_CHANNELMIX_OUTPUT_CH29: FMOD_DSP_CHANNELMIX = 62;
873pub const FMOD_DSP_CHANNELMIX_OUTPUT_CH30: FMOD_DSP_CHANNELMIX = 63;
874pub const FMOD_DSP_CHANNELMIX_OUTPUT_CH31: FMOD_DSP_CHANNELMIX = 64;
875pub type FMOD_DSP_TRANSCEIVER_SPEAKERMODE = c_int;
876pub const FMOD_DSP_TRANSCEIVER_SPEAKERMODE_AUTO: FMOD_DSP_TRANSCEIVER_SPEAKERMODE = -1;
877pub const FMOD_DSP_TRANSCEIVER_SPEAKERMODE_MONO: FMOD_DSP_TRANSCEIVER_SPEAKERMODE = 0;
878pub const FMOD_DSP_TRANSCEIVER_SPEAKERMODE_STEREO: FMOD_DSP_TRANSCEIVER_SPEAKERMODE = 1;
879pub const FMOD_DSP_TRANSCEIVER_SPEAKERMODE_SURROUND: FMOD_DSP_TRANSCEIVER_SPEAKERMODE = 2;
880pub type FMOD_DSP_TRANSCEIVER = c_int;
881pub const FMOD_DSP_TRANSCEIVER_TRANSMIT: FMOD_DSP_TRANSCEIVER = 0;
882pub const FMOD_DSP_TRANSCEIVER_GAIN: FMOD_DSP_TRANSCEIVER = 1;
883pub const FMOD_DSP_TRANSCEIVER_CHANNEL: FMOD_DSP_TRANSCEIVER = 2;
884pub const FMOD_DSP_TRANSCEIVER_TRANSMITSPEAKERMODE: FMOD_DSP_TRANSCEIVER = 3;
885pub type FMOD_DSP_OBJECTPAN = c_int;
886pub const FMOD_DSP_OBJECTPAN_3D_POSITION: FMOD_DSP_OBJECTPAN = 0;
887pub const FMOD_DSP_OBJECTPAN_3D_ROLLOFF: FMOD_DSP_OBJECTPAN = 1;
888pub const FMOD_DSP_OBJECTPAN_3D_MIN_DISTANCE: FMOD_DSP_OBJECTPAN = 2;
889pub const FMOD_DSP_OBJECTPAN_3D_MAX_DISTANCE: FMOD_DSP_OBJECTPAN = 3;
890pub const FMOD_DSP_OBJECTPAN_3D_EXTENT_MODE: FMOD_DSP_OBJECTPAN = 4;
891pub const FMOD_DSP_OBJECTPAN_3D_SOUND_SIZE: FMOD_DSP_OBJECTPAN = 5;
892pub const FMOD_DSP_OBJECTPAN_3D_MIN_EXTENT: FMOD_DSP_OBJECTPAN = 6;
893pub const FMOD_DSP_OBJECTPAN_OVERALL_GAIN: FMOD_DSP_OBJECTPAN = 7;
894pub const FMOD_DSP_OBJECTPAN_OUTPUTGAIN: FMOD_DSP_OBJECTPAN = 8;
895pub const FMOD_DSP_OBJECTPAN_ATTENUATION_RANGE: FMOD_DSP_OBJECTPAN = 9;
896pub const FMOD_DSP_OBJECTPAN_OVERRIDE_RANGE: FMOD_DSP_OBJECTPAN = 10;
897pub type FMOD_STUDIO_INITFLAGS = c_uint;
898pub const FMOD_STUDIO_INIT_NORMAL: FMOD_STUDIO_INITFLAGS = 0x00000000;
899pub const FMOD_STUDIO_INIT_LIVEUPDATE: FMOD_STUDIO_INITFLAGS = 0x00000001;
900pub const FMOD_STUDIO_INIT_ALLOW_MISSING_PLUGINS: FMOD_STUDIO_INITFLAGS = 0x00000002;
901pub const FMOD_STUDIO_INIT_SYNCHRONOUS_UPDATE: FMOD_STUDIO_INITFLAGS = 0x00000004;
902pub const FMOD_STUDIO_INIT_DEFERRED_CALLBACKS: FMOD_STUDIO_INITFLAGS = 0x00000008;
903pub const FMOD_STUDIO_INIT_LOAD_FROM_UPDATE: FMOD_STUDIO_INITFLAGS = 0x00000010;
904pub const FMOD_STUDIO_INIT_MEMORY_TRACKING: FMOD_STUDIO_INITFLAGS = 0x00000020;
905pub type FMOD_STUDIO_PARAMETER_FLAGS = c_uint;
906pub const FMOD_STUDIO_PARAMETER_READONLY: FMOD_STUDIO_PARAMETER_FLAGS = 0x00000001;
907pub const FMOD_STUDIO_PARAMETER_AUTOMATIC: FMOD_STUDIO_PARAMETER_FLAGS = 0x00000002;
908pub const FMOD_STUDIO_PARAMETER_GLOBAL: FMOD_STUDIO_PARAMETER_FLAGS = 0x00000004;
909pub const FMOD_STUDIO_PARAMETER_DISCRETE: FMOD_STUDIO_PARAMETER_FLAGS = 0x00000008;
910pub const FMOD_STUDIO_PARAMETER_LABELED: FMOD_STUDIO_PARAMETER_FLAGS = 0x00000010;
911pub type FMOD_STUDIO_SYSTEM_CALLBACK_TYPE = c_uint;
912pub const FMOD_STUDIO_SYSTEM_CALLBACK_PREUPDATE: FMOD_STUDIO_SYSTEM_CALLBACK_TYPE = 0x00000001;
913pub const FMOD_STUDIO_SYSTEM_CALLBACK_POSTUPDATE: FMOD_STUDIO_SYSTEM_CALLBACK_TYPE = 0x00000002;
914pub const FMOD_STUDIO_SYSTEM_CALLBACK_BANK_UNLOAD: FMOD_STUDIO_SYSTEM_CALLBACK_TYPE = 0x00000004;
915pub const FMOD_STUDIO_SYSTEM_CALLBACK_LIVEUPDATE_CONNECTED: FMOD_STUDIO_SYSTEM_CALLBACK_TYPE =
916    0x00000008;
917pub const FMOD_STUDIO_SYSTEM_CALLBACK_LIVEUPDATE_DISCONNECTED: FMOD_STUDIO_SYSTEM_CALLBACK_TYPE =
918    0x00000010;
919pub const FMOD_STUDIO_SYSTEM_CALLBACK_ALL: FMOD_STUDIO_SYSTEM_CALLBACK_TYPE = 0xFFFFFFFF;
920pub type FMOD_STUDIO_EVENT_CALLBACK_TYPE = c_uint;
921pub const FMOD_STUDIO_EVENT_CALLBACK_CREATED: FMOD_STUDIO_EVENT_CALLBACK_TYPE = 0x00000001;
922pub const FMOD_STUDIO_EVENT_CALLBACK_DESTROYED: FMOD_STUDIO_EVENT_CALLBACK_TYPE = 0x00000002;
923pub const FMOD_STUDIO_EVENT_CALLBACK_STARTING: FMOD_STUDIO_EVENT_CALLBACK_TYPE = 0x00000004;
924pub const FMOD_STUDIO_EVENT_CALLBACK_STARTED: FMOD_STUDIO_EVENT_CALLBACK_TYPE = 0x00000008;
925pub const FMOD_STUDIO_EVENT_CALLBACK_RESTARTED: FMOD_STUDIO_EVENT_CALLBACK_TYPE = 0x00000010;
926pub const FMOD_STUDIO_EVENT_CALLBACK_STOPPED: FMOD_STUDIO_EVENT_CALLBACK_TYPE = 0x00000020;
927pub const FMOD_STUDIO_EVENT_CALLBACK_START_FAILED: FMOD_STUDIO_EVENT_CALLBACK_TYPE = 0x00000040;
928pub const FMOD_STUDIO_EVENT_CALLBACK_CREATE_PROGRAMMER_SOUND: FMOD_STUDIO_EVENT_CALLBACK_TYPE =
929    0x00000080;
930pub const FMOD_STUDIO_EVENT_CALLBACK_DESTROY_PROGRAMMER_SOUND: FMOD_STUDIO_EVENT_CALLBACK_TYPE =
931    0x00000100;
932pub const FMOD_STUDIO_EVENT_CALLBACK_PLUGIN_CREATED: FMOD_STUDIO_EVENT_CALLBACK_TYPE = 0x00000200;
933pub const FMOD_STUDIO_EVENT_CALLBACK_PLUGIN_DESTROYED: FMOD_STUDIO_EVENT_CALLBACK_TYPE = 0x00000400;
934pub const FMOD_STUDIO_EVENT_CALLBACK_TIMELINE_MARKER: FMOD_STUDIO_EVENT_CALLBACK_TYPE = 0x00000800;
935pub const FMOD_STUDIO_EVENT_CALLBACK_TIMELINE_BEAT: FMOD_STUDIO_EVENT_CALLBACK_TYPE = 0x00001000;
936pub const FMOD_STUDIO_EVENT_CALLBACK_SOUND_PLAYED: FMOD_STUDIO_EVENT_CALLBACK_TYPE = 0x00002000;
937pub const FMOD_STUDIO_EVENT_CALLBACK_SOUND_STOPPED: FMOD_STUDIO_EVENT_CALLBACK_TYPE = 0x00004000;
938pub const FMOD_STUDIO_EVENT_CALLBACK_REAL_TO_VIRTUAL: FMOD_STUDIO_EVENT_CALLBACK_TYPE = 0x00008000;
939pub const FMOD_STUDIO_EVENT_CALLBACK_VIRTUAL_TO_REAL: FMOD_STUDIO_EVENT_CALLBACK_TYPE = 0x00010000;
940pub const FMOD_STUDIO_EVENT_CALLBACK_START_EVENT_COMMAND: FMOD_STUDIO_EVENT_CALLBACK_TYPE =
941    0x00020000;
942pub const FMOD_STUDIO_EVENT_CALLBACK_NESTED_TIMELINE_BEAT: FMOD_STUDIO_EVENT_CALLBACK_TYPE =
943    0x00040000;
944pub const FMOD_STUDIO_EVENT_CALLBACK_ALL: FMOD_STUDIO_EVENT_CALLBACK_TYPE = 0xFFFFFFFF;
945pub type FMOD_STUDIO_LOAD_BANK_FLAGS = c_uint;
946pub const FMOD_STUDIO_LOAD_BANK_NORMAL: FMOD_STUDIO_LOAD_BANK_FLAGS = 0x00000000;
947pub const FMOD_STUDIO_LOAD_BANK_NONBLOCKING: FMOD_STUDIO_LOAD_BANK_FLAGS = 0x00000001;
948pub const FMOD_STUDIO_LOAD_BANK_DECOMPRESS_SAMPLES: FMOD_STUDIO_LOAD_BANK_FLAGS = 0x00000002;
949pub const FMOD_STUDIO_LOAD_BANK_UNENCRYPTED: FMOD_STUDIO_LOAD_BANK_FLAGS = 0x00000004;
950pub type FMOD_STUDIO_COMMANDCAPTURE_FLAGS = c_uint;
951pub const FMOD_STUDIO_COMMANDCAPTURE_NORMAL: FMOD_STUDIO_COMMANDCAPTURE_FLAGS = 0x00000000;
952pub const FMOD_STUDIO_COMMANDCAPTURE_FILEFLUSH: FMOD_STUDIO_COMMANDCAPTURE_FLAGS = 0x00000001;
953pub const FMOD_STUDIO_COMMANDCAPTURE_SKIP_INITIAL_STATE: FMOD_STUDIO_COMMANDCAPTURE_FLAGS =
954    0x00000002;
955pub type FMOD_STUDIO_COMMANDREPLAY_FLAGS = c_uint;
956pub const FMOD_STUDIO_COMMANDREPLAY_NORMAL: FMOD_STUDIO_COMMANDREPLAY_FLAGS = 0x00000000;
957pub const FMOD_STUDIO_COMMANDREPLAY_SKIP_CLEANUP: FMOD_STUDIO_COMMANDREPLAY_FLAGS = 0x00000001;
958pub const FMOD_STUDIO_COMMANDREPLAY_FAST_FORWARD: FMOD_STUDIO_COMMANDREPLAY_FLAGS = 0x00000002;
959pub const FMOD_STUDIO_COMMANDREPLAY_SKIP_BANK_LOAD: FMOD_STUDIO_COMMANDREPLAY_FLAGS = 0x00000004;
960pub type FMOD_DEBUG_FLAGS = c_uint;
961pub const FMOD_DEBUG_LEVEL_NONE: FMOD_DEBUG_FLAGS = 0x00000000;
962pub const FMOD_DEBUG_LEVEL_ERROR: FMOD_DEBUG_FLAGS = 0x00000001;
963pub const FMOD_DEBUG_LEVEL_WARNING: FMOD_DEBUG_FLAGS = 0x00000002;
964pub const FMOD_DEBUG_LEVEL_LOG: FMOD_DEBUG_FLAGS = 0x00000004;
965pub const FMOD_DEBUG_TYPE_MEMORY: FMOD_DEBUG_FLAGS = 0x00000100;
966pub const FMOD_DEBUG_TYPE_FILE: FMOD_DEBUG_FLAGS = 0x00000200;
967pub const FMOD_DEBUG_TYPE_CODEC: FMOD_DEBUG_FLAGS = 0x00000400;
968pub const FMOD_DEBUG_TYPE_TRACE: FMOD_DEBUG_FLAGS = 0x00000800;
969pub const FMOD_DEBUG_DISPLAY_TIMESTAMPS: FMOD_DEBUG_FLAGS = 0x00010000;
970pub const FMOD_DEBUG_DISPLAY_LINENUMBERS: FMOD_DEBUG_FLAGS = 0x00020000;
971pub const FMOD_DEBUG_DISPLAY_THREAD: FMOD_DEBUG_FLAGS = 0x00040000;
972pub type FMOD_MEMORY_TYPE = c_uint;
973pub const FMOD_MEMORY_NORMAL: FMOD_MEMORY_TYPE = 0x00000000;
974pub const FMOD_MEMORY_STREAM_FILE: FMOD_MEMORY_TYPE = 0x00000001;
975pub const FMOD_MEMORY_STREAM_DECODE: FMOD_MEMORY_TYPE = 0x00000002;
976pub const FMOD_MEMORY_SAMPLEDATA: FMOD_MEMORY_TYPE = 0x00000004;
977pub const FMOD_MEMORY_DSP_BUFFER: FMOD_MEMORY_TYPE = 0x00000008;
978pub const FMOD_MEMORY_PLUGIN: FMOD_MEMORY_TYPE = 0x00000010;
979pub const FMOD_MEMORY_PERSISTENT: FMOD_MEMORY_TYPE = 0x00200000;
980pub const FMOD_MEMORY_ALL: FMOD_MEMORY_TYPE = 0xFFFFFFFF;
981pub type FMOD_INITFLAGS = c_uint;
982pub const FMOD_INIT_NORMAL: FMOD_INITFLAGS = 0x00000000;
983pub const FMOD_INIT_STREAM_FROM_UPDATE: FMOD_INITFLAGS = 0x00000001;
984pub const FMOD_INIT_MIX_FROM_UPDATE: FMOD_INITFLAGS = 0x00000002;
985pub const FMOD_INIT_3D_RIGHTHANDED: FMOD_INITFLAGS = 0x00000004;
986pub const FMOD_INIT_CLIP_OUTPUT: FMOD_INITFLAGS = 0x00000008;
987pub const FMOD_INIT_CHANNEL_LOWPASS: FMOD_INITFLAGS = 0x00000100;
988pub const FMOD_INIT_CHANNEL_DISTANCEFILTER: FMOD_INITFLAGS = 0x00000200;
989pub const FMOD_INIT_PROFILE_ENABLE: FMOD_INITFLAGS = 0x00010000;
990pub const FMOD_INIT_VOL0_BECOMES_VIRTUAL: FMOD_INITFLAGS = 0x00020000;
991pub const FMOD_INIT_GEOMETRY_USECLOSEST: FMOD_INITFLAGS = 0x00040000;
992pub const FMOD_INIT_PREFER_DOLBY_DOWNMIX: FMOD_INITFLAGS = 0x00080000;
993pub const FMOD_INIT_THREAD_UNSAFE: FMOD_INITFLAGS = 0x00100000;
994pub const FMOD_INIT_PROFILE_METER_ALL: FMOD_INITFLAGS = 0x00200000;
995pub const FMOD_INIT_MEMORY_TRACKING: FMOD_INITFLAGS = 0x00400000;
996pub type FMOD_DRIVER_STATE = c_uint;
997pub const FMOD_DRIVER_STATE_CONNECTED: FMOD_DRIVER_STATE = 0x00000001;
998pub const FMOD_DRIVER_STATE_DEFAULT: FMOD_DRIVER_STATE = 0x00000002;
999pub type FMOD_TIMEUNIT = c_uint;
1000pub const FMOD_TIMEUNIT_MS: FMOD_TIMEUNIT = 0x00000001;
1001pub const FMOD_TIMEUNIT_PCM: FMOD_TIMEUNIT = 0x00000002;
1002pub const FMOD_TIMEUNIT_PCMBYTES: FMOD_TIMEUNIT = 0x00000004;
1003pub const FMOD_TIMEUNIT_RAWBYTES: FMOD_TIMEUNIT = 0x00000008;
1004pub const FMOD_TIMEUNIT_PCMFRACTION: FMOD_TIMEUNIT = 0x00000010;
1005pub const FMOD_TIMEUNIT_MODORDER: FMOD_TIMEUNIT = 0x00000100;
1006pub const FMOD_TIMEUNIT_MODROW: FMOD_TIMEUNIT = 0x00000200;
1007pub const FMOD_TIMEUNIT_MODPATTERN: FMOD_TIMEUNIT = 0x00000400;
1008pub type FMOD_SYSTEM_CALLBACK_TYPE = c_uint;
1009pub const FMOD_SYSTEM_CALLBACK_DEVICELISTCHANGED: FMOD_SYSTEM_CALLBACK_TYPE = 0x00000001;
1010pub const FMOD_SYSTEM_CALLBACK_DEVICELOST: FMOD_SYSTEM_CALLBACK_TYPE = 0x00000002;
1011pub const FMOD_SYSTEM_CALLBACK_MEMORYALLOCATIONFAILED: FMOD_SYSTEM_CALLBACK_TYPE = 0x00000004;
1012pub const FMOD_SYSTEM_CALLBACK_THREADCREATED: FMOD_SYSTEM_CALLBACK_TYPE = 0x00000008;
1013pub const FMOD_SYSTEM_CALLBACK_BADDSPCONNECTION: FMOD_SYSTEM_CALLBACK_TYPE = 0x00000010;
1014pub const FMOD_SYSTEM_CALLBACK_PREMIX: FMOD_SYSTEM_CALLBACK_TYPE = 0x00000020;
1015pub const FMOD_SYSTEM_CALLBACK_POSTMIX: FMOD_SYSTEM_CALLBACK_TYPE = 0x00000040;
1016pub const FMOD_SYSTEM_CALLBACK_ERROR: FMOD_SYSTEM_CALLBACK_TYPE = 0x00000080;
1017pub const FMOD_SYSTEM_CALLBACK_MIDMIX: FMOD_SYSTEM_CALLBACK_TYPE = 0x00000100;
1018pub const FMOD_SYSTEM_CALLBACK_THREADDESTROYED: FMOD_SYSTEM_CALLBACK_TYPE = 0x00000200;
1019pub const FMOD_SYSTEM_CALLBACK_PREUPDATE: FMOD_SYSTEM_CALLBACK_TYPE = 0x00000400;
1020pub const FMOD_SYSTEM_CALLBACK_POSTUPDATE: FMOD_SYSTEM_CALLBACK_TYPE = 0x00000800;
1021pub const FMOD_SYSTEM_CALLBACK_RECORDLISTCHANGED: FMOD_SYSTEM_CALLBACK_TYPE = 0x00001000;
1022pub const FMOD_SYSTEM_CALLBACK_BUFFEREDNOMIX: FMOD_SYSTEM_CALLBACK_TYPE = 0x00002000;
1023pub const FMOD_SYSTEM_CALLBACK_DEVICEREINITIALIZE: FMOD_SYSTEM_CALLBACK_TYPE = 0x00004000;
1024pub const FMOD_SYSTEM_CALLBACK_OUTPUTUNDERRUN: FMOD_SYSTEM_CALLBACK_TYPE = 0x00008000;
1025pub const FMOD_SYSTEM_CALLBACK_RECORDPOSITIONCHANGED: FMOD_SYSTEM_CALLBACK_TYPE = 0x00010000;
1026pub const FMOD_SYSTEM_CALLBACK_ALL: FMOD_SYSTEM_CALLBACK_TYPE = 0xFFFFFFFF;
1027pub type FMOD_MODE = c_uint;
1028pub const FMOD_DEFAULT: FMOD_MODE = 0x00000000;
1029pub const FMOD_LOOP_OFF: FMOD_MODE = 0x00000001;
1030pub const FMOD_LOOP_NORMAL: FMOD_MODE = 0x00000002;
1031pub const FMOD_LOOP_BIDI: FMOD_MODE = 0x00000004;
1032pub const FMOD_2D: FMOD_MODE = 0x00000008;
1033pub const FMOD_3D: FMOD_MODE = 0x00000010;
1034pub const FMOD_CREATESTREAM: FMOD_MODE = 0x00000080;
1035pub const FMOD_CREATESAMPLE: FMOD_MODE = 0x00000100;
1036pub const FMOD_CREATECOMPRESSEDSAMPLE: FMOD_MODE = 0x00000200;
1037pub const FMOD_OPENUSER: FMOD_MODE = 0x00000400;
1038pub const FMOD_OPENMEMORY: FMOD_MODE = 0x00000800;
1039pub const FMOD_OPENMEMORY_POINT: FMOD_MODE = 0x10000000;
1040pub const FMOD_OPENRAW: FMOD_MODE = 0x00001000;
1041pub const FMOD_OPENONLY: FMOD_MODE = 0x00002000;
1042pub const FMOD_ACCURATETIME: FMOD_MODE = 0x00004000;
1043pub const FMOD_MPEGSEARCH: FMOD_MODE = 0x00008000;
1044pub const FMOD_NONBLOCKING: FMOD_MODE = 0x00010000;
1045pub const FMOD_UNIQUE: FMOD_MODE = 0x00020000;
1046pub const FMOD_3D_HEADRELATIVE: FMOD_MODE = 0x00040000;
1047pub const FMOD_3D_WORLDRELATIVE: FMOD_MODE = 0x00080000;
1048pub const FMOD_3D_INVERSEROLLOFF: FMOD_MODE = 0x00100000;
1049pub const FMOD_3D_LINEARROLLOFF: FMOD_MODE = 0x00200000;
1050pub const FMOD_3D_LINEARSQUAREROLLOFF: FMOD_MODE = 0x00400000;
1051pub const FMOD_3D_INVERSETAPEREDROLLOFF: FMOD_MODE = 0x00800000;
1052pub const FMOD_3D_CUSTOMROLLOFF: FMOD_MODE = 0x04000000;
1053pub const FMOD_3D_IGNOREGEOMETRY: FMOD_MODE = 0x40000000;
1054pub const FMOD_IGNORETAGS: FMOD_MODE = 0x02000000;
1055pub const FMOD_LOWMEM: FMOD_MODE = 0x08000000;
1056pub const FMOD_VIRTUAL_PLAYFROMSTART: FMOD_MODE = 0x80000000;
1057pub type FMOD_CHANNELMASK = c_uint;
1058pub const FMOD_CHANNELMASK_FRONT_LEFT: FMOD_CHANNELMASK = 0x00000001;
1059pub const FMOD_CHANNELMASK_FRONT_RIGHT: FMOD_CHANNELMASK = 0x00000002;
1060pub const FMOD_CHANNELMASK_FRONT_CENTER: FMOD_CHANNELMASK = 0x00000004;
1061pub const FMOD_CHANNELMASK_LOW_FREQUENCY: FMOD_CHANNELMASK = 0x00000008;
1062pub const FMOD_CHANNELMASK_SURROUND_LEFT: FMOD_CHANNELMASK = 0x00000010;
1063pub const FMOD_CHANNELMASK_SURROUND_RIGHT: FMOD_CHANNELMASK = 0x00000020;
1064pub const FMOD_CHANNELMASK_BACK_LEFT: FMOD_CHANNELMASK = 0x00000040;
1065pub const FMOD_CHANNELMASK_BACK_RIGHT: FMOD_CHANNELMASK = 0x00000080;
1066pub const FMOD_CHANNELMASK_BACK_CENTER: FMOD_CHANNELMASK = 0x00000100;
1067pub const FMOD_CHANNELMASK_MONO: FMOD_CHANNELMASK = (FMOD_CHANNELMASK_FRONT_LEFT);
1068pub const FMOD_CHANNELMASK_STEREO: FMOD_CHANNELMASK =
1069    (FMOD_CHANNELMASK_FRONT_LEFT | FMOD_CHANNELMASK_FRONT_RIGHT);
1070pub const FMOD_CHANNELMASK_LRC: FMOD_CHANNELMASK =
1071    (FMOD_CHANNELMASK_FRONT_LEFT | FMOD_CHANNELMASK_FRONT_RIGHT | FMOD_CHANNELMASK_FRONT_CENTER);
1072pub const FMOD_CHANNELMASK_QUAD: FMOD_CHANNELMASK = (FMOD_CHANNELMASK_FRONT_LEFT
1073    | FMOD_CHANNELMASK_FRONT_RIGHT
1074    | FMOD_CHANNELMASK_SURROUND_LEFT
1075    | FMOD_CHANNELMASK_SURROUND_RIGHT);
1076pub const FMOD_CHANNELMASK_SURROUND: FMOD_CHANNELMASK = (FMOD_CHANNELMASK_FRONT_LEFT
1077    | FMOD_CHANNELMASK_FRONT_RIGHT
1078    | FMOD_CHANNELMASK_FRONT_CENTER
1079    | FMOD_CHANNELMASK_SURROUND_LEFT
1080    | FMOD_CHANNELMASK_SURROUND_RIGHT);
1081pub const FMOD_CHANNELMASK_5POINT1: FMOD_CHANNELMASK = (FMOD_CHANNELMASK_FRONT_LEFT
1082    | FMOD_CHANNELMASK_FRONT_RIGHT
1083    | FMOD_CHANNELMASK_FRONT_CENTER
1084    | FMOD_CHANNELMASK_LOW_FREQUENCY
1085    | FMOD_CHANNELMASK_SURROUND_LEFT
1086    | FMOD_CHANNELMASK_SURROUND_RIGHT);
1087pub const FMOD_CHANNELMASK_5POINT1_REARS: FMOD_CHANNELMASK = (FMOD_CHANNELMASK_FRONT_LEFT
1088    | FMOD_CHANNELMASK_FRONT_RIGHT
1089    | FMOD_CHANNELMASK_FRONT_CENTER
1090    | FMOD_CHANNELMASK_LOW_FREQUENCY
1091    | FMOD_CHANNELMASK_BACK_LEFT
1092    | FMOD_CHANNELMASK_BACK_RIGHT);
1093pub const FMOD_CHANNELMASK_7POINT0: FMOD_CHANNELMASK = (FMOD_CHANNELMASK_FRONT_LEFT
1094    | FMOD_CHANNELMASK_FRONT_RIGHT
1095    | FMOD_CHANNELMASK_FRONT_CENTER
1096    | FMOD_CHANNELMASK_SURROUND_LEFT
1097    | FMOD_CHANNELMASK_SURROUND_RIGHT
1098    | FMOD_CHANNELMASK_BACK_LEFT
1099    | FMOD_CHANNELMASK_BACK_RIGHT);
1100pub const FMOD_CHANNELMASK_7POINT1: FMOD_CHANNELMASK = (FMOD_CHANNELMASK_FRONT_LEFT
1101    | FMOD_CHANNELMASK_FRONT_RIGHT
1102    | FMOD_CHANNELMASK_FRONT_CENTER
1103    | FMOD_CHANNELMASK_LOW_FREQUENCY
1104    | FMOD_CHANNELMASK_SURROUND_LEFT
1105    | FMOD_CHANNELMASK_SURROUND_RIGHT
1106    | FMOD_CHANNELMASK_BACK_LEFT
1107    | FMOD_CHANNELMASK_BACK_RIGHT);
1108pub type FMOD_PORT_INDEX = c_ulonglong;
1109pub const FMOD_PORT_INDEX_NONE: FMOD_PORT_INDEX = 0xFFFFFFFFFFFFFFFF;
1110pub const FMOD_PORT_INDEX_FLAG_VR_CONTROLLER: FMOD_PORT_INDEX = 0x1000000000000000;
1111pub type FMOD_THREAD_PRIORITY = c_int;
1112pub const FMOD_THREAD_PRIORITY_PLATFORM_MIN: FMOD_THREAD_PRIORITY = (-32 * 1024);
1113pub const FMOD_THREAD_PRIORITY_PLATFORM_MAX: FMOD_THREAD_PRIORITY = (32 * 1024);
1114pub const FMOD_THREAD_PRIORITY_DEFAULT: FMOD_THREAD_PRIORITY =
1115    (FMOD_THREAD_PRIORITY_PLATFORM_MIN - 1);
1116pub const FMOD_THREAD_PRIORITY_LOW: FMOD_THREAD_PRIORITY = (FMOD_THREAD_PRIORITY_PLATFORM_MIN - 2);
1117pub const FMOD_THREAD_PRIORITY_MEDIUM: FMOD_THREAD_PRIORITY =
1118    (FMOD_THREAD_PRIORITY_PLATFORM_MIN - 3);
1119pub const FMOD_THREAD_PRIORITY_HIGH: FMOD_THREAD_PRIORITY = (FMOD_THREAD_PRIORITY_PLATFORM_MIN - 4);
1120pub const FMOD_THREAD_PRIORITY_VERY_HIGH: FMOD_THREAD_PRIORITY =
1121    (FMOD_THREAD_PRIORITY_PLATFORM_MIN - 5);
1122pub const FMOD_THREAD_PRIORITY_EXTREME: FMOD_THREAD_PRIORITY =
1123    (FMOD_THREAD_PRIORITY_PLATFORM_MIN - 6);
1124pub const FMOD_THREAD_PRIORITY_CRITICAL: FMOD_THREAD_PRIORITY =
1125    (FMOD_THREAD_PRIORITY_PLATFORM_MIN - 7);
1126pub const FMOD_THREAD_PRIORITY_MIXER: FMOD_THREAD_PRIORITY = FMOD_THREAD_PRIORITY_EXTREME;
1127pub const FMOD_THREAD_PRIORITY_FEEDER: FMOD_THREAD_PRIORITY = FMOD_THREAD_PRIORITY_CRITICAL;
1128pub const FMOD_THREAD_PRIORITY_STREAM: FMOD_THREAD_PRIORITY = FMOD_THREAD_PRIORITY_VERY_HIGH;
1129pub const FMOD_THREAD_PRIORITY_FILE: FMOD_THREAD_PRIORITY = FMOD_THREAD_PRIORITY_HIGH;
1130pub const FMOD_THREAD_PRIORITY_NONBLOCKING: FMOD_THREAD_PRIORITY = FMOD_THREAD_PRIORITY_HIGH;
1131pub const FMOD_THREAD_PRIORITY_RECORD: FMOD_THREAD_PRIORITY = FMOD_THREAD_PRIORITY_HIGH;
1132pub const FMOD_THREAD_PRIORITY_GEOMETRY: FMOD_THREAD_PRIORITY = FMOD_THREAD_PRIORITY_LOW;
1133pub const FMOD_THREAD_PRIORITY_PROFILER: FMOD_THREAD_PRIORITY = FMOD_THREAD_PRIORITY_MEDIUM;
1134pub const FMOD_THREAD_PRIORITY_STUDIO_UPDATE: FMOD_THREAD_PRIORITY = FMOD_THREAD_PRIORITY_MEDIUM;
1135pub const FMOD_THREAD_PRIORITY_STUDIO_LOAD_BANK: FMOD_THREAD_PRIORITY = FMOD_THREAD_PRIORITY_MEDIUM;
1136pub const FMOD_THREAD_PRIORITY_STUDIO_LOAD_SAMPLE: FMOD_THREAD_PRIORITY =
1137    FMOD_THREAD_PRIORITY_MEDIUM;
1138pub const FMOD_THREAD_PRIORITY_CONVOLUTION1: FMOD_THREAD_PRIORITY = FMOD_THREAD_PRIORITY_VERY_HIGH;
1139pub const FMOD_THREAD_PRIORITY_CONVOLUTION2: FMOD_THREAD_PRIORITY = FMOD_THREAD_PRIORITY_VERY_HIGH;
1140pub type FMOD_THREAD_STACK_SIZE = c_uint;
1141pub const FMOD_THREAD_STACK_SIZE_DEFAULT: FMOD_THREAD_STACK_SIZE = 0;
1142pub const FMOD_THREAD_STACK_SIZE_MIXER: FMOD_THREAD_STACK_SIZE = (80 * 1024);
1143pub const FMOD_THREAD_STACK_SIZE_FEEDER: FMOD_THREAD_STACK_SIZE = (16 * 1024);
1144pub const FMOD_THREAD_STACK_SIZE_STREAM: FMOD_THREAD_STACK_SIZE = (96 * 1024);
1145pub const FMOD_THREAD_STACK_SIZE_FILE: FMOD_THREAD_STACK_SIZE = (64 * 1024);
1146pub const FMOD_THREAD_STACK_SIZE_NONBLOCKING: FMOD_THREAD_STACK_SIZE = (112 * 1024);
1147pub const FMOD_THREAD_STACK_SIZE_RECORD: FMOD_THREAD_STACK_SIZE = (16 * 1024);
1148pub const FMOD_THREAD_STACK_SIZE_GEOMETRY: FMOD_THREAD_STACK_SIZE = (48 * 1024);
1149pub const FMOD_THREAD_STACK_SIZE_PROFILER: FMOD_THREAD_STACK_SIZE = (128 * 1024);
1150pub const FMOD_THREAD_STACK_SIZE_STUDIO_UPDATE: FMOD_THREAD_STACK_SIZE = (96 * 1024);
1151pub const FMOD_THREAD_STACK_SIZE_STUDIO_LOAD_BANK: FMOD_THREAD_STACK_SIZE = (96 * 1024);
1152pub const FMOD_THREAD_STACK_SIZE_STUDIO_LOAD_SAMPLE: FMOD_THREAD_STACK_SIZE = (96 * 1024);
1153pub const FMOD_THREAD_STACK_SIZE_CONVOLUTION1: FMOD_THREAD_STACK_SIZE = (16 * 1024);
1154pub const FMOD_THREAD_STACK_SIZE_CONVOLUTION2: FMOD_THREAD_STACK_SIZE = (16 * 1024);
1155pub type FMOD_THREAD_AFFINITY = c_longlong;
1156pub const FMOD_THREAD_AFFINITY_GROUP_DEFAULT: FMOD_THREAD_AFFINITY = 0x4000000000000000;
1157pub const FMOD_THREAD_AFFINITY_GROUP_A: FMOD_THREAD_AFFINITY = 0x4000000000000001;
1158pub const FMOD_THREAD_AFFINITY_GROUP_B: FMOD_THREAD_AFFINITY = 0x4000000000000002;
1159pub const FMOD_THREAD_AFFINITY_GROUP_C: FMOD_THREAD_AFFINITY = 0x4000000000000003;
1160pub const FMOD_THREAD_AFFINITY_MIXER: FMOD_THREAD_AFFINITY = FMOD_THREAD_AFFINITY_GROUP_A;
1161pub const FMOD_THREAD_AFFINITY_FEEDER: FMOD_THREAD_AFFINITY = FMOD_THREAD_AFFINITY_GROUP_C;
1162pub const FMOD_THREAD_AFFINITY_STREAM: FMOD_THREAD_AFFINITY = FMOD_THREAD_AFFINITY_GROUP_C;
1163pub const FMOD_THREAD_AFFINITY_FILE: FMOD_THREAD_AFFINITY = FMOD_THREAD_AFFINITY_GROUP_C;
1164pub const FMOD_THREAD_AFFINITY_NONBLOCKING: FMOD_THREAD_AFFINITY = FMOD_THREAD_AFFINITY_GROUP_C;
1165pub const FMOD_THREAD_AFFINITY_RECORD: FMOD_THREAD_AFFINITY = FMOD_THREAD_AFFINITY_GROUP_C;
1166pub const FMOD_THREAD_AFFINITY_GEOMETRY: FMOD_THREAD_AFFINITY = FMOD_THREAD_AFFINITY_GROUP_C;
1167pub const FMOD_THREAD_AFFINITY_PROFILER: FMOD_THREAD_AFFINITY = FMOD_THREAD_AFFINITY_GROUP_C;
1168pub const FMOD_THREAD_AFFINITY_STUDIO_UPDATE: FMOD_THREAD_AFFINITY = FMOD_THREAD_AFFINITY_GROUP_B;
1169pub const FMOD_THREAD_AFFINITY_STUDIO_LOAD_BANK: FMOD_THREAD_AFFINITY =
1170    FMOD_THREAD_AFFINITY_GROUP_C;
1171pub const FMOD_THREAD_AFFINITY_STUDIO_LOAD_SAMPLE: FMOD_THREAD_AFFINITY =
1172    FMOD_THREAD_AFFINITY_GROUP_C;
1173pub const FMOD_THREAD_AFFINITY_CONVOLUTION1: FMOD_THREAD_AFFINITY = FMOD_THREAD_AFFINITY_GROUP_C;
1174pub const FMOD_THREAD_AFFINITY_CONVOLUTION2: FMOD_THREAD_AFFINITY = FMOD_THREAD_AFFINITY_GROUP_C;
1175pub const FMOD_THREAD_AFFINITY_CORE_ALL: FMOD_THREAD_AFFINITY = 0;
1176pub const FMOD_THREAD_AFFINITY_CORE_0: FMOD_THREAD_AFFINITY = (1 << 0);
1177pub const FMOD_THREAD_AFFINITY_CORE_1: FMOD_THREAD_AFFINITY = (1 << 1);
1178pub const FMOD_THREAD_AFFINITY_CORE_2: FMOD_THREAD_AFFINITY = (1 << 2);
1179pub const FMOD_THREAD_AFFINITY_CORE_3: FMOD_THREAD_AFFINITY = (1 << 3);
1180pub const FMOD_THREAD_AFFINITY_CORE_4: FMOD_THREAD_AFFINITY = (1 << 4);
1181pub const FMOD_THREAD_AFFINITY_CORE_5: FMOD_THREAD_AFFINITY = (1 << 5);
1182pub const FMOD_THREAD_AFFINITY_CORE_6: FMOD_THREAD_AFFINITY = (1 << 6);
1183pub const FMOD_THREAD_AFFINITY_CORE_7: FMOD_THREAD_AFFINITY = (1 << 7);
1184pub const FMOD_THREAD_AFFINITY_CORE_8: FMOD_THREAD_AFFINITY = (1 << 8);
1185pub const FMOD_THREAD_AFFINITY_CORE_9: FMOD_THREAD_AFFINITY = (1 << 9);
1186pub const FMOD_THREAD_AFFINITY_CORE_10: FMOD_THREAD_AFFINITY = (1 << 10);
1187pub const FMOD_THREAD_AFFINITY_CORE_11: FMOD_THREAD_AFFINITY = (1 << 11);
1188pub const FMOD_THREAD_AFFINITY_CORE_12: FMOD_THREAD_AFFINITY = (1 << 12);
1189pub const FMOD_THREAD_AFFINITY_CORE_13: FMOD_THREAD_AFFINITY = (1 << 13);
1190pub const FMOD_THREAD_AFFINITY_CORE_14: FMOD_THREAD_AFFINITY = (1 << 14);
1191pub const FMOD_THREAD_AFFINITY_CORE_15: FMOD_THREAD_AFFINITY = (1 << 15);
1192pub type FMOD_CODEC_SEEK_METHOD = c_int;
1193pub const FMOD_CODEC_SEEK_METHOD_SET: FMOD_CODEC_SEEK_METHOD = 0;
1194pub const FMOD_CODEC_SEEK_METHOD_CURRENT: FMOD_CODEC_SEEK_METHOD = 1;
1195pub const FMOD_CODEC_SEEK_METHOD_END: FMOD_CODEC_SEEK_METHOD = 2;
1196pub type FMOD_OUTPUT_METHOD = c_uint;
1197pub const FMOD_OUTPUT_METHOD_MIX_DIRECT: FMOD_OUTPUT_METHOD = 0;
1198pub const FMOD_OUTPUT_METHOD_MIX_BUFFERED: FMOD_OUTPUT_METHOD = 1;
1199#[repr(C)]
1200#[derive(Debug, Copy, Clone)]
1201pub struct FMOD_STUDIO_BANK_INFO {
1202    pub size: c_int,
1203    pub userdata: *mut c_void,
1204    pub userdatalength: c_int,
1205    pub opencallback: FMOD_FILE_OPEN_CALLBACK,
1206    pub closecallback: FMOD_FILE_CLOSE_CALLBACK,
1207    pub readcallback: FMOD_FILE_READ_CALLBACK,
1208    pub seekcallback: FMOD_FILE_SEEK_CALLBACK,
1209}
1210impl Default for FMOD_STUDIO_BANK_INFO {
1211    fn default() -> Self {
1212        unsafe { std::mem::zeroed() }
1213    }
1214}
1215#[repr(C)]
1216#[derive(Debug, Copy, Clone)]
1217pub struct FMOD_STUDIO_PARAMETER_ID {
1218    pub data1: c_uint,
1219    pub data2: c_uint,
1220}
1221impl Default for FMOD_STUDIO_PARAMETER_ID {
1222    fn default() -> Self {
1223        unsafe { std::mem::zeroed() }
1224    }
1225}
1226#[repr(C)]
1227#[derive(Debug, Copy, Clone)]
1228pub struct FMOD_STUDIO_PARAMETER_DESCRIPTION {
1229    pub name: *const c_char,
1230    pub id: FMOD_STUDIO_PARAMETER_ID,
1231    pub minimum: c_float,
1232    pub maximum: c_float,
1233    pub defaultvalue: c_float,
1234    pub type_: FMOD_STUDIO_PARAMETER_TYPE,
1235    pub flags: FMOD_STUDIO_PARAMETER_FLAGS,
1236    pub guid: FMOD_GUID,
1237}
1238impl Default for FMOD_STUDIO_PARAMETER_DESCRIPTION {
1239    fn default() -> Self {
1240        unsafe { std::mem::zeroed() }
1241    }
1242}
1243#[repr(C)]
1244#[derive(Copy, Clone)]
1245pub struct FMOD_STUDIO_USER_PROPERTY {
1246    pub name: *const c_char,
1247    pub type_: FMOD_STUDIO_USER_PROPERTY_TYPE,
1248    pub union: FMOD_STUDIO_USER_PROPERTY_UNION,
1249}
1250impl Default for FMOD_STUDIO_USER_PROPERTY {
1251    fn default() -> Self {
1252        unsafe { std::mem::zeroed() }
1253    }
1254}
1255#[repr(C)]
1256#[derive(Copy, Clone)]
1257pub union FMOD_STUDIO_USER_PROPERTY_UNION {
1258    pub intvalue: c_int,
1259    pub boolvalue: FMOD_BOOL,
1260    pub floatvalue: c_float,
1261    pub stringvalue: *const c_char,
1262}
1263#[repr(C)]
1264#[derive(Debug, Copy, Clone)]
1265pub struct FMOD_STUDIO_PROGRAMMER_SOUND_PROPERTIES {
1266    pub name: *const c_char,
1267    pub sound: *mut FMOD_SOUND,
1268    pub subsoundIndex: c_int,
1269}
1270impl Default for FMOD_STUDIO_PROGRAMMER_SOUND_PROPERTIES {
1271    fn default() -> Self {
1272        unsafe { std::mem::zeroed() }
1273    }
1274}
1275#[repr(C)]
1276#[derive(Debug, Copy, Clone)]
1277pub struct FMOD_STUDIO_PLUGIN_INSTANCE_PROPERTIES {
1278    pub name: *const c_char,
1279    pub dsp: *mut FMOD_DSP,
1280}
1281impl Default for FMOD_STUDIO_PLUGIN_INSTANCE_PROPERTIES {
1282    fn default() -> Self {
1283        unsafe { std::mem::zeroed() }
1284    }
1285}
1286#[repr(C)]
1287#[derive(Debug, Copy, Clone)]
1288pub struct FMOD_STUDIO_TIMELINE_MARKER_PROPERTIES {
1289    pub name: *const c_char,
1290    pub position: c_int,
1291}
1292impl Default for FMOD_STUDIO_TIMELINE_MARKER_PROPERTIES {
1293    fn default() -> Self {
1294        unsafe { std::mem::zeroed() }
1295    }
1296}
1297#[repr(C)]
1298#[derive(Debug, Copy, Clone)]
1299pub struct FMOD_STUDIO_TIMELINE_BEAT_PROPERTIES {
1300    pub bar: c_int,
1301    pub beat: c_int,
1302    pub position: c_int,
1303    pub tempo: c_float,
1304    pub timesignatureupper: c_int,
1305    pub timesignaturelower: c_int,
1306}
1307impl Default for FMOD_STUDIO_TIMELINE_BEAT_PROPERTIES {
1308    fn default() -> Self {
1309        unsafe { std::mem::zeroed() }
1310    }
1311}
1312#[repr(C)]
1313#[derive(Debug, Copy, Clone)]
1314pub struct FMOD_STUDIO_TIMELINE_NESTED_BEAT_PROPERTIES {
1315    pub eventid: FMOD_GUID,
1316    pub properties: FMOD_STUDIO_TIMELINE_BEAT_PROPERTIES,
1317}
1318impl Default for FMOD_STUDIO_TIMELINE_NESTED_BEAT_PROPERTIES {
1319    fn default() -> Self {
1320        unsafe { std::mem::zeroed() }
1321    }
1322}
1323#[repr(C)]
1324#[derive(Debug, Copy, Clone)]
1325pub struct FMOD_STUDIO_ADVANCEDSETTINGS {
1326    pub cbsize: c_int,
1327    pub commandqueuesize: c_uint,
1328    pub handleinitialsize: c_uint,
1329    pub studioupdateperiod: c_int,
1330    pub idlesampledatapoolsize: c_int,
1331    pub streamingscheduledelay: c_uint,
1332    pub encryptionkey: *const c_char,
1333}
1334impl Default for FMOD_STUDIO_ADVANCEDSETTINGS {
1335    fn default() -> Self {
1336        let mut value: Self = unsafe { std::mem::zeroed() };
1337        value.cbsize = std::mem::size_of::<FMOD_STUDIO_ADVANCEDSETTINGS>() as _;
1338        value
1339    }
1340}
1341#[repr(C)]
1342#[derive(Debug, Copy, Clone)]
1343pub struct FMOD_STUDIO_CPU_USAGE {
1344    pub update: c_float,
1345}
1346impl Default for FMOD_STUDIO_CPU_USAGE {
1347    fn default() -> Self {
1348        unsafe { std::mem::zeroed() }
1349    }
1350}
1351#[repr(C)]
1352#[derive(Debug, Copy, Clone)]
1353pub struct FMOD_STUDIO_BUFFER_INFO {
1354    pub currentusage: c_int,
1355    pub peakusage: c_int,
1356    pub capacity: c_int,
1357    pub stallcount: c_int,
1358    pub stalltime: c_float,
1359}
1360impl Default for FMOD_STUDIO_BUFFER_INFO {
1361    fn default() -> Self {
1362        unsafe { std::mem::zeroed() }
1363    }
1364}
1365#[repr(C)]
1366#[derive(Debug, Copy, Clone)]
1367pub struct FMOD_STUDIO_BUFFER_USAGE {
1368    pub studiocommandqueue: FMOD_STUDIO_BUFFER_INFO,
1369    pub studiohandle: FMOD_STUDIO_BUFFER_INFO,
1370}
1371impl Default for FMOD_STUDIO_BUFFER_USAGE {
1372    fn default() -> Self {
1373        unsafe { std::mem::zeroed() }
1374    }
1375}
1376#[repr(C)]
1377#[derive(Debug, Copy, Clone)]
1378pub struct FMOD_STUDIO_SOUND_INFO {
1379    pub name_or_data: *const c_char,
1380    pub mode: FMOD_MODE,
1381    pub exinfo: FMOD_CREATESOUNDEXINFO,
1382    pub subsoundindex: c_int,
1383}
1384impl Default for FMOD_STUDIO_SOUND_INFO {
1385    fn default() -> Self {
1386        unsafe { std::mem::zeroed() }
1387    }
1388}
1389#[repr(C)]
1390#[derive(Debug, Copy, Clone)]
1391pub struct FMOD_STUDIO_COMMAND_INFO {
1392    pub commandname: *const c_char,
1393    pub parentcommandindex: c_int,
1394    pub framenumber: c_int,
1395    pub frametime: c_float,
1396    pub instancetype: FMOD_STUDIO_INSTANCETYPE,
1397    pub outputtype: FMOD_STUDIO_INSTANCETYPE,
1398    pub instancehandle: c_uint,
1399    pub outputhandle: c_uint,
1400}
1401impl Default for FMOD_STUDIO_COMMAND_INFO {
1402    fn default() -> Self {
1403        unsafe { std::mem::zeroed() }
1404    }
1405}
1406#[repr(C)]
1407#[derive(Debug, Copy, Clone)]
1408pub struct FMOD_STUDIO_MEMORY_USAGE {
1409    pub exclusive: c_int,
1410    pub inclusive: c_int,
1411    pub sampledata: c_int,
1412}
1413impl Default for FMOD_STUDIO_MEMORY_USAGE {
1414    fn default() -> Self {
1415        unsafe { std::mem::zeroed() }
1416    }
1417}
1418#[repr(C)]
1419#[derive(Debug, Copy, Clone)]
1420pub struct FMOD_ASYNCREADINFO {
1421    pub handle: *mut c_void,
1422    pub offset: c_uint,
1423    pub sizebytes: c_uint,
1424    pub priority: c_int,
1425    pub userdata: *mut c_void,
1426    pub buffer: *mut c_void,
1427    pub bytesread: c_uint,
1428    pub done: FMOD_FILE_ASYNCDONE_FUNC,
1429}
1430impl Default for FMOD_ASYNCREADINFO {
1431    fn default() -> Self {
1432        unsafe { std::mem::zeroed() }
1433    }
1434}
1435#[repr(C)]
1436#[derive(Debug, Copy, Clone)]
1437pub struct FMOD_VECTOR {
1438    pub x: c_float,
1439    pub y: c_float,
1440    pub z: c_float,
1441}
1442impl Default for FMOD_VECTOR {
1443    fn default() -> Self {
1444        unsafe { std::mem::zeroed() }
1445    }
1446}
1447#[repr(C)]
1448#[derive(Debug, Copy, Clone)]
1449pub struct FMOD_3D_ATTRIBUTES {
1450    pub position: FMOD_VECTOR,
1451    pub velocity: FMOD_VECTOR,
1452    pub forward: FMOD_VECTOR,
1453    pub up: FMOD_VECTOR,
1454}
1455impl Default for FMOD_3D_ATTRIBUTES {
1456    fn default() -> Self {
1457        unsafe { std::mem::zeroed() }
1458    }
1459}
1460#[repr(C)]
1461#[derive(Debug, Copy, Clone)]
1462pub struct FMOD_GUID {
1463    pub Data1: c_uint,
1464    pub Data2: c_ushort,
1465    pub Data3: c_ushort,
1466    pub Data4: [c_uchar; 8 as usize],
1467}
1468impl Default for FMOD_GUID {
1469    fn default() -> Self {
1470        unsafe { std::mem::zeroed() }
1471    }
1472}
1473#[repr(C)]
1474#[derive(Debug, Copy, Clone)]
1475pub struct FMOD_PLUGINLIST {
1476    pub type_: FMOD_PLUGINTYPE,
1477    pub description: *mut c_void,
1478}
1479impl Default for FMOD_PLUGINLIST {
1480    fn default() -> Self {
1481        unsafe { std::mem::zeroed() }
1482    }
1483}
1484#[repr(C)]
1485#[derive(Debug, Copy, Clone)]
1486pub struct FMOD_ADVANCEDSETTINGS {
1487    pub cbSize: c_int,
1488    pub maxMPEGCodecs: c_int,
1489    pub maxADPCMCodecs: c_int,
1490    pub maxXMACodecs: c_int,
1491    pub maxVorbisCodecs: c_int,
1492    pub maxAT9Codecs: c_int,
1493    pub maxFADPCMCodecs: c_int,
1494    pub maxPCMCodecs: c_int,
1495    pub ASIONumChannels: c_int,
1496    pub ASIOChannelList: *mut *mut c_char,
1497    pub ASIOSpeakerList: *mut FMOD_SPEAKER,
1498    pub vol0virtualvol: c_float,
1499    pub defaultDecodeBufferSize: c_uint,
1500    pub profilePort: c_ushort,
1501    pub geometryMaxFadeTime: c_uint,
1502    pub distanceFilterCenterFreq: c_float,
1503    pub reverb3Dinstance: c_int,
1504    pub DSPBufferPoolSize: c_int,
1505    pub resamplerMethod: FMOD_DSP_RESAMPLER,
1506    pub randomSeed: c_uint,
1507    pub maxConvolutionThreads: c_int,
1508    pub maxOpusCodecs: c_int,
1509    pub maxSpatialObjects: c_int,
1510}
1511impl Default for FMOD_ADVANCEDSETTINGS {
1512    fn default() -> Self {
1513        let mut value: Self = unsafe { std::mem::zeroed() };
1514        value.cbSize = std::mem::size_of::<FMOD_ADVANCEDSETTINGS>() as _;
1515        value
1516    }
1517}
1518#[repr(C)]
1519#[derive(Debug, Copy, Clone)]
1520pub struct FMOD_TAG {
1521    pub type_: FMOD_TAGTYPE,
1522    pub datatype: FMOD_TAGDATATYPE,
1523    pub name: *mut c_char,
1524    pub data: *mut c_void,
1525    pub datalen: c_uint,
1526    pub updated: FMOD_BOOL,
1527}
1528impl Default for FMOD_TAG {
1529    fn default() -> Self {
1530        unsafe { std::mem::zeroed() }
1531    }
1532}
1533#[repr(C)]
1534#[derive(Debug, Copy, Clone)]
1535pub struct FMOD_CREATESOUNDEXINFO {
1536    pub cbsize: c_int,
1537    pub length: c_uint,
1538    pub fileoffset: c_uint,
1539    pub numchannels: c_int,
1540    pub defaultfrequency: c_int,
1541    pub format: FMOD_SOUND_FORMAT,
1542    pub decodebuffersize: c_uint,
1543    pub initialsubsound: c_int,
1544    pub numsubsounds: c_int,
1545    pub inclusionlist: *mut c_int,
1546    pub inclusionlistnum: c_int,
1547    pub pcmreadcallback: FMOD_SOUND_PCMREAD_CALLBACK,
1548    pub pcmsetposcallback: FMOD_SOUND_PCMSETPOS_CALLBACK,
1549    pub nonblockcallback: FMOD_SOUND_NONBLOCK_CALLBACK,
1550    pub dlsname: *const c_char,
1551    pub encryptionkey: *const c_char,
1552    pub maxpolyphony: c_int,
1553    pub userdata: *mut c_void,
1554    pub suggestedsoundtype: FMOD_SOUND_TYPE,
1555    pub fileuseropen: FMOD_FILE_OPEN_CALLBACK,
1556    pub fileuserclose: FMOD_FILE_CLOSE_CALLBACK,
1557    pub fileuserread: FMOD_FILE_READ_CALLBACK,
1558    pub fileuserseek: FMOD_FILE_SEEK_CALLBACK,
1559    pub fileuserasyncread: FMOD_FILE_ASYNCREAD_CALLBACK,
1560    pub fileuserasynccancel: FMOD_FILE_ASYNCCANCEL_CALLBACK,
1561    pub fileuserdata: *mut c_void,
1562    pub filebuffersize: c_int,
1563    pub channelorder: FMOD_CHANNELORDER,
1564    pub initialsoundgroup: *mut FMOD_SOUNDGROUP,
1565    pub initialseekposition: c_uint,
1566    pub initialseekpostype: FMOD_TIMEUNIT,
1567    pub ignoresetfilesystem: c_int,
1568    pub audioqueuepolicy: c_uint,
1569    pub minmidigranularity: c_uint,
1570    pub nonblockthreadid: c_int,
1571    pub fsbguid: *mut FMOD_GUID,
1572}
1573impl Default for FMOD_CREATESOUNDEXINFO {
1574    fn default() -> Self {
1575        let mut value: Self = unsafe { std::mem::zeroed() };
1576        value.cbsize = std::mem::size_of::<FMOD_CREATESOUNDEXINFO>() as _;
1577        value
1578    }
1579}
1580#[repr(C)]
1581#[derive(Debug, Copy, Clone)]
1582pub struct FMOD_REVERB_PROPERTIES {
1583    pub DecayTime: c_float,
1584    pub EarlyDelay: c_float,
1585    pub LateDelay: c_float,
1586    pub HFReference: c_float,
1587    pub HFDecayRatio: c_float,
1588    pub Diffusion: c_float,
1589    pub Density: c_float,
1590    pub LowShelfFrequency: c_float,
1591    pub LowShelfGain: c_float,
1592    pub HighCut: c_float,
1593    pub EarlyLateMix: c_float,
1594    pub WetLevel: c_float,
1595}
1596impl Default for FMOD_REVERB_PROPERTIES {
1597    fn default() -> Self {
1598        unsafe { std::mem::zeroed() }
1599    }
1600}
1601#[repr(C)]
1602#[derive(Debug, Copy, Clone)]
1603pub struct FMOD_ERRORCALLBACK_INFO {
1604    pub result: FMOD_RESULT,
1605    pub instancetype: FMOD_ERRORCALLBACK_INSTANCETYPE,
1606    pub instance: *mut c_void,
1607    pub functionname: *const c_char,
1608    pub functionparams: *const c_char,
1609}
1610impl Default for FMOD_ERRORCALLBACK_INFO {
1611    fn default() -> Self {
1612        unsafe { std::mem::zeroed() }
1613    }
1614}
1615#[repr(C)]
1616#[derive(Debug, Copy, Clone)]
1617pub struct FMOD_CPU_USAGE {
1618    pub dsp: c_float,
1619    pub stream: c_float,
1620    pub geometry: c_float,
1621    pub update: c_float,
1622    pub convolution1: c_float,
1623    pub convolution2: c_float,
1624}
1625impl Default for FMOD_CPU_USAGE {
1626    fn default() -> Self {
1627        unsafe { std::mem::zeroed() }
1628    }
1629}
1630#[repr(C)]
1631#[derive(Debug, Copy, Clone)]
1632pub struct FMOD_DSP_DATA_PARAMETER_INFO {
1633    pub data: *mut c_void,
1634    pub length: c_uint,
1635    pub index: c_int,
1636}
1637impl Default for FMOD_DSP_DATA_PARAMETER_INFO {
1638    fn default() -> Self {
1639        unsafe { std::mem::zeroed() }
1640    }
1641}
1642#[repr(C)]
1643#[derive(Debug, Copy, Clone)]
1644pub struct FMOD_CODEC_DESCRIPTION {
1645    pub apiversion: c_uint,
1646    pub name: *const c_char,
1647    pub version: c_uint,
1648    pub defaultasstream: c_int,
1649    pub timeunits: FMOD_TIMEUNIT,
1650    pub open: FMOD_CODEC_OPEN_CALLBACK,
1651    pub close: FMOD_CODEC_CLOSE_CALLBACK,
1652    pub read: FMOD_CODEC_READ_CALLBACK,
1653    pub getlength: FMOD_CODEC_GETLENGTH_CALLBACK,
1654    pub setposition: FMOD_CODEC_SETPOSITION_CALLBACK,
1655    pub getposition: FMOD_CODEC_GETPOSITION_CALLBACK,
1656    pub soundcreate: FMOD_CODEC_SOUNDCREATE_CALLBACK,
1657    pub getwaveformat: FMOD_CODEC_GETWAVEFORMAT_CALLBACK,
1658}
1659impl Default for FMOD_CODEC_DESCRIPTION {
1660    fn default() -> Self {
1661        unsafe { std::mem::zeroed() }
1662    }
1663}
1664#[repr(C)]
1665#[derive(Debug, Copy, Clone)]
1666pub struct FMOD_CODEC_WAVEFORMAT {
1667    pub name: *const c_char,
1668    pub format: FMOD_SOUND_FORMAT,
1669    pub channels: c_int,
1670    pub frequency: c_int,
1671    pub lengthbytes: c_uint,
1672    pub lengthpcm: c_uint,
1673    pub pcmblocksize: c_uint,
1674    pub loopstart: c_int,
1675    pub loopend: c_int,
1676    pub mode: FMOD_MODE,
1677    pub channelmask: FMOD_CHANNELMASK,
1678    pub channelorder: FMOD_CHANNELORDER,
1679    pub peakvolume: c_float,
1680}
1681impl Default for FMOD_CODEC_WAVEFORMAT {
1682    fn default() -> Self {
1683        unsafe { std::mem::zeroed() }
1684    }
1685}
1686#[repr(C)]
1687#[derive(Debug, Copy, Clone)]
1688pub struct FMOD_CODEC_STATE_FUNCTIONS {
1689    pub metadata: FMOD_CODEC_METADATA_FUNC,
1690    pub alloc: FMOD_CODEC_ALLOC_FUNC,
1691    pub free: FMOD_CODEC_FREE_FUNC,
1692    pub log: FMOD_CODEC_LOG_FUNC,
1693    pub read: FMOD_CODEC_FILE_READ_FUNC,
1694    pub seek: FMOD_CODEC_FILE_SEEK_FUNC,
1695    pub tell: FMOD_CODEC_FILE_TELL_FUNC,
1696    pub size: FMOD_CODEC_FILE_SIZE_FUNC,
1697}
1698impl Default for FMOD_CODEC_STATE_FUNCTIONS {
1699    fn default() -> Self {
1700        unsafe { std::mem::zeroed() }
1701    }
1702}
1703#[repr(C)]
1704#[derive(Debug, Copy, Clone)]
1705pub struct FMOD_CODEC_STATE {
1706    pub plugindata: *mut c_void,
1707    pub waveformat: *mut FMOD_CODEC_WAVEFORMAT,
1708    pub functions: *mut FMOD_CODEC_STATE_FUNCTIONS,
1709    pub numsubsounds: c_int,
1710}
1711impl Default for FMOD_CODEC_STATE {
1712    fn default() -> Self {
1713        unsafe { std::mem::zeroed() }
1714    }
1715}
1716#[repr(C)]
1717#[derive(Debug, Copy, Clone)]
1718pub struct FMOD_OUTPUT_DESCRIPTION {
1719    pub apiversion: c_uint,
1720    pub name: *const c_char,
1721    pub version: c_uint,
1722    pub method: FMOD_OUTPUT_METHOD,
1723    pub getnumdrivers: FMOD_OUTPUT_GETNUMDRIVERS_CALLBACK,
1724    pub getdriverinfo: FMOD_OUTPUT_GETDRIVERINFO_CALLBACK,
1725    pub init: FMOD_OUTPUT_INIT_CALLBACK,
1726    pub start: FMOD_OUTPUT_START_CALLBACK,
1727    pub stop: FMOD_OUTPUT_STOP_CALLBACK,
1728    pub close: FMOD_OUTPUT_CLOSE_CALLBACK,
1729    pub update: FMOD_OUTPUT_UPDATE_CALLBACK,
1730    pub gethandle: FMOD_OUTPUT_GETHANDLE_CALLBACK,
1731    pub mixer: FMOD_OUTPUT_MIXER_CALLBACK,
1732    pub object3dgetinfo: FMOD_OUTPUT_OBJECT3DGETINFO_CALLBACK,
1733    pub object3dalloc: FMOD_OUTPUT_OBJECT3DALLOC_CALLBACK,
1734    pub object3dfree: FMOD_OUTPUT_OBJECT3DFREE_CALLBACK,
1735    pub object3dupdate: FMOD_OUTPUT_OBJECT3DUPDATE_CALLBACK,
1736    pub openport: FMOD_OUTPUT_OPENPORT_CALLBACK,
1737    pub closeport: FMOD_OUTPUT_CLOSEPORT_CALLBACK,
1738    pub devicelistchanged: FMOD_OUTPUT_DEVICELISTCHANGED_CALLBACK,
1739}
1740impl Default for FMOD_OUTPUT_DESCRIPTION {
1741    fn default() -> Self {
1742        unsafe { std::mem::zeroed() }
1743    }
1744}
1745#[repr(C)]
1746#[derive(Debug, Copy, Clone)]
1747pub struct FMOD_OUTPUT_STATE {
1748    pub plugindata: *mut c_void,
1749    pub readfrommixer: FMOD_OUTPUT_READFROMMIXER_FUNC,
1750    pub alloc: FMOD_OUTPUT_ALLOC_FUNC,
1751    pub free: FMOD_OUTPUT_FREE_FUNC,
1752    pub log: FMOD_OUTPUT_LOG_FUNC,
1753    pub copyport: FMOD_OUTPUT_COPYPORT_FUNC,
1754    pub requestreset: FMOD_OUTPUT_REQUESTRESET_FUNC,
1755}
1756impl Default for FMOD_OUTPUT_STATE {
1757    fn default() -> Self {
1758        unsafe { std::mem::zeroed() }
1759    }
1760}
1761#[repr(C)]
1762#[derive(Debug, Copy, Clone)]
1763pub struct FMOD_OUTPUT_OBJECT3DINFO {
1764    pub buffer: *mut c_float,
1765    pub bufferlength: c_uint,
1766    pub position: FMOD_VECTOR,
1767    pub gain: c_float,
1768    pub spread: c_float,
1769    pub priority: c_float,
1770}
1771impl Default for FMOD_OUTPUT_OBJECT3DINFO {
1772    fn default() -> Self {
1773        unsafe { std::mem::zeroed() }
1774    }
1775}
1776#[repr(C)]
1777#[derive(Debug, Copy, Clone)]
1778pub struct FMOD_DSP_BUFFER_ARRAY {
1779    pub numbuffers: c_int,
1780    pub buffernumchannels: *mut c_int,
1781    pub bufferchannelmask: *mut FMOD_CHANNELMASK,
1782    pub buffers: *mut *mut c_float,
1783    pub speakermode: FMOD_SPEAKERMODE,
1784}
1785impl Default for FMOD_DSP_BUFFER_ARRAY {
1786    fn default() -> Self {
1787        unsafe { std::mem::zeroed() }
1788    }
1789}
1790#[repr(C)]
1791#[derive(Debug, Copy, Clone)]
1792pub struct FMOD_COMPLEX {
1793    pub real: c_float,
1794    pub imag: c_float,
1795}
1796impl Default for FMOD_COMPLEX {
1797    fn default() -> Self {
1798        unsafe { std::mem::zeroed() }
1799    }
1800}
1801#[repr(C)]
1802#[derive(Debug, Copy, Clone)]
1803pub struct FMOD_DSP_PARAMETER_FLOAT_MAPPING_PIECEWISE_LINEAR {
1804    pub numpoints: c_int,
1805    pub pointparamvalues: *mut c_float,
1806    pub pointpositions: *mut c_float,
1807}
1808impl Default for FMOD_DSP_PARAMETER_FLOAT_MAPPING_PIECEWISE_LINEAR {
1809    fn default() -> Self {
1810        unsafe { std::mem::zeroed() }
1811    }
1812}
1813#[repr(C)]
1814#[derive(Debug, Copy, Clone)]
1815pub struct FMOD_DSP_PARAMETER_FLOAT_MAPPING {
1816    pub type_: FMOD_DSP_PARAMETER_FLOAT_MAPPING_TYPE,
1817    pub piecewiselinearmapping: FMOD_DSP_PARAMETER_FLOAT_MAPPING_PIECEWISE_LINEAR,
1818}
1819impl Default for FMOD_DSP_PARAMETER_FLOAT_MAPPING {
1820    fn default() -> Self {
1821        unsafe { std::mem::zeroed() }
1822    }
1823}
1824#[repr(C)]
1825#[derive(Debug, Copy, Clone)]
1826pub struct FMOD_DSP_PARAMETER_DESC_FLOAT {
1827    pub min: c_float,
1828    pub max: c_float,
1829    pub defaultval: c_float,
1830    pub mapping: FMOD_DSP_PARAMETER_FLOAT_MAPPING,
1831}
1832impl Default for FMOD_DSP_PARAMETER_DESC_FLOAT {
1833    fn default() -> Self {
1834        unsafe { std::mem::zeroed() }
1835    }
1836}
1837#[repr(C)]
1838#[derive(Debug, Copy, Clone)]
1839pub struct FMOD_DSP_PARAMETER_DESC_INT {
1840    pub min: c_int,
1841    pub max: c_int,
1842    pub defaultval: c_int,
1843    pub goestoinf: FMOD_BOOL,
1844    pub valuenames: *const *const c_char,
1845}
1846impl Default for FMOD_DSP_PARAMETER_DESC_INT {
1847    fn default() -> Self {
1848        unsafe { std::mem::zeroed() }
1849    }
1850}
1851#[repr(C)]
1852#[derive(Debug, Copy, Clone)]
1853pub struct FMOD_DSP_PARAMETER_DESC_BOOL {
1854    pub defaultval: FMOD_BOOL,
1855    pub valuenames: *const *const c_char,
1856}
1857impl Default for FMOD_DSP_PARAMETER_DESC_BOOL {
1858    fn default() -> Self {
1859        unsafe { std::mem::zeroed() }
1860    }
1861}
1862#[repr(C)]
1863#[derive(Debug, Copy, Clone)]
1864pub struct FMOD_DSP_PARAMETER_DESC_DATA {
1865    pub datatype: c_int,
1866}
1867impl Default for FMOD_DSP_PARAMETER_DESC_DATA {
1868    fn default() -> Self {
1869        unsafe { std::mem::zeroed() }
1870    }
1871}
1872#[repr(C)]
1873#[derive(Copy, Clone)]
1874pub struct FMOD_DSP_PARAMETER_DESC {
1875    pub type_: FMOD_DSP_PARAMETER_TYPE,
1876    pub name: [c_char; 16 as usize],
1877    pub label: [c_char; 16 as usize],
1878    pub description: *const c_char,
1879    pub union: FMOD_DSP_PARAMETER_DESC_UNION,
1880}
1881impl Default for FMOD_DSP_PARAMETER_DESC {
1882    fn default() -> Self {
1883        unsafe { std::mem::zeroed() }
1884    }
1885}
1886#[repr(C)]
1887#[derive(Copy, Clone)]
1888pub union FMOD_DSP_PARAMETER_DESC_UNION {
1889    pub floatdesc: FMOD_DSP_PARAMETER_DESC_FLOAT,
1890    pub intdesc: FMOD_DSP_PARAMETER_DESC_INT,
1891    pub booldesc: FMOD_DSP_PARAMETER_DESC_BOOL,
1892    pub datadesc: FMOD_DSP_PARAMETER_DESC_DATA,
1893}
1894#[repr(C)]
1895#[derive(Debug, Copy, Clone)]
1896pub struct FMOD_DSP_PARAMETER_OVERALLGAIN {
1897    pub linear_gain: c_float,
1898    pub linear_gain_additive: c_float,
1899}
1900impl Default for FMOD_DSP_PARAMETER_OVERALLGAIN {
1901    fn default() -> Self {
1902        unsafe { std::mem::zeroed() }
1903    }
1904}
1905#[repr(C)]
1906#[derive(Debug, Copy, Clone)]
1907pub struct FMOD_DSP_PARAMETER_3DATTRIBUTES {
1908    pub relative: FMOD_3D_ATTRIBUTES,
1909    pub absolute: FMOD_3D_ATTRIBUTES,
1910}
1911impl Default for FMOD_DSP_PARAMETER_3DATTRIBUTES {
1912    fn default() -> Self {
1913        unsafe { std::mem::zeroed() }
1914    }
1915}
1916#[repr(C)]
1917#[derive(Debug, Copy, Clone)]
1918pub struct FMOD_DSP_PARAMETER_3DATTRIBUTES_MULTI {
1919    pub numlisteners: c_int,
1920    pub relative: [FMOD_3D_ATTRIBUTES; FMOD_MAX_LISTENERS as usize],
1921    pub weight: [c_float; FMOD_MAX_LISTENERS as usize],
1922    pub absolute: FMOD_3D_ATTRIBUTES,
1923}
1924impl Default for FMOD_DSP_PARAMETER_3DATTRIBUTES_MULTI {
1925    fn default() -> Self {
1926        unsafe { std::mem::zeroed() }
1927    }
1928}
1929#[repr(C)]
1930#[derive(Debug, Copy, Clone)]
1931pub struct FMOD_DSP_PARAMETER_ATTENUATION_RANGE {
1932    pub min: c_float,
1933    pub max: c_float,
1934}
1935impl Default for FMOD_DSP_PARAMETER_ATTENUATION_RANGE {
1936    fn default() -> Self {
1937        unsafe { std::mem::zeroed() }
1938    }
1939}
1940#[repr(C)]
1941#[derive(Debug, Copy, Clone)]
1942pub struct FMOD_DSP_PARAMETER_SIDECHAIN {
1943    pub sidechainenable: FMOD_BOOL,
1944}
1945impl Default for FMOD_DSP_PARAMETER_SIDECHAIN {
1946    fn default() -> Self {
1947        unsafe { std::mem::zeroed() }
1948    }
1949}
1950#[repr(C)]
1951#[derive(Debug, Copy, Clone)]
1952pub struct FMOD_DSP_PARAMETER_FFT {
1953    pub length: c_int,
1954    pub numchannels: c_int,
1955    pub spectrum: [*mut c_float; 32 as usize],
1956}
1957impl Default for FMOD_DSP_PARAMETER_FFT {
1958    fn default() -> Self {
1959        unsafe { std::mem::zeroed() }
1960    }
1961}
1962#[repr(C)]
1963#[derive(Debug, Copy, Clone)]
1964pub struct FMOD_DSP_DESCRIPTION {
1965    pub pluginsdkversion: c_uint,
1966    pub name: [c_char; 32 as usize],
1967    pub version: c_uint,
1968    pub numinputbuffers: c_int,
1969    pub numoutputbuffers: c_int,
1970    pub create: FMOD_DSP_CREATE_CALLBACK,
1971    pub release: FMOD_DSP_RELEASE_CALLBACK,
1972    pub reset: FMOD_DSP_RESET_CALLBACK,
1973    pub read: FMOD_DSP_READ_CALLBACK,
1974    pub process: FMOD_DSP_PROCESS_CALLBACK,
1975    pub setposition: FMOD_DSP_SETPOSITION_CALLBACK,
1976    pub numparameters: c_int,
1977    pub paramdesc: *mut *mut FMOD_DSP_PARAMETER_DESC,
1978    pub setparameterfloat: FMOD_DSP_SETPARAM_FLOAT_CALLBACK,
1979    pub setparameterint: FMOD_DSP_SETPARAM_INT_CALLBACK,
1980    pub setparameterbool: FMOD_DSP_SETPARAM_BOOL_CALLBACK,
1981    pub setparameterdata: FMOD_DSP_SETPARAM_DATA_CALLBACK,
1982    pub getparameterfloat: FMOD_DSP_GETPARAM_FLOAT_CALLBACK,
1983    pub getparameterint: FMOD_DSP_GETPARAM_INT_CALLBACK,
1984    pub getparameterbool: FMOD_DSP_GETPARAM_BOOL_CALLBACK,
1985    pub getparameterdata: FMOD_DSP_GETPARAM_DATA_CALLBACK,
1986    pub shouldiprocess: FMOD_DSP_SHOULDIPROCESS_CALLBACK,
1987    pub userdata: *mut c_void,
1988    pub sys_register: FMOD_DSP_SYSTEM_REGISTER_CALLBACK,
1989    pub sys_deregister: FMOD_DSP_SYSTEM_DEREGISTER_CALLBACK,
1990    pub sys_mix: FMOD_DSP_SYSTEM_MIX_CALLBACK,
1991}
1992impl Default for FMOD_DSP_DESCRIPTION {
1993    fn default() -> Self {
1994        unsafe { std::mem::zeroed() }
1995    }
1996}
1997#[repr(C)]
1998#[derive(Debug, Copy, Clone)]
1999pub struct FMOD_DSP_STATE_DFT_FUNCTIONS {
2000    pub fftreal: FMOD_DSP_DFT_FFTREAL_FUNC,
2001    pub inversefftreal: FMOD_DSP_DFT_IFFTREAL_FUNC,
2002}
2003impl Default for FMOD_DSP_STATE_DFT_FUNCTIONS {
2004    fn default() -> Self {
2005        unsafe { std::mem::zeroed() }
2006    }
2007}
2008#[repr(C)]
2009#[derive(Debug, Copy, Clone)]
2010pub struct FMOD_DSP_STATE_PAN_FUNCTIONS {
2011    pub summonomatrix: FMOD_DSP_PAN_SUMMONOMATRIX_FUNC,
2012    pub sumstereomatrix: FMOD_DSP_PAN_SUMSTEREOMATRIX_FUNC,
2013    pub sumsurroundmatrix: FMOD_DSP_PAN_SUMSURROUNDMATRIX_FUNC,
2014    pub summonotosurroundmatrix: FMOD_DSP_PAN_SUMMONOTOSURROUNDMATRIX_FUNC,
2015    pub sumstereotosurroundmatrix: FMOD_DSP_PAN_SUMSTEREOTOSURROUNDMATRIX_FUNC,
2016    pub getrolloffgain: FMOD_DSP_PAN_GETROLLOFFGAIN_FUNC,
2017}
2018impl Default for FMOD_DSP_STATE_PAN_FUNCTIONS {
2019    fn default() -> Self {
2020        unsafe { std::mem::zeroed() }
2021    }
2022}
2023#[repr(C)]
2024#[derive(Debug, Copy, Clone)]
2025pub struct FMOD_DSP_STATE_FUNCTIONS {
2026    pub alloc: FMOD_DSP_ALLOC_FUNC,
2027    pub realloc: FMOD_DSP_REALLOC_FUNC,
2028    pub free: FMOD_DSP_FREE_FUNC,
2029    pub getsamplerate: FMOD_DSP_GETSAMPLERATE_FUNC,
2030    pub getblocksize: FMOD_DSP_GETBLOCKSIZE_FUNC,
2031    pub dft: *mut FMOD_DSP_STATE_DFT_FUNCTIONS,
2032    pub pan: *mut FMOD_DSP_STATE_PAN_FUNCTIONS,
2033    pub getspeakermode: FMOD_DSP_GETSPEAKERMODE_FUNC,
2034    pub getclock: FMOD_DSP_GETCLOCK_FUNC,
2035    pub getlistenerattributes: FMOD_DSP_GETLISTENERATTRIBUTES_FUNC,
2036    pub log: FMOD_DSP_LOG_FUNC,
2037    pub getuserdata: FMOD_DSP_GETUSERDATA_FUNC,
2038}
2039impl Default for FMOD_DSP_STATE_FUNCTIONS {
2040    fn default() -> Self {
2041        unsafe { std::mem::zeroed() }
2042    }
2043}
2044#[repr(C)]
2045#[derive(Debug, Copy, Clone)]
2046pub struct FMOD_DSP_STATE {
2047    pub instance: *mut c_void,
2048    pub plugindata: *mut c_void,
2049    pub channelmask: FMOD_CHANNELMASK,
2050    pub source_speakermode: FMOD_SPEAKERMODE,
2051    pub sidechaindata: *mut c_float,
2052    pub sidechainchannels: c_int,
2053    pub functions: *mut FMOD_DSP_STATE_FUNCTIONS,
2054    pub systemobject: c_int,
2055}
2056impl Default for FMOD_DSP_STATE {
2057    fn default() -> Self {
2058        unsafe { std::mem::zeroed() }
2059    }
2060}
2061#[repr(C)]
2062#[derive(Debug, Copy, Clone)]
2063pub struct FMOD_DSP_METERING_INFO {
2064    pub numsamples: c_int,
2065    pub peaklevel: [c_float; 32 as usize],
2066    pub rmslevel: [c_float; 32 as usize],
2067    pub numchannels: c_short,
2068}
2069impl Default for FMOD_DSP_METERING_INFO {
2070    fn default() -> Self {
2071        unsafe { std::mem::zeroed() }
2072    }
2073}
2074#[repr(C)]
2075#[derive(Debug, Copy, Clone)]
2076pub struct FMOD_DSP_LOUDNESS_METER_INFO_TYPE {
2077    pub momentaryloudness: c_float,
2078    pub shorttermloudness: c_float,
2079    pub integratedloudness: c_float,
2080    pub loudness10thpercentile: c_float,
2081    pub loudness95thpercentile: c_float,
2082    pub loudnesshistogram: [c_float; FMOD_DSP_LOUDNESS_METER_HISTOGRAM_SAMPLES as usize],
2083    pub maxtruepeak: c_float,
2084    pub maxmomentaryloudness: c_float,
2085}
2086impl Default for FMOD_DSP_LOUDNESS_METER_INFO_TYPE {
2087    fn default() -> Self {
2088        unsafe { std::mem::zeroed() }
2089    }
2090}
2091#[repr(C)]
2092#[derive(Debug, Copy, Clone)]
2093pub struct FMOD_DSP_LOUDNESS_METER_WEIGHTING_TYPE {
2094    pub channelweight: [c_float; 32 as usize],
2095}
2096impl Default for FMOD_DSP_LOUDNESS_METER_WEIGHTING_TYPE {
2097    fn default() -> Self {
2098        unsafe { std::mem::zeroed() }
2099    }
2100}
2101pub const FMOD_PRESET_OFF: FMOD_REVERB_PROPERTIES = FMOD_REVERB_PROPERTIES {
2102    DecayTime: 1000.0,
2103    EarlyDelay: 7.0,
2104    LateDelay: 11.0,
2105    HFReference: 5000.0,
2106    HFDecayRatio: 100.0,
2107    Diffusion: 100.0,
2108    Density: 100.0,
2109    LowShelfFrequency: 250.0,
2110    LowShelfGain: 0.0,
2111    HighCut: 20.0,
2112    EarlyLateMix: 96.0,
2113    WetLevel: -80.0,
2114};
2115pub const FMOD_PRESET_GENERIC: FMOD_REVERB_PROPERTIES = FMOD_REVERB_PROPERTIES {
2116    DecayTime: 1500.0,
2117    EarlyDelay: 7.0,
2118    LateDelay: 11.0,
2119    HFReference: 5000.0,
2120    HFDecayRatio: 83.0,
2121    Diffusion: 100.0,
2122    Density: 100.0,
2123    LowShelfFrequency: 250.0,
2124    LowShelfGain: 0.0,
2125    HighCut: 14500.0,
2126    EarlyLateMix: 96.0,
2127    WetLevel: -8.0,
2128};
2129pub const FMOD_PRESET_PADDEDCELL: FMOD_REVERB_PROPERTIES = FMOD_REVERB_PROPERTIES {
2130    DecayTime: 170.0,
2131    EarlyDelay: 1.0,
2132    LateDelay: 2.0,
2133    HFReference: 5000.0,
2134    HFDecayRatio: 10.0,
2135    Diffusion: 100.0,
2136    Density: 100.0,
2137    LowShelfFrequency: 250.0,
2138    LowShelfGain: 0.0,
2139    HighCut: 160.0,
2140    EarlyLateMix: 84.0,
2141    WetLevel: -7.8,
2142};
2143pub const FMOD_PRESET_ROOM: FMOD_REVERB_PROPERTIES = FMOD_REVERB_PROPERTIES {
2144    DecayTime: 400.0,
2145    EarlyDelay: 2.0,
2146    LateDelay: 3.0,
2147    HFReference: 5000.0,
2148    HFDecayRatio: 83.0,
2149    Diffusion: 100.0,
2150    Density: 100.0,
2151    LowShelfFrequency: 250.0,
2152    LowShelfGain: 0.0,
2153    HighCut: 6050.0,
2154    EarlyLateMix: 88.0,
2155    WetLevel: -9.4,
2156};
2157pub const FMOD_PRESET_BATHROOM: FMOD_REVERB_PROPERTIES = FMOD_REVERB_PROPERTIES {
2158    DecayTime: 1500.0,
2159    EarlyDelay: 7.0,
2160    LateDelay: 11.0,
2161    HFReference: 5000.0,
2162    HFDecayRatio: 54.0,
2163    Diffusion: 100.0,
2164    Density: 60.0,
2165    LowShelfFrequency: 250.0,
2166    LowShelfGain: 0.0,
2167    HighCut: 2900.0,
2168    EarlyLateMix: 83.0,
2169    WetLevel: 0.5,
2170};
2171pub const FMOD_PRESET_LIVINGROOM: FMOD_REVERB_PROPERTIES = FMOD_REVERB_PROPERTIES {
2172    DecayTime: 500.0,
2173    EarlyDelay: 3.0,
2174    LateDelay: 4.0,
2175    HFReference: 5000.0,
2176    HFDecayRatio: 10.0,
2177    Diffusion: 100.0,
2178    Density: 100.0,
2179    LowShelfFrequency: 250.0,
2180    LowShelfGain: 0.0,
2181    HighCut: 160.0,
2182    EarlyLateMix: 58.0,
2183    WetLevel: -19.0,
2184};
2185pub const FMOD_PRESET_STONEROOM: FMOD_REVERB_PROPERTIES = FMOD_REVERB_PROPERTIES {
2186    DecayTime: 2300.0,
2187    EarlyDelay: 12.0,
2188    LateDelay: 17.0,
2189    HFReference: 5000.0,
2190    HFDecayRatio: 64.0,
2191    Diffusion: 100.0,
2192    Density: 100.0,
2193    LowShelfFrequency: 250.0,
2194    LowShelfGain: 0.0,
2195    HighCut: 7800.0,
2196    EarlyLateMix: 71.0,
2197    WetLevel: -8.5,
2198};
2199pub const FMOD_PRESET_AUDITORIUM: FMOD_REVERB_PROPERTIES = FMOD_REVERB_PROPERTIES {
2200    DecayTime: 4300.0,
2201    EarlyDelay: 20.0,
2202    LateDelay: 30.0,
2203    HFReference: 5000.0,
2204    HFDecayRatio: 59.0,
2205    Diffusion: 100.0,
2206    Density: 100.0,
2207    LowShelfFrequency: 250.0,
2208    LowShelfGain: 0.0,
2209    HighCut: 5850.0,
2210    EarlyLateMix: 64.0,
2211    WetLevel: -11.7,
2212};
2213pub const FMOD_PRESET_CONCERTHALL: FMOD_REVERB_PROPERTIES = FMOD_REVERB_PROPERTIES {
2214    DecayTime: 3900.0,
2215    EarlyDelay: 20.0,
2216    LateDelay: 29.0,
2217    HFReference: 5000.0,
2218    HFDecayRatio: 70.0,
2219    Diffusion: 100.0,
2220    Density: 100.0,
2221    LowShelfFrequency: 250.0,
2222    LowShelfGain: 0.0,
2223    HighCut: 5650.0,
2224    EarlyLateMix: 80.0,
2225    WetLevel: -9.8,
2226};
2227pub const FMOD_PRESET_CAVE: FMOD_REVERB_PROPERTIES = FMOD_REVERB_PROPERTIES {
2228    DecayTime: 2900.0,
2229    EarlyDelay: 15.0,
2230    LateDelay: 22.0,
2231    HFReference: 5000.0,
2232    HFDecayRatio: 100.0,
2233    Diffusion: 100.0,
2234    Density: 100.0,
2235    LowShelfFrequency: 250.0,
2236    LowShelfGain: 0.0,
2237    HighCut: 20000.0,
2238    EarlyLateMix: 59.0,
2239    WetLevel: -11.3,
2240};
2241pub const FMOD_PRESET_ARENA: FMOD_REVERB_PROPERTIES = FMOD_REVERB_PROPERTIES {
2242    DecayTime: 7200.0,
2243    EarlyDelay: 20.0,
2244    LateDelay: 30.0,
2245    HFReference: 5000.0,
2246    HFDecayRatio: 33.0,
2247    Diffusion: 100.0,
2248    Density: 100.0,
2249    LowShelfFrequency: 250.0,
2250    LowShelfGain: 0.0,
2251    HighCut: 4500.0,
2252    EarlyLateMix: 80.0,
2253    WetLevel: -9.6,
2254};
2255pub const FMOD_PRESET_HANGAR: FMOD_REVERB_PROPERTIES = FMOD_REVERB_PROPERTIES {
2256    DecayTime: 10000.0,
2257    EarlyDelay: 20.0,
2258    LateDelay: 30.0,
2259    HFReference: 5000.0,
2260    HFDecayRatio: 23.0,
2261    Diffusion: 100.0,
2262    Density: 100.0,
2263    LowShelfFrequency: 250.0,
2264    LowShelfGain: 0.0,
2265    HighCut: 3400.0,
2266    EarlyLateMix: 72.0,
2267    WetLevel: -7.4,
2268};
2269pub const FMOD_PRESET_CARPETTEDHALLWAY: FMOD_REVERB_PROPERTIES = FMOD_REVERB_PROPERTIES {
2270    DecayTime: 300.0,
2271    EarlyDelay: 2.0,
2272    LateDelay: 30.0,
2273    HFReference: 5000.0,
2274    HFDecayRatio: 10.0,
2275    Diffusion: 100.0,
2276    Density: 100.0,
2277    LowShelfFrequency: 250.0,
2278    LowShelfGain: 0.0,
2279    HighCut: 500.0,
2280    EarlyLateMix: 56.0,
2281    WetLevel: -24.0,
2282};
2283pub const FMOD_PRESET_HALLWAY: FMOD_REVERB_PROPERTIES = FMOD_REVERB_PROPERTIES {
2284    DecayTime: 1500.0,
2285    EarlyDelay: 7.0,
2286    LateDelay: 11.0,
2287    HFReference: 5000.0,
2288    HFDecayRatio: 59.0,
2289    Diffusion: 100.0,
2290    Density: 100.0,
2291    LowShelfFrequency: 250.0,
2292    LowShelfGain: 0.0,
2293    HighCut: 7800.0,
2294    EarlyLateMix: 87.0,
2295    WetLevel: -5.5,
2296};
2297pub const FMOD_PRESET_STONECORRIDOR: FMOD_REVERB_PROPERTIES = FMOD_REVERB_PROPERTIES {
2298    DecayTime: 270.0,
2299    EarlyDelay: 13.0,
2300    LateDelay: 20.0,
2301    HFReference: 5000.0,
2302    HFDecayRatio: 79.0,
2303    Diffusion: 100.0,
2304    Density: 100.0,
2305    LowShelfFrequency: 250.0,
2306    LowShelfGain: 0.0,
2307    HighCut: 9000.0,
2308    EarlyLateMix: 86.0,
2309    WetLevel: -6.0,
2310};
2311pub const FMOD_PRESET_ALLEY: FMOD_REVERB_PROPERTIES = FMOD_REVERB_PROPERTIES {
2312    DecayTime: 1500.0,
2313    EarlyDelay: 7.0,
2314    LateDelay: 11.0,
2315    HFReference: 5000.0,
2316    HFDecayRatio: 86.0,
2317    Diffusion: 100.0,
2318    Density: 100.0,
2319    LowShelfFrequency: 250.0,
2320    LowShelfGain: 0.0,
2321    HighCut: 8300.0,
2322    EarlyLateMix: 80.0,
2323    WetLevel: -9.8,
2324};
2325pub const FMOD_PRESET_FOREST: FMOD_REVERB_PROPERTIES = FMOD_REVERB_PROPERTIES {
2326    DecayTime: 1500.0,
2327    EarlyDelay: 162.0,
2328    LateDelay: 88.0,
2329    HFReference: 5000.0,
2330    HFDecayRatio: 54.0,
2331    Diffusion: 79.0,
2332    Density: 100.0,
2333    LowShelfFrequency: 250.0,
2334    LowShelfGain: 0.0,
2335    HighCut: 760.0,
2336    EarlyLateMix: 94.0,
2337    WetLevel: -12.3,
2338};
2339pub const FMOD_PRESET_CITY: FMOD_REVERB_PROPERTIES = FMOD_REVERB_PROPERTIES {
2340    DecayTime: 1500.0,
2341    EarlyDelay: 7.0,
2342    LateDelay: 11.0,
2343    HFReference: 5000.0,
2344    HFDecayRatio: 67.0,
2345    Diffusion: 50.0,
2346    Density: 100.0,
2347    LowShelfFrequency: 250.0,
2348    LowShelfGain: 0.0,
2349    HighCut: 4050.0,
2350    EarlyLateMix: 66.0,
2351    WetLevel: -26.0,
2352};
2353pub const FMOD_PRESET_MOUNTAINS: FMOD_REVERB_PROPERTIES = FMOD_REVERB_PROPERTIES {
2354    DecayTime: 1500.0,
2355    EarlyDelay: 300.0,
2356    LateDelay: 100.0,
2357    HFReference: 5000.0,
2358    HFDecayRatio: 21.0,
2359    Diffusion: 27.0,
2360    Density: 100.0,
2361    LowShelfFrequency: 250.0,
2362    LowShelfGain: 0.0,
2363    HighCut: 1220.0,
2364    EarlyLateMix: 82.0,
2365    WetLevel: -24.0,
2366};
2367pub const FMOD_PRESET_QUARRY: FMOD_REVERB_PROPERTIES = FMOD_REVERB_PROPERTIES {
2368    DecayTime: 1500.0,
2369    EarlyDelay: 61.0,
2370    LateDelay: 25.0,
2371    HFReference: 5000.0,
2372    HFDecayRatio: 83.0,
2373    Diffusion: 100.0,
2374    Density: 100.0,
2375    LowShelfFrequency: 250.0,
2376    LowShelfGain: 0.0,
2377    HighCut: 3400.0,
2378    EarlyLateMix: 100.0,
2379    WetLevel: -5.0,
2380};
2381pub const FMOD_PRESET_PLAIN: FMOD_REVERB_PROPERTIES = FMOD_REVERB_PROPERTIES {
2382    DecayTime: 1500.0,
2383    EarlyDelay: 179.0,
2384    LateDelay: 100.0,
2385    HFReference: 5000.0,
2386    HFDecayRatio: 50.0,
2387    Diffusion: 21.0,
2388    Density: 100.0,
2389    LowShelfFrequency: 250.0,
2390    LowShelfGain: 0.0,
2391    HighCut: 1670.0,
2392    EarlyLateMix: 65.0,
2393    WetLevel: -28.0,
2394};
2395pub const FMOD_PRESET_PARKINGLOT: FMOD_REVERB_PROPERTIES = FMOD_REVERB_PROPERTIES {
2396    DecayTime: 1700.0,
2397    EarlyDelay: 8.0,
2398    LateDelay: 12.0,
2399    HFReference: 5000.0,
2400    HFDecayRatio: 100.0,
2401    Diffusion: 100.0,
2402    Density: 100.0,
2403    LowShelfFrequency: 250.0,
2404    LowShelfGain: 0.0,
2405    HighCut: 20000.0,
2406    EarlyLateMix: 56.0,
2407    WetLevel: -19.5,
2408};
2409pub const FMOD_PRESET_SEWERPIPE: FMOD_REVERB_PROPERTIES = FMOD_REVERB_PROPERTIES {
2410    DecayTime: 2800.0,
2411    EarlyDelay: 14.0,
2412    LateDelay: 21.0,
2413    HFReference: 5000.0,
2414    HFDecayRatio: 14.0,
2415    Diffusion: 80.0,
2416    Density: 60.0,
2417    LowShelfFrequency: 250.0,
2418    LowShelfGain: 0.0,
2419    HighCut: 3400.0,
2420    EarlyLateMix: 66.0,
2421    WetLevel: 1.2,
2422};
2423pub const FMOD_PRESET_UNDERWATER: FMOD_REVERB_PROPERTIES = FMOD_REVERB_PROPERTIES {
2424    DecayTime: 1500.0,
2425    EarlyDelay: 7.0,
2426    LateDelay: 11.0,
2427    HFReference: 5000.0,
2428    HFDecayRatio: 10.0,
2429    Diffusion: 100.0,
2430    Density: 100.0,
2431    LowShelfFrequency: 250.0,
2432    LowShelfGain: 0.0,
2433    HighCut: 500.0,
2434    EarlyLateMix: 92.0,
2435    WetLevel: 7.0,
2436};
2437pub type FMOD_STUDIO_SYSTEM_CALLBACK = Option<
2438    unsafe extern "C" fn(
2439        system: *mut FMOD_STUDIO_SYSTEM,
2440        type_: FMOD_STUDIO_SYSTEM_CALLBACK_TYPE,
2441        commanddata: *mut c_void,
2442        userdata: *mut c_void,
2443    ) -> FMOD_RESULT,
2444>;
2445pub type FMOD_STUDIO_EVENT_CALLBACK = Option<
2446    unsafe extern "C" fn(
2447        type_: FMOD_STUDIO_EVENT_CALLBACK_TYPE,
2448        event: *mut FMOD_STUDIO_EVENTINSTANCE,
2449        parameters: *mut c_void,
2450    ) -> FMOD_RESULT,
2451>;
2452pub type FMOD_STUDIO_COMMANDREPLAY_FRAME_CALLBACK = Option<
2453    unsafe extern "C" fn(
2454        replay: *mut FMOD_STUDIO_COMMANDREPLAY,
2455        commandindex: c_int,
2456        currenttime: c_float,
2457        userdata: *mut c_void,
2458    ) -> FMOD_RESULT,
2459>;
2460pub type FMOD_STUDIO_COMMANDREPLAY_LOAD_BANK_CALLBACK = Option<
2461    unsafe extern "C" fn(
2462        replay: *mut FMOD_STUDIO_COMMANDREPLAY,
2463        commandindex: c_int,
2464        bankguid: *const FMOD_GUID,
2465        bankfilename: *const c_char,
2466        flags: FMOD_STUDIO_LOAD_BANK_FLAGS,
2467        bank: *mut *mut FMOD_STUDIO_BANK,
2468        userdata: *mut c_void,
2469    ) -> FMOD_RESULT,
2470>;
2471pub type FMOD_STUDIO_COMMANDREPLAY_CREATE_INSTANCE_CALLBACK = Option<
2472    unsafe extern "C" fn(
2473        replay: *mut FMOD_STUDIO_COMMANDREPLAY,
2474        commandindex: c_int,
2475        eventdescription: *mut FMOD_STUDIO_EVENTDESCRIPTION,
2476        instance: *mut *mut FMOD_STUDIO_EVENTINSTANCE,
2477        userdata: *mut c_void,
2478    ) -> FMOD_RESULT,
2479>;
2480pub type FMOD_DEBUG_CALLBACK = Option<
2481    unsafe extern "C" fn(
2482        flags: FMOD_DEBUG_FLAGS,
2483        file: *const c_char,
2484        line: c_int,
2485        func: *const c_char,
2486        message: *const c_char,
2487    ) -> FMOD_RESULT,
2488>;
2489pub type FMOD_SYSTEM_CALLBACK = Option<
2490    unsafe extern "C" fn(
2491        system: *mut FMOD_SYSTEM,
2492        type_: FMOD_SYSTEM_CALLBACK_TYPE,
2493        commanddata1: *mut c_void,
2494        commanddata2: *mut c_void,
2495        userdata: *mut c_void,
2496    ) -> FMOD_RESULT,
2497>;
2498pub type FMOD_CHANNELCONTROL_CALLBACK = Option<
2499    unsafe extern "C" fn(
2500        channelcontrol: *mut FMOD_CHANNELCONTROL,
2501        controltype: FMOD_CHANNELCONTROL_TYPE,
2502        callbacktype: FMOD_CHANNELCONTROL_CALLBACK_TYPE,
2503        commanddata1: *mut c_void,
2504        commanddata2: *mut c_void,
2505    ) -> FMOD_RESULT,
2506>;
2507pub type FMOD_DSP_CALLBACK = Option<
2508    unsafe extern "C" fn(
2509        dsp: *mut FMOD_DSP,
2510        type_: FMOD_DSP_CALLBACK_TYPE,
2511        data: *mut c_void,
2512    ) -> FMOD_RESULT,
2513>;
2514pub type FMOD_SOUND_NONBLOCK_CALLBACK =
2515    Option<unsafe extern "C" fn(sound: *mut FMOD_SOUND, result: FMOD_RESULT) -> FMOD_RESULT>;
2516pub type FMOD_SOUND_PCMREAD_CALLBACK = Option<
2517    unsafe extern "C" fn(sound: *mut FMOD_SOUND, data: *mut c_void, datalen: c_uint) -> FMOD_RESULT,
2518>;
2519pub type FMOD_SOUND_PCMSETPOS_CALLBACK = Option<
2520    unsafe extern "C" fn(
2521        sound: *mut FMOD_SOUND,
2522        subsound: c_int,
2523        position: c_uint,
2524        postype: FMOD_TIMEUNIT,
2525    ) -> FMOD_RESULT,
2526>;
2527pub type FMOD_FILE_OPEN_CALLBACK = Option<
2528    unsafe extern "C" fn(
2529        name: *const c_char,
2530        filesize: *mut c_uint,
2531        handle: *mut *mut c_void,
2532        userdata: *mut c_void,
2533    ) -> FMOD_RESULT,
2534>;
2535pub type FMOD_FILE_CLOSE_CALLBACK =
2536    Option<unsafe extern "C" fn(handle: *mut c_void, userdata: *mut c_void) -> FMOD_RESULT>;
2537pub type FMOD_FILE_READ_CALLBACK = Option<
2538    unsafe extern "C" fn(
2539        handle: *mut c_void,
2540        buffer: *mut c_void,
2541        sizebytes: c_uint,
2542        bytesread: *mut c_uint,
2543        userdata: *mut c_void,
2544    ) -> FMOD_RESULT,
2545>;
2546pub type FMOD_FILE_SEEK_CALLBACK = Option<
2547    unsafe extern "C" fn(handle: *mut c_void, pos: c_uint, userdata: *mut c_void) -> FMOD_RESULT,
2548>;
2549pub type FMOD_FILE_ASYNCREAD_CALLBACK = Option<
2550    unsafe extern "C" fn(info: *mut FMOD_ASYNCREADINFO, userdata: *mut c_void) -> FMOD_RESULT,
2551>;
2552pub type FMOD_FILE_ASYNCCANCEL_CALLBACK = Option<
2553    unsafe extern "C" fn(info: *mut FMOD_ASYNCREADINFO, userdata: *mut c_void) -> FMOD_RESULT,
2554>;
2555pub type FMOD_FILE_ASYNCDONE_FUNC =
2556    Option<unsafe extern "C" fn(info: *mut FMOD_ASYNCREADINFO, result: FMOD_RESULT)>;
2557pub type FMOD_MEMORY_ALLOC_CALLBACK = Option<
2558    unsafe extern "C" fn(
2559        size: c_uint,
2560        type_: FMOD_MEMORY_TYPE,
2561        sourcestr: *const c_char,
2562    ) -> *mut c_void,
2563>;
2564pub type FMOD_MEMORY_REALLOC_CALLBACK = Option<
2565    unsafe extern "C" fn(
2566        ptr: *mut c_void,
2567        size: c_uint,
2568        type_: FMOD_MEMORY_TYPE,
2569        sourcestr: *const c_char,
2570    ) -> *mut c_void,
2571>;
2572pub type FMOD_MEMORY_FREE_CALLBACK = Option<
2573    unsafe extern "C" fn(ptr: *mut c_void, type_: FMOD_MEMORY_TYPE, sourcestr: *const c_char),
2574>;
2575pub type FMOD_3D_ROLLOFF_CALLBACK = Option<
2576    unsafe extern "C" fn(channelcontrol: *mut FMOD_CHANNELCONTROL, distance: c_float) -> c_float,
2577>;
2578pub type FMOD_CODEC_OPEN_CALLBACK = Option<
2579    unsafe extern "C" fn(
2580        codec_state: *mut FMOD_CODEC_STATE,
2581        usermode: FMOD_MODE,
2582        userexinfo: *mut FMOD_CREATESOUNDEXINFO,
2583    ) -> FMOD_RESULT,
2584>;
2585pub type FMOD_CODEC_CLOSE_CALLBACK =
2586    Option<unsafe extern "C" fn(codec_state: *mut FMOD_CODEC_STATE) -> FMOD_RESULT>;
2587pub type FMOD_CODEC_READ_CALLBACK = Option<
2588    unsafe extern "C" fn(
2589        codec_state: *mut FMOD_CODEC_STATE,
2590        buffer: *mut c_void,
2591        samples_in: c_uint,
2592        samples_out: *mut c_uint,
2593    ) -> FMOD_RESULT,
2594>;
2595pub type FMOD_CODEC_GETLENGTH_CALLBACK = Option<
2596    unsafe extern "C" fn(
2597        codec_state: *mut FMOD_CODEC_STATE,
2598        length: *mut c_uint,
2599        lengthtype: FMOD_TIMEUNIT,
2600    ) -> FMOD_RESULT,
2601>;
2602pub type FMOD_CODEC_SETPOSITION_CALLBACK = Option<
2603    unsafe extern "C" fn(
2604        codec_state: *mut FMOD_CODEC_STATE,
2605        subsound: c_int,
2606        position: c_uint,
2607        postype: FMOD_TIMEUNIT,
2608    ) -> FMOD_RESULT,
2609>;
2610pub type FMOD_CODEC_GETPOSITION_CALLBACK = Option<
2611    unsafe extern "C" fn(
2612        codec_state: *mut FMOD_CODEC_STATE,
2613        position: *mut c_uint,
2614        postype: FMOD_TIMEUNIT,
2615    ) -> FMOD_RESULT,
2616>;
2617pub type FMOD_CODEC_SOUNDCREATE_CALLBACK = Option<
2618    unsafe extern "C" fn(
2619        codec_state: *mut FMOD_CODEC_STATE,
2620        subsound: c_int,
2621        sound: *mut FMOD_SOUND,
2622    ) -> FMOD_RESULT,
2623>;
2624pub type FMOD_CODEC_GETWAVEFORMAT_CALLBACK = Option<
2625    unsafe extern "C" fn(
2626        codec_state: *mut FMOD_CODEC_STATE,
2627        index: c_int,
2628        waveformat: *mut FMOD_CODEC_WAVEFORMAT,
2629    ) -> FMOD_RESULT,
2630>;
2631pub type FMOD_CODEC_METADATA_FUNC = Option<
2632    unsafe extern "C" fn(
2633        codec_state: *mut FMOD_CODEC_STATE,
2634        tagtype: FMOD_TAGTYPE,
2635        name: *mut c_char,
2636        data: *mut c_void,
2637        datalen: c_uint,
2638        datatype: FMOD_TAGDATATYPE,
2639        unique: c_int,
2640    ) -> FMOD_RESULT,
2641>;
2642pub type FMOD_CODEC_ALLOC_FUNC = Option<
2643    unsafe extern "C" fn(
2644        size: c_uint,
2645        align: c_uint,
2646        file: *const c_char,
2647        line: c_int,
2648    ) -> *mut c_void,
2649>;
2650pub type FMOD_CODEC_FREE_FUNC =
2651    Option<unsafe extern "C" fn(ptr: *mut c_void, file: *const c_char, line: c_int)>;
2652pub type FMOD_CODEC_LOG_FUNC = Option<
2653    unsafe extern "C" fn(
2654        level: FMOD_DEBUG_FLAGS,
2655        file: *const c_char,
2656        line: c_int,
2657        function: *const c_char,
2658        string: *const c_char,
2659        ...
2660    ),
2661>;
2662pub type FMOD_CODEC_FILE_READ_FUNC = Option<
2663    unsafe extern "C" fn(
2664        codec_state: *mut FMOD_CODEC_STATE,
2665        buffer: *mut c_void,
2666        sizebytes: c_uint,
2667        bytesread: *mut c_uint,
2668    ) -> FMOD_RESULT,
2669>;
2670pub type FMOD_CODEC_FILE_SEEK_FUNC = Option<
2671    unsafe extern "C" fn(
2672        codec_state: *mut FMOD_CODEC_STATE,
2673        pos: c_uint,
2674        method: FMOD_CODEC_SEEK_METHOD,
2675    ) -> FMOD_RESULT,
2676>;
2677pub type FMOD_CODEC_FILE_TELL_FUNC = Option<
2678    unsafe extern "C" fn(codec_state: *mut FMOD_CODEC_STATE, pos: *mut c_uint) -> FMOD_RESULT,
2679>;
2680pub type FMOD_CODEC_FILE_SIZE_FUNC = Option<
2681    unsafe extern "C" fn(codec_state: *mut FMOD_CODEC_STATE, size: *mut c_uint) -> FMOD_RESULT,
2682>;
2683pub type FMOD_OUTPUT_GETNUMDRIVERS_CALLBACK = Option<
2684    unsafe extern "C" fn(
2685        output_state: *mut FMOD_OUTPUT_STATE,
2686        numdrivers: *mut c_int,
2687    ) -> FMOD_RESULT,
2688>;
2689pub type FMOD_OUTPUT_GETDRIVERINFO_CALLBACK = Option<
2690    unsafe extern "C" fn(
2691        output_state: *mut FMOD_OUTPUT_STATE,
2692        id: c_int,
2693        name: *mut c_char,
2694        namelen: c_int,
2695        guid: *mut FMOD_GUID,
2696        systemrate: *mut c_int,
2697        speakermode: *mut FMOD_SPEAKERMODE,
2698        speakermodechannels: *mut c_int,
2699    ) -> FMOD_RESULT,
2700>;
2701pub type FMOD_OUTPUT_INIT_CALLBACK = Option<
2702    unsafe extern "C" fn(
2703        output_state: *mut FMOD_OUTPUT_STATE,
2704        selecteddriver: c_int,
2705        flags: FMOD_INITFLAGS,
2706        outputrate: *mut c_int,
2707        speakermode: *mut FMOD_SPEAKERMODE,
2708        speakermodechannels: *mut c_int,
2709        outputformat: *mut FMOD_SOUND_FORMAT,
2710        dspbufferlength: c_int,
2711        dspnumbuffers: *mut c_int,
2712        dspnumadditionalbuffers: *mut c_int,
2713        extradriverdata: *mut c_void,
2714    ) -> FMOD_RESULT,
2715>;
2716pub type FMOD_OUTPUT_START_CALLBACK =
2717    Option<unsafe extern "C" fn(output_state: *mut FMOD_OUTPUT_STATE) -> FMOD_RESULT>;
2718pub type FMOD_OUTPUT_STOP_CALLBACK =
2719    Option<unsafe extern "C" fn(output_state: *mut FMOD_OUTPUT_STATE) -> FMOD_RESULT>;
2720pub type FMOD_OUTPUT_CLOSE_CALLBACK =
2721    Option<unsafe extern "C" fn(output_state: *mut FMOD_OUTPUT_STATE) -> FMOD_RESULT>;
2722pub type FMOD_OUTPUT_UPDATE_CALLBACK =
2723    Option<unsafe extern "C" fn(output_state: *mut FMOD_OUTPUT_STATE) -> FMOD_RESULT>;
2724pub type FMOD_OUTPUT_GETHANDLE_CALLBACK = Option<
2725    unsafe extern "C" fn(
2726        output_state: *mut FMOD_OUTPUT_STATE,
2727        handle: *mut *mut c_void,
2728    ) -> FMOD_RESULT,
2729>;
2730pub type FMOD_OUTPUT_MIXER_CALLBACK =
2731    Option<unsafe extern "C" fn(output_state: *mut FMOD_OUTPUT_STATE) -> FMOD_RESULT>;
2732pub type FMOD_OUTPUT_OBJECT3DGETINFO_CALLBACK = Option<
2733    unsafe extern "C" fn(
2734        output_state: *mut FMOD_OUTPUT_STATE,
2735        maxhardwareobjects: *mut c_int,
2736    ) -> FMOD_RESULT,
2737>;
2738pub type FMOD_OUTPUT_OBJECT3DALLOC_CALLBACK = Option<
2739    unsafe extern "C" fn(
2740        output_state: *mut FMOD_OUTPUT_STATE,
2741        object3d: *mut *mut c_void,
2742    ) -> FMOD_RESULT,
2743>;
2744pub type FMOD_OUTPUT_OBJECT3DFREE_CALLBACK = Option<
2745    unsafe extern "C" fn(
2746        output_state: *mut FMOD_OUTPUT_STATE,
2747        object3d: *mut c_void,
2748    ) -> FMOD_RESULT,
2749>;
2750pub type FMOD_OUTPUT_OBJECT3DUPDATE_CALLBACK = Option<
2751    unsafe extern "C" fn(
2752        output_state: *mut FMOD_OUTPUT_STATE,
2753        object3d: *mut c_void,
2754        info: *const FMOD_OUTPUT_OBJECT3DINFO,
2755    ) -> FMOD_RESULT,
2756>;
2757pub type FMOD_OUTPUT_OPENPORT_CALLBACK = Option<
2758    unsafe extern "C" fn(
2759        output_state: *mut FMOD_OUTPUT_STATE,
2760        portType: FMOD_PORT_TYPE,
2761        portIndex: FMOD_PORT_INDEX,
2762        portId: *mut c_int,
2763        portRate: *mut c_int,
2764        portChannels: *mut c_int,
2765        portFormat: *mut FMOD_SOUND_FORMAT,
2766    ) -> FMOD_RESULT,
2767>;
2768pub type FMOD_OUTPUT_CLOSEPORT_CALLBACK = Option<
2769    unsafe extern "C" fn(output_state: *mut FMOD_OUTPUT_STATE, portId: c_int) -> FMOD_RESULT,
2770>;
2771pub type FMOD_OUTPUT_DEVICELISTCHANGED_CALLBACK =
2772    Option<unsafe extern "C" fn(output_state: *mut FMOD_OUTPUT_STATE) -> FMOD_RESULT>;
2773pub type FMOD_OUTPUT_READFROMMIXER_FUNC = Option<
2774    unsafe extern "C" fn(
2775        output_state: *mut FMOD_OUTPUT_STATE,
2776        buffer: *mut c_void,
2777        length: c_uint,
2778    ) -> FMOD_RESULT,
2779>;
2780pub type FMOD_OUTPUT_COPYPORT_FUNC = Option<
2781    unsafe extern "C" fn(
2782        output_state: *mut FMOD_OUTPUT_STATE,
2783        portId: c_int,
2784        buffer: *mut c_void,
2785        length: c_uint,
2786    ) -> FMOD_RESULT,
2787>;
2788pub type FMOD_OUTPUT_REQUESTRESET_FUNC =
2789    Option<unsafe extern "C" fn(output_state: *mut FMOD_OUTPUT_STATE) -> FMOD_RESULT>;
2790pub type FMOD_OUTPUT_ALLOC_FUNC = Option<
2791    unsafe extern "C" fn(
2792        size: c_uint,
2793        align: c_uint,
2794        file: *const c_char,
2795        line: c_int,
2796    ) -> *mut c_void,
2797>;
2798pub type FMOD_OUTPUT_FREE_FUNC =
2799    Option<unsafe extern "C" fn(ptr: *mut c_void, file: *const c_char, line: c_int)>;
2800pub type FMOD_OUTPUT_LOG_FUNC = Option<
2801    unsafe extern "C" fn(
2802        level: FMOD_DEBUG_FLAGS,
2803        file: *const c_char,
2804        line: c_int,
2805        function: *const c_char,
2806        string: *const c_char,
2807        ...
2808    ),
2809>;
2810pub type FMOD_DSP_CREATE_CALLBACK =
2811    Option<unsafe extern "C" fn(dsp_state: *mut FMOD_DSP_STATE) -> FMOD_RESULT>;
2812pub type FMOD_DSP_RELEASE_CALLBACK =
2813    Option<unsafe extern "C" fn(dsp_state: *mut FMOD_DSP_STATE) -> FMOD_RESULT>;
2814pub type FMOD_DSP_RESET_CALLBACK =
2815    Option<unsafe extern "C" fn(dsp_state: *mut FMOD_DSP_STATE) -> FMOD_RESULT>;
2816pub type FMOD_DSP_READ_CALLBACK = Option<
2817    unsafe extern "C" fn(
2818        dsp_state: *mut FMOD_DSP_STATE,
2819        inbuffer: *mut c_float,
2820        outbuffer: *mut c_float,
2821        length: c_uint,
2822        inchannels: c_int,
2823        outchannels: *mut c_int,
2824    ) -> FMOD_RESULT,
2825>;
2826pub type FMOD_DSP_PROCESS_CALLBACK = Option<
2827    unsafe extern "C" fn(
2828        dsp_state: *mut FMOD_DSP_STATE,
2829        length: c_uint,
2830        inbufferarray: *const FMOD_DSP_BUFFER_ARRAY,
2831        outbufferarray: *mut FMOD_DSP_BUFFER_ARRAY,
2832        inputsidle: FMOD_BOOL,
2833        op: FMOD_DSP_PROCESS_OPERATION,
2834    ) -> FMOD_RESULT,
2835>;
2836pub type FMOD_DSP_SETPOSITION_CALLBACK =
2837    Option<unsafe extern "C" fn(dsp_state: *mut FMOD_DSP_STATE, pos: c_uint) -> FMOD_RESULT>;
2838pub type FMOD_DSP_SHOULDIPROCESS_CALLBACK = Option<
2839    unsafe extern "C" fn(
2840        dsp_state: *mut FMOD_DSP_STATE,
2841        inputsidle: FMOD_BOOL,
2842        length: c_uint,
2843        inmask: FMOD_CHANNELMASK,
2844        inchannels: c_int,
2845        speakermode: FMOD_SPEAKERMODE,
2846    ) -> FMOD_RESULT,
2847>;
2848pub type FMOD_DSP_SETPARAM_FLOAT_CALLBACK = Option<
2849    unsafe extern "C" fn(
2850        dsp_state: *mut FMOD_DSP_STATE,
2851        index: c_int,
2852        value: c_float,
2853    ) -> FMOD_RESULT,
2854>;
2855pub type FMOD_DSP_SETPARAM_INT_CALLBACK = Option<
2856    unsafe extern "C" fn(dsp_state: *mut FMOD_DSP_STATE, index: c_int, value: c_int) -> FMOD_RESULT,
2857>;
2858pub type FMOD_DSP_SETPARAM_BOOL_CALLBACK = Option<
2859    unsafe extern "C" fn(
2860        dsp_state: *mut FMOD_DSP_STATE,
2861        index: c_int,
2862        value: FMOD_BOOL,
2863    ) -> FMOD_RESULT,
2864>;
2865pub type FMOD_DSP_SETPARAM_DATA_CALLBACK = Option<
2866    unsafe extern "C" fn(
2867        dsp_state: *mut FMOD_DSP_STATE,
2868        index: c_int,
2869        data: *mut c_void,
2870        length: c_uint,
2871    ) -> FMOD_RESULT,
2872>;
2873pub type FMOD_DSP_GETPARAM_FLOAT_CALLBACK = Option<
2874    unsafe extern "C" fn(
2875        dsp_state: *mut FMOD_DSP_STATE,
2876        index: c_int,
2877        value: *mut c_float,
2878        valuestr: *mut c_char,
2879    ) -> FMOD_RESULT,
2880>;
2881pub type FMOD_DSP_GETPARAM_INT_CALLBACK = Option<
2882    unsafe extern "C" fn(
2883        dsp_state: *mut FMOD_DSP_STATE,
2884        index: c_int,
2885        value: *mut c_int,
2886        valuestr: *mut c_char,
2887    ) -> FMOD_RESULT,
2888>;
2889pub type FMOD_DSP_GETPARAM_BOOL_CALLBACK = Option<
2890    unsafe extern "C" fn(
2891        dsp_state: *mut FMOD_DSP_STATE,
2892        index: c_int,
2893        value: *mut FMOD_BOOL,
2894        valuestr: *mut c_char,
2895    ) -> FMOD_RESULT,
2896>;
2897pub type FMOD_DSP_GETPARAM_DATA_CALLBACK = Option<
2898    unsafe extern "C" fn(
2899        dsp_state: *mut FMOD_DSP_STATE,
2900        index: c_int,
2901        data: *mut *mut c_void,
2902        length: *mut c_uint,
2903        valuestr: *mut c_char,
2904    ) -> FMOD_RESULT,
2905>;
2906pub type FMOD_DSP_SYSTEM_REGISTER_CALLBACK =
2907    Option<unsafe extern "C" fn(dsp_state: *mut FMOD_DSP_STATE) -> FMOD_RESULT>;
2908pub type FMOD_DSP_SYSTEM_DEREGISTER_CALLBACK =
2909    Option<unsafe extern "C" fn(dsp_state: *mut FMOD_DSP_STATE) -> FMOD_RESULT>;
2910pub type FMOD_DSP_SYSTEM_MIX_CALLBACK =
2911    Option<unsafe extern "C" fn(dsp_state: *mut FMOD_DSP_STATE, stage: c_int) -> FMOD_RESULT>;
2912pub type FMOD_DSP_ALLOC_FUNC = Option<
2913    unsafe extern "C" fn(
2914        size: c_uint,
2915        type_: FMOD_MEMORY_TYPE,
2916        sourcestr: *const c_char,
2917    ) -> *mut c_void,
2918>;
2919pub type FMOD_DSP_REALLOC_FUNC = Option<
2920    unsafe extern "C" fn(
2921        ptr: *mut c_void,
2922        size: c_uint,
2923        type_: FMOD_MEMORY_TYPE,
2924        sourcestr: *const c_char,
2925    ) -> *mut c_void,
2926>;
2927pub type FMOD_DSP_FREE_FUNC = Option<
2928    unsafe extern "C" fn(ptr: *mut c_void, type_: FMOD_MEMORY_TYPE, sourcestr: *const c_char),
2929>;
2930pub type FMOD_DSP_LOG_FUNC = Option<
2931    unsafe extern "C" fn(
2932        level: FMOD_DEBUG_FLAGS,
2933        file: *const c_char,
2934        line: c_int,
2935        function: *const c_char,
2936        str: *const c_char,
2937        ...
2938    ),
2939>;
2940pub type FMOD_DSP_GETSAMPLERATE_FUNC =
2941    Option<unsafe extern "C" fn(dsp_state: *mut FMOD_DSP_STATE, rate: *mut c_int) -> FMOD_RESULT>;
2942pub type FMOD_DSP_GETBLOCKSIZE_FUNC = Option<
2943    unsafe extern "C" fn(dsp_state: *mut FMOD_DSP_STATE, blocksize: *mut c_uint) -> FMOD_RESULT,
2944>;
2945pub type FMOD_DSP_GETSPEAKERMODE_FUNC = Option<
2946    unsafe extern "C" fn(
2947        dsp_state: *mut FMOD_DSP_STATE,
2948        speakermode_mixer: *mut FMOD_SPEAKERMODE,
2949        speakermode_output: *mut FMOD_SPEAKERMODE,
2950    ) -> FMOD_RESULT,
2951>;
2952pub type FMOD_DSP_GETCLOCK_FUNC = Option<
2953    unsafe extern "C" fn(
2954        dsp_state: *mut FMOD_DSP_STATE,
2955        clock: *mut c_ulonglong,
2956        offset: *mut c_uint,
2957        length: *mut c_uint,
2958    ) -> FMOD_RESULT,
2959>;
2960pub type FMOD_DSP_GETLISTENERATTRIBUTES_FUNC = Option<
2961    unsafe extern "C" fn(
2962        dsp_state: *mut FMOD_DSP_STATE,
2963        numlisteners: *mut c_int,
2964        attributes: *mut FMOD_3D_ATTRIBUTES,
2965    ) -> FMOD_RESULT,
2966>;
2967pub type FMOD_DSP_GETUSERDATA_FUNC = Option<
2968    unsafe extern "C" fn(dsp_state: *mut FMOD_DSP_STATE, userdata: *mut *mut c_void) -> FMOD_RESULT,
2969>;
2970pub type FMOD_DSP_DFT_FFTREAL_FUNC = Option<
2971    unsafe extern "C" fn(
2972        dsp_state: *mut FMOD_DSP_STATE,
2973        size: c_int,
2974        signal: *const c_float,
2975        dft: *mut FMOD_COMPLEX,
2976        window: *const c_float,
2977        signalhop: c_int,
2978    ) -> FMOD_RESULT,
2979>;
2980pub type FMOD_DSP_DFT_IFFTREAL_FUNC = Option<
2981    unsafe extern "C" fn(
2982        dsp_state: *mut FMOD_DSP_STATE,
2983        size: c_int,
2984        dft: *const FMOD_COMPLEX,
2985        signal: *mut c_float,
2986        window: *const c_float,
2987        signalhop: c_int,
2988    ) -> FMOD_RESULT,
2989>;
2990pub type FMOD_DSP_PAN_SUMMONOMATRIX_FUNC = Option<
2991    unsafe extern "C" fn(
2992        dsp_state: *mut FMOD_DSP_STATE,
2993        sourceSpeakerMode: FMOD_SPEAKERMODE,
2994        lowFrequencyGain: c_float,
2995        overallGain: c_float,
2996        matrix: *mut c_float,
2997    ) -> FMOD_RESULT,
2998>;
2999pub type FMOD_DSP_PAN_SUMSTEREOMATRIX_FUNC = Option<
3000    unsafe extern "C" fn(
3001        dsp_state: *mut FMOD_DSP_STATE,
3002        sourceSpeakerMode: FMOD_SPEAKERMODE,
3003        pan: c_float,
3004        lowFrequencyGain: c_float,
3005        overallGain: c_float,
3006        matrixHop: c_int,
3007        matrix: *mut c_float,
3008    ) -> FMOD_RESULT,
3009>;
3010pub type FMOD_DSP_PAN_SUMSURROUNDMATRIX_FUNC = Option<
3011    unsafe extern "C" fn(
3012        dsp_state: *mut FMOD_DSP_STATE,
3013        sourceSpeakerMode: FMOD_SPEAKERMODE,
3014        targetSpeakerMode: FMOD_SPEAKERMODE,
3015        direction: c_float,
3016        extent: c_float,
3017        rotation: c_float,
3018        lowFrequencyGain: c_float,
3019        overallGain: c_float,
3020        matrixHop: c_int,
3021        matrix: *mut c_float,
3022        flags: FMOD_DSP_PAN_SURROUND_FLAGS,
3023    ) -> FMOD_RESULT,
3024>;
3025pub type FMOD_DSP_PAN_SUMMONOTOSURROUNDMATRIX_FUNC = Option<
3026    unsafe extern "C" fn(
3027        dsp_state: *mut FMOD_DSP_STATE,
3028        targetSpeakerMode: FMOD_SPEAKERMODE,
3029        direction: c_float,
3030        extent: c_float,
3031        lowFrequencyGain: c_float,
3032        overallGain: c_float,
3033        matrixHop: c_int,
3034        matrix: *mut c_float,
3035    ) -> FMOD_RESULT,
3036>;
3037pub type FMOD_DSP_PAN_SUMSTEREOTOSURROUNDMATRIX_FUNC = Option<
3038    unsafe extern "C" fn(
3039        dsp_state: *mut FMOD_DSP_STATE,
3040        targetSpeakerMode: FMOD_SPEAKERMODE,
3041        direction: c_float,
3042        extent: c_float,
3043        rotation: c_float,
3044        lowFrequencyGain: c_float,
3045        overallGain: c_float,
3046        matrixHop: c_int,
3047        matrix: *mut c_float,
3048    ) -> FMOD_RESULT,
3049>;
3050pub type FMOD_DSP_PAN_GETROLLOFFGAIN_FUNC = Option<
3051    unsafe extern "C" fn(
3052        dsp_state: *mut FMOD_DSP_STATE,
3053        rolloff: FMOD_DSP_PAN_3D_ROLLOFF_TYPE,
3054        distance: c_float,
3055        mindistance: c_float,
3056        maxdistance: c_float,
3057        gain: *mut c_float,
3058    ) -> FMOD_RESULT,
3059>;
3060extern "C" {
3061    pub fn FMOD_Studio_ParseID(idstring: *const c_char, id: *mut FMOD_GUID) -> FMOD_RESULT;
3062    pub fn FMOD_Studio_System_Create(
3063        system: *mut *mut FMOD_STUDIO_SYSTEM,
3064        headerversion: c_uint,
3065    ) -> FMOD_RESULT;
3066    pub fn FMOD_Studio_System_IsValid(system: *mut FMOD_STUDIO_SYSTEM) -> FMOD_BOOL;
3067    pub fn FMOD_Studio_System_SetAdvancedSettings(
3068        system: *mut FMOD_STUDIO_SYSTEM,
3069        settings: *mut FMOD_STUDIO_ADVANCEDSETTINGS,
3070    ) -> FMOD_RESULT;
3071    pub fn FMOD_Studio_System_GetAdvancedSettings(
3072        system: *mut FMOD_STUDIO_SYSTEM,
3073        settings: *mut FMOD_STUDIO_ADVANCEDSETTINGS,
3074    ) -> FMOD_RESULT;
3075    pub fn FMOD_Studio_System_Initialize(
3076        system: *mut FMOD_STUDIO_SYSTEM,
3077        maxchannels: c_int,
3078        studioflags: FMOD_STUDIO_INITFLAGS,
3079        flags: FMOD_INITFLAGS,
3080        extradriverdata: *mut c_void,
3081    ) -> FMOD_RESULT;
3082    pub fn FMOD_Studio_System_Release(system: *mut FMOD_STUDIO_SYSTEM) -> FMOD_RESULT;
3083    pub fn FMOD_Studio_System_Update(system: *mut FMOD_STUDIO_SYSTEM) -> FMOD_RESULT;
3084    pub fn FMOD_Studio_System_GetCoreSystem(
3085        system: *mut FMOD_STUDIO_SYSTEM,
3086        coresystem: *mut *mut FMOD_SYSTEM,
3087    ) -> FMOD_RESULT;
3088    pub fn FMOD_Studio_System_GetEvent(
3089        system: *mut FMOD_STUDIO_SYSTEM,
3090        pathOrID: *const c_char,
3091        event: *mut *mut FMOD_STUDIO_EVENTDESCRIPTION,
3092    ) -> FMOD_RESULT;
3093    pub fn FMOD_Studio_System_GetBus(
3094        system: *mut FMOD_STUDIO_SYSTEM,
3095        pathOrID: *const c_char,
3096        bus: *mut *mut FMOD_STUDIO_BUS,
3097    ) -> FMOD_RESULT;
3098    pub fn FMOD_Studio_System_GetVCA(
3099        system: *mut FMOD_STUDIO_SYSTEM,
3100        pathOrID: *const c_char,
3101        vca: *mut *mut FMOD_STUDIO_VCA,
3102    ) -> FMOD_RESULT;
3103    pub fn FMOD_Studio_System_GetBank(
3104        system: *mut FMOD_STUDIO_SYSTEM,
3105        pathOrID: *const c_char,
3106        bank: *mut *mut FMOD_STUDIO_BANK,
3107    ) -> FMOD_RESULT;
3108    pub fn FMOD_Studio_System_GetEventByID(
3109        system: *mut FMOD_STUDIO_SYSTEM,
3110        id: *const FMOD_GUID,
3111        event: *mut *mut FMOD_STUDIO_EVENTDESCRIPTION,
3112    ) -> FMOD_RESULT;
3113    pub fn FMOD_Studio_System_GetBusByID(
3114        system: *mut FMOD_STUDIO_SYSTEM,
3115        id: *const FMOD_GUID,
3116        bus: *mut *mut FMOD_STUDIO_BUS,
3117    ) -> FMOD_RESULT;
3118    pub fn FMOD_Studio_System_GetVCAByID(
3119        system: *mut FMOD_STUDIO_SYSTEM,
3120        id: *const FMOD_GUID,
3121        vca: *mut *mut FMOD_STUDIO_VCA,
3122    ) -> FMOD_RESULT;
3123    pub fn FMOD_Studio_System_GetBankByID(
3124        system: *mut FMOD_STUDIO_SYSTEM,
3125        id: *const FMOD_GUID,
3126        bank: *mut *mut FMOD_STUDIO_BANK,
3127    ) -> FMOD_RESULT;
3128    pub fn FMOD_Studio_System_GetSoundInfo(
3129        system: *mut FMOD_STUDIO_SYSTEM,
3130        key: *const c_char,
3131        info: *mut FMOD_STUDIO_SOUND_INFO,
3132    ) -> FMOD_RESULT;
3133    pub fn FMOD_Studio_System_GetParameterDescriptionByName(
3134        system: *mut FMOD_STUDIO_SYSTEM,
3135        name: *const c_char,
3136        parameter: *mut FMOD_STUDIO_PARAMETER_DESCRIPTION,
3137    ) -> FMOD_RESULT;
3138    pub fn FMOD_Studio_System_GetParameterDescriptionByID(
3139        system: *mut FMOD_STUDIO_SYSTEM,
3140        id: FMOD_STUDIO_PARAMETER_ID,
3141        parameter: *mut FMOD_STUDIO_PARAMETER_DESCRIPTION,
3142    ) -> FMOD_RESULT;
3143    pub fn FMOD_Studio_System_GetParameterLabelByName(
3144        system: *mut FMOD_STUDIO_SYSTEM,
3145        name: *const c_char,
3146        labelindex: c_int,
3147        label: *mut c_char,
3148        size: c_int,
3149        retrieved: *mut c_int,
3150    ) -> FMOD_RESULT;
3151    pub fn FMOD_Studio_System_GetParameterLabelByID(
3152        system: *mut FMOD_STUDIO_SYSTEM,
3153        id: FMOD_STUDIO_PARAMETER_ID,
3154        labelindex: c_int,
3155        label: *mut c_char,
3156        size: c_int,
3157        retrieved: *mut c_int,
3158    ) -> FMOD_RESULT;
3159    pub fn FMOD_Studio_System_GetParameterByID(
3160        system: *mut FMOD_STUDIO_SYSTEM,
3161        id: FMOD_STUDIO_PARAMETER_ID,
3162        value: *mut c_float,
3163        finalvalue: *mut c_float,
3164    ) -> FMOD_RESULT;
3165    pub fn FMOD_Studio_System_SetParameterByID(
3166        system: *mut FMOD_STUDIO_SYSTEM,
3167        id: FMOD_STUDIO_PARAMETER_ID,
3168        value: c_float,
3169        ignoreseekspeed: FMOD_BOOL,
3170    ) -> FMOD_RESULT;
3171    pub fn FMOD_Studio_System_SetParameterByIDWithLabel(
3172        system: *mut FMOD_STUDIO_SYSTEM,
3173        id: FMOD_STUDIO_PARAMETER_ID,
3174        label: *const c_char,
3175        ignoreseekspeed: FMOD_BOOL,
3176    ) -> FMOD_RESULT;
3177    pub fn FMOD_Studio_System_SetParametersByIDs(
3178        system: *mut FMOD_STUDIO_SYSTEM,
3179        ids: *const FMOD_STUDIO_PARAMETER_ID,
3180        values: *mut c_float,
3181        count: c_int,
3182        ignoreseekspeed: FMOD_BOOL,
3183    ) -> FMOD_RESULT;
3184    pub fn FMOD_Studio_System_GetParameterByName(
3185        system: *mut FMOD_STUDIO_SYSTEM,
3186        name: *const c_char,
3187        value: *mut c_float,
3188        finalvalue: *mut c_float,
3189    ) -> FMOD_RESULT;
3190    pub fn FMOD_Studio_System_SetParameterByName(
3191        system: *mut FMOD_STUDIO_SYSTEM,
3192        name: *const c_char,
3193        value: c_float,
3194        ignoreseekspeed: FMOD_BOOL,
3195    ) -> FMOD_RESULT;
3196    pub fn FMOD_Studio_System_SetParameterByNameWithLabel(
3197        system: *mut FMOD_STUDIO_SYSTEM,
3198        name: *const c_char,
3199        label: *const c_char,
3200        ignoreseekspeed: FMOD_BOOL,
3201    ) -> FMOD_RESULT;
3202    pub fn FMOD_Studio_System_LookupID(
3203        system: *mut FMOD_STUDIO_SYSTEM,
3204        path: *const c_char,
3205        id: *mut FMOD_GUID,
3206    ) -> FMOD_RESULT;
3207    pub fn FMOD_Studio_System_LookupPath(
3208        system: *mut FMOD_STUDIO_SYSTEM,
3209        id: *const FMOD_GUID,
3210        path: *mut c_char,
3211        size: c_int,
3212        retrieved: *mut c_int,
3213    ) -> FMOD_RESULT;
3214    pub fn FMOD_Studio_System_GetNumListeners(
3215        system: *mut FMOD_STUDIO_SYSTEM,
3216        numlisteners: *mut c_int,
3217    ) -> FMOD_RESULT;
3218    pub fn FMOD_Studio_System_SetNumListeners(
3219        system: *mut FMOD_STUDIO_SYSTEM,
3220        numlisteners: c_int,
3221    ) -> FMOD_RESULT;
3222    pub fn FMOD_Studio_System_GetListenerAttributes(
3223        system: *mut FMOD_STUDIO_SYSTEM,
3224        index: c_int,
3225        attributes: *mut FMOD_3D_ATTRIBUTES,
3226        attenuationposition: *mut FMOD_VECTOR,
3227    ) -> FMOD_RESULT;
3228    pub fn FMOD_Studio_System_SetListenerAttributes(
3229        system: *mut FMOD_STUDIO_SYSTEM,
3230        index: c_int,
3231        attributes: *const FMOD_3D_ATTRIBUTES,
3232        attenuationposition: *const FMOD_VECTOR,
3233    ) -> FMOD_RESULT;
3234    pub fn FMOD_Studio_System_GetListenerWeight(
3235        system: *mut FMOD_STUDIO_SYSTEM,
3236        index: c_int,
3237        weight: *mut c_float,
3238    ) -> FMOD_RESULT;
3239    pub fn FMOD_Studio_System_SetListenerWeight(
3240        system: *mut FMOD_STUDIO_SYSTEM,
3241        index: c_int,
3242        weight: c_float,
3243    ) -> FMOD_RESULT;
3244    pub fn FMOD_Studio_System_LoadBankFile(
3245        system: *mut FMOD_STUDIO_SYSTEM,
3246        filename: *const c_char,
3247        flags: FMOD_STUDIO_LOAD_BANK_FLAGS,
3248        bank: *mut *mut FMOD_STUDIO_BANK,
3249    ) -> FMOD_RESULT;
3250    pub fn FMOD_Studio_System_LoadBankMemory(
3251        system: *mut FMOD_STUDIO_SYSTEM,
3252        buffer: *const c_char,
3253        length: c_int,
3254        mode: FMOD_STUDIO_LOAD_MEMORY_MODE,
3255        flags: FMOD_STUDIO_LOAD_BANK_FLAGS,
3256        bank: *mut *mut FMOD_STUDIO_BANK,
3257    ) -> FMOD_RESULT;
3258    pub fn FMOD_Studio_System_LoadBankCustom(
3259        system: *mut FMOD_STUDIO_SYSTEM,
3260        info: *const FMOD_STUDIO_BANK_INFO,
3261        flags: FMOD_STUDIO_LOAD_BANK_FLAGS,
3262        bank: *mut *mut FMOD_STUDIO_BANK,
3263    ) -> FMOD_RESULT;
3264    pub fn FMOD_Studio_System_RegisterPlugin(
3265        system: *mut FMOD_STUDIO_SYSTEM,
3266        description: *const FMOD_DSP_DESCRIPTION,
3267    ) -> FMOD_RESULT;
3268    pub fn FMOD_Studio_System_UnregisterPlugin(
3269        system: *mut FMOD_STUDIO_SYSTEM,
3270        name: *const c_char,
3271    ) -> FMOD_RESULT;
3272    pub fn FMOD_Studio_System_UnloadAll(system: *mut FMOD_STUDIO_SYSTEM) -> FMOD_RESULT;
3273    pub fn FMOD_Studio_System_FlushCommands(system: *mut FMOD_STUDIO_SYSTEM) -> FMOD_RESULT;
3274    pub fn FMOD_Studio_System_FlushSampleLoading(system: *mut FMOD_STUDIO_SYSTEM) -> FMOD_RESULT;
3275    pub fn FMOD_Studio_System_StartCommandCapture(
3276        system: *mut FMOD_STUDIO_SYSTEM,
3277        filename: *const c_char,
3278        flags: FMOD_STUDIO_COMMANDCAPTURE_FLAGS,
3279    ) -> FMOD_RESULT;
3280    pub fn FMOD_Studio_System_StopCommandCapture(system: *mut FMOD_STUDIO_SYSTEM) -> FMOD_RESULT;
3281    pub fn FMOD_Studio_System_LoadCommandReplay(
3282        system: *mut FMOD_STUDIO_SYSTEM,
3283        filename: *const c_char,
3284        flags: FMOD_STUDIO_COMMANDREPLAY_FLAGS,
3285        replay: *mut *mut FMOD_STUDIO_COMMANDREPLAY,
3286    ) -> FMOD_RESULT;
3287    pub fn FMOD_Studio_System_GetBankCount(
3288        system: *mut FMOD_STUDIO_SYSTEM,
3289        count: *mut c_int,
3290    ) -> FMOD_RESULT;
3291    pub fn FMOD_Studio_System_GetBankList(
3292        system: *mut FMOD_STUDIO_SYSTEM,
3293        array: *mut *mut FMOD_STUDIO_BANK,
3294        capacity: c_int,
3295        count: *mut c_int,
3296    ) -> FMOD_RESULT;
3297    pub fn FMOD_Studio_System_GetParameterDescriptionCount(
3298        system: *mut FMOD_STUDIO_SYSTEM,
3299        count: *mut c_int,
3300    ) -> FMOD_RESULT;
3301    pub fn FMOD_Studio_System_GetParameterDescriptionList(
3302        system: *mut FMOD_STUDIO_SYSTEM,
3303        array: *mut FMOD_STUDIO_PARAMETER_DESCRIPTION,
3304        capacity: c_int,
3305        count: *mut c_int,
3306    ) -> FMOD_RESULT;
3307    pub fn FMOD_Studio_System_GetCPUUsage(
3308        system: *mut FMOD_STUDIO_SYSTEM,
3309        usage: *mut FMOD_STUDIO_CPU_USAGE,
3310        usage_core: *mut FMOD_CPU_USAGE,
3311    ) -> FMOD_RESULT;
3312    pub fn FMOD_Studio_System_GetBufferUsage(
3313        system: *mut FMOD_STUDIO_SYSTEM,
3314        usage: *mut FMOD_STUDIO_BUFFER_USAGE,
3315    ) -> FMOD_RESULT;
3316    pub fn FMOD_Studio_System_ResetBufferUsage(system: *mut FMOD_STUDIO_SYSTEM) -> FMOD_RESULT;
3317    pub fn FMOD_Studio_System_SetCallback(
3318        system: *mut FMOD_STUDIO_SYSTEM,
3319        callback: FMOD_STUDIO_SYSTEM_CALLBACK,
3320        callbackmask: FMOD_STUDIO_SYSTEM_CALLBACK_TYPE,
3321    ) -> FMOD_RESULT;
3322    pub fn FMOD_Studio_System_SetUserData(
3323        system: *mut FMOD_STUDIO_SYSTEM,
3324        userdata: *mut c_void,
3325    ) -> FMOD_RESULT;
3326    pub fn FMOD_Studio_System_GetUserData(
3327        system: *mut FMOD_STUDIO_SYSTEM,
3328        userdata: *mut *mut c_void,
3329    ) -> FMOD_RESULT;
3330    pub fn FMOD_Studio_System_GetMemoryUsage(
3331        system: *mut FMOD_STUDIO_SYSTEM,
3332        memoryusage: *mut FMOD_STUDIO_MEMORY_USAGE,
3333    ) -> FMOD_RESULT;
3334    pub fn FMOD_Studio_EventDescription_IsValid(
3335        eventdescription: *mut FMOD_STUDIO_EVENTDESCRIPTION,
3336    ) -> FMOD_BOOL;
3337    pub fn FMOD_Studio_EventDescription_GetID(
3338        eventdescription: *mut FMOD_STUDIO_EVENTDESCRIPTION,
3339        id: *mut FMOD_GUID,
3340    ) -> FMOD_RESULT;
3341    pub fn FMOD_Studio_EventDescription_GetPath(
3342        eventdescription: *mut FMOD_STUDIO_EVENTDESCRIPTION,
3343        path: *mut c_char,
3344        size: c_int,
3345        retrieved: *mut c_int,
3346    ) -> FMOD_RESULT;
3347    pub fn FMOD_Studio_EventDescription_GetParameterDescriptionCount(
3348        eventdescription: *mut FMOD_STUDIO_EVENTDESCRIPTION,
3349        count: *mut c_int,
3350    ) -> FMOD_RESULT;
3351    pub fn FMOD_Studio_EventDescription_GetParameterDescriptionByIndex(
3352        eventdescription: *mut FMOD_STUDIO_EVENTDESCRIPTION,
3353        index: c_int,
3354        parameter: *mut FMOD_STUDIO_PARAMETER_DESCRIPTION,
3355    ) -> FMOD_RESULT;
3356    pub fn FMOD_Studio_EventDescription_GetParameterDescriptionByName(
3357        eventdescription: *mut FMOD_STUDIO_EVENTDESCRIPTION,
3358        name: *const c_char,
3359        parameter: *mut FMOD_STUDIO_PARAMETER_DESCRIPTION,
3360    ) -> FMOD_RESULT;
3361    pub fn FMOD_Studio_EventDescription_GetParameterDescriptionByID(
3362        eventdescription: *mut FMOD_STUDIO_EVENTDESCRIPTION,
3363        id: FMOD_STUDIO_PARAMETER_ID,
3364        parameter: *mut FMOD_STUDIO_PARAMETER_DESCRIPTION,
3365    ) -> FMOD_RESULT;
3366    pub fn FMOD_Studio_EventDescription_GetParameterLabelByIndex(
3367        eventdescription: *mut FMOD_STUDIO_EVENTDESCRIPTION,
3368        index: c_int,
3369        labelindex: c_int,
3370        label: *mut c_char,
3371        size: c_int,
3372        retrieved: *mut c_int,
3373    ) -> FMOD_RESULT;
3374    pub fn FMOD_Studio_EventDescription_GetParameterLabelByName(
3375        eventdescription: *mut FMOD_STUDIO_EVENTDESCRIPTION,
3376        name: *const c_char,
3377        labelindex: c_int,
3378        label: *mut c_char,
3379        size: c_int,
3380        retrieved: *mut c_int,
3381    ) -> FMOD_RESULT;
3382    pub fn FMOD_Studio_EventDescription_GetParameterLabelByID(
3383        eventdescription: *mut FMOD_STUDIO_EVENTDESCRIPTION,
3384        id: FMOD_STUDIO_PARAMETER_ID,
3385        labelindex: c_int,
3386        label: *mut c_char,
3387        size: c_int,
3388        retrieved: *mut c_int,
3389    ) -> FMOD_RESULT;
3390    pub fn FMOD_Studio_EventDescription_GetUserPropertyCount(
3391        eventdescription: *mut FMOD_STUDIO_EVENTDESCRIPTION,
3392        count: *mut c_int,
3393    ) -> FMOD_RESULT;
3394    pub fn FMOD_Studio_EventDescription_GetUserPropertyByIndex(
3395        eventdescription: *mut FMOD_STUDIO_EVENTDESCRIPTION,
3396        index: c_int,
3397        property: *mut FMOD_STUDIO_USER_PROPERTY,
3398    ) -> FMOD_RESULT;
3399    pub fn FMOD_Studio_EventDescription_GetUserProperty(
3400        eventdescription: *mut FMOD_STUDIO_EVENTDESCRIPTION,
3401        name: *const c_char,
3402        property: *mut FMOD_STUDIO_USER_PROPERTY,
3403    ) -> FMOD_RESULT;
3404    pub fn FMOD_Studio_EventDescription_GetLength(
3405        eventdescription: *mut FMOD_STUDIO_EVENTDESCRIPTION,
3406        length: *mut c_int,
3407    ) -> FMOD_RESULT;
3408    pub fn FMOD_Studio_EventDescription_GetMinMaxDistance(
3409        eventdescription: *mut FMOD_STUDIO_EVENTDESCRIPTION,
3410        min: *mut c_float,
3411        max: *mut c_float,
3412    ) -> FMOD_RESULT;
3413    pub fn FMOD_Studio_EventDescription_GetSoundSize(
3414        eventdescription: *mut FMOD_STUDIO_EVENTDESCRIPTION,
3415        size: *mut c_float,
3416    ) -> FMOD_RESULT;
3417    pub fn FMOD_Studio_EventDescription_IsSnapshot(
3418        eventdescription: *mut FMOD_STUDIO_EVENTDESCRIPTION,
3419        snapshot: *mut FMOD_BOOL,
3420    ) -> FMOD_RESULT;
3421    pub fn FMOD_Studio_EventDescription_IsOneshot(
3422        eventdescription: *mut FMOD_STUDIO_EVENTDESCRIPTION,
3423        oneshot: *mut FMOD_BOOL,
3424    ) -> FMOD_RESULT;
3425    pub fn FMOD_Studio_EventDescription_IsStream(
3426        eventdescription: *mut FMOD_STUDIO_EVENTDESCRIPTION,
3427        isStream: *mut FMOD_BOOL,
3428    ) -> FMOD_RESULT;
3429    pub fn FMOD_Studio_EventDescription_Is3D(
3430        eventdescription: *mut FMOD_STUDIO_EVENTDESCRIPTION,
3431        is3D: *mut FMOD_BOOL,
3432    ) -> FMOD_RESULT;
3433    pub fn FMOD_Studio_EventDescription_IsDopplerEnabled(
3434        eventdescription: *mut FMOD_STUDIO_EVENTDESCRIPTION,
3435        doppler: *mut FMOD_BOOL,
3436    ) -> FMOD_RESULT;
3437    pub fn FMOD_Studio_EventDescription_HasSustainPoint(
3438        eventdescription: *mut FMOD_STUDIO_EVENTDESCRIPTION,
3439        sustainPoint: *mut FMOD_BOOL,
3440    ) -> FMOD_RESULT;
3441    pub fn FMOD_Studio_EventDescription_CreateInstance(
3442        eventdescription: *mut FMOD_STUDIO_EVENTDESCRIPTION,
3443        instance: *mut *mut FMOD_STUDIO_EVENTINSTANCE,
3444    ) -> FMOD_RESULT;
3445    pub fn FMOD_Studio_EventDescription_GetInstanceCount(
3446        eventdescription: *mut FMOD_STUDIO_EVENTDESCRIPTION,
3447        count: *mut c_int,
3448    ) -> FMOD_RESULT;
3449    pub fn FMOD_Studio_EventDescription_GetInstanceList(
3450        eventdescription: *mut FMOD_STUDIO_EVENTDESCRIPTION,
3451        array: *mut *mut FMOD_STUDIO_EVENTINSTANCE,
3452        capacity: c_int,
3453        count: *mut c_int,
3454    ) -> FMOD_RESULT;
3455    pub fn FMOD_Studio_EventDescription_LoadSampleData(
3456        eventdescription: *mut FMOD_STUDIO_EVENTDESCRIPTION,
3457    ) -> FMOD_RESULT;
3458    pub fn FMOD_Studio_EventDescription_UnloadSampleData(
3459        eventdescription: *mut FMOD_STUDIO_EVENTDESCRIPTION,
3460    ) -> FMOD_RESULT;
3461    pub fn FMOD_Studio_EventDescription_GetSampleLoadingState(
3462        eventdescription: *mut FMOD_STUDIO_EVENTDESCRIPTION,
3463        state: *mut FMOD_STUDIO_LOADING_STATE,
3464    ) -> FMOD_RESULT;
3465    pub fn FMOD_Studio_EventDescription_ReleaseAllInstances(
3466        eventdescription: *mut FMOD_STUDIO_EVENTDESCRIPTION,
3467    ) -> FMOD_RESULT;
3468    pub fn FMOD_Studio_EventDescription_SetCallback(
3469        eventdescription: *mut FMOD_STUDIO_EVENTDESCRIPTION,
3470        callback: FMOD_STUDIO_EVENT_CALLBACK,
3471        callbackmask: FMOD_STUDIO_EVENT_CALLBACK_TYPE,
3472    ) -> FMOD_RESULT;
3473    pub fn FMOD_Studio_EventDescription_GetUserData(
3474        eventdescription: *mut FMOD_STUDIO_EVENTDESCRIPTION,
3475        userdata: *mut *mut c_void,
3476    ) -> FMOD_RESULT;
3477    pub fn FMOD_Studio_EventDescription_SetUserData(
3478        eventdescription: *mut FMOD_STUDIO_EVENTDESCRIPTION,
3479        userdata: *mut c_void,
3480    ) -> FMOD_RESULT;
3481    pub fn FMOD_Studio_EventInstance_IsValid(
3482        eventinstance: *mut FMOD_STUDIO_EVENTINSTANCE,
3483    ) -> FMOD_BOOL;
3484    pub fn FMOD_Studio_EventInstance_GetDescription(
3485        eventinstance: *mut FMOD_STUDIO_EVENTINSTANCE,
3486        description: *mut *mut FMOD_STUDIO_EVENTDESCRIPTION,
3487    ) -> FMOD_RESULT;
3488    pub fn FMOD_Studio_EventInstance_GetVolume(
3489        eventinstance: *mut FMOD_STUDIO_EVENTINSTANCE,
3490        volume: *mut c_float,
3491        finalvolume: *mut c_float,
3492    ) -> FMOD_RESULT;
3493    pub fn FMOD_Studio_EventInstance_SetVolume(
3494        eventinstance: *mut FMOD_STUDIO_EVENTINSTANCE,
3495        volume: c_float,
3496    ) -> FMOD_RESULT;
3497    pub fn FMOD_Studio_EventInstance_GetPitch(
3498        eventinstance: *mut FMOD_STUDIO_EVENTINSTANCE,
3499        pitch: *mut c_float,
3500        finalpitch: *mut c_float,
3501    ) -> FMOD_RESULT;
3502    pub fn FMOD_Studio_EventInstance_SetPitch(
3503        eventinstance: *mut FMOD_STUDIO_EVENTINSTANCE,
3504        pitch: c_float,
3505    ) -> FMOD_RESULT;
3506    pub fn FMOD_Studio_EventInstance_Get3DAttributes(
3507        eventinstance: *mut FMOD_STUDIO_EVENTINSTANCE,
3508        attributes: *mut FMOD_3D_ATTRIBUTES,
3509    ) -> FMOD_RESULT;
3510    pub fn FMOD_Studio_EventInstance_Set3DAttributes(
3511        eventinstance: *mut FMOD_STUDIO_EVENTINSTANCE,
3512        attributes: *mut FMOD_3D_ATTRIBUTES,
3513    ) -> FMOD_RESULT;
3514    pub fn FMOD_Studio_EventInstance_GetListenerMask(
3515        eventinstance: *mut FMOD_STUDIO_EVENTINSTANCE,
3516        mask: *mut c_uint,
3517    ) -> FMOD_RESULT;
3518    pub fn FMOD_Studio_EventInstance_SetListenerMask(
3519        eventinstance: *mut FMOD_STUDIO_EVENTINSTANCE,
3520        mask: c_uint,
3521    ) -> FMOD_RESULT;
3522    pub fn FMOD_Studio_EventInstance_GetProperty(
3523        eventinstance: *mut FMOD_STUDIO_EVENTINSTANCE,
3524        index: FMOD_STUDIO_EVENT_PROPERTY,
3525        value: *mut c_float,
3526    ) -> FMOD_RESULT;
3527    pub fn FMOD_Studio_EventInstance_SetProperty(
3528        eventinstance: *mut FMOD_STUDIO_EVENTINSTANCE,
3529        index: FMOD_STUDIO_EVENT_PROPERTY,
3530        value: c_float,
3531    ) -> FMOD_RESULT;
3532    pub fn FMOD_Studio_EventInstance_GetReverbLevel(
3533        eventinstance: *mut FMOD_STUDIO_EVENTINSTANCE,
3534        index: c_int,
3535        level: *mut c_float,
3536    ) -> FMOD_RESULT;
3537    pub fn FMOD_Studio_EventInstance_SetReverbLevel(
3538        eventinstance: *mut FMOD_STUDIO_EVENTINSTANCE,
3539        index: c_int,
3540        level: c_float,
3541    ) -> FMOD_RESULT;
3542    pub fn FMOD_Studio_EventInstance_GetPaused(
3543        eventinstance: *mut FMOD_STUDIO_EVENTINSTANCE,
3544        paused: *mut FMOD_BOOL,
3545    ) -> FMOD_RESULT;
3546    pub fn FMOD_Studio_EventInstance_SetPaused(
3547        eventinstance: *mut FMOD_STUDIO_EVENTINSTANCE,
3548        paused: FMOD_BOOL,
3549    ) -> FMOD_RESULT;
3550    pub fn FMOD_Studio_EventInstance_Start(
3551        eventinstance: *mut FMOD_STUDIO_EVENTINSTANCE,
3552    ) -> FMOD_RESULT;
3553    pub fn FMOD_Studio_EventInstance_Stop(
3554        eventinstance: *mut FMOD_STUDIO_EVENTINSTANCE,
3555        mode: FMOD_STUDIO_STOP_MODE,
3556    ) -> FMOD_RESULT;
3557    pub fn FMOD_Studio_EventInstance_GetTimelinePosition(
3558        eventinstance: *mut FMOD_STUDIO_EVENTINSTANCE,
3559        position: *mut c_int,
3560    ) -> FMOD_RESULT;
3561    pub fn FMOD_Studio_EventInstance_SetTimelinePosition(
3562        eventinstance: *mut FMOD_STUDIO_EVENTINSTANCE,
3563        position: c_int,
3564    ) -> FMOD_RESULT;
3565    pub fn FMOD_Studio_EventInstance_GetPlaybackState(
3566        eventinstance: *mut FMOD_STUDIO_EVENTINSTANCE,
3567        state: *mut FMOD_STUDIO_PLAYBACK_STATE,
3568    ) -> FMOD_RESULT;
3569    pub fn FMOD_Studio_EventInstance_GetChannelGroup(
3570        eventinstance: *mut FMOD_STUDIO_EVENTINSTANCE,
3571        group: *mut *mut FMOD_CHANNELGROUP,
3572    ) -> FMOD_RESULT;
3573    pub fn FMOD_Studio_EventInstance_GetMinMaxDistance(
3574        eventinstance: *mut FMOD_STUDIO_EVENTINSTANCE,
3575        min: *mut c_float,
3576        max: *mut c_float,
3577    ) -> FMOD_RESULT;
3578    pub fn FMOD_Studio_EventInstance_Release(
3579        eventinstance: *mut FMOD_STUDIO_EVENTINSTANCE,
3580    ) -> FMOD_RESULT;
3581    pub fn FMOD_Studio_EventInstance_IsVirtual(
3582        eventinstance: *mut FMOD_STUDIO_EVENTINSTANCE,
3583        virtualstate: *mut FMOD_BOOL,
3584    ) -> FMOD_RESULT;
3585    pub fn FMOD_Studio_EventInstance_GetParameterByName(
3586        eventinstance: *mut FMOD_STUDIO_EVENTINSTANCE,
3587        name: *const c_char,
3588        value: *mut c_float,
3589        finalvalue: *mut c_float,
3590    ) -> FMOD_RESULT;
3591    pub fn FMOD_Studio_EventInstance_SetParameterByName(
3592        eventinstance: *mut FMOD_STUDIO_EVENTINSTANCE,
3593        name: *const c_char,
3594        value: c_float,
3595        ignoreseekspeed: FMOD_BOOL,
3596    ) -> FMOD_RESULT;
3597    pub fn FMOD_Studio_EventInstance_SetParameterByNameWithLabel(
3598        eventinstance: *mut FMOD_STUDIO_EVENTINSTANCE,
3599        name: *const c_char,
3600        label: *const c_char,
3601        ignoreseekspeed: FMOD_BOOL,
3602    ) -> FMOD_RESULT;
3603    pub fn FMOD_Studio_EventInstance_GetParameterByID(
3604        eventinstance: *mut FMOD_STUDIO_EVENTINSTANCE,
3605        id: FMOD_STUDIO_PARAMETER_ID,
3606        value: *mut c_float,
3607        finalvalue: *mut c_float,
3608    ) -> FMOD_RESULT;
3609    pub fn FMOD_Studio_EventInstance_SetParameterByID(
3610        eventinstance: *mut FMOD_STUDIO_EVENTINSTANCE,
3611        id: FMOD_STUDIO_PARAMETER_ID,
3612        value: c_float,
3613        ignoreseekspeed: FMOD_BOOL,
3614    ) -> FMOD_RESULT;
3615    pub fn FMOD_Studio_EventInstance_SetParameterByIDWithLabel(
3616        eventinstance: *mut FMOD_STUDIO_EVENTINSTANCE,
3617        id: FMOD_STUDIO_PARAMETER_ID,
3618        label: *const c_char,
3619        ignoreseekspeed: FMOD_BOOL,
3620    ) -> FMOD_RESULT;
3621    pub fn FMOD_Studio_EventInstance_SetParametersByIDs(
3622        eventinstance: *mut FMOD_STUDIO_EVENTINSTANCE,
3623        ids: *const FMOD_STUDIO_PARAMETER_ID,
3624        values: *mut c_float,
3625        count: c_int,
3626        ignoreseekspeed: FMOD_BOOL,
3627    ) -> FMOD_RESULT;
3628    pub fn FMOD_Studio_EventInstance_KeyOff(
3629        eventinstance: *mut FMOD_STUDIO_EVENTINSTANCE,
3630    ) -> FMOD_RESULT;
3631    pub fn FMOD_Studio_EventInstance_SetCallback(
3632        eventinstance: *mut FMOD_STUDIO_EVENTINSTANCE,
3633        callback: FMOD_STUDIO_EVENT_CALLBACK,
3634        callbackmask: FMOD_STUDIO_EVENT_CALLBACK_TYPE,
3635    ) -> FMOD_RESULT;
3636    pub fn FMOD_Studio_EventInstance_GetUserData(
3637        eventinstance: *mut FMOD_STUDIO_EVENTINSTANCE,
3638        userdata: *mut *mut c_void,
3639    ) -> FMOD_RESULT;
3640    pub fn FMOD_Studio_EventInstance_SetUserData(
3641        eventinstance: *mut FMOD_STUDIO_EVENTINSTANCE,
3642        userdata: *mut c_void,
3643    ) -> FMOD_RESULT;
3644    pub fn FMOD_Studio_EventInstance_GetCPUUsage(
3645        eventinstance: *mut FMOD_STUDIO_EVENTINSTANCE,
3646        exclusive: *mut c_uint,
3647        inclusive: *mut c_uint,
3648    ) -> FMOD_RESULT;
3649    pub fn FMOD_Studio_EventInstance_GetMemoryUsage(
3650        eventinstance: *mut FMOD_STUDIO_EVENTINSTANCE,
3651        memoryusage: *mut FMOD_STUDIO_MEMORY_USAGE,
3652    ) -> FMOD_RESULT;
3653    pub fn FMOD_Studio_Bus_IsValid(bus: *mut FMOD_STUDIO_BUS) -> FMOD_BOOL;
3654    pub fn FMOD_Studio_Bus_GetID(bus: *mut FMOD_STUDIO_BUS, id: *mut FMOD_GUID) -> FMOD_RESULT;
3655    pub fn FMOD_Studio_Bus_GetPath(
3656        bus: *mut FMOD_STUDIO_BUS,
3657        path: *mut c_char,
3658        size: c_int,
3659        retrieved: *mut c_int,
3660    ) -> FMOD_RESULT;
3661    pub fn FMOD_Studio_Bus_GetVolume(
3662        bus: *mut FMOD_STUDIO_BUS,
3663        volume: *mut c_float,
3664        finalvolume: *mut c_float,
3665    ) -> FMOD_RESULT;
3666    pub fn FMOD_Studio_Bus_SetVolume(bus: *mut FMOD_STUDIO_BUS, volume: c_float) -> FMOD_RESULT;
3667    pub fn FMOD_Studio_Bus_GetPaused(
3668        bus: *mut FMOD_STUDIO_BUS,
3669        paused: *mut FMOD_BOOL,
3670    ) -> FMOD_RESULT;
3671    pub fn FMOD_Studio_Bus_SetPaused(bus: *mut FMOD_STUDIO_BUS, paused: FMOD_BOOL) -> FMOD_RESULT;
3672    pub fn FMOD_Studio_Bus_GetMute(bus: *mut FMOD_STUDIO_BUS, mute: *mut FMOD_BOOL) -> FMOD_RESULT;
3673    pub fn FMOD_Studio_Bus_SetMute(bus: *mut FMOD_STUDIO_BUS, mute: FMOD_BOOL) -> FMOD_RESULT;
3674    pub fn FMOD_Studio_Bus_StopAllEvents(
3675        bus: *mut FMOD_STUDIO_BUS,
3676        mode: FMOD_STUDIO_STOP_MODE,
3677    ) -> FMOD_RESULT;
3678    pub fn FMOD_Studio_Bus_GetPortIndex(
3679        bus: *mut FMOD_STUDIO_BUS,
3680        index: *mut FMOD_PORT_INDEX,
3681    ) -> FMOD_RESULT;
3682    pub fn FMOD_Studio_Bus_SetPortIndex(
3683        bus: *mut FMOD_STUDIO_BUS,
3684        index: FMOD_PORT_INDEX,
3685    ) -> FMOD_RESULT;
3686    pub fn FMOD_Studio_Bus_LockChannelGroup(bus: *mut FMOD_STUDIO_BUS) -> FMOD_RESULT;
3687    pub fn FMOD_Studio_Bus_UnlockChannelGroup(bus: *mut FMOD_STUDIO_BUS) -> FMOD_RESULT;
3688    pub fn FMOD_Studio_Bus_GetChannelGroup(
3689        bus: *mut FMOD_STUDIO_BUS,
3690        group: *mut *mut FMOD_CHANNELGROUP,
3691    ) -> FMOD_RESULT;
3692    pub fn FMOD_Studio_Bus_GetCPUUsage(
3693        bus: *mut FMOD_STUDIO_BUS,
3694        exclusive: *mut c_uint,
3695        inclusive: *mut c_uint,
3696    ) -> FMOD_RESULT;
3697    pub fn FMOD_Studio_Bus_GetMemoryUsage(
3698        bus: *mut FMOD_STUDIO_BUS,
3699        memoryusage: *mut FMOD_STUDIO_MEMORY_USAGE,
3700    ) -> FMOD_RESULT;
3701    pub fn FMOD_Studio_VCA_IsValid(vca: *mut FMOD_STUDIO_VCA) -> FMOD_BOOL;
3702    pub fn FMOD_Studio_VCA_GetID(vca: *mut FMOD_STUDIO_VCA, id: *mut FMOD_GUID) -> FMOD_RESULT;
3703    pub fn FMOD_Studio_VCA_GetPath(
3704        vca: *mut FMOD_STUDIO_VCA,
3705        path: *mut c_char,
3706        size: c_int,
3707        retrieved: *mut c_int,
3708    ) -> FMOD_RESULT;
3709    pub fn FMOD_Studio_VCA_GetVolume(
3710        vca: *mut FMOD_STUDIO_VCA,
3711        volume: *mut c_float,
3712        finalvolume: *mut c_float,
3713    ) -> FMOD_RESULT;
3714    pub fn FMOD_Studio_VCA_SetVolume(vca: *mut FMOD_STUDIO_VCA, volume: c_float) -> FMOD_RESULT;
3715    pub fn FMOD_Studio_Bank_IsValid(bank: *mut FMOD_STUDIO_BANK) -> FMOD_BOOL;
3716    pub fn FMOD_Studio_Bank_GetID(bank: *mut FMOD_STUDIO_BANK, id: *mut FMOD_GUID) -> FMOD_RESULT;
3717    pub fn FMOD_Studio_Bank_GetPath(
3718        bank: *mut FMOD_STUDIO_BANK,
3719        path: *mut c_char,
3720        size: c_int,
3721        retrieved: *mut c_int,
3722    ) -> FMOD_RESULT;
3723    pub fn FMOD_Studio_Bank_Unload(bank: *mut FMOD_STUDIO_BANK) -> FMOD_RESULT;
3724    pub fn FMOD_Studio_Bank_LoadSampleData(bank: *mut FMOD_STUDIO_BANK) -> FMOD_RESULT;
3725    pub fn FMOD_Studio_Bank_UnloadSampleData(bank: *mut FMOD_STUDIO_BANK) -> FMOD_RESULT;
3726    pub fn FMOD_Studio_Bank_GetLoadingState(
3727        bank: *mut FMOD_STUDIO_BANK,
3728        state: *mut FMOD_STUDIO_LOADING_STATE,
3729    ) -> FMOD_RESULT;
3730    pub fn FMOD_Studio_Bank_GetSampleLoadingState(
3731        bank: *mut FMOD_STUDIO_BANK,
3732        state: *mut FMOD_STUDIO_LOADING_STATE,
3733    ) -> FMOD_RESULT;
3734    pub fn FMOD_Studio_Bank_GetStringCount(
3735        bank: *mut FMOD_STUDIO_BANK,
3736        count: *mut c_int,
3737    ) -> FMOD_RESULT;
3738    pub fn FMOD_Studio_Bank_GetStringInfo(
3739        bank: *mut FMOD_STUDIO_BANK,
3740        index: c_int,
3741        id: *mut FMOD_GUID,
3742        path: *mut c_char,
3743        size: c_int,
3744        retrieved: *mut c_int,
3745    ) -> FMOD_RESULT;
3746    pub fn FMOD_Studio_Bank_GetEventCount(
3747        bank: *mut FMOD_STUDIO_BANK,
3748        count: *mut c_int,
3749    ) -> FMOD_RESULT;
3750    pub fn FMOD_Studio_Bank_GetEventList(
3751        bank: *mut FMOD_STUDIO_BANK,
3752        array: *mut *mut FMOD_STUDIO_EVENTDESCRIPTION,
3753        capacity: c_int,
3754        count: *mut c_int,
3755    ) -> FMOD_RESULT;
3756    pub fn FMOD_Studio_Bank_GetBusCount(
3757        bank: *mut FMOD_STUDIO_BANK,
3758        count: *mut c_int,
3759    ) -> FMOD_RESULT;
3760    pub fn FMOD_Studio_Bank_GetBusList(
3761        bank: *mut FMOD_STUDIO_BANK,
3762        array: *mut *mut FMOD_STUDIO_BUS,
3763        capacity: c_int,
3764        count: *mut c_int,
3765    ) -> FMOD_RESULT;
3766    pub fn FMOD_Studio_Bank_GetVCACount(
3767        bank: *mut FMOD_STUDIO_BANK,
3768        count: *mut c_int,
3769    ) -> FMOD_RESULT;
3770    pub fn FMOD_Studio_Bank_GetVCAList(
3771        bank: *mut FMOD_STUDIO_BANK,
3772        array: *mut *mut FMOD_STUDIO_VCA,
3773        capacity: c_int,
3774        count: *mut c_int,
3775    ) -> FMOD_RESULT;
3776    pub fn FMOD_Studio_Bank_GetUserData(
3777        bank: *mut FMOD_STUDIO_BANK,
3778        userdata: *mut *mut c_void,
3779    ) -> FMOD_RESULT;
3780    pub fn FMOD_Studio_Bank_SetUserData(
3781        bank: *mut FMOD_STUDIO_BANK,
3782        userdata: *mut c_void,
3783    ) -> FMOD_RESULT;
3784    pub fn FMOD_Studio_CommandReplay_IsValid(replay: *mut FMOD_STUDIO_COMMANDREPLAY) -> FMOD_BOOL;
3785    pub fn FMOD_Studio_CommandReplay_GetSystem(
3786        replay: *mut FMOD_STUDIO_COMMANDREPLAY,
3787        system: *mut *mut FMOD_STUDIO_SYSTEM,
3788    ) -> FMOD_RESULT;
3789    pub fn FMOD_Studio_CommandReplay_GetLength(
3790        replay: *mut FMOD_STUDIO_COMMANDREPLAY,
3791        length: *mut c_float,
3792    ) -> FMOD_RESULT;
3793    pub fn FMOD_Studio_CommandReplay_GetCommandCount(
3794        replay: *mut FMOD_STUDIO_COMMANDREPLAY,
3795        count: *mut c_int,
3796    ) -> FMOD_RESULT;
3797    pub fn FMOD_Studio_CommandReplay_GetCommandInfo(
3798        replay: *mut FMOD_STUDIO_COMMANDREPLAY,
3799        commandindex: c_int,
3800        info: *mut FMOD_STUDIO_COMMAND_INFO,
3801    ) -> FMOD_RESULT;
3802    pub fn FMOD_Studio_CommandReplay_GetCommandString(
3803        replay: *mut FMOD_STUDIO_COMMANDREPLAY,
3804        commandindex: c_int,
3805        buffer: *mut c_char,
3806        length: c_int,
3807    ) -> FMOD_RESULT;
3808    pub fn FMOD_Studio_CommandReplay_GetCommandAtTime(
3809        replay: *mut FMOD_STUDIO_COMMANDREPLAY,
3810        time: c_float,
3811        commandindex: *mut c_int,
3812    ) -> FMOD_RESULT;
3813    pub fn FMOD_Studio_CommandReplay_SetBankPath(
3814        replay: *mut FMOD_STUDIO_COMMANDREPLAY,
3815        bankPath: *const c_char,
3816    ) -> FMOD_RESULT;
3817    pub fn FMOD_Studio_CommandReplay_Start(replay: *mut FMOD_STUDIO_COMMANDREPLAY) -> FMOD_RESULT;
3818    pub fn FMOD_Studio_CommandReplay_Stop(replay: *mut FMOD_STUDIO_COMMANDREPLAY) -> FMOD_RESULT;
3819    pub fn FMOD_Studio_CommandReplay_SeekToTime(
3820        replay: *mut FMOD_STUDIO_COMMANDREPLAY,
3821        time: c_float,
3822    ) -> FMOD_RESULT;
3823    pub fn FMOD_Studio_CommandReplay_SeekToCommand(
3824        replay: *mut FMOD_STUDIO_COMMANDREPLAY,
3825        commandindex: c_int,
3826    ) -> FMOD_RESULT;
3827    pub fn FMOD_Studio_CommandReplay_GetPaused(
3828        replay: *mut FMOD_STUDIO_COMMANDREPLAY,
3829        paused: *mut FMOD_BOOL,
3830    ) -> FMOD_RESULT;
3831    pub fn FMOD_Studio_CommandReplay_SetPaused(
3832        replay: *mut FMOD_STUDIO_COMMANDREPLAY,
3833        paused: FMOD_BOOL,
3834    ) -> FMOD_RESULT;
3835    pub fn FMOD_Studio_CommandReplay_GetPlaybackState(
3836        replay: *mut FMOD_STUDIO_COMMANDREPLAY,
3837        state: *mut FMOD_STUDIO_PLAYBACK_STATE,
3838    ) -> FMOD_RESULT;
3839    pub fn FMOD_Studio_CommandReplay_GetCurrentCommand(
3840        replay: *mut FMOD_STUDIO_COMMANDREPLAY,
3841        commandindex: *mut c_int,
3842        currenttime: *mut c_float,
3843    ) -> FMOD_RESULT;
3844    pub fn FMOD_Studio_CommandReplay_Release(replay: *mut FMOD_STUDIO_COMMANDREPLAY)
3845        -> FMOD_RESULT;
3846    pub fn FMOD_Studio_CommandReplay_SetFrameCallback(
3847        replay: *mut FMOD_STUDIO_COMMANDREPLAY,
3848        callback: FMOD_STUDIO_COMMANDREPLAY_FRAME_CALLBACK,
3849    ) -> FMOD_RESULT;
3850    pub fn FMOD_Studio_CommandReplay_SetLoadBankCallback(
3851        replay: *mut FMOD_STUDIO_COMMANDREPLAY,
3852        callback: FMOD_STUDIO_COMMANDREPLAY_LOAD_BANK_CALLBACK,
3853    ) -> FMOD_RESULT;
3854    pub fn FMOD_Studio_CommandReplay_SetCreateInstanceCallback(
3855        replay: *mut FMOD_STUDIO_COMMANDREPLAY,
3856        callback: FMOD_STUDIO_COMMANDREPLAY_CREATE_INSTANCE_CALLBACK,
3857    ) -> FMOD_RESULT;
3858    pub fn FMOD_Studio_CommandReplay_GetUserData(
3859        replay: *mut FMOD_STUDIO_COMMANDREPLAY,
3860        userdata: *mut *mut c_void,
3861    ) -> FMOD_RESULT;
3862    pub fn FMOD_Studio_CommandReplay_SetUserData(
3863        replay: *mut FMOD_STUDIO_COMMANDREPLAY,
3864        userdata: *mut c_void,
3865    ) -> FMOD_RESULT;
3866}
3867extern "C" {
3868    pub fn FMOD_Memory_Initialize(
3869        poolmem: *mut c_void,
3870        poollen: c_int,
3871        useralloc: FMOD_MEMORY_ALLOC_CALLBACK,
3872        userrealloc: FMOD_MEMORY_REALLOC_CALLBACK,
3873        userfree: FMOD_MEMORY_FREE_CALLBACK,
3874        memtypeflags: FMOD_MEMORY_TYPE,
3875    ) -> FMOD_RESULT;
3876    pub fn FMOD_Memory_GetStats(
3877        currentalloced: *mut c_int,
3878        maxalloced: *mut c_int,
3879        blocking: FMOD_BOOL,
3880    ) -> FMOD_RESULT;
3881    pub fn FMOD_Debug_Initialize(
3882        flags: FMOD_DEBUG_FLAGS,
3883        mode: FMOD_DEBUG_MODE,
3884        callback: FMOD_DEBUG_CALLBACK,
3885        filename: *const c_char,
3886    ) -> FMOD_RESULT;
3887    pub fn FMOD_File_SetDiskBusy(busy: c_int) -> FMOD_RESULT;
3888    pub fn FMOD_File_GetDiskBusy(busy: *mut c_int) -> FMOD_RESULT;
3889    pub fn FMOD_Thread_SetAttributes(
3890        type_: FMOD_THREAD_TYPE,
3891        affinity: FMOD_THREAD_AFFINITY,
3892        priority: FMOD_THREAD_PRIORITY,
3893        stacksize: FMOD_THREAD_STACK_SIZE,
3894    ) -> FMOD_RESULT;
3895    pub fn FMOD_System_Create(system: *mut *mut FMOD_SYSTEM, headerversion: c_uint) -> FMOD_RESULT;
3896    pub fn FMOD_System_Release(system: *mut FMOD_SYSTEM) -> FMOD_RESULT;
3897    pub fn FMOD_System_SetOutput(system: *mut FMOD_SYSTEM, output: FMOD_OUTPUTTYPE) -> FMOD_RESULT;
3898    pub fn FMOD_System_GetOutput(
3899        system: *mut FMOD_SYSTEM,
3900        output: *mut FMOD_OUTPUTTYPE,
3901    ) -> FMOD_RESULT;
3902    pub fn FMOD_System_GetNumDrivers(
3903        system: *mut FMOD_SYSTEM,
3904        numdrivers: *mut c_int,
3905    ) -> FMOD_RESULT;
3906    pub fn FMOD_System_GetDriverInfo(
3907        system: *mut FMOD_SYSTEM,
3908        id: c_int,
3909        name: *mut c_char,
3910        namelen: c_int,
3911        guid: *mut FMOD_GUID,
3912        systemrate: *mut c_int,
3913        speakermode: *mut FMOD_SPEAKERMODE,
3914        speakermodechannels: *mut c_int,
3915    ) -> FMOD_RESULT;
3916    pub fn FMOD_System_SetDriver(system: *mut FMOD_SYSTEM, driver: c_int) -> FMOD_RESULT;
3917    pub fn FMOD_System_GetDriver(system: *mut FMOD_SYSTEM, driver: *mut c_int) -> FMOD_RESULT;
3918    pub fn FMOD_System_SetSoftwareChannels(
3919        system: *mut FMOD_SYSTEM,
3920        numsoftwarechannels: c_int,
3921    ) -> FMOD_RESULT;
3922    pub fn FMOD_System_GetSoftwareChannels(
3923        system: *mut FMOD_SYSTEM,
3924        numsoftwarechannels: *mut c_int,
3925    ) -> FMOD_RESULT;
3926    pub fn FMOD_System_SetSoftwareFormat(
3927        system: *mut FMOD_SYSTEM,
3928        samplerate: c_int,
3929        speakermode: FMOD_SPEAKERMODE,
3930        numrawspeakers: c_int,
3931    ) -> FMOD_RESULT;
3932    pub fn FMOD_System_GetSoftwareFormat(
3933        system: *mut FMOD_SYSTEM,
3934        samplerate: *mut c_int,
3935        speakermode: *mut FMOD_SPEAKERMODE,
3936        numrawspeakers: *mut c_int,
3937    ) -> FMOD_RESULT;
3938    pub fn FMOD_System_SetDSPBufferSize(
3939        system: *mut FMOD_SYSTEM,
3940        bufferlength: c_uint,
3941        numbuffers: c_int,
3942    ) -> FMOD_RESULT;
3943    pub fn FMOD_System_GetDSPBufferSize(
3944        system: *mut FMOD_SYSTEM,
3945        bufferlength: *mut c_uint,
3946        numbuffers: *mut c_int,
3947    ) -> FMOD_RESULT;
3948    pub fn FMOD_System_SetFileSystem(
3949        system: *mut FMOD_SYSTEM,
3950        useropen: FMOD_FILE_OPEN_CALLBACK,
3951        userclose: FMOD_FILE_CLOSE_CALLBACK,
3952        userread: FMOD_FILE_READ_CALLBACK,
3953        userseek: FMOD_FILE_SEEK_CALLBACK,
3954        userasyncread: FMOD_FILE_ASYNCREAD_CALLBACK,
3955        userasynccancel: FMOD_FILE_ASYNCCANCEL_CALLBACK,
3956        blockalign: c_int,
3957    ) -> FMOD_RESULT;
3958    pub fn FMOD_System_AttachFileSystem(
3959        system: *mut FMOD_SYSTEM,
3960        useropen: FMOD_FILE_OPEN_CALLBACK,
3961        userclose: FMOD_FILE_CLOSE_CALLBACK,
3962        userread: FMOD_FILE_READ_CALLBACK,
3963        userseek: FMOD_FILE_SEEK_CALLBACK,
3964    ) -> FMOD_RESULT;
3965    pub fn FMOD_System_SetAdvancedSettings(
3966        system: *mut FMOD_SYSTEM,
3967        settings: *mut FMOD_ADVANCEDSETTINGS,
3968    ) -> FMOD_RESULT;
3969    pub fn FMOD_System_GetAdvancedSettings(
3970        system: *mut FMOD_SYSTEM,
3971        settings: *mut FMOD_ADVANCEDSETTINGS,
3972    ) -> FMOD_RESULT;
3973    pub fn FMOD_System_SetCallback(
3974        system: *mut FMOD_SYSTEM,
3975        callback: FMOD_SYSTEM_CALLBACK,
3976        callbackmask: FMOD_SYSTEM_CALLBACK_TYPE,
3977    ) -> FMOD_RESULT;
3978    pub fn FMOD_System_SetPluginPath(system: *mut FMOD_SYSTEM, path: *const c_char) -> FMOD_RESULT;
3979    pub fn FMOD_System_LoadPlugin(
3980        system: *mut FMOD_SYSTEM,
3981        filename: *const c_char,
3982        handle: *mut c_uint,
3983        priority: c_uint,
3984    ) -> FMOD_RESULT;
3985    pub fn FMOD_System_UnloadPlugin(system: *mut FMOD_SYSTEM, handle: c_uint) -> FMOD_RESULT;
3986    pub fn FMOD_System_GetNumNestedPlugins(
3987        system: *mut FMOD_SYSTEM,
3988        handle: c_uint,
3989        count: *mut c_int,
3990    ) -> FMOD_RESULT;
3991    pub fn FMOD_System_GetNestedPlugin(
3992        system: *mut FMOD_SYSTEM,
3993        handle: c_uint,
3994        index: c_int,
3995        nestedhandle: *mut c_uint,
3996    ) -> FMOD_RESULT;
3997    pub fn FMOD_System_GetNumPlugins(
3998        system: *mut FMOD_SYSTEM,
3999        plugintype: FMOD_PLUGINTYPE,
4000        numplugins: *mut c_int,
4001    ) -> FMOD_RESULT;
4002    pub fn FMOD_System_GetPluginHandle(
4003        system: *mut FMOD_SYSTEM,
4004        plugintype: FMOD_PLUGINTYPE,
4005        index: c_int,
4006        handle: *mut c_uint,
4007    ) -> FMOD_RESULT;
4008    pub fn FMOD_System_GetPluginInfo(
4009        system: *mut FMOD_SYSTEM,
4010        handle: c_uint,
4011        plugintype: *mut FMOD_PLUGINTYPE,
4012        name: *mut c_char,
4013        namelen: c_int,
4014        version: *mut c_uint,
4015    ) -> FMOD_RESULT;
4016    pub fn FMOD_System_SetOutputByPlugin(system: *mut FMOD_SYSTEM, handle: c_uint) -> FMOD_RESULT;
4017    pub fn FMOD_System_GetOutputByPlugin(
4018        system: *mut FMOD_SYSTEM,
4019        handle: *mut c_uint,
4020    ) -> FMOD_RESULT;
4021    pub fn FMOD_System_CreateDSPByPlugin(
4022        system: *mut FMOD_SYSTEM,
4023        handle: c_uint,
4024        dsp: *mut *mut FMOD_DSP,
4025    ) -> FMOD_RESULT;
4026    pub fn FMOD_System_GetDSPInfoByPlugin(
4027        system: *mut FMOD_SYSTEM,
4028        handle: c_uint,
4029        description: *const *const FMOD_DSP_DESCRIPTION,
4030    ) -> FMOD_RESULT;
4031    pub fn FMOD_System_RegisterCodec(
4032        system: *mut FMOD_SYSTEM,
4033        description: *mut FMOD_CODEC_DESCRIPTION,
4034        handle: *mut c_uint,
4035        priority: c_uint,
4036    ) -> FMOD_RESULT;
4037    pub fn FMOD_System_RegisterDSP(
4038        system: *mut FMOD_SYSTEM,
4039        description: *const FMOD_DSP_DESCRIPTION,
4040        handle: *mut c_uint,
4041    ) -> FMOD_RESULT;
4042    pub fn FMOD_System_RegisterOutput(
4043        system: *mut FMOD_SYSTEM,
4044        description: *const FMOD_OUTPUT_DESCRIPTION,
4045        handle: *mut c_uint,
4046    ) -> FMOD_RESULT;
4047    pub fn FMOD_System_Init(
4048        system: *mut FMOD_SYSTEM,
4049        maxchannels: c_int,
4050        flags: FMOD_INITFLAGS,
4051        extradriverdata: *mut c_void,
4052    ) -> FMOD_RESULT;
4053    pub fn FMOD_System_Close(system: *mut FMOD_SYSTEM) -> FMOD_RESULT;
4054    pub fn FMOD_System_Update(system: *mut FMOD_SYSTEM) -> FMOD_RESULT;
4055    pub fn FMOD_System_SetSpeakerPosition(
4056        system: *mut FMOD_SYSTEM,
4057        speaker: FMOD_SPEAKER,
4058        x: c_float,
4059        y: c_float,
4060        active: FMOD_BOOL,
4061    ) -> FMOD_RESULT;
4062    pub fn FMOD_System_GetSpeakerPosition(
4063        system: *mut FMOD_SYSTEM,
4064        speaker: FMOD_SPEAKER,
4065        x: *mut c_float,
4066        y: *mut c_float,
4067        active: *mut FMOD_BOOL,
4068    ) -> FMOD_RESULT;
4069    pub fn FMOD_System_SetStreamBufferSize(
4070        system: *mut FMOD_SYSTEM,
4071        filebuffersize: c_uint,
4072        filebuffersizetype: FMOD_TIMEUNIT,
4073    ) -> FMOD_RESULT;
4074    pub fn FMOD_System_GetStreamBufferSize(
4075        system: *mut FMOD_SYSTEM,
4076        filebuffersize: *mut c_uint,
4077        filebuffersizetype: *mut FMOD_TIMEUNIT,
4078    ) -> FMOD_RESULT;
4079    pub fn FMOD_System_Set3DSettings(
4080        system: *mut FMOD_SYSTEM,
4081        dopplerscale: c_float,
4082        distancefactor: c_float,
4083        rolloffscale: c_float,
4084    ) -> FMOD_RESULT;
4085    pub fn FMOD_System_Get3DSettings(
4086        system: *mut FMOD_SYSTEM,
4087        dopplerscale: *mut c_float,
4088        distancefactor: *mut c_float,
4089        rolloffscale: *mut c_float,
4090    ) -> FMOD_RESULT;
4091    pub fn FMOD_System_Set3DNumListeners(
4092        system: *mut FMOD_SYSTEM,
4093        numlisteners: c_int,
4094    ) -> FMOD_RESULT;
4095    pub fn FMOD_System_Get3DNumListeners(
4096        system: *mut FMOD_SYSTEM,
4097        numlisteners: *mut c_int,
4098    ) -> FMOD_RESULT;
4099    pub fn FMOD_System_Set3DListenerAttributes(
4100        system: *mut FMOD_SYSTEM,
4101        listener: c_int,
4102        pos: *const FMOD_VECTOR,
4103        vel: *const FMOD_VECTOR,
4104        forward: *const FMOD_VECTOR,
4105        up: *const FMOD_VECTOR,
4106    ) -> FMOD_RESULT;
4107    pub fn FMOD_System_Get3DListenerAttributes(
4108        system: *mut FMOD_SYSTEM,
4109        listener: c_int,
4110        pos: *mut FMOD_VECTOR,
4111        vel: *mut FMOD_VECTOR,
4112        forward: *mut FMOD_VECTOR,
4113        up: *mut FMOD_VECTOR,
4114    ) -> FMOD_RESULT;
4115    pub fn FMOD_System_Set3DRolloffCallback(
4116        system: *mut FMOD_SYSTEM,
4117        callback: FMOD_3D_ROLLOFF_CALLBACK,
4118    ) -> FMOD_RESULT;
4119    pub fn FMOD_System_MixerSuspend(system: *mut FMOD_SYSTEM) -> FMOD_RESULT;
4120    pub fn FMOD_System_MixerResume(system: *mut FMOD_SYSTEM) -> FMOD_RESULT;
4121    pub fn FMOD_System_GetDefaultMixMatrix(
4122        system: *mut FMOD_SYSTEM,
4123        sourcespeakermode: FMOD_SPEAKERMODE,
4124        targetspeakermode: FMOD_SPEAKERMODE,
4125        matrix: *mut c_float,
4126        matrixhop: c_int,
4127    ) -> FMOD_RESULT;
4128    pub fn FMOD_System_GetSpeakerModeChannels(
4129        system: *mut FMOD_SYSTEM,
4130        mode: FMOD_SPEAKERMODE,
4131        channels: *mut c_int,
4132    ) -> FMOD_RESULT;
4133    pub fn FMOD_System_GetVersion(system: *mut FMOD_SYSTEM, version: *mut c_uint) -> FMOD_RESULT;
4134    pub fn FMOD_System_GetOutputHandle(
4135        system: *mut FMOD_SYSTEM,
4136        handle: *mut *mut c_void,
4137    ) -> FMOD_RESULT;
4138    pub fn FMOD_System_GetChannelsPlaying(
4139        system: *mut FMOD_SYSTEM,
4140        channels: *mut c_int,
4141        realchannels: *mut c_int,
4142    ) -> FMOD_RESULT;
4143    pub fn FMOD_System_GetCPUUsage(
4144        system: *mut FMOD_SYSTEM,
4145        usage: *mut FMOD_CPU_USAGE,
4146    ) -> FMOD_RESULT;
4147    pub fn FMOD_System_GetFileUsage(
4148        system: *mut FMOD_SYSTEM,
4149        sampleBytesRead: *mut c_longlong,
4150        streamBytesRead: *mut c_longlong,
4151        otherBytesRead: *mut c_longlong,
4152    ) -> FMOD_RESULT;
4153    pub fn FMOD_System_CreateSound(
4154        system: *mut FMOD_SYSTEM,
4155        name_or_data: *const c_char,
4156        mode: FMOD_MODE,
4157        exinfo: *mut FMOD_CREATESOUNDEXINFO,
4158        sound: *mut *mut FMOD_SOUND,
4159    ) -> FMOD_RESULT;
4160    pub fn FMOD_System_CreateStream(
4161        system: *mut FMOD_SYSTEM,
4162        name_or_data: *const c_char,
4163        mode: FMOD_MODE,
4164        exinfo: *mut FMOD_CREATESOUNDEXINFO,
4165        sound: *mut *mut FMOD_SOUND,
4166    ) -> FMOD_RESULT;
4167    pub fn FMOD_System_CreateDSP(
4168        system: *mut FMOD_SYSTEM,
4169        description: *const FMOD_DSP_DESCRIPTION,
4170        dsp: *mut *mut FMOD_DSP,
4171    ) -> FMOD_RESULT;
4172    pub fn FMOD_System_CreateDSPByType(
4173        system: *mut FMOD_SYSTEM,
4174        type_: FMOD_DSP_TYPE,
4175        dsp: *mut *mut FMOD_DSP,
4176    ) -> FMOD_RESULT;
4177    pub fn FMOD_System_CreateChannelGroup(
4178        system: *mut FMOD_SYSTEM,
4179        name: *const c_char,
4180        channelgroup: *mut *mut FMOD_CHANNELGROUP,
4181    ) -> FMOD_RESULT;
4182    pub fn FMOD_System_CreateSoundGroup(
4183        system: *mut FMOD_SYSTEM,
4184        name: *const c_char,
4185        soundgroup: *mut *mut FMOD_SOUNDGROUP,
4186    ) -> FMOD_RESULT;
4187    pub fn FMOD_System_CreateReverb3D(
4188        system: *mut FMOD_SYSTEM,
4189        reverb: *mut *mut FMOD_REVERB3D,
4190    ) -> FMOD_RESULT;
4191    pub fn FMOD_System_PlaySound(
4192        system: *mut FMOD_SYSTEM,
4193        sound: *mut FMOD_SOUND,
4194        channelgroup: *mut FMOD_CHANNELGROUP,
4195        paused: FMOD_BOOL,
4196        channel: *mut *mut FMOD_CHANNEL,
4197    ) -> FMOD_RESULT;
4198    pub fn FMOD_System_PlayDSP(
4199        system: *mut FMOD_SYSTEM,
4200        dsp: *mut FMOD_DSP,
4201        channelgroup: *mut FMOD_CHANNELGROUP,
4202        paused: FMOD_BOOL,
4203        channel: *mut *mut FMOD_CHANNEL,
4204    ) -> FMOD_RESULT;
4205    pub fn FMOD_System_GetChannel(
4206        system: *mut FMOD_SYSTEM,
4207        channelid: c_int,
4208        channel: *mut *mut FMOD_CHANNEL,
4209    ) -> FMOD_RESULT;
4210    pub fn FMOD_System_GetDSPInfoByType(
4211        system: *mut FMOD_SYSTEM,
4212        type_: FMOD_DSP_TYPE,
4213        description: *const *const FMOD_DSP_DESCRIPTION,
4214    ) -> FMOD_RESULT;
4215    pub fn FMOD_System_GetMasterChannelGroup(
4216        system: *mut FMOD_SYSTEM,
4217        channelgroup: *mut *mut FMOD_CHANNELGROUP,
4218    ) -> FMOD_RESULT;
4219    pub fn FMOD_System_GetMasterSoundGroup(
4220        system: *mut FMOD_SYSTEM,
4221        soundgroup: *mut *mut FMOD_SOUNDGROUP,
4222    ) -> FMOD_RESULT;
4223    pub fn FMOD_System_AttachChannelGroupToPort(
4224        system: *mut FMOD_SYSTEM,
4225        portType: FMOD_PORT_TYPE,
4226        portIndex: FMOD_PORT_INDEX,
4227        channelgroup: *mut FMOD_CHANNELGROUP,
4228        passThru: FMOD_BOOL,
4229    ) -> FMOD_RESULT;
4230    pub fn FMOD_System_DetachChannelGroupFromPort(
4231        system: *mut FMOD_SYSTEM,
4232        channelgroup: *mut FMOD_CHANNELGROUP,
4233    ) -> FMOD_RESULT;
4234    pub fn FMOD_System_SetReverbProperties(
4235        system: *mut FMOD_SYSTEM,
4236        instance: c_int,
4237        prop: *const FMOD_REVERB_PROPERTIES,
4238    ) -> FMOD_RESULT;
4239    pub fn FMOD_System_GetReverbProperties(
4240        system: *mut FMOD_SYSTEM,
4241        instance: c_int,
4242        prop: *mut FMOD_REVERB_PROPERTIES,
4243    ) -> FMOD_RESULT;
4244    pub fn FMOD_System_LockDSP(system: *mut FMOD_SYSTEM) -> FMOD_RESULT;
4245    pub fn FMOD_System_UnlockDSP(system: *mut FMOD_SYSTEM) -> FMOD_RESULT;
4246    pub fn FMOD_System_GetRecordNumDrivers(
4247        system: *mut FMOD_SYSTEM,
4248        numdrivers: *mut c_int,
4249        numconnected: *mut c_int,
4250    ) -> FMOD_RESULT;
4251    pub fn FMOD_System_GetRecordDriverInfo(
4252        system: *mut FMOD_SYSTEM,
4253        id: c_int,
4254        name: *mut c_char,
4255        namelen: c_int,
4256        guid: *mut FMOD_GUID,
4257        systemrate: *mut c_int,
4258        speakermode: *mut FMOD_SPEAKERMODE,
4259        speakermodechannels: *mut c_int,
4260        state: *mut FMOD_DRIVER_STATE,
4261    ) -> FMOD_RESULT;
4262    pub fn FMOD_System_GetRecordPosition(
4263        system: *mut FMOD_SYSTEM,
4264        id: c_int,
4265        position: *mut c_uint,
4266    ) -> FMOD_RESULT;
4267    pub fn FMOD_System_RecordStart(
4268        system: *mut FMOD_SYSTEM,
4269        id: c_int,
4270        sound: *mut FMOD_SOUND,
4271        loop_: FMOD_BOOL,
4272    ) -> FMOD_RESULT;
4273    pub fn FMOD_System_RecordStop(system: *mut FMOD_SYSTEM, id: c_int) -> FMOD_RESULT;
4274    pub fn FMOD_System_IsRecording(
4275        system: *mut FMOD_SYSTEM,
4276        id: c_int,
4277        recording: *mut FMOD_BOOL,
4278    ) -> FMOD_RESULT;
4279    pub fn FMOD_System_CreateGeometry(
4280        system: *mut FMOD_SYSTEM,
4281        maxpolygons: c_int,
4282        maxvertices: c_int,
4283        geometry: *mut *mut FMOD_GEOMETRY,
4284    ) -> FMOD_RESULT;
4285    pub fn FMOD_System_SetGeometrySettings(
4286        system: *mut FMOD_SYSTEM,
4287        maxworldsize: c_float,
4288    ) -> FMOD_RESULT;
4289    pub fn FMOD_System_GetGeometrySettings(
4290        system: *mut FMOD_SYSTEM,
4291        maxworldsize: *mut c_float,
4292    ) -> FMOD_RESULT;
4293    pub fn FMOD_System_LoadGeometry(
4294        system: *mut FMOD_SYSTEM,
4295        data: *const c_void,
4296        datasize: c_int,
4297        geometry: *mut *mut FMOD_GEOMETRY,
4298    ) -> FMOD_RESULT;
4299    pub fn FMOD_System_GetGeometryOcclusion(
4300        system: *mut FMOD_SYSTEM,
4301        listener: *const FMOD_VECTOR,
4302        source: *const FMOD_VECTOR,
4303        direct: *mut c_float,
4304        reverb: *mut c_float,
4305    ) -> FMOD_RESULT;
4306    pub fn FMOD_System_SetNetworkProxy(
4307        system: *mut FMOD_SYSTEM,
4308        proxy: *const c_char,
4309    ) -> FMOD_RESULT;
4310    pub fn FMOD_System_GetNetworkProxy(
4311        system: *mut FMOD_SYSTEM,
4312        proxy: *mut c_char,
4313        proxylen: c_int,
4314    ) -> FMOD_RESULT;
4315    pub fn FMOD_System_SetNetworkTimeout(system: *mut FMOD_SYSTEM, timeout: c_int) -> FMOD_RESULT;
4316    pub fn FMOD_System_GetNetworkTimeout(
4317        system: *mut FMOD_SYSTEM,
4318        timeout: *mut c_int,
4319    ) -> FMOD_RESULT;
4320    pub fn FMOD_System_SetUserData(system: *mut FMOD_SYSTEM, userdata: *mut c_void) -> FMOD_RESULT;
4321    pub fn FMOD_System_GetUserData(
4322        system: *mut FMOD_SYSTEM,
4323        userdata: *mut *mut c_void,
4324    ) -> FMOD_RESULT;
4325    pub fn FMOD_Sound_Release(sound: *mut FMOD_SOUND) -> FMOD_RESULT;
4326    pub fn FMOD_Sound_GetSystemObject(
4327        sound: *mut FMOD_SOUND,
4328        system: *mut *mut FMOD_SYSTEM,
4329    ) -> FMOD_RESULT;
4330    pub fn FMOD_Sound_Lock(
4331        sound: *mut FMOD_SOUND,
4332        offset: c_uint,
4333        length: c_uint,
4334        ptr1: *mut *mut c_void,
4335        ptr2: *mut *mut c_void,
4336        len1: *mut c_uint,
4337        len2: *mut c_uint,
4338    ) -> FMOD_RESULT;
4339    pub fn FMOD_Sound_Unlock(
4340        sound: *mut FMOD_SOUND,
4341        ptr1: *mut c_void,
4342        ptr2: *mut c_void,
4343        len1: c_uint,
4344        len2: c_uint,
4345    ) -> FMOD_RESULT;
4346    pub fn FMOD_Sound_SetDefaults(
4347        sound: *mut FMOD_SOUND,
4348        frequency: c_float,
4349        priority: c_int,
4350    ) -> FMOD_RESULT;
4351    pub fn FMOD_Sound_GetDefaults(
4352        sound: *mut FMOD_SOUND,
4353        frequency: *mut c_float,
4354        priority: *mut c_int,
4355    ) -> FMOD_RESULT;
4356    pub fn FMOD_Sound_Set3DMinMaxDistance(
4357        sound: *mut FMOD_SOUND,
4358        min: c_float,
4359        max: c_float,
4360    ) -> FMOD_RESULT;
4361    pub fn FMOD_Sound_Get3DMinMaxDistance(
4362        sound: *mut FMOD_SOUND,
4363        min: *mut c_float,
4364        max: *mut c_float,
4365    ) -> FMOD_RESULT;
4366    pub fn FMOD_Sound_Set3DConeSettings(
4367        sound: *mut FMOD_SOUND,
4368        insideconeangle: c_float,
4369        outsideconeangle: c_float,
4370        outsidevolume: c_float,
4371    ) -> FMOD_RESULT;
4372    pub fn FMOD_Sound_Get3DConeSettings(
4373        sound: *mut FMOD_SOUND,
4374        insideconeangle: *mut c_float,
4375        outsideconeangle: *mut c_float,
4376        outsidevolume: *mut c_float,
4377    ) -> FMOD_RESULT;
4378    pub fn FMOD_Sound_Set3DCustomRolloff(
4379        sound: *mut FMOD_SOUND,
4380        points: *mut FMOD_VECTOR,
4381        numpoints: c_int,
4382    ) -> FMOD_RESULT;
4383    pub fn FMOD_Sound_Get3DCustomRolloff(
4384        sound: *mut FMOD_SOUND,
4385        points: *mut *mut FMOD_VECTOR,
4386        numpoints: *mut c_int,
4387    ) -> FMOD_RESULT;
4388    pub fn FMOD_Sound_GetSubSound(
4389        sound: *mut FMOD_SOUND,
4390        index: c_int,
4391        subsound: *mut *mut FMOD_SOUND,
4392    ) -> FMOD_RESULT;
4393    pub fn FMOD_Sound_GetSubSoundParent(
4394        sound: *mut FMOD_SOUND,
4395        parentsound: *mut *mut FMOD_SOUND,
4396    ) -> FMOD_RESULT;
4397    pub fn FMOD_Sound_GetName(
4398        sound: *mut FMOD_SOUND,
4399        name: *mut c_char,
4400        namelen: c_int,
4401    ) -> FMOD_RESULT;
4402    pub fn FMOD_Sound_GetLength(
4403        sound: *mut FMOD_SOUND,
4404        length: *mut c_uint,
4405        lengthtype: FMOD_TIMEUNIT,
4406    ) -> FMOD_RESULT;
4407    pub fn FMOD_Sound_GetFormat(
4408        sound: *mut FMOD_SOUND,
4409        type_: *mut FMOD_SOUND_TYPE,
4410        format: *mut FMOD_SOUND_FORMAT,
4411        channels: *mut c_int,
4412        bits: *mut c_int,
4413    ) -> FMOD_RESULT;
4414    pub fn FMOD_Sound_GetNumSubSounds(
4415        sound: *mut FMOD_SOUND,
4416        numsubsounds: *mut c_int,
4417    ) -> FMOD_RESULT;
4418    pub fn FMOD_Sound_GetNumTags(
4419        sound: *mut FMOD_SOUND,
4420        numtags: *mut c_int,
4421        numtagsupdated: *mut c_int,
4422    ) -> FMOD_RESULT;
4423    pub fn FMOD_Sound_GetTag(
4424        sound: *mut FMOD_SOUND,
4425        name: *const c_char,
4426        index: c_int,
4427        tag: *mut FMOD_TAG,
4428    ) -> FMOD_RESULT;
4429    pub fn FMOD_Sound_GetOpenState(
4430        sound: *mut FMOD_SOUND,
4431        openstate: *mut FMOD_OPENSTATE,
4432        percentbuffered: *mut c_uint,
4433        starving: *mut FMOD_BOOL,
4434        diskbusy: *mut FMOD_BOOL,
4435    ) -> FMOD_RESULT;
4436    pub fn FMOD_Sound_ReadData(
4437        sound: *mut FMOD_SOUND,
4438        buffer: *mut c_void,
4439        length: c_uint,
4440        read: *mut c_uint,
4441    ) -> FMOD_RESULT;
4442    pub fn FMOD_Sound_SeekData(sound: *mut FMOD_SOUND, pcm: c_uint) -> FMOD_RESULT;
4443    pub fn FMOD_Sound_SetSoundGroup(
4444        sound: *mut FMOD_SOUND,
4445        soundgroup: *mut FMOD_SOUNDGROUP,
4446    ) -> FMOD_RESULT;
4447    pub fn FMOD_Sound_GetSoundGroup(
4448        sound: *mut FMOD_SOUND,
4449        soundgroup: *mut *mut FMOD_SOUNDGROUP,
4450    ) -> FMOD_RESULT;
4451    pub fn FMOD_Sound_GetNumSyncPoints(
4452        sound: *mut FMOD_SOUND,
4453        numsyncpoints: *mut c_int,
4454    ) -> FMOD_RESULT;
4455    pub fn FMOD_Sound_GetSyncPoint(
4456        sound: *mut FMOD_SOUND,
4457        index: c_int,
4458        point: *mut *mut FMOD_SYNCPOINT,
4459    ) -> FMOD_RESULT;
4460    pub fn FMOD_Sound_GetSyncPointInfo(
4461        sound: *mut FMOD_SOUND,
4462        point: *mut FMOD_SYNCPOINT,
4463        name: *mut c_char,
4464        namelen: c_int,
4465        offset: *mut c_uint,
4466        offsettype: FMOD_TIMEUNIT,
4467    ) -> FMOD_RESULT;
4468    pub fn FMOD_Sound_AddSyncPoint(
4469        sound: *mut FMOD_SOUND,
4470        offset: c_uint,
4471        offsettype: FMOD_TIMEUNIT,
4472        name: *const c_char,
4473        point: *mut *mut FMOD_SYNCPOINT,
4474    ) -> FMOD_RESULT;
4475    pub fn FMOD_Sound_DeleteSyncPoint(
4476        sound: *mut FMOD_SOUND,
4477        point: *mut FMOD_SYNCPOINT,
4478    ) -> FMOD_RESULT;
4479    pub fn FMOD_Sound_SetMode(sound: *mut FMOD_SOUND, mode: FMOD_MODE) -> FMOD_RESULT;
4480    pub fn FMOD_Sound_GetMode(sound: *mut FMOD_SOUND, mode: *mut FMOD_MODE) -> FMOD_RESULT;
4481    pub fn FMOD_Sound_SetLoopCount(sound: *mut FMOD_SOUND, loopcount: c_int) -> FMOD_RESULT;
4482    pub fn FMOD_Sound_GetLoopCount(sound: *mut FMOD_SOUND, loopcount: *mut c_int) -> FMOD_RESULT;
4483    pub fn FMOD_Sound_SetLoopPoints(
4484        sound: *mut FMOD_SOUND,
4485        loopstart: c_uint,
4486        loopstarttype: FMOD_TIMEUNIT,
4487        loopend: c_uint,
4488        loopendtype: FMOD_TIMEUNIT,
4489    ) -> FMOD_RESULT;
4490    pub fn FMOD_Sound_GetLoopPoints(
4491        sound: *mut FMOD_SOUND,
4492        loopstart: *mut c_uint,
4493        loopstarttype: FMOD_TIMEUNIT,
4494        loopend: *mut c_uint,
4495        loopendtype: FMOD_TIMEUNIT,
4496    ) -> FMOD_RESULT;
4497    pub fn FMOD_Sound_GetMusicNumChannels(
4498        sound: *mut FMOD_SOUND,
4499        numchannels: *mut c_int,
4500    ) -> FMOD_RESULT;
4501    pub fn FMOD_Sound_SetMusicChannelVolume(
4502        sound: *mut FMOD_SOUND,
4503        channel: c_int,
4504        volume: c_float,
4505    ) -> FMOD_RESULT;
4506    pub fn FMOD_Sound_GetMusicChannelVolume(
4507        sound: *mut FMOD_SOUND,
4508        channel: c_int,
4509        volume: *mut c_float,
4510    ) -> FMOD_RESULT;
4511    pub fn FMOD_Sound_SetMusicSpeed(sound: *mut FMOD_SOUND, speed: c_float) -> FMOD_RESULT;
4512    pub fn FMOD_Sound_GetMusicSpeed(sound: *mut FMOD_SOUND, speed: *mut c_float) -> FMOD_RESULT;
4513    pub fn FMOD_Sound_SetUserData(sound: *mut FMOD_SOUND, userdata: *mut c_void) -> FMOD_RESULT;
4514    pub fn FMOD_Sound_GetUserData(
4515        sound: *mut FMOD_SOUND,
4516        userdata: *mut *mut c_void,
4517    ) -> FMOD_RESULT;
4518    pub fn FMOD_Channel_GetSystemObject(
4519        channel: *mut FMOD_CHANNEL,
4520        system: *mut *mut FMOD_SYSTEM,
4521    ) -> FMOD_RESULT;
4522    pub fn FMOD_Channel_Stop(channel: *mut FMOD_CHANNEL) -> FMOD_RESULT;
4523    pub fn FMOD_Channel_SetPaused(channel: *mut FMOD_CHANNEL, paused: FMOD_BOOL) -> FMOD_RESULT;
4524    pub fn FMOD_Channel_GetPaused(
4525        channel: *mut FMOD_CHANNEL,
4526        paused: *mut FMOD_BOOL,
4527    ) -> FMOD_RESULT;
4528    pub fn FMOD_Channel_SetVolume(channel: *mut FMOD_CHANNEL, volume: c_float) -> FMOD_RESULT;
4529    pub fn FMOD_Channel_GetVolume(channel: *mut FMOD_CHANNEL, volume: *mut c_float) -> FMOD_RESULT;
4530    pub fn FMOD_Channel_SetVolumeRamp(channel: *mut FMOD_CHANNEL, ramp: FMOD_BOOL) -> FMOD_RESULT;
4531    pub fn FMOD_Channel_GetVolumeRamp(
4532        channel: *mut FMOD_CHANNEL,
4533        ramp: *mut FMOD_BOOL,
4534    ) -> FMOD_RESULT;
4535    pub fn FMOD_Channel_GetAudibility(
4536        channel: *mut FMOD_CHANNEL,
4537        audibility: *mut c_float,
4538    ) -> FMOD_RESULT;
4539    pub fn FMOD_Channel_SetPitch(channel: *mut FMOD_CHANNEL, pitch: c_float) -> FMOD_RESULT;
4540    pub fn FMOD_Channel_GetPitch(channel: *mut FMOD_CHANNEL, pitch: *mut c_float) -> FMOD_RESULT;
4541    pub fn FMOD_Channel_SetMute(channel: *mut FMOD_CHANNEL, mute: FMOD_BOOL) -> FMOD_RESULT;
4542    pub fn FMOD_Channel_GetMute(channel: *mut FMOD_CHANNEL, mute: *mut FMOD_BOOL) -> FMOD_RESULT;
4543    pub fn FMOD_Channel_SetReverbProperties(
4544        channel: *mut FMOD_CHANNEL,
4545        instance: c_int,
4546        wet: c_float,
4547    ) -> FMOD_RESULT;
4548    pub fn FMOD_Channel_GetReverbProperties(
4549        channel: *mut FMOD_CHANNEL,
4550        instance: c_int,
4551        wet: *mut c_float,
4552    ) -> FMOD_RESULT;
4553    pub fn FMOD_Channel_SetLowPassGain(channel: *mut FMOD_CHANNEL, gain: c_float) -> FMOD_RESULT;
4554    pub fn FMOD_Channel_GetLowPassGain(
4555        channel: *mut FMOD_CHANNEL,
4556        gain: *mut c_float,
4557    ) -> FMOD_RESULT;
4558    pub fn FMOD_Channel_SetMode(channel: *mut FMOD_CHANNEL, mode: FMOD_MODE) -> FMOD_RESULT;
4559    pub fn FMOD_Channel_GetMode(channel: *mut FMOD_CHANNEL, mode: *mut FMOD_MODE) -> FMOD_RESULT;
4560    pub fn FMOD_Channel_SetCallback(
4561        channel: *mut FMOD_CHANNEL,
4562        callback: FMOD_CHANNELCONTROL_CALLBACK,
4563    ) -> FMOD_RESULT;
4564    pub fn FMOD_Channel_IsPlaying(
4565        channel: *mut FMOD_CHANNEL,
4566        isplaying: *mut FMOD_BOOL,
4567    ) -> FMOD_RESULT;
4568    pub fn FMOD_Channel_SetPan(channel: *mut FMOD_CHANNEL, pan: c_float) -> FMOD_RESULT;
4569    pub fn FMOD_Channel_SetMixLevelsOutput(
4570        channel: *mut FMOD_CHANNEL,
4571        frontleft: c_float,
4572        frontright: c_float,
4573        center: c_float,
4574        lfe: c_float,
4575        surroundleft: c_float,
4576        surroundright: c_float,
4577        backleft: c_float,
4578        backright: c_float,
4579    ) -> FMOD_RESULT;
4580    pub fn FMOD_Channel_SetMixLevelsInput(
4581        channel: *mut FMOD_CHANNEL,
4582        levels: *mut c_float,
4583        numlevels: c_int,
4584    ) -> FMOD_RESULT;
4585    pub fn FMOD_Channel_SetMixMatrix(
4586        channel: *mut FMOD_CHANNEL,
4587        matrix: *mut c_float,
4588        outchannels: c_int,
4589        inchannels: c_int,
4590        inchannel_hop: c_int,
4591    ) -> FMOD_RESULT;
4592    pub fn FMOD_Channel_GetMixMatrix(
4593        channel: *mut FMOD_CHANNEL,
4594        matrix: *mut c_float,
4595        outchannels: *mut c_int,
4596        inchannels: *mut c_int,
4597        inchannel_hop: c_int,
4598    ) -> FMOD_RESULT;
4599    pub fn FMOD_Channel_GetDSPClock(
4600        channel: *mut FMOD_CHANNEL,
4601        dspclock: *mut c_ulonglong,
4602        parentclock: *mut c_ulonglong,
4603    ) -> FMOD_RESULT;
4604    pub fn FMOD_Channel_SetDelay(
4605        channel: *mut FMOD_CHANNEL,
4606        dspclock_start: c_ulonglong,
4607        dspclock_end: c_ulonglong,
4608        stopchannels: FMOD_BOOL,
4609    ) -> FMOD_RESULT;
4610    pub fn FMOD_Channel_GetDelay(
4611        channel: *mut FMOD_CHANNEL,
4612        dspclock_start: *mut c_ulonglong,
4613        dspclock_end: *mut c_ulonglong,
4614        stopchannels: *mut FMOD_BOOL,
4615    ) -> FMOD_RESULT;
4616    pub fn FMOD_Channel_AddFadePoint(
4617        channel: *mut FMOD_CHANNEL,
4618        dspclock: c_ulonglong,
4619        volume: c_float,
4620    ) -> FMOD_RESULT;
4621    pub fn FMOD_Channel_SetFadePointRamp(
4622        channel: *mut FMOD_CHANNEL,
4623        dspclock: c_ulonglong,
4624        volume: c_float,
4625    ) -> FMOD_RESULT;
4626    pub fn FMOD_Channel_RemoveFadePoints(
4627        channel: *mut FMOD_CHANNEL,
4628        dspclock_start: c_ulonglong,
4629        dspclock_end: c_ulonglong,
4630    ) -> FMOD_RESULT;
4631    pub fn FMOD_Channel_GetFadePoints(
4632        channel: *mut FMOD_CHANNEL,
4633        numpoints: *mut c_uint,
4634        point_dspclock: *mut c_ulonglong,
4635        point_volume: *mut c_float,
4636    ) -> FMOD_RESULT;
4637    pub fn FMOD_Channel_GetDSP(
4638        channel: *mut FMOD_CHANNEL,
4639        index: c_int,
4640        dsp: *mut *mut FMOD_DSP,
4641    ) -> FMOD_RESULT;
4642    pub fn FMOD_Channel_AddDSP(
4643        channel: *mut FMOD_CHANNEL,
4644        index: c_int,
4645        dsp: *mut FMOD_DSP,
4646    ) -> FMOD_RESULT;
4647    pub fn FMOD_Channel_RemoveDSP(channel: *mut FMOD_CHANNEL, dsp: *mut FMOD_DSP) -> FMOD_RESULT;
4648    pub fn FMOD_Channel_GetNumDSPs(channel: *mut FMOD_CHANNEL, numdsps: *mut c_int) -> FMOD_RESULT;
4649    pub fn FMOD_Channel_SetDSPIndex(
4650        channel: *mut FMOD_CHANNEL,
4651        dsp: *mut FMOD_DSP,
4652        index: c_int,
4653    ) -> FMOD_RESULT;
4654    pub fn FMOD_Channel_GetDSPIndex(
4655        channel: *mut FMOD_CHANNEL,
4656        dsp: *mut FMOD_DSP,
4657        index: *mut c_int,
4658    ) -> FMOD_RESULT;
4659    pub fn FMOD_Channel_Set3DAttributes(
4660        channel: *mut FMOD_CHANNEL,
4661        pos: *const FMOD_VECTOR,
4662        vel: *const FMOD_VECTOR,
4663    ) -> FMOD_RESULT;
4664    pub fn FMOD_Channel_Get3DAttributes(
4665        channel: *mut FMOD_CHANNEL,
4666        pos: *mut FMOD_VECTOR,
4667        vel: *mut FMOD_VECTOR,
4668    ) -> FMOD_RESULT;
4669    pub fn FMOD_Channel_Set3DMinMaxDistance(
4670        channel: *mut FMOD_CHANNEL,
4671        mindistance: c_float,
4672        maxdistance: c_float,
4673    ) -> FMOD_RESULT;
4674    pub fn FMOD_Channel_Get3DMinMaxDistance(
4675        channel: *mut FMOD_CHANNEL,
4676        mindistance: *mut c_float,
4677        maxdistance: *mut c_float,
4678    ) -> FMOD_RESULT;
4679    pub fn FMOD_Channel_Set3DConeSettings(
4680        channel: *mut FMOD_CHANNEL,
4681        insideconeangle: c_float,
4682        outsideconeangle: c_float,
4683        outsidevolume: c_float,
4684    ) -> FMOD_RESULT;
4685    pub fn FMOD_Channel_Get3DConeSettings(
4686        channel: *mut FMOD_CHANNEL,
4687        insideconeangle: *mut c_float,
4688        outsideconeangle: *mut c_float,
4689        outsidevolume: *mut c_float,
4690    ) -> FMOD_RESULT;
4691    pub fn FMOD_Channel_Set3DConeOrientation(
4692        channel: *mut FMOD_CHANNEL,
4693        orientation: *mut FMOD_VECTOR,
4694    ) -> FMOD_RESULT;
4695    pub fn FMOD_Channel_Get3DConeOrientation(
4696        channel: *mut FMOD_CHANNEL,
4697        orientation: *mut FMOD_VECTOR,
4698    ) -> FMOD_RESULT;
4699    pub fn FMOD_Channel_Set3DCustomRolloff(
4700        channel: *mut FMOD_CHANNEL,
4701        points: *mut FMOD_VECTOR,
4702        numpoints: c_int,
4703    ) -> FMOD_RESULT;
4704    pub fn FMOD_Channel_Get3DCustomRolloff(
4705        channel: *mut FMOD_CHANNEL,
4706        points: *mut *mut FMOD_VECTOR,
4707        numpoints: *mut c_int,
4708    ) -> FMOD_RESULT;
4709    pub fn FMOD_Channel_Set3DOcclusion(
4710        channel: *mut FMOD_CHANNEL,
4711        directocclusion: c_float,
4712        reverbocclusion: c_float,
4713    ) -> FMOD_RESULT;
4714    pub fn FMOD_Channel_Get3DOcclusion(
4715        channel: *mut FMOD_CHANNEL,
4716        directocclusion: *mut c_float,
4717        reverbocclusion: *mut c_float,
4718    ) -> FMOD_RESULT;
4719    pub fn FMOD_Channel_Set3DSpread(channel: *mut FMOD_CHANNEL, angle: c_float) -> FMOD_RESULT;
4720    pub fn FMOD_Channel_Get3DSpread(channel: *mut FMOD_CHANNEL, angle: *mut c_float)
4721        -> FMOD_RESULT;
4722    pub fn FMOD_Channel_Set3DLevel(channel: *mut FMOD_CHANNEL, level: c_float) -> FMOD_RESULT;
4723    pub fn FMOD_Channel_Get3DLevel(channel: *mut FMOD_CHANNEL, level: *mut c_float) -> FMOD_RESULT;
4724    pub fn FMOD_Channel_Set3DDopplerLevel(
4725        channel: *mut FMOD_CHANNEL,
4726        level: c_float,
4727    ) -> FMOD_RESULT;
4728    pub fn FMOD_Channel_Get3DDopplerLevel(
4729        channel: *mut FMOD_CHANNEL,
4730        level: *mut c_float,
4731    ) -> FMOD_RESULT;
4732    pub fn FMOD_Channel_Set3DDistanceFilter(
4733        channel: *mut FMOD_CHANNEL,
4734        custom: FMOD_BOOL,
4735        customLevel: c_float,
4736        centerFreq: c_float,
4737    ) -> FMOD_RESULT;
4738    pub fn FMOD_Channel_Get3DDistanceFilter(
4739        channel: *mut FMOD_CHANNEL,
4740        custom: *mut FMOD_BOOL,
4741        customLevel: *mut c_float,
4742        centerFreq: *mut c_float,
4743    ) -> FMOD_RESULT;
4744    pub fn FMOD_Channel_SetUserData(
4745        channel: *mut FMOD_CHANNEL,
4746        userdata: *mut c_void,
4747    ) -> FMOD_RESULT;
4748    pub fn FMOD_Channel_GetUserData(
4749        channel: *mut FMOD_CHANNEL,
4750        userdata: *mut *mut c_void,
4751    ) -> FMOD_RESULT;
4752    pub fn FMOD_Channel_SetFrequency(channel: *mut FMOD_CHANNEL, frequency: c_float)
4753        -> FMOD_RESULT;
4754    pub fn FMOD_Channel_GetFrequency(
4755        channel: *mut FMOD_CHANNEL,
4756        frequency: *mut c_float,
4757    ) -> FMOD_RESULT;
4758    pub fn FMOD_Channel_SetPriority(channel: *mut FMOD_CHANNEL, priority: c_int) -> FMOD_RESULT;
4759    pub fn FMOD_Channel_GetPriority(
4760        channel: *mut FMOD_CHANNEL,
4761        priority: *mut c_int,
4762    ) -> FMOD_RESULT;
4763    pub fn FMOD_Channel_SetPosition(
4764        channel: *mut FMOD_CHANNEL,
4765        position: c_uint,
4766        postype: FMOD_TIMEUNIT,
4767    ) -> FMOD_RESULT;
4768    pub fn FMOD_Channel_GetPosition(
4769        channel: *mut FMOD_CHANNEL,
4770        position: *mut c_uint,
4771        postype: FMOD_TIMEUNIT,
4772    ) -> FMOD_RESULT;
4773    pub fn FMOD_Channel_SetChannelGroup(
4774        channel: *mut FMOD_CHANNEL,
4775        channelgroup: *mut FMOD_CHANNELGROUP,
4776    ) -> FMOD_RESULT;
4777    pub fn FMOD_Channel_GetChannelGroup(
4778        channel: *mut FMOD_CHANNEL,
4779        channelgroup: *mut *mut FMOD_CHANNELGROUP,
4780    ) -> FMOD_RESULT;
4781    pub fn FMOD_Channel_SetLoopCount(channel: *mut FMOD_CHANNEL, loopcount: c_int) -> FMOD_RESULT;
4782    pub fn FMOD_Channel_GetLoopCount(
4783        channel: *mut FMOD_CHANNEL,
4784        loopcount: *mut c_int,
4785    ) -> FMOD_RESULT;
4786    pub fn FMOD_Channel_SetLoopPoints(
4787        channel: *mut FMOD_CHANNEL,
4788        loopstart: c_uint,
4789        loopstarttype: FMOD_TIMEUNIT,
4790        loopend: c_uint,
4791        loopendtype: FMOD_TIMEUNIT,
4792    ) -> FMOD_RESULT;
4793    pub fn FMOD_Channel_GetLoopPoints(
4794        channel: *mut FMOD_CHANNEL,
4795        loopstart: *mut c_uint,
4796        loopstarttype: FMOD_TIMEUNIT,
4797        loopend: *mut c_uint,
4798        loopendtype: FMOD_TIMEUNIT,
4799    ) -> FMOD_RESULT;
4800    pub fn FMOD_Channel_IsVirtual(
4801        channel: *mut FMOD_CHANNEL,
4802        isvirtual: *mut FMOD_BOOL,
4803    ) -> FMOD_RESULT;
4804    pub fn FMOD_Channel_GetCurrentSound(
4805        channel: *mut FMOD_CHANNEL,
4806        sound: *mut *mut FMOD_SOUND,
4807    ) -> FMOD_RESULT;
4808    pub fn FMOD_Channel_GetIndex(channel: *mut FMOD_CHANNEL, index: *mut c_int) -> FMOD_RESULT;
4809    pub fn FMOD_ChannelGroup_GetSystemObject(
4810        channelgroup: *mut FMOD_CHANNELGROUP,
4811        system: *mut *mut FMOD_SYSTEM,
4812    ) -> FMOD_RESULT;
4813    pub fn FMOD_ChannelGroup_Stop(channelgroup: *mut FMOD_CHANNELGROUP) -> FMOD_RESULT;
4814    pub fn FMOD_ChannelGroup_SetPaused(
4815        channelgroup: *mut FMOD_CHANNELGROUP,
4816        paused: FMOD_BOOL,
4817    ) -> FMOD_RESULT;
4818    pub fn FMOD_ChannelGroup_GetPaused(
4819        channelgroup: *mut FMOD_CHANNELGROUP,
4820        paused: *mut FMOD_BOOL,
4821    ) -> FMOD_RESULT;
4822    pub fn FMOD_ChannelGroup_SetVolume(
4823        channelgroup: *mut FMOD_CHANNELGROUP,
4824        volume: c_float,
4825    ) -> FMOD_RESULT;
4826    pub fn FMOD_ChannelGroup_GetVolume(
4827        channelgroup: *mut FMOD_CHANNELGROUP,
4828        volume: *mut c_float,
4829    ) -> FMOD_RESULT;
4830    pub fn FMOD_ChannelGroup_SetVolumeRamp(
4831        channelgroup: *mut FMOD_CHANNELGROUP,
4832        ramp: FMOD_BOOL,
4833    ) -> FMOD_RESULT;
4834    pub fn FMOD_ChannelGroup_GetVolumeRamp(
4835        channelgroup: *mut FMOD_CHANNELGROUP,
4836        ramp: *mut FMOD_BOOL,
4837    ) -> FMOD_RESULT;
4838    pub fn FMOD_ChannelGroup_GetAudibility(
4839        channelgroup: *mut FMOD_CHANNELGROUP,
4840        audibility: *mut c_float,
4841    ) -> FMOD_RESULT;
4842    pub fn FMOD_ChannelGroup_SetPitch(
4843        channelgroup: *mut FMOD_CHANNELGROUP,
4844        pitch: c_float,
4845    ) -> FMOD_RESULT;
4846    pub fn FMOD_ChannelGroup_GetPitch(
4847        channelgroup: *mut FMOD_CHANNELGROUP,
4848        pitch: *mut c_float,
4849    ) -> FMOD_RESULT;
4850    pub fn FMOD_ChannelGroup_SetMute(
4851        channelgroup: *mut FMOD_CHANNELGROUP,
4852        mute: FMOD_BOOL,
4853    ) -> FMOD_RESULT;
4854    pub fn FMOD_ChannelGroup_GetMute(
4855        channelgroup: *mut FMOD_CHANNELGROUP,
4856        mute: *mut FMOD_BOOL,
4857    ) -> FMOD_RESULT;
4858    pub fn FMOD_ChannelGroup_SetReverbProperties(
4859        channelgroup: *mut FMOD_CHANNELGROUP,
4860        instance: c_int,
4861        wet: c_float,
4862    ) -> FMOD_RESULT;
4863    pub fn FMOD_ChannelGroup_GetReverbProperties(
4864        channelgroup: *mut FMOD_CHANNELGROUP,
4865        instance: c_int,
4866        wet: *mut c_float,
4867    ) -> FMOD_RESULT;
4868    pub fn FMOD_ChannelGroup_SetLowPassGain(
4869        channelgroup: *mut FMOD_CHANNELGROUP,
4870        gain: c_float,
4871    ) -> FMOD_RESULT;
4872    pub fn FMOD_ChannelGroup_GetLowPassGain(
4873        channelgroup: *mut FMOD_CHANNELGROUP,
4874        gain: *mut c_float,
4875    ) -> FMOD_RESULT;
4876    pub fn FMOD_ChannelGroup_SetMode(
4877        channelgroup: *mut FMOD_CHANNELGROUP,
4878        mode: FMOD_MODE,
4879    ) -> FMOD_RESULT;
4880    pub fn FMOD_ChannelGroup_GetMode(
4881        channelgroup: *mut FMOD_CHANNELGROUP,
4882        mode: *mut FMOD_MODE,
4883    ) -> FMOD_RESULT;
4884    pub fn FMOD_ChannelGroup_SetCallback(
4885        channelgroup: *mut FMOD_CHANNELGROUP,
4886        callback: FMOD_CHANNELCONTROL_CALLBACK,
4887    ) -> FMOD_RESULT;
4888    pub fn FMOD_ChannelGroup_IsPlaying(
4889        channelgroup: *mut FMOD_CHANNELGROUP,
4890        isplaying: *mut FMOD_BOOL,
4891    ) -> FMOD_RESULT;
4892    pub fn FMOD_ChannelGroup_SetPan(
4893        channelgroup: *mut FMOD_CHANNELGROUP,
4894        pan: c_float,
4895    ) -> FMOD_RESULT;
4896    pub fn FMOD_ChannelGroup_SetMixLevelsOutput(
4897        channelgroup: *mut FMOD_CHANNELGROUP,
4898        frontleft: c_float,
4899        frontright: c_float,
4900        center: c_float,
4901        lfe: c_float,
4902        surroundleft: c_float,
4903        surroundright: c_float,
4904        backleft: c_float,
4905        backright: c_float,
4906    ) -> FMOD_RESULT;
4907    pub fn FMOD_ChannelGroup_SetMixLevelsInput(
4908        channelgroup: *mut FMOD_CHANNELGROUP,
4909        levels: *mut c_float,
4910        numlevels: c_int,
4911    ) -> FMOD_RESULT;
4912    pub fn FMOD_ChannelGroup_SetMixMatrix(
4913        channelgroup: *mut FMOD_CHANNELGROUP,
4914        matrix: *mut c_float,
4915        outchannels: c_int,
4916        inchannels: c_int,
4917        inchannel_hop: c_int,
4918    ) -> FMOD_RESULT;
4919    pub fn FMOD_ChannelGroup_GetMixMatrix(
4920        channelgroup: *mut FMOD_CHANNELGROUP,
4921        matrix: *mut c_float,
4922        outchannels: *mut c_int,
4923        inchannels: *mut c_int,
4924        inchannel_hop: c_int,
4925    ) -> FMOD_RESULT;
4926    pub fn FMOD_ChannelGroup_GetDSPClock(
4927        channelgroup: *mut FMOD_CHANNELGROUP,
4928        dspclock: *mut c_ulonglong,
4929        parentclock: *mut c_ulonglong,
4930    ) -> FMOD_RESULT;
4931    pub fn FMOD_ChannelGroup_SetDelay(
4932        channelgroup: *mut FMOD_CHANNELGROUP,
4933        dspclock_start: c_ulonglong,
4934        dspclock_end: c_ulonglong,
4935        stopchannels: FMOD_BOOL,
4936    ) -> FMOD_RESULT;
4937    pub fn FMOD_ChannelGroup_GetDelay(
4938        channelgroup: *mut FMOD_CHANNELGROUP,
4939        dspclock_start: *mut c_ulonglong,
4940        dspclock_end: *mut c_ulonglong,
4941        stopchannels: *mut FMOD_BOOL,
4942    ) -> FMOD_RESULT;
4943    pub fn FMOD_ChannelGroup_AddFadePoint(
4944        channelgroup: *mut FMOD_CHANNELGROUP,
4945        dspclock: c_ulonglong,
4946        volume: c_float,
4947    ) -> FMOD_RESULT;
4948    pub fn FMOD_ChannelGroup_SetFadePointRamp(
4949        channelgroup: *mut FMOD_CHANNELGROUP,
4950        dspclock: c_ulonglong,
4951        volume: c_float,
4952    ) -> FMOD_RESULT;
4953    pub fn FMOD_ChannelGroup_RemoveFadePoints(
4954        channelgroup: *mut FMOD_CHANNELGROUP,
4955        dspclock_start: c_ulonglong,
4956        dspclock_end: c_ulonglong,
4957    ) -> FMOD_RESULT;
4958    pub fn FMOD_ChannelGroup_GetFadePoints(
4959        channelgroup: *mut FMOD_CHANNELGROUP,
4960        numpoints: *mut c_uint,
4961        point_dspclock: *mut c_ulonglong,
4962        point_volume: *mut c_float,
4963    ) -> FMOD_RESULT;
4964    pub fn FMOD_ChannelGroup_GetDSP(
4965        channelgroup: *mut FMOD_CHANNELGROUP,
4966        index: c_int,
4967        dsp: *mut *mut FMOD_DSP,
4968    ) -> FMOD_RESULT;
4969    pub fn FMOD_ChannelGroup_AddDSP(
4970        channelgroup: *mut FMOD_CHANNELGROUP,
4971        index: c_int,
4972        dsp: *mut FMOD_DSP,
4973    ) -> FMOD_RESULT;
4974    pub fn FMOD_ChannelGroup_RemoveDSP(
4975        channelgroup: *mut FMOD_CHANNELGROUP,
4976        dsp: *mut FMOD_DSP,
4977    ) -> FMOD_RESULT;
4978    pub fn FMOD_ChannelGroup_GetNumDSPs(
4979        channelgroup: *mut FMOD_CHANNELGROUP,
4980        numdsps: *mut c_int,
4981    ) -> FMOD_RESULT;
4982    pub fn FMOD_ChannelGroup_SetDSPIndex(
4983        channelgroup: *mut FMOD_CHANNELGROUP,
4984        dsp: *mut FMOD_DSP,
4985        index: c_int,
4986    ) -> FMOD_RESULT;
4987    pub fn FMOD_ChannelGroup_GetDSPIndex(
4988        channelgroup: *mut FMOD_CHANNELGROUP,
4989        dsp: *mut FMOD_DSP,
4990        index: *mut c_int,
4991    ) -> FMOD_RESULT;
4992    pub fn FMOD_ChannelGroup_Set3DAttributes(
4993        channelgroup: *mut FMOD_CHANNELGROUP,
4994        pos: *const FMOD_VECTOR,
4995        vel: *const FMOD_VECTOR,
4996    ) -> FMOD_RESULT;
4997    pub fn FMOD_ChannelGroup_Get3DAttributes(
4998        channelgroup: *mut FMOD_CHANNELGROUP,
4999        pos: *mut FMOD_VECTOR,
5000        vel: *mut FMOD_VECTOR,
5001    ) -> FMOD_RESULT;
5002    pub fn FMOD_ChannelGroup_Set3DMinMaxDistance(
5003        channelgroup: *mut FMOD_CHANNELGROUP,
5004        mindistance: c_float,
5005        maxdistance: c_float,
5006    ) -> FMOD_RESULT;
5007    pub fn FMOD_ChannelGroup_Get3DMinMaxDistance(
5008        channelgroup: *mut FMOD_CHANNELGROUP,
5009        mindistance: *mut c_float,
5010        maxdistance: *mut c_float,
5011    ) -> FMOD_RESULT;
5012    pub fn FMOD_ChannelGroup_Set3DConeSettings(
5013        channelgroup: *mut FMOD_CHANNELGROUP,
5014        insideconeangle: c_float,
5015        outsideconeangle: c_float,
5016        outsidevolume: c_float,
5017    ) -> FMOD_RESULT;
5018    pub fn FMOD_ChannelGroup_Get3DConeSettings(
5019        channelgroup: *mut FMOD_CHANNELGROUP,
5020        insideconeangle: *mut c_float,
5021        outsideconeangle: *mut c_float,
5022        outsidevolume: *mut c_float,
5023    ) -> FMOD_RESULT;
5024    pub fn FMOD_ChannelGroup_Set3DConeOrientation(
5025        channelgroup: *mut FMOD_CHANNELGROUP,
5026        orientation: *mut FMOD_VECTOR,
5027    ) -> FMOD_RESULT;
5028    pub fn FMOD_ChannelGroup_Get3DConeOrientation(
5029        channelgroup: *mut FMOD_CHANNELGROUP,
5030        orientation: *mut FMOD_VECTOR,
5031    ) -> FMOD_RESULT;
5032    pub fn FMOD_ChannelGroup_Set3DCustomRolloff(
5033        channelgroup: *mut FMOD_CHANNELGROUP,
5034        points: *mut FMOD_VECTOR,
5035        numpoints: c_int,
5036    ) -> FMOD_RESULT;
5037    pub fn FMOD_ChannelGroup_Get3DCustomRolloff(
5038        channelgroup: *mut FMOD_CHANNELGROUP,
5039        points: *mut *mut FMOD_VECTOR,
5040        numpoints: *mut c_int,
5041    ) -> FMOD_RESULT;
5042    pub fn FMOD_ChannelGroup_Set3DOcclusion(
5043        channelgroup: *mut FMOD_CHANNELGROUP,
5044        directocclusion: c_float,
5045        reverbocclusion: c_float,
5046    ) -> FMOD_RESULT;
5047    pub fn FMOD_ChannelGroup_Get3DOcclusion(
5048        channelgroup: *mut FMOD_CHANNELGROUP,
5049        directocclusion: *mut c_float,
5050        reverbocclusion: *mut c_float,
5051    ) -> FMOD_RESULT;
5052    pub fn FMOD_ChannelGroup_Set3DSpread(
5053        channelgroup: *mut FMOD_CHANNELGROUP,
5054        angle: c_float,
5055    ) -> FMOD_RESULT;
5056    pub fn FMOD_ChannelGroup_Get3DSpread(
5057        channelgroup: *mut FMOD_CHANNELGROUP,
5058        angle: *mut c_float,
5059    ) -> FMOD_RESULT;
5060    pub fn FMOD_ChannelGroup_Set3DLevel(
5061        channelgroup: *mut FMOD_CHANNELGROUP,
5062        level: c_float,
5063    ) -> FMOD_RESULT;
5064    pub fn FMOD_ChannelGroup_Get3DLevel(
5065        channelgroup: *mut FMOD_CHANNELGROUP,
5066        level: *mut c_float,
5067    ) -> FMOD_RESULT;
5068    pub fn FMOD_ChannelGroup_Set3DDopplerLevel(
5069        channelgroup: *mut FMOD_CHANNELGROUP,
5070        level: c_float,
5071    ) -> FMOD_RESULT;
5072    pub fn FMOD_ChannelGroup_Get3DDopplerLevel(
5073        channelgroup: *mut FMOD_CHANNELGROUP,
5074        level: *mut c_float,
5075    ) -> FMOD_RESULT;
5076    pub fn FMOD_ChannelGroup_Set3DDistanceFilter(
5077        channelgroup: *mut FMOD_CHANNELGROUP,
5078        custom: FMOD_BOOL,
5079        customLevel: c_float,
5080        centerFreq: c_float,
5081    ) -> FMOD_RESULT;
5082    pub fn FMOD_ChannelGroup_Get3DDistanceFilter(
5083        channelgroup: *mut FMOD_CHANNELGROUP,
5084        custom: *mut FMOD_BOOL,
5085        customLevel: *mut c_float,
5086        centerFreq: *mut c_float,
5087    ) -> FMOD_RESULT;
5088    pub fn FMOD_ChannelGroup_SetUserData(
5089        channelgroup: *mut FMOD_CHANNELGROUP,
5090        userdata: *mut c_void,
5091    ) -> FMOD_RESULT;
5092    pub fn FMOD_ChannelGroup_GetUserData(
5093        channelgroup: *mut FMOD_CHANNELGROUP,
5094        userdata: *mut *mut c_void,
5095    ) -> FMOD_RESULT;
5096    pub fn FMOD_ChannelGroup_Release(channelgroup: *mut FMOD_CHANNELGROUP) -> FMOD_RESULT;
5097    pub fn FMOD_ChannelGroup_AddGroup(
5098        channelgroup: *mut FMOD_CHANNELGROUP,
5099        group: *mut FMOD_CHANNELGROUP,
5100        propagatedspclock: FMOD_BOOL,
5101        connection: *mut *mut FMOD_DSPCONNECTION,
5102    ) -> FMOD_RESULT;
5103    pub fn FMOD_ChannelGroup_GetNumGroups(
5104        channelgroup: *mut FMOD_CHANNELGROUP,
5105        numgroups: *mut c_int,
5106    ) -> FMOD_RESULT;
5107    pub fn FMOD_ChannelGroup_GetGroup(
5108        channelgroup: *mut FMOD_CHANNELGROUP,
5109        index: c_int,
5110        group: *mut *mut FMOD_CHANNELGROUP,
5111    ) -> FMOD_RESULT;
5112    pub fn FMOD_ChannelGroup_GetParentGroup(
5113        channelgroup: *mut FMOD_CHANNELGROUP,
5114        group: *mut *mut FMOD_CHANNELGROUP,
5115    ) -> FMOD_RESULT;
5116    pub fn FMOD_ChannelGroup_GetName(
5117        channelgroup: *mut FMOD_CHANNELGROUP,
5118        name: *mut c_char,
5119        namelen: c_int,
5120    ) -> FMOD_RESULT;
5121    pub fn FMOD_ChannelGroup_GetNumChannels(
5122        channelgroup: *mut FMOD_CHANNELGROUP,
5123        numchannels: *mut c_int,
5124    ) -> FMOD_RESULT;
5125    pub fn FMOD_ChannelGroup_GetChannel(
5126        channelgroup: *mut FMOD_CHANNELGROUP,
5127        index: c_int,
5128        channel: *mut *mut FMOD_CHANNEL,
5129    ) -> FMOD_RESULT;
5130    pub fn FMOD_SoundGroup_Release(soundgroup: *mut FMOD_SOUNDGROUP) -> FMOD_RESULT;
5131    pub fn FMOD_SoundGroup_GetSystemObject(
5132        soundgroup: *mut FMOD_SOUNDGROUP,
5133        system: *mut *mut FMOD_SYSTEM,
5134    ) -> FMOD_RESULT;
5135    pub fn FMOD_SoundGroup_SetMaxAudible(
5136        soundgroup: *mut FMOD_SOUNDGROUP,
5137        maxaudible: c_int,
5138    ) -> FMOD_RESULT;
5139    pub fn FMOD_SoundGroup_GetMaxAudible(
5140        soundgroup: *mut FMOD_SOUNDGROUP,
5141        maxaudible: *mut c_int,
5142    ) -> FMOD_RESULT;
5143    pub fn FMOD_SoundGroup_SetMaxAudibleBehavior(
5144        soundgroup: *mut FMOD_SOUNDGROUP,
5145        behavior: FMOD_SOUNDGROUP_BEHAVIOR,
5146    ) -> FMOD_RESULT;
5147    pub fn FMOD_SoundGroup_GetMaxAudibleBehavior(
5148        soundgroup: *mut FMOD_SOUNDGROUP,
5149        behavior: *mut FMOD_SOUNDGROUP_BEHAVIOR,
5150    ) -> FMOD_RESULT;
5151    pub fn FMOD_SoundGroup_SetMuteFadeSpeed(
5152        soundgroup: *mut FMOD_SOUNDGROUP,
5153        speed: c_float,
5154    ) -> FMOD_RESULT;
5155    pub fn FMOD_SoundGroup_GetMuteFadeSpeed(
5156        soundgroup: *mut FMOD_SOUNDGROUP,
5157        speed: *mut c_float,
5158    ) -> FMOD_RESULT;
5159    pub fn FMOD_SoundGroup_SetVolume(
5160        soundgroup: *mut FMOD_SOUNDGROUP,
5161        volume: c_float,
5162    ) -> FMOD_RESULT;
5163    pub fn FMOD_SoundGroup_GetVolume(
5164        soundgroup: *mut FMOD_SOUNDGROUP,
5165        volume: *mut c_float,
5166    ) -> FMOD_RESULT;
5167    pub fn FMOD_SoundGroup_Stop(soundgroup: *mut FMOD_SOUNDGROUP) -> FMOD_RESULT;
5168    pub fn FMOD_SoundGroup_GetName(
5169        soundgroup: *mut FMOD_SOUNDGROUP,
5170        name: *mut c_char,
5171        namelen: c_int,
5172    ) -> FMOD_RESULT;
5173    pub fn FMOD_SoundGroup_GetNumSounds(
5174        soundgroup: *mut FMOD_SOUNDGROUP,
5175        numsounds: *mut c_int,
5176    ) -> FMOD_RESULT;
5177    pub fn FMOD_SoundGroup_GetSound(
5178        soundgroup: *mut FMOD_SOUNDGROUP,
5179        index: c_int,
5180        sound: *mut *mut FMOD_SOUND,
5181    ) -> FMOD_RESULT;
5182    pub fn FMOD_SoundGroup_GetNumPlaying(
5183        soundgroup: *mut FMOD_SOUNDGROUP,
5184        numplaying: *mut c_int,
5185    ) -> FMOD_RESULT;
5186    pub fn FMOD_SoundGroup_SetUserData(
5187        soundgroup: *mut FMOD_SOUNDGROUP,
5188        userdata: *mut c_void,
5189    ) -> FMOD_RESULT;
5190    pub fn FMOD_SoundGroup_GetUserData(
5191        soundgroup: *mut FMOD_SOUNDGROUP,
5192        userdata: *mut *mut c_void,
5193    ) -> FMOD_RESULT;
5194    pub fn FMOD_DSP_Release(dsp: *mut FMOD_DSP) -> FMOD_RESULT;
5195    pub fn FMOD_DSP_GetSystemObject(
5196        dsp: *mut FMOD_DSP,
5197        system: *mut *mut FMOD_SYSTEM,
5198    ) -> FMOD_RESULT;
5199    pub fn FMOD_DSP_AddInput(
5200        dsp: *mut FMOD_DSP,
5201        input: *mut FMOD_DSP,
5202        connection: *mut *mut FMOD_DSPCONNECTION,
5203        type_: FMOD_DSPCONNECTION_TYPE,
5204    ) -> FMOD_RESULT;
5205    pub fn FMOD_DSP_DisconnectFrom(
5206        dsp: *mut FMOD_DSP,
5207        target: *mut FMOD_DSP,
5208        connection: *mut FMOD_DSPCONNECTION,
5209    ) -> FMOD_RESULT;
5210    pub fn FMOD_DSP_DisconnectAll(
5211        dsp: *mut FMOD_DSP,
5212        inputs: FMOD_BOOL,
5213        outputs: FMOD_BOOL,
5214    ) -> FMOD_RESULT;
5215    pub fn FMOD_DSP_GetNumInputs(dsp: *mut FMOD_DSP, numinputs: *mut c_int) -> FMOD_RESULT;
5216    pub fn FMOD_DSP_GetNumOutputs(dsp: *mut FMOD_DSP, numoutputs: *mut c_int) -> FMOD_RESULT;
5217    pub fn FMOD_DSP_GetInput(
5218        dsp: *mut FMOD_DSP,
5219        index: c_int,
5220        input: *mut *mut FMOD_DSP,
5221        inputconnection: *mut *mut FMOD_DSPCONNECTION,
5222    ) -> FMOD_RESULT;
5223    pub fn FMOD_DSP_GetOutput(
5224        dsp: *mut FMOD_DSP,
5225        index: c_int,
5226        output: *mut *mut FMOD_DSP,
5227        outputconnection: *mut *mut FMOD_DSPCONNECTION,
5228    ) -> FMOD_RESULT;
5229    pub fn FMOD_DSP_SetActive(dsp: *mut FMOD_DSP, active: FMOD_BOOL) -> FMOD_RESULT;
5230    pub fn FMOD_DSP_GetActive(dsp: *mut FMOD_DSP, active: *mut FMOD_BOOL) -> FMOD_RESULT;
5231    pub fn FMOD_DSP_SetBypass(dsp: *mut FMOD_DSP, bypass: FMOD_BOOL) -> FMOD_RESULT;
5232    pub fn FMOD_DSP_GetBypass(dsp: *mut FMOD_DSP, bypass: *mut FMOD_BOOL) -> FMOD_RESULT;
5233    pub fn FMOD_DSP_SetWetDryMix(
5234        dsp: *mut FMOD_DSP,
5235        prewet: c_float,
5236        postwet: c_float,
5237        dry: c_float,
5238    ) -> FMOD_RESULT;
5239    pub fn FMOD_DSP_GetWetDryMix(
5240        dsp: *mut FMOD_DSP,
5241        prewet: *mut c_float,
5242        postwet: *mut c_float,
5243        dry: *mut c_float,
5244    ) -> FMOD_RESULT;
5245    pub fn FMOD_DSP_SetChannelFormat(
5246        dsp: *mut FMOD_DSP,
5247        channelmask: FMOD_CHANNELMASK,
5248        numchannels: c_int,
5249        source_speakermode: FMOD_SPEAKERMODE,
5250    ) -> FMOD_RESULT;
5251    pub fn FMOD_DSP_GetChannelFormat(
5252        dsp: *mut FMOD_DSP,
5253        channelmask: *mut FMOD_CHANNELMASK,
5254        numchannels: *mut c_int,
5255        source_speakermode: *mut FMOD_SPEAKERMODE,
5256    ) -> FMOD_RESULT;
5257    pub fn FMOD_DSP_GetOutputChannelFormat(
5258        dsp: *mut FMOD_DSP,
5259        inmask: FMOD_CHANNELMASK,
5260        inchannels: c_int,
5261        inspeakermode: FMOD_SPEAKERMODE,
5262        outmask: *mut FMOD_CHANNELMASK,
5263        outchannels: *mut c_int,
5264        outspeakermode: *mut FMOD_SPEAKERMODE,
5265    ) -> FMOD_RESULT;
5266    pub fn FMOD_DSP_Reset(dsp: *mut FMOD_DSP) -> FMOD_RESULT;
5267    pub fn FMOD_DSP_SetCallback(dsp: *mut FMOD_DSP, callback: FMOD_DSP_CALLBACK) -> FMOD_RESULT;
5268    pub fn FMOD_DSP_SetParameterFloat(
5269        dsp: *mut FMOD_DSP,
5270        index: c_int,
5271        value: c_float,
5272    ) -> FMOD_RESULT;
5273    pub fn FMOD_DSP_SetParameterInt(dsp: *mut FMOD_DSP, index: c_int, value: c_int) -> FMOD_RESULT;
5274    pub fn FMOD_DSP_SetParameterBool(
5275        dsp: *mut FMOD_DSP,
5276        index: c_int,
5277        value: FMOD_BOOL,
5278    ) -> FMOD_RESULT;
5279    pub fn FMOD_DSP_SetParameterData(
5280        dsp: *mut FMOD_DSP,
5281        index: c_int,
5282        data: *mut c_void,
5283        length: c_uint,
5284    ) -> FMOD_RESULT;
5285    pub fn FMOD_DSP_GetParameterFloat(
5286        dsp: *mut FMOD_DSP,
5287        index: c_int,
5288        value: *mut c_float,
5289        valuestr: *mut c_char,
5290        valuestrlen: c_int,
5291    ) -> FMOD_RESULT;
5292    pub fn FMOD_DSP_GetParameterInt(
5293        dsp: *mut FMOD_DSP,
5294        index: c_int,
5295        value: *mut c_int,
5296        valuestr: *mut c_char,
5297        valuestrlen: c_int,
5298    ) -> FMOD_RESULT;
5299    pub fn FMOD_DSP_GetParameterBool(
5300        dsp: *mut FMOD_DSP,
5301        index: c_int,
5302        value: *mut FMOD_BOOL,
5303        valuestr: *mut c_char,
5304        valuestrlen: c_int,
5305    ) -> FMOD_RESULT;
5306    pub fn FMOD_DSP_GetParameterData(
5307        dsp: *mut FMOD_DSP,
5308        index: c_int,
5309        data: *mut *mut c_void,
5310        length: *mut c_uint,
5311        valuestr: *mut c_char,
5312        valuestrlen: c_int,
5313    ) -> FMOD_RESULT;
5314    pub fn FMOD_DSP_GetNumParameters(dsp: *mut FMOD_DSP, numparams: *mut c_int) -> FMOD_RESULT;
5315    pub fn FMOD_DSP_GetParameterInfo(
5316        dsp: *mut FMOD_DSP,
5317        index: c_int,
5318        desc: *mut *mut FMOD_DSP_PARAMETER_DESC,
5319    ) -> FMOD_RESULT;
5320    pub fn FMOD_DSP_GetDataParameterIndex(
5321        dsp: *mut FMOD_DSP,
5322        datatype: c_int,
5323        index: *mut c_int,
5324    ) -> FMOD_RESULT;
5325    pub fn FMOD_DSP_ShowConfigDialog(
5326        dsp: *mut FMOD_DSP,
5327        hwnd: *mut c_void,
5328        show: FMOD_BOOL,
5329    ) -> FMOD_RESULT;
5330    pub fn FMOD_DSP_GetInfo(
5331        dsp: *mut FMOD_DSP,
5332        name: *mut c_char,
5333        version: *mut c_uint,
5334        channels: *mut c_int,
5335        configwidth: *mut c_int,
5336        configheight: *mut c_int,
5337    ) -> FMOD_RESULT;
5338    pub fn FMOD_DSP_GetType(dsp: *mut FMOD_DSP, type_: *mut FMOD_DSP_TYPE) -> FMOD_RESULT;
5339    pub fn FMOD_DSP_GetIdle(dsp: *mut FMOD_DSP, idle: *mut FMOD_BOOL) -> FMOD_RESULT;
5340    pub fn FMOD_DSP_SetUserData(dsp: *mut FMOD_DSP, userdata: *mut c_void) -> FMOD_RESULT;
5341    pub fn FMOD_DSP_GetUserData(dsp: *mut FMOD_DSP, userdata: *mut *mut c_void) -> FMOD_RESULT;
5342    pub fn FMOD_DSP_SetMeteringEnabled(
5343        dsp: *mut FMOD_DSP,
5344        inputEnabled: FMOD_BOOL,
5345        outputEnabled: FMOD_BOOL,
5346    ) -> FMOD_RESULT;
5347    pub fn FMOD_DSP_GetMeteringEnabled(
5348        dsp: *mut FMOD_DSP,
5349        inputEnabled: *mut FMOD_BOOL,
5350        outputEnabled: *mut FMOD_BOOL,
5351    ) -> FMOD_RESULT;
5352    pub fn FMOD_DSP_GetMeteringInfo(
5353        dsp: *mut FMOD_DSP,
5354        inputInfo: *mut FMOD_DSP_METERING_INFO,
5355        outputInfo: *mut FMOD_DSP_METERING_INFO,
5356    ) -> FMOD_RESULT;
5357    pub fn FMOD_DSP_GetCPUUsage(
5358        dsp: *mut FMOD_DSP,
5359        exclusive: *mut c_uint,
5360        inclusive: *mut c_uint,
5361    ) -> FMOD_RESULT;
5362    pub fn FMOD_DSPConnection_GetInput(
5363        dspconnection: *mut FMOD_DSPCONNECTION,
5364        input: *mut *mut FMOD_DSP,
5365    ) -> FMOD_RESULT;
5366    pub fn FMOD_DSPConnection_GetOutput(
5367        dspconnection: *mut FMOD_DSPCONNECTION,
5368        output: *mut *mut FMOD_DSP,
5369    ) -> FMOD_RESULT;
5370    pub fn FMOD_DSPConnection_SetMix(
5371        dspconnection: *mut FMOD_DSPCONNECTION,
5372        volume: c_float,
5373    ) -> FMOD_RESULT;
5374    pub fn FMOD_DSPConnection_GetMix(
5375        dspconnection: *mut FMOD_DSPCONNECTION,
5376        volume: *mut c_float,
5377    ) -> FMOD_RESULT;
5378    pub fn FMOD_DSPConnection_SetMixMatrix(
5379        dspconnection: *mut FMOD_DSPCONNECTION,
5380        matrix: *mut c_float,
5381        outchannels: c_int,
5382        inchannels: c_int,
5383        inchannel_hop: c_int,
5384    ) -> FMOD_RESULT;
5385    pub fn FMOD_DSPConnection_GetMixMatrix(
5386        dspconnection: *mut FMOD_DSPCONNECTION,
5387        matrix: *mut c_float,
5388        outchannels: *mut c_int,
5389        inchannels: *mut c_int,
5390        inchannel_hop: c_int,
5391    ) -> FMOD_RESULT;
5392    pub fn FMOD_DSPConnection_GetType(
5393        dspconnection: *mut FMOD_DSPCONNECTION,
5394        type_: *mut FMOD_DSPCONNECTION_TYPE,
5395    ) -> FMOD_RESULT;
5396    pub fn FMOD_DSPConnection_SetUserData(
5397        dspconnection: *mut FMOD_DSPCONNECTION,
5398        userdata: *mut c_void,
5399    ) -> FMOD_RESULT;
5400    pub fn FMOD_DSPConnection_GetUserData(
5401        dspconnection: *mut FMOD_DSPCONNECTION,
5402        userdata: *mut *mut c_void,
5403    ) -> FMOD_RESULT;
5404    pub fn FMOD_Geometry_Release(geometry: *mut FMOD_GEOMETRY) -> FMOD_RESULT;
5405    pub fn FMOD_Geometry_AddPolygon(
5406        geometry: *mut FMOD_GEOMETRY,
5407        directocclusion: c_float,
5408        reverbocclusion: c_float,
5409        doublesided: FMOD_BOOL,
5410        numvertices: c_int,
5411        vertices: *const FMOD_VECTOR,
5412        polygonindex: *mut c_int,
5413    ) -> FMOD_RESULT;
5414    pub fn FMOD_Geometry_GetNumPolygons(
5415        geometry: *mut FMOD_GEOMETRY,
5416        numpolygons: *mut c_int,
5417    ) -> FMOD_RESULT;
5418    pub fn FMOD_Geometry_GetMaxPolygons(
5419        geometry: *mut FMOD_GEOMETRY,
5420        maxpolygons: *mut c_int,
5421        maxvertices: *mut c_int,
5422    ) -> FMOD_RESULT;
5423    pub fn FMOD_Geometry_GetPolygonNumVertices(
5424        geometry: *mut FMOD_GEOMETRY,
5425        index: c_int,
5426        numvertices: *mut c_int,
5427    ) -> FMOD_RESULT;
5428    pub fn FMOD_Geometry_SetPolygonVertex(
5429        geometry: *mut FMOD_GEOMETRY,
5430        index: c_int,
5431        vertexindex: c_int,
5432        vertex: *const FMOD_VECTOR,
5433    ) -> FMOD_RESULT;
5434    pub fn FMOD_Geometry_GetPolygonVertex(
5435        geometry: *mut FMOD_GEOMETRY,
5436        index: c_int,
5437        vertexindex: c_int,
5438        vertex: *mut FMOD_VECTOR,
5439    ) -> FMOD_RESULT;
5440    pub fn FMOD_Geometry_SetPolygonAttributes(
5441        geometry: *mut FMOD_GEOMETRY,
5442        index: c_int,
5443        directocclusion: c_float,
5444        reverbocclusion: c_float,
5445        doublesided: FMOD_BOOL,
5446    ) -> FMOD_RESULT;
5447    pub fn FMOD_Geometry_GetPolygonAttributes(
5448        geometry: *mut FMOD_GEOMETRY,
5449        index: c_int,
5450        directocclusion: *mut c_float,
5451        reverbocclusion: *mut c_float,
5452        doublesided: *mut FMOD_BOOL,
5453    ) -> FMOD_RESULT;
5454    pub fn FMOD_Geometry_SetActive(geometry: *mut FMOD_GEOMETRY, active: FMOD_BOOL) -> FMOD_RESULT;
5455    pub fn FMOD_Geometry_GetActive(
5456        geometry: *mut FMOD_GEOMETRY,
5457        active: *mut FMOD_BOOL,
5458    ) -> FMOD_RESULT;
5459    pub fn FMOD_Geometry_SetRotation(
5460        geometry: *mut FMOD_GEOMETRY,
5461        forward: *const FMOD_VECTOR,
5462        up: *const FMOD_VECTOR,
5463    ) -> FMOD_RESULT;
5464    pub fn FMOD_Geometry_GetRotation(
5465        geometry: *mut FMOD_GEOMETRY,
5466        forward: *mut FMOD_VECTOR,
5467        up: *mut FMOD_VECTOR,
5468    ) -> FMOD_RESULT;
5469    pub fn FMOD_Geometry_SetPosition(
5470        geometry: *mut FMOD_GEOMETRY,
5471        position: *const FMOD_VECTOR,
5472    ) -> FMOD_RESULT;
5473    pub fn FMOD_Geometry_GetPosition(
5474        geometry: *mut FMOD_GEOMETRY,
5475        position: *mut FMOD_VECTOR,
5476    ) -> FMOD_RESULT;
5477    pub fn FMOD_Geometry_SetScale(
5478        geometry: *mut FMOD_GEOMETRY,
5479        scale: *const FMOD_VECTOR,
5480    ) -> FMOD_RESULT;
5481    pub fn FMOD_Geometry_GetScale(
5482        geometry: *mut FMOD_GEOMETRY,
5483        scale: *mut FMOD_VECTOR,
5484    ) -> FMOD_RESULT;
5485    pub fn FMOD_Geometry_Save(
5486        geometry: *mut FMOD_GEOMETRY,
5487        data: *mut c_void,
5488        datasize: *mut c_int,
5489    ) -> FMOD_RESULT;
5490    pub fn FMOD_Geometry_SetUserData(
5491        geometry: *mut FMOD_GEOMETRY,
5492        userdata: *mut c_void,
5493    ) -> FMOD_RESULT;
5494    pub fn FMOD_Geometry_GetUserData(
5495        geometry: *mut FMOD_GEOMETRY,
5496        userdata: *mut *mut c_void,
5497    ) -> FMOD_RESULT;
5498    pub fn FMOD_Reverb3D_Release(reverb3d: *mut FMOD_REVERB3D) -> FMOD_RESULT;
5499    pub fn FMOD_Reverb3D_Set3DAttributes(
5500        reverb3d: *mut FMOD_REVERB3D,
5501        position: *const FMOD_VECTOR,
5502        mindistance: c_float,
5503        maxdistance: c_float,
5504    ) -> FMOD_RESULT;
5505    pub fn FMOD_Reverb3D_Get3DAttributes(
5506        reverb3d: *mut FMOD_REVERB3D,
5507        position: *mut FMOD_VECTOR,
5508        mindistance: *mut c_float,
5509        maxdistance: *mut c_float,
5510    ) -> FMOD_RESULT;
5511    pub fn FMOD_Reverb3D_SetProperties(
5512        reverb3d: *mut FMOD_REVERB3D,
5513        properties: *const FMOD_REVERB_PROPERTIES,
5514    ) -> FMOD_RESULT;
5515    pub fn FMOD_Reverb3D_GetProperties(
5516        reverb3d: *mut FMOD_REVERB3D,
5517        properties: *mut FMOD_REVERB_PROPERTIES,
5518    ) -> FMOD_RESULT;
5519    pub fn FMOD_Reverb3D_SetActive(reverb3d: *mut FMOD_REVERB3D, active: FMOD_BOOL) -> FMOD_RESULT;
5520    pub fn FMOD_Reverb3D_GetActive(
5521        reverb3d: *mut FMOD_REVERB3D,
5522        active: *mut FMOD_BOOL,
5523    ) -> FMOD_RESULT;
5524    pub fn FMOD_Reverb3D_SetUserData(
5525        reverb3d: *mut FMOD_REVERB3D,
5526        userdata: *mut c_void,
5527    ) -> FMOD_RESULT;
5528    pub fn FMOD_Reverb3D_GetUserData(
5529        reverb3d: *mut FMOD_REVERB3D,
5530        userdata: *mut *mut c_void,
5531    ) -> FMOD_RESULT;
5532}