bass_sys/
consts.rs

1use crate::types::DWORD;
2use std::os::raw::c_int;
3
4// Error codes returned by BASS_ErrorGetCode
5pub const BASS_OK: c_int = 0; // all is OK
6pub const BASS_ERROR_MEM: c_int = 1; // memory error
7pub const BASS_ERROR_FILEOPEN: c_int = 2; // can't open the file
8pub const BASS_ERROR_DRIVER: c_int = 3; // can't find a free/valid driver
9pub const BASS_ERROR_BUFLOST: c_int = 4; // the sample buffer was lost
10pub const BASS_ERROR_HANDLE: c_int = 5; // invalid handle
11pub const BASS_ERROR_FORMAT: c_int = 6; // unsupported sample format
12pub const BASS_ERROR_POSITION: c_int = 7; // invalid position
13pub const BASS_ERROR_INIT: c_int = 8; // BASS_Init has not been successfully called
14pub const BASS_ERROR_START: c_int = 9; // BASS_Start has not been successfully called
15pub const BASS_ERROR_SSL: c_int = 10; // SSL/HTTPS support isn't available
16pub const BASS_ERROR_REINIT: c_int = 11; // device needs to be reinitialized
17pub const BASS_ERROR_ALREADY: c_int = 14; // already initialized/paused/whatever
18pub const BASS_ERROR_NOTAUDIO: c_int = 17; // file does not contain audio
19pub const BASS_ERROR_NOCHAN: c_int = 18; // can't get a free channel
20pub const BASS_ERROR_ILLTYPE: c_int = 19; // an illegal type was specified
21pub const BASS_ERROR_ILLPARAM: c_int = 20; // an illegal parameter was specified
22pub const BASS_ERROR_NO3D: c_int = 21; // no 3D support
23pub const BASS_ERROR_NOEAX: c_int = 22; // no EAX support
24pub const BASS_ERROR_DEVICE: c_int = 23; // illegal device number
25pub const BASS_ERROR_NOPLAY: c_int = 24; // not playing
26pub const BASS_ERROR_FREQ: c_int = 25; // illegal sample rate
27pub const BASS_ERROR_NOTFILE: c_int = 27; // the stream is not a file stream
28pub const BASS_ERROR_NOHW: c_int = 29; // no hardware voices available
29pub const BASS_ERROR_EMPTY: c_int = 31; // the MOD music has no sequence data
30pub const BASS_ERROR_NONET: c_int = 32; // no internet connection could be opened
31pub const BASS_ERROR_CREATE: c_int = 33; // couldn't create the file
32pub const BASS_ERROR_NOFX: c_int = 34; // effects are not available
33pub const BASS_ERROR_NOTAVAIL: c_int = 37; // requested data/action is not available
34pub const BASS_ERROR_DECODE: c_int = 38; // the channel is/isn't a "decoding channel"
35pub const BASS_ERROR_DX: c_int = 39; // a sufficient DirectX version is not installed
36pub const BASS_ERROR_TIMEOUT: c_int = 40; // connection timedout
37pub const BASS_ERROR_FILEFORM: c_int = 41; // unsupported file format
38pub const BASS_ERROR_SPEAKER: c_int = 42; // unavailable speaker
39pub const BASS_ERROR_VERSION: c_int = 43; // invalid BASS version (used by add-ons)
40pub const BASS_ERROR_CODEC: c_int = 44; // codec is not available/supported
41pub const BASS_ERROR_ENDED: c_int = 45; // the channel/file has ended
42pub const BASS_ERROR_BUSY: c_int = 46; // the device is busy
43pub const BASS_ERROR_UNSTREAMABLE: c_int = 47; // unstreamable file
44pub const BASS_ERROR_PROTOCOL: c_int = 48; // unsupported protocol
45pub const BASS_ERROR_UNKNOWN: c_int = -1; // some other mystery problem
46
47// BASS_SetConfig options
48pub const BASS_CONFIG_BUFFER: DWORD = 0;
49pub const BASS_CONFIG_UPDATEPERIOD: DWORD = 1;
50pub const BASS_CONFIG_GVOL_SAMPLE: DWORD = 4;
51pub const BASS_CONFIG_GVOL_STREAM: DWORD = 5;
52pub const BASS_CONFIG_GVOL_MUSIC: DWORD = 6;
53pub const BASS_CONFIG_CURVE_VOL: DWORD = 7;
54pub const BASS_CONFIG_CURVE_PAN: DWORD = 8;
55pub const BASS_CONFIG_FLOATDSP: DWORD = 9;
56pub const BASS_CONFIG_3DALGORITHM: DWORD = 10;
57pub const BASS_CONFIG_NET_TIMEOUT: DWORD = 11;
58pub const BASS_CONFIG_NET_BUFFER: DWORD = 12;
59pub const BASS_CONFIG_PAUSE_NOPLAY: DWORD = 13;
60pub const BASS_CONFIG_NET_PREBUF: DWORD = 15;
61pub const BASS_CONFIG_NET_PASSIVE: DWORD = 18;
62pub const BASS_CONFIG_REC_BUFFER: DWORD = 19;
63pub const BASS_CONFIG_NET_PLAYLIST: DWORD = 21;
64pub const BASS_CONFIG_MUSIC_VIRTUAL: DWORD = 22;
65pub const BASS_CONFIG_VERIFY: DWORD = 23;
66pub const BASS_CONFIG_UPDATETHREADS: DWORD = 24;
67pub const BASS_CONFIG_DEV_BUFFER: DWORD = 27;
68pub const BASS_CONFIG_REC_LOOPBACK: DWORD = 28;
69pub const BASS_CONFIG_VISTA_TRUEPOS: DWORD = 30;
70pub const BASS_CONFIG_IOS_SESSION: DWORD = 34;
71pub const BASS_CONFIG_IOS_MIXAUDIO: DWORD = 34;
72pub const BASS_CONFIG_DEV_DEFAULT: DWORD = 36;
73pub const BASS_CONFIG_NET_READTIMEOUT: DWORD = 37;
74pub const BASS_CONFIG_VISTA_SPEAKERS: DWORD = 38;
75pub const BASS_CONFIG_IOS_SPEAKER: DWORD = 39;
76pub const BASS_CONFIG_MF_DISABLE: DWORD = 40;
77pub const BASS_CONFIG_HANDLES: DWORD = 41;
78pub const BASS_CONFIG_UNICODE: DWORD = 42;
79pub const BASS_CONFIG_SRC: DWORD = 43;
80pub const BASS_CONFIG_SRC_SAMPLE: DWORD = 44;
81pub const BASS_CONFIG_ASYNCFILE_BUFFER: DWORD = 45;
82pub const BASS_CONFIG_OGG_PRESCAN: DWORD = 47;
83pub const BASS_CONFIG_MF_VIDEO: DWORD = 48;
84pub const BASS_CONFIG_AIRPLAY: DWORD = 49;
85pub const BASS_CONFIG_DEV_NONSTOP: DWORD = 50;
86pub const BASS_CONFIG_IOS_NOCATEGORY: DWORD = 51;
87pub const BASS_CONFIG_VERIFY_NET: DWORD = 52;
88pub const BASS_CONFIG_DEV_PERIOD: DWORD = 53;
89pub const BASS_CONFIG_FLOAT: DWORD = 54;
90pub const BASS_CONFIG_NET_SEEK: DWORD = 56;
91pub const BASS_CONFIG_AM_DISABLE: DWORD = 58;
92pub const BASS_CONFIG_NET_PLAYLIST_DEPTH: DWORD = 59;
93pub const BASS_CONFIG_NET_PREBUF_WAIT: DWORD = 60;
94pub const BASS_CONFIG_ANDROID_SESSIONID: DWORD = 62;
95pub const BASS_CONFIG_WASAPI_PERSIST: DWORD = 65;
96pub const BASS_CONFIG_REC_WASAPI: DWORD = 66;
97pub const BASS_CONFIG_ANDROID_AAUDIO: DWORD = 67;
98pub const BASS_CONFIG_SAMPLE_ONEHANDLE: DWORD = 69;
99pub const BASS_CONFIG_DEV_TIMEOUT: DWORD = 70;
100pub const BASS_CONFIG_NET_META: DWORD = 71;
101pub const BASS_CONFIG_NET_RESTRATE: DWORD = 72;
102
103// BASS_SetConfigPtr options
104pub const BASS_CONFIG_NET_AGENT: DWORD = 16;
105pub const BASS_CONFIG_NET_PROXY: DWORD = 17;
106pub const BASS_CONFIG_IOS_NOTIFY: DWORD = 46;
107pub const BASS_CONFIG_LIBSSL: DWORD = 64;
108
109pub const BASS_CONFIG_THREAD: DWORD = 0x40000000; // flag: thread-specific setting
110
111// BASS_CONFIG_IOS_SESSION flags
112pub const BASS_IOS_SESSION_MIX: DWORD = 1;
113pub const BASS_IOS_SESSION_DUCK: DWORD = 2;
114pub const BASS_IOS_SESSION_AMBIENT: DWORD = 4;
115pub const BASS_IOS_SESSION_SPEAKER: DWORD = 8;
116pub const BASS_IOS_SESSION_DISABLE: DWORD = 16;
117
118// BASS_Init flags
119pub const BASS_DEVICE_8BITS: DWORD = 1; // 8 bit
120pub const BASS_DEVICE_MONO: DWORD = 2; // mono
121pub const BASS_DEVICE_3D: DWORD = 4; // enable 3D functionality
122pub const BASS_DEVICE_16BITS: DWORD = 8; // limit output to 16 bit
123pub const BASS_DEVICE_REINIT: DWORD = 128; // reinitialize
124pub const BASS_DEVICE_LATENCY: DWORD = 0x100; // calculate device latency (BASS_INFO struct)
125pub const BASS_DEVICE_CPSPEAKERS: DWORD = 0x400; // detect speakers via Windows control panel
126pub const BASS_DEVICE_SPEAKERS: DWORD = 0x800; // force enabling of speaker assignment
127pub const BASS_DEVICE_NOSPEAKER: DWORD = 0x1000; // ignore speaker arrangement
128pub const BASS_DEVICE_DMIX: DWORD = 0x2000; // use ALSA "dmix" plugin
129pub const BASS_DEVICE_FREQ: DWORD = 0x4000; // set device sample rate
130pub const BASS_DEVICE_STEREO: DWORD = 0x8000; // limit output to stereo
131pub const BASS_DEVICE_HOG: DWORD = 0x10000; // hog/exclusive mode
132pub const BASS_DEVICE_AUDIOTRACK: DWORD = 0x20000; // use AudioTrack output
133pub const BASS_DEVICE_DSOUND: DWORD = 0x40000; // use DirectSound output
134pub const BASS_DEVICE_SOFTWARE: DWORD = 0x80000;	// disable hardware/fastpath output
135
136// DirectSound interfaces (for use with BASS_GetDSoundObject)
137pub const BASS_OBJECT_DS: DWORD = 1; // IDirectSound
138pub const BASS_OBJECT_DS3DL: DWORD = 2; // IDirectSound3DListener
139
140// BASS_DEVICEINFO flags
141pub const BASS_DEVICE_ENABLED: DWORD = 1;
142pub const BASS_DEVICE_DEFAULT: DWORD = 2;
143pub const BASS_DEVICE_INIT: DWORD = 4;
144pub const BASS_DEVICE_LOOPBACK: DWORD = 8;
145pub const BASS_DEVICE_DEFAULTCOM: DWORD = 128;
146
147pub const BASS_DEVICE_TYPE_MASK: DWORD = 0xFF000000;
148pub const BASS_DEVICE_TYPE_NETWORK: DWORD = 0x01000000;
149pub const BASS_DEVICE_TYPE_SPEAKERS: DWORD = 0x02000000;
150pub const BASS_DEVICE_TYPE_LINE: DWORD = 0x03000000;
151pub const BASS_DEVICE_TYPE_HEADPHONES: DWORD = 0x04000000;
152pub const BASS_DEVICE_TYPE_MICROPHONE: DWORD = 0x05000000;
153pub const BASS_DEVICE_TYPE_HEADSET: DWORD = 0x06000000;
154pub const BASS_DEVICE_TYPE_HANDSET: DWORD = 0x07000000;
155pub const BASS_DEVICE_TYPE_DIGITAL: DWORD = 0x08000000;
156pub const BASS_DEVICE_TYPE_SPDIF: DWORD = 0x09000000;
157pub const BASS_DEVICE_TYPE_HDMI: DWORD = 0x0A000000;
158pub const BASS_DEVICE_TYPE_DISPLAYPORT: DWORD = 0x40000000;
159
160// BASS_GetDeviceInfo flags
161pub const BASS_DEVICES_AIRPLAY: DWORD = 0x1000000;
162
163// BASS_INFO flags (from DSOUND.H)
164pub const DSCAPS_EMULDRIVER: DWORD = 0x00000020; // device does NOT have hardware DirectSound support
165pub const DSCAPS_CERTIFIED: DWORD = 0x00000040; // device driver has been certified by Microsoft
166pub const DSCAPS_HARDWARE: DWORD = 0x80000000; // hardware mixed
167
168// BASS_RECORDINFO flags (from DSOUND.H)
169pub const DSCCAPS_EMULDRIVER: DWORD = DSCAPS_EMULDRIVER; // device does NOT have hardware DirectSound recording support
170pub const DSCCAPS_CERTIFIED: DWORD = DSCAPS_CERTIFIED; // device driver has been certified by Microsoft
171
172pub const WAVE_FORMAT_1M08: DWORD = 0x00000001; // 11.025 kHz, Mono,   8-bit
173pub const WAVE_FORMAT_1S08: DWORD = 0x00000002; // 11.025 kHz, Stereo, 8-bit
174pub const WAVE_FORMAT_1M16: DWORD = 0x00000004; // 11.025 kHz, Mono,   16-bit
175pub const WAVE_FORMAT_1S16: DWORD = 0x00000008; // 11.025 kHz, Stereo, 16-bit
176pub const WAVE_FORMAT_2M08: DWORD = 0x00000010; // 22.05  kHz, Mono,   8-bit
177pub const WAVE_FORMAT_2S08: DWORD = 0x00000020; // 22.05  kHz, Stereo, 8-bit
178pub const WAVE_FORMAT_2M16: DWORD = 0x00000040; // 22.05  kHz, Mono,   16-bit
179pub const WAVE_FORMAT_2S16: DWORD = 0x00000080; // 22.05  kHz, Stereo, 16-bit
180pub const WAVE_FORMAT_4M08: DWORD = 0x00000100; // 44.1   kHz, Mono,   8-bit
181pub const WAVE_FORMAT_4S08: DWORD = 0x00000200; // 44.1   kHz, Stereo, 8-bit
182pub const WAVE_FORMAT_4M16: DWORD = 0x00000400; // 44.1   kHz, Mono,   16-bit
183pub const WAVE_FORMAT_4S16: DWORD = 0x00000800; // 44.1   kHz, Stereo, 16-bit
184
185pub const BASS_SAMPLE_8BITS: DWORD = 1; // 8 bit
186pub const BASS_SAMPLE_FLOAT: DWORD = 256; // 32 bit floating-point
187pub const BASS_SAMPLE_MONO: DWORD = 2; // mono
188pub const BASS_SAMPLE_LOOP: DWORD = 4; // looped
189pub const BASS_SAMPLE_3D: DWORD = 8; // 3D functionality
190pub const BASS_SAMPLE_SOFTWARE: DWORD = 16; // not using hardware mixing
191pub const BASS_SAMPLE_MUTEMAX: DWORD = 32; // mute at max distance (3D only)
192pub const BASS_SAMPLE_VAM: DWORD = 64; // DX7 voice allocation & management
193pub const BASS_SAMPLE_FX: DWORD = 128; // old implementation of DX8 effects
194pub const BASS_SAMPLE_OVER_VOL: DWORD = 0x10000; // override lowest volume
195pub const BASS_SAMPLE_OVER_POS: DWORD = 0x20000; // override longest playing
196pub const BASS_SAMPLE_OVER_DIST: DWORD = 0x30000; // override furthest from listener (3D only)
197
198pub const BASS_STREAM_PRESCAN: DWORD = 0x20000; // enable pin-point seeking/length (MP3/MP2/MP1)
199pub const BASS_STREAM_AUTOFREE: DWORD = 0x40000; // automatically free the stream when it stop/ends
200pub const BASS_STREAM_RESTRATE: DWORD = 0x80000; // restrict the download rate of internet file streams
201pub const BASS_STREAM_BLOCK: DWORD = 0x100000; // download/play internet file stream in small blocks
202pub const BASS_STREAM_DECODE: DWORD = 0x200000; // don't play the stream, only decode (BASS_ChannelGetData)
203pub const BASS_STREAM_STATUS: DWORD = 0x800000; // give server status info (HTTP/ICY tags) in DOWNLOADPROC
204
205pub const BASS_MP3_IGNOREDELAY: DWORD = 0x200; // ignore LAME/Xing/VBRI/iTunes delay & padding info
206pub const BASS_MP3_SETPOS: DWORD = BASS_STREAM_PRESCAN;
207
208pub const BASS_MUSIC_FLOAT: DWORD = BASS_SAMPLE_FLOAT;
209pub const BASS_MUSIC_MONO: DWORD = BASS_SAMPLE_MONO;
210pub const BASS_MUSIC_LOOP: DWORD = BASS_SAMPLE_LOOP;
211pub const BASS_MUSIC_3D: DWORD = BASS_SAMPLE_3D;
212pub const BASS_MUSIC_FX: DWORD = BASS_SAMPLE_FX;
213pub const BASS_MUSIC_AUTOFREE: DWORD = BASS_STREAM_AUTOFREE;
214pub const BASS_MUSIC_DECODE: DWORD = BASS_STREAM_DECODE;
215pub const BASS_MUSIC_PRESCAN: DWORD = BASS_STREAM_PRESCAN; // calculate playback length
216pub const BASS_MUSIC_CALCLEN: DWORD = BASS_MUSIC_PRESCAN;
217pub const BASS_MUSIC_RAMP: DWORD = 0x200; // normal ramping
218pub const BASS_MUSIC_RAMPS: DWORD = 0x400; // sensitive ramping
219pub const BASS_MUSIC_SURROUND: DWORD = 0x800; // surround sound
220pub const BASS_MUSIC_SURROUND2: DWORD = 0x1000; // surround sound (mode 2)
221pub const BASS_MUSIC_FT2PAN: DWORD = 0x2000; // apply FastTracker 2 panning to XM files
222pub const BASS_MUSIC_FT2MOD: DWORD = 0x2000; // play .MOD as FastTracker 2 does
223pub const BASS_MUSIC_PT1MOD: DWORD = 0x4000; // play .MOD as ProTracker 1 does
224pub const BASS_MUSIC_NONINTER: DWORD = 0x10000; // non-interpolated sample mixing
225pub const BASS_MUSIC_SINCINTER: DWORD = 0x800000; // sinc interpolated sample mixing
226pub const BASS_MUSIC_POSRESET: DWORD = 0x8000; // stop all notes when moving position
227pub const BASS_MUSIC_POSRESETEX: DWORD = 0x400000; // stop all notes and reset bmp/etc when moving position
228pub const BASS_MUSIC_STOPBACK: DWORD = 0x80000; // stop the music on a backwards jump effect
229pub const BASS_MUSIC_NOSAMPLE: DWORD = 0x100000; // don't load the samples
230
231// Speaker assignment flags
232pub const BASS_SPEAKER_FRONT: DWORD = 0x1000000; // front speakers
233pub const BASS_SPEAKER_REAR: DWORD = 0x2000000; // rear/side speakers
234pub const BASS_SPEAKER_CENLFE: DWORD = 0x3000000; // center & LFE speakers (5.1)
235pub const BASS_SPEAKER_REAR2: DWORD = 0x4000000; // rear center speakers (7.1)
236pub const BASS_SPEAKER_1: DWORD = 1 << 24; // 1st pair of speakers
237pub const BASS_SPEAKER_2: DWORD = 2 << 24; // 2nd pair of speakers
238pub const BASS_SPEAKER_3: DWORD = 3 << 24; // 3rd pair of speakers
239pub const BASS_SPEAKER_4: DWORD = 4 << 24; // 4th pair of speakers
240pub const BASS_SPEAKER_5: DWORD = 5 << 24; // 5th pair of speakers
241pub const BASS_SPEAKER_6: DWORD = 6 << 24; // 6th pair of speakers
242pub const BASS_SPEAKER_7: DWORD = 7 << 24; // 7th pair of speakers
243pub const BASS_SPEAKER_8: DWORD = 8 << 24; // 8th pair of speakers
244pub const BASS_SPEAKER_9: DWORD = 9 << 24; // 9th pair of speakers
245pub const BASS_SPEAKER_10: DWORD = 10 << 24; // 10th pair of speakers
246pub const BASS_SPEAKER_11: DWORD = 11 << 24; // 11th pair of speakers
247pub const BASS_SPEAKER_12: DWORD = 12 << 24; // 12th pair of speakers
248pub const BASS_SPEAKER_13: DWORD = 13 << 24; // 13th pair of speakers
249pub const BASS_SPEAKER_14: DWORD = 14 << 24; // 14th pair of speakers
250pub const BASS_SPEAKER_15: DWORD = 15 << 24; // 15th pair of speakers
251pub const BASS_SPEAKER_LEFT: DWORD = 0x10000000; // modifier: left
252pub const BASS_SPEAKER_RIGHT: DWORD = 0x20000000; // modifier: right
253pub const BASS_SPEAKER_FRONTLEFT: DWORD = BASS_SPEAKER_FRONT | BASS_SPEAKER_LEFT;
254pub const BASS_SPEAKER_FRONTRIGHT: DWORD = BASS_SPEAKER_FRONT | BASS_SPEAKER_RIGHT;
255pub const BASS_SPEAKER_REARLEFT: DWORD = BASS_SPEAKER_REAR | BASS_SPEAKER_LEFT;
256pub const BASS_SPEAKER_REARRIGHT: DWORD = BASS_SPEAKER_REAR | BASS_SPEAKER_RIGHT;
257pub const BASS_SPEAKER_CENTER: DWORD = BASS_SPEAKER_CENLFE | BASS_SPEAKER_LEFT;
258pub const BASS_SPEAKER_LFE: DWORD = BASS_SPEAKER_CENLFE | BASS_SPEAKER_RIGHT;
259pub const BASS_SPEAKER_REAR2LEFT: DWORD = BASS_SPEAKER_REAR2 | BASS_SPEAKER_LEFT;
260pub const BASS_SPEAKER_REAR2RIGHT: DWORD = BASS_SPEAKER_REAR2 | BASS_SPEAKER_RIGHT;
261
262pub const BASS_ASYNCFILE: DWORD = 0x40000000;
263pub const BASS_UNICODE: DWORD = 0x80000000;
264
265pub const BASS_RECORD_PAUSE: DWORD = 0x8000; // start recording paused
266pub const BASS_RECORD_ECHOCANCEL: DWORD = 0x2000;
267pub const BASS_RECORD_AGC: DWORD = 0x4000;
268
269// DX7 voice allocation & management flags
270pub const BASS_VAM_HARDWARE: DWORD = 1;
271pub const BASS_VAM_SOFTWARE: DWORD = 2;
272pub const BASS_VAM_TERM_TIME: DWORD = 4;
273pub const BASS_VAM_TERM_DIST: DWORD = 8;
274pub const BASS_VAM_TERM_PRIO: DWORD = 16;
275
276pub const BASS_ORIGRES_FLOAT: DWORD = 0x10000;
277
278// BASS_CHANNELINFO types
279pub const BASS_CTYPE_SAMPLE: DWORD = 1;
280pub const BASS_CTYPE_RECORD: DWORD = 2;
281pub const BASS_CTYPE_STREAM: DWORD = 0x10000;
282pub const BASS_CTYPE_STREAM_VORBIS: DWORD = 0x10002;
283pub const BASS_CTYPE_STREAM_OGG: DWORD = 0x10002;
284pub const BASS_CTYPE_STREAM_MP1: DWORD = 0x10003;
285pub const BASS_CTYPE_STREAM_MP2: DWORD = 0x10004;
286pub const BASS_CTYPE_STREAM_MP3: DWORD = 0x10005;
287pub const BASS_CTYPE_STREAM_AIFF: DWORD = 0x10006;
288pub const BASS_CTYPE_STREAM_CA: DWORD = 0x10007;
289pub const BASS_CTYPE_STREAM_MF: DWORD = 0x10008;
290pub const BASS_CTYPE_STREAM_AM: DWORD = 0x10009;
291pub const BASS_CTYPE_STREAM_SAMPLE: DWORD = 0x1000A;
292pub const BASS_CTYPE_STREAM_DUMMY: DWORD = 0x18000;
293pub const BASS_CTYPE_STREAM_DEVICE: DWORD = 0x18001;
294pub const BASS_CTYPE_STREAM_WAV: DWORD = 0x40000; // WAVE flag, LOWORD=codec
295pub const BASS_CTYPE_STREAM_WAV_PCM: DWORD = 0x50001;
296pub const BASS_CTYPE_STREAM_WAV_FLOAT: DWORD = 0x50003;
297pub const BASS_CTYPE_MUSIC_MOD: DWORD = 0x20000;
298pub const BASS_CTYPE_MUSIC_MTM: DWORD = 0x20001;
299pub const BASS_CTYPE_MUSIC_S3M: DWORD = 0x20002;
300pub const BASS_CTYPE_MUSIC_XM: DWORD = 0x20003;
301pub const BASS_CTYPE_MUSIC_IT: DWORD = 0x20004;
302pub const BASS_CTYPE_MUSIC_MO3: DWORD = 0x00100; // MO3 flag
303
304// 3D channel modes
305pub const BASS_3DMODE_NORMAL: DWORD = 0; // normal 3D processing
306pub const BASS_3DMODE_RELATIVE: DWORD = 1; // position is relative to the listener
307pub const BASS_3DMODE_OFF: DWORD = 2; // no 3D processing
308
309// software 3D mixing algorithms (used with BASS_CONFIG_3DALGORITHM)
310pub const BASS_3DALG_DEFAULT: DWORD = 0;
311pub const BASS_3DALG_OFF: DWORD = 1;
312pub const BASS_3DALG_FULL: DWORD = 2;
313pub const BASS_3DALG_LIGHT: DWORD = 3;
314
315// BASS_SampleGetChannel flags
316pub const BASS_SAMCHAN_NEW: DWORD = 1;
317pub const BASS_SAMCHAN_STREAM: DWORD = 2;
318
319pub const BASS_STREAMPROC_END: DWORD = 0x80000000; // end of user stream flag
320
321// BASS_StreamCreateFileUser file systems
322pub const STREAMFILE_NOBUFFER: DWORD = 0;
323pub const STREAMFILE_BUFFER: DWORD = 1;
324pub const STREAMFILE_BUFFERPUSH: DWORD = 2;
325
326// BASS_StreamPutFileData options
327pub const BASS_FILEDATA_END: DWORD = 0; // end & close the file
328
329// BASS_StreamGetFilePosition modes
330pub const BASS_FILEPOS_CURRENT: DWORD = 0;
331pub const BASS_FILEPOS_DECODE: DWORD = BASS_FILEPOS_CURRENT;
332pub const BASS_FILEPOS_DOWNLOAD: DWORD = 1;
333pub const BASS_FILEPOS_END: DWORD = 2;
334pub const BASS_FILEPOS_START: DWORD = 3;
335pub const BASS_FILEPOS_CONNECTED: DWORD = 4;
336pub const BASS_FILEPOS_BUFFER: DWORD = 5;
337pub const BASS_FILEPOS_SOCKET: DWORD = 6;
338pub const BASS_FILEPOS_ASYNCBUF: DWORD = 7;
339pub const BASS_FILEPOS_SIZE: DWORD = 8;
340pub const BASS_FILEPOS_BUFFERING: DWORD = 9;
341pub const BASS_FILEPOS_AVAILABLE: DWORD = 10;
342
343// BASS_ChannelSetSync types
344pub const BASS_SYNC_POS: DWORD = 0;
345pub const BASS_SYNC_END: DWORD = 2;
346pub const BASS_SYNC_META: DWORD = 4;
347pub const BASS_SYNC_SLIDE: DWORD = 5;
348pub const BASS_SYNC_STALL: DWORD = 6;
349pub const BASS_SYNC_DOWNLOAD: DWORD = 7;
350pub const BASS_SYNC_FREE: DWORD = 8;
351pub const BASS_SYNC_SETPOS: DWORD = 11;
352pub const BASS_SYNC_MUSICPOS: DWORD = 10;
353pub const BASS_SYNC_MUSICINST: DWORD = 1;
354pub const BASS_SYNC_MUSICFX: DWORD = 3;
355pub const BASS_SYNC_OGG_CHANGE: DWORD = 12;
356pub const BASS_SYNC_DEV_FAIL: DWORD = 14;
357pub const BASS_SYNC_DEV_FORMAT: DWORD = 15;
358pub const BASS_SYNC_THREAD: DWORD = 0x20000000; // flag: call sync in other thread
359pub const BASS_SYNC_MIXTIME: DWORD = 0x40000000; // flag: sync at mixtime, else at playtime
360pub const BASS_SYNC_ONETIME: DWORD = 0x80000000; // flag: sync only once, else continuously
361
362// BASS_ChannelIsActive return values
363pub const BASS_ACTIVE_STOPPED: DWORD = 0;
364pub const BASS_ACTIVE_PLAYING: DWORD = 1;
365pub const BASS_ACTIVE_STALLED: DWORD = 2;
366pub const BASS_ACTIVE_PAUSED: DWORD = 3;
367pub const BASS_ACTIVE_PAUSED_DEVICE: DWORD = 4;
368
369// Channel attributes
370pub const BASS_ATTRIB_FREQ: DWORD = 1;
371pub const BASS_ATTRIB_VOL: DWORD = 2;
372pub const BASS_ATTRIB_PAN: DWORD = 3;
373pub const BASS_ATTRIB_EAXMIX: DWORD = 4;
374pub const BASS_ATTRIB_NOBUFFER: DWORD = 5;
375pub const BASS_ATTRIB_VBR: DWORD = 6;
376pub const BASS_ATTRIB_CPU: DWORD = 7;
377pub const BASS_ATTRIB_SRC: DWORD = 8;
378pub const BASS_ATTRIB_NET_RESUME: DWORD = 9;
379pub const BASS_ATTRIB_SCANINFO: DWORD = 10;
380pub const BASS_ATTRIB_NORAMP: DWORD = 11;
381pub const BASS_ATTRIB_BITRATE: DWORD = 12;
382pub const BASS_ATTRIB_BUFFER: DWORD = 13;
383pub const BASS_ATTRIB_GRANULE: DWORD = 14;
384pub const BASS_ATTRIB_USER: DWORD = 15;
385pub const BASS_ATTRIB_TAIL: DWORD = 16;
386pub const BASS_ATTRIB_PUSH_LIMIT: DWORD = 17;
387pub const BASS_ATTRIB_MUSIC_AMPLIFY: DWORD = 0x100;
388pub const BASS_ATTRIB_MUSIC_PANSEP: DWORD = 0x101;
389pub const BASS_ATTRIB_MUSIC_PSCALER: DWORD = 0x102;
390pub const BASS_ATTRIB_MUSIC_BPM: DWORD = 0x103;
391pub const BASS_ATTRIB_MUSIC_SPEED: DWORD = 0x104;
392pub const BASS_ATTRIB_MUSIC_VOL_GLOBAL: DWORD = 0x105;
393pub const BASS_ATTRIB_MUSIC_ACTIVE: DWORD = 0x106;
394pub const BASS_ATTRIB_MUSIC_VOL_CHAN: DWORD = 0x200; // + channel #
395pub const BASS_ATTRIB_MUSIC_VOL_INST: DWORD = 0x300; // + instrument #
396
397// BASS_ChannelSlideAttribute flags
398pub const BASS_SLIDE_LOG: DWORD = 0x1000000;
399
400// BASS_ChannelGetData flags
401pub const BASS_DATA_AVAILABLE: DWORD = 0; // query how much data is buffered
402pub const BASS_DATA_NOREMOVE: DWORD = 0x10000000; // flag: don't remove data from recording buffer;
403pub const BASS_DATA_FIXED: DWORD = 0x20000000; // flag: return 8.24 fixed-point data
404pub const BASS_DATA_FLOAT: DWORD = 0x40000000; // flag: return floating-point sample data
405pub const BASS_DATA_FFT256: DWORD = 0x80000000; // 256 sample FFT
406pub const BASS_DATA_FFT512: DWORD = 0x80000001; // 512 FFT
407pub const BASS_DATA_FFT1024: DWORD = 0x80000002; // 1024 FFT
408pub const BASS_DATA_FFT2048: DWORD = 0x80000003; // 2048 FFT
409pub const BASS_DATA_FFT4096: DWORD = 0x80000004; // 4096 FFT
410pub const BASS_DATA_FFT8192: DWORD = 0x80000005; // 8192 FFT
411pub const BASS_DATA_FFT16384: DWORD = 0x80000006; // 16384 FFT
412pub const BASS_DATA_FFT32768: DWORD = 0x80000007; // 32768 FFT
413pub const BASS_DATA_FFT_INDIVIDUAL: DWORD = 0x10; // FFT flag: FFT for each channel, else all combined
414pub const BASS_DATA_FFT_NOWINDOW: DWORD = 0x20; // FFT flag: no Hanning window
415pub const BASS_DATA_FFT_REMOVEDC: DWORD = 0x40; // FFT flag: pre-remove DC bias
416pub const BASS_DATA_FFT_COMPLEX: DWORD = 0x80; // FFT flag: return complex data
417pub const BASS_DATA_FFT_NYQUIST: DWORD = 0x100; // FFT flag: return extra Nyquist value
418
419// BASS_ChannelGetLevelEx flags
420pub const BASS_LEVEL_MONO: DWORD = 1; // get mono level
421pub const BASS_LEVEL_STEREO: DWORD = 2; // get stereo level
422pub const BASS_LEVEL_RMS: DWORD = 4; // get RMS levels
423pub const BASS_LEVEL_VOLPAN: DWORD = 8; // apply VOL/PAN attributes to the levels
424pub const BASS_LEVEL_NOREMOVE: DWORD = 16; // don't remove data from recording buffer
425
426// BASS_ChannelGetTags types : what's returned
427pub const BASS_TAG_ID3: DWORD = 0; // ID3v1 tags : TAG_ID3 structure
428pub const BASS_TAG_ID3V2: DWORD = 1; // ID3v2 tags : variable length block
429pub const BASS_TAG_OGG: DWORD = 2; // OGG comments : series of null-terminated UTF-8 strings
430pub const BASS_TAG_HTTP: DWORD = 3; // HTTP headers : series of null-terminated ANSI strings
431pub const BASS_TAG_ICY: DWORD = 4; // ICY headers : series of null-terminated ANSI strings
432pub const BASS_TAG_META: DWORD = 5; // ICY metadata : ANSI string
433pub const BASS_TAG_APE: DWORD = 6; // APE tags : series of null-terminated UTF-8 strings
434pub const BASS_TAG_MP4: DWORD = 7; // MP4/iTunes metadata : series of null-terminated UTF-8 strings
435pub const BASS_TAG_WMA: DWORD = 8; // WMA tags : series of null-terminated UTF-8 strings
436pub const BASS_TAG_VENDOR: DWORD = 9; // OGG encoder : UTF-8 string
437pub const BASS_TAG_LYRICS3: DWORD = 10; // Lyric3v2 tag : ASCII string
438pub const BASS_TAG_CA_CODEC: DWORD = 11; // CoreAudio codec info : TAG_CA_CODEC structure
439pub const BASS_TAG_MF: DWORD = 13; // Media Foundation tags : series of null-terminated UTF-8 strings
440pub const BASS_TAG_WAVEFORMAT: DWORD = 14; // WAVE format : WAVEFORMATEEX structure
441pub const BASS_TAG_AM_NAME: DWORD = 16; // Android Media codec name : ASCII string
442pub const BASS_TAG_ID3V2_2: DWORD = 17; // ID3v2 tags (2nd block) : variable length block
443pub const BASS_TAG_AM_MIME: DWORD = 18; // Android Media MIME type : ASCII string
444pub const BASS_TAG_LOCATION: DWORD = 19; // redirected URL : ASCII string
445pub const BASS_TAG_RIFF_INFO: DWORD = 0x100; // RIFF "INFO" tags : series of null-terminated ANSI strings
446pub const BASS_TAG_RIFF_BEXT: DWORD = 0x101; // RIFF/BWF "bext" tags : TAG_BEXT structure
447pub const BASS_TAG_RIFF_CART: DWORD = 0x102; // RIFF/BWF "cart" tags : TAG_CART structure
448pub const BASS_TAG_RIFF_DISP: DWORD = 0x103; // RIFF "DISP" text tag : ANSI string
449pub const BASS_TAG_RIFF_CUE: DWORD = 0x104; // RIFF "cue " chunk : TAG_CUE structure
450pub const BASS_TAG_RIFF_SMPL: DWORD = 0x105; // RIFF "smpl" chunk : TAG_SMPL structure
451pub const BASS_TAG_APE_BINARY: DWORD = 0x1000; // + index #, binary APE tag : TAG_APE_BINARY structure
452pub const BASS_TAG_MUSIC_NAME: DWORD = 0x10000; // MOD music name : ANSI string
453pub const BASS_TAG_MUSIC_MESSAGE: DWORD = 0x10001; // MOD message : ANSI string
454pub const BASS_TAG_MUSIC_ORDERS: DWORD = 0x10002; // MOD order list : BYTE array of pattern numbers
455pub const BASS_TAG_MUSIC_AUTH: DWORD = 0x10003; // MOD author : UTF-8 string
456pub const BASS_TAG_MUSIC_INST: DWORD = 0x10100; // + instrument #, MOD instrument name : ANSI string
457pub const BASS_TAG_MUSIC_CHAN: DWORD = 0x10200; // + channel #, MOD channel name : ANSI string
458pub const BASS_TAG_MUSIC_SAMPLE: DWORD = 0x10300; // + sample #, MOD sample name : ANSI string
459
460// BASS_ChannelGetLength/GetPosition/SetPosition modes
461pub const BASS_POS_BYTE: DWORD = 0; // byte position
462pub const BASS_POS_MUSIC_ORDER: DWORD = 1; // order.row position, MAKELONG(order,row)
463pub const BASS_POS_OGG: DWORD = 3; // OGG bitstream number
464pub const BASS_POS_END: DWORD = 0x10; // trimmed end position
465pub const BASS_POS_LOOP: DWORD  = 0x11; // loop start positiom
466pub const BASS_POS_FLUSH: DWORD = 0x1000000; // flag: flush decoder/FX buffers
467pub const BASS_POS_RESET: DWORD = 0x2000000; // flag: reset user file buffers
468pub const BASS_POS_RELATIVE: DWORD = 0x4000000; // flag: seek relative to the current position
469pub const BASS_POS_INEXACT: DWORD = 0x8000000; // flag: allow seeking to inexact position
470pub const BASS_POS_DECODE: DWORD = 0x10000000; // flag: get the decoding (not playing) position
471pub const BASS_POS_DECODETO: DWORD = 0x20000000; // flag: decode to the position instead of seeking
472pub const BASS_POS_SCAN: DWORD = 0x40000000; // flag: scan to the position
473
474// BASS_ChannelSetDevice/GetDevice option
475pub const BASS_NODEVICE: DWORD = 0x20000;
476
477// BASS_RecordSetInput flags
478pub const BASS_INPUT_OFF: DWORD = 0x10000;
479pub const BASS_INPUT_ON: DWORD = 0x20000;
480
481pub const BASS_INPUT_TYPE_MASK: DWORD = 0xFF000000;
482pub const BASS_INPUT_TYPE_UNDEF: DWORD = 0x00000000;
483pub const BASS_INPUT_TYPE_DIGITAL: DWORD = 0x01000000;
484pub const BASS_INPUT_TYPE_LINE: DWORD = 0x02000000;
485pub const BASS_INPUT_TYPE_MIC: DWORD = 0x03000000;
486pub const BASS_INPUT_TYPE_SYNTH: DWORD = 0x04000000;
487pub const BASS_INPUT_TYPE_CD: DWORD = 0x05000000;
488pub const BASS_INPUT_TYPE_PHONE: DWORD = 0x06000000;
489pub const BASS_INPUT_TYPE_SPEAKER: DWORD = 0x07000000;
490pub const BASS_INPUT_TYPE_WAVE: DWORD = 0x08000000;
491pub const BASS_INPUT_TYPE_AUX: DWORD = 0x09000000;
492pub const BASS_INPUT_TYPE_ANALOG: DWORD = 0x0A000000;
493
494// BASS_ChannelSetFX effect types
495pub const BASS_FX_DX8_CHORUS: DWORD = 0;
496pub const BASS_FX_DX8_COMPRESSOR: DWORD = 1;
497pub const BASS_FX_DX8_DISTORTION: DWORD = 2;
498pub const BASS_FX_DX8_ECHO: DWORD = 3;
499pub const BASS_FX_DX8_FLANGER: DWORD = 4;
500pub const BASS_FX_DX8_GARGLE: DWORD = 5;
501pub const BASS_FX_DX8_I3DL2REVERB: DWORD = 6;
502pub const BASS_FX_DX8_PARAMEQ: DWORD = 7;
503pub const BASS_FX_DX8_REVERB: DWORD = 8;
504pub const BASS_FX_VOLUME: DWORD = 9;
505
506pub const BASS_DX8_PHASE_NEG_180: DWORD = 0;
507pub const BASS_DX8_PHASE_NEG_90: DWORD = 1;
508pub const BASS_DX8_PHASE_ZERO: DWORD = 2;
509pub const BASS_DX8_PHASE_90: DWORD = 3;
510pub const BASS_DX8_PHASE_180: DWORD = 4;
511
512pub const BASS_IOSNOTIFY_INTERRUPT: DWORD = 1; // interruption started
513pub const BASS_IOSNOTIFY_INTERRUPT_END: DWORD = 2; // interruption ended