mirror of
https://github.com/geode-sdk/geode.git
synced 2024-11-30 11:17:08 -05:00
752 lines
30 KiB
C
Vendored
752 lines
30 KiB
C
Vendored
/* ======================================================================================== */
|
|
/* FMOD Core API - Common C/C++ header file. */
|
|
/* Copyright (c), Firelight Technologies Pty, Ltd. 2004-2020. */
|
|
/* */
|
|
/* This header is included by fmod.hpp (C++ interface) and fmod.h (C interface) */
|
|
/* */
|
|
/* For more detail visit: */
|
|
/* https://fmod.com/resources/documentation-api?version=2.0&page=core-api-common.html */
|
|
/* ======================================================================================== */
|
|
#ifndef _FMOD_COMMON_H
|
|
#define _FMOD_COMMON_H
|
|
|
|
/*
|
|
Library import helpers
|
|
*/
|
|
#if defined(_WIN32) || defined(__CYGWIN__)
|
|
#define F_CALL __stdcall
|
|
#else
|
|
#define F_CALL
|
|
#endif
|
|
|
|
#if defined(_WIN32) || defined(__CYGWIN__) || defined(__ORBIS__) || defined(F_USE_DECLSPEC)
|
|
#define F_EXPORT __declspec(dllexport)
|
|
#elif defined(__APPLE__) || defined(__ANDROID__) || defined(__linux__) || defined(F_USE_ATTRIBUTE)
|
|
#define F_EXPORT __attribute__((visibility("default")))
|
|
#else
|
|
#define F_EXPORT
|
|
#endif
|
|
|
|
#ifdef DLL_EXPORTS
|
|
#define F_API F_EXPORT F_CALL
|
|
#else
|
|
#define F_API F_CALL
|
|
#endif
|
|
|
|
#define F_CALLBACK F_CALL
|
|
|
|
/*
|
|
FMOD core types
|
|
*/
|
|
typedef int FMOD_BOOL;
|
|
typedef struct FMOD_SYSTEM FMOD_SYSTEM;
|
|
typedef struct FMOD_SOUND FMOD_SOUND;
|
|
typedef struct FMOD_CHANNELCONTROL FMOD_CHANNELCONTROL;
|
|
typedef struct FMOD_CHANNEL FMOD_CHANNEL;
|
|
typedef struct FMOD_CHANNELGROUP FMOD_CHANNELGROUP;
|
|
typedef struct FMOD_SOUNDGROUP FMOD_SOUNDGROUP;
|
|
typedef struct FMOD_REVERB3D FMOD_REVERB3D;
|
|
typedef struct FMOD_DSP FMOD_DSP;
|
|
typedef struct FMOD_DSPCONNECTION FMOD_DSPCONNECTION;
|
|
typedef struct FMOD_POLYGON FMOD_POLYGON;
|
|
typedef struct FMOD_GEOMETRY FMOD_GEOMETRY;
|
|
typedef struct FMOD_SYNCPOINT FMOD_SYNCPOINT;
|
|
typedef struct FMOD_ASYNCREADINFO FMOD_ASYNCREADINFO;
|
|
typedef unsigned int FMOD_PORT_TYPE;
|
|
typedef unsigned long long FMOD_PORT_INDEX;
|
|
|
|
/*
|
|
FMOD constants
|
|
*/
|
|
#define FMOD_VERSION 0x00020010 /* 0xaaaabbcc -> aaaa = product version, bb = major version, cc = minor version.*/
|
|
|
|
typedef unsigned int FMOD_DEBUG_FLAGS;
|
|
#define FMOD_DEBUG_LEVEL_NONE 0x00000000
|
|
#define FMOD_DEBUG_LEVEL_ERROR 0x00000001
|
|
#define FMOD_DEBUG_LEVEL_WARNING 0x00000002
|
|
#define FMOD_DEBUG_LEVEL_LOG 0x00000004
|
|
#define FMOD_DEBUG_TYPE_MEMORY 0x00000100
|
|
#define FMOD_DEBUG_TYPE_FILE 0x00000200
|
|
#define FMOD_DEBUG_TYPE_CODEC 0x00000400
|
|
#define FMOD_DEBUG_TYPE_TRACE 0x00000800
|
|
#define FMOD_DEBUG_DISPLAY_TIMESTAMPS 0x00010000
|
|
#define FMOD_DEBUG_DISPLAY_LINENUMBERS 0x00020000
|
|
#define FMOD_DEBUG_DISPLAY_THREAD 0x00040000
|
|
|
|
typedef unsigned int FMOD_MEMORY_TYPE;
|
|
#define FMOD_MEMORY_NORMAL 0x00000000
|
|
#define FMOD_MEMORY_STREAM_FILE 0x00000001
|
|
#define FMOD_MEMORY_STREAM_DECODE 0x00000002
|
|
#define FMOD_MEMORY_SAMPLEDATA 0x00000004
|
|
#define FMOD_MEMORY_DSP_BUFFER 0x00000008
|
|
#define FMOD_MEMORY_PLUGIN 0x00000010
|
|
#define FMOD_MEMORY_PERSISTENT 0x00200000
|
|
#define FMOD_MEMORY_ALL 0xFFFFFFFF
|
|
|
|
typedef unsigned int FMOD_INITFLAGS;
|
|
#define FMOD_INIT_NORMAL 0x00000000
|
|
#define FMOD_INIT_STREAM_FROM_UPDATE 0x00000001
|
|
#define FMOD_INIT_MIX_FROM_UPDATE 0x00000002
|
|
#define FMOD_INIT_3D_RIGHTHANDED 0x00000004
|
|
#define FMOD_INIT_CHANNEL_LOWPASS 0x00000100
|
|
#define FMOD_INIT_CHANNEL_DISTANCEFILTER 0x00000200
|
|
#define FMOD_INIT_PROFILE_ENABLE 0x00010000
|
|
#define FMOD_INIT_VOL0_BECOMES_VIRTUAL 0x00020000
|
|
#define FMOD_INIT_GEOMETRY_USECLOSEST 0x00040000
|
|
#define FMOD_INIT_PREFER_DOLBY_DOWNMIX 0x00080000
|
|
#define FMOD_INIT_THREAD_UNSAFE 0x00100000
|
|
#define FMOD_INIT_PROFILE_METER_ALL 0x00200000
|
|
#define FMOD_INIT_MEMORY_TRACKING 0x00400000
|
|
|
|
typedef unsigned int FMOD_DRIVER_STATE;
|
|
#define FMOD_DRIVER_STATE_CONNECTED 0x00000001
|
|
#define FMOD_DRIVER_STATE_DEFAULT 0x00000002
|
|
|
|
typedef unsigned int FMOD_TIMEUNIT;
|
|
#define FMOD_TIMEUNIT_MS 0x00000001
|
|
#define FMOD_TIMEUNIT_PCM 0x00000002
|
|
#define FMOD_TIMEUNIT_PCMBYTES 0x00000004
|
|
#define FMOD_TIMEUNIT_RAWBYTES 0x00000008
|
|
#define FMOD_TIMEUNIT_PCMFRACTION 0x00000010
|
|
#define FMOD_TIMEUNIT_MODORDER 0x00000100
|
|
#define FMOD_TIMEUNIT_MODROW 0x00000200
|
|
#define FMOD_TIMEUNIT_MODPATTERN 0x00000400
|
|
|
|
typedef unsigned int FMOD_SYSTEM_CALLBACK_TYPE;
|
|
#define FMOD_SYSTEM_CALLBACK_DEVICELISTCHANGED 0x00000001
|
|
#define FMOD_SYSTEM_CALLBACK_DEVICELOST 0x00000002
|
|
#define FMOD_SYSTEM_CALLBACK_MEMORYALLOCATIONFAILED 0x00000004
|
|
#define FMOD_SYSTEM_CALLBACK_THREADCREATED 0x00000008
|
|
#define FMOD_SYSTEM_CALLBACK_BADDSPCONNECTION 0x00000010
|
|
#define FMOD_SYSTEM_CALLBACK_PREMIX 0x00000020
|
|
#define FMOD_SYSTEM_CALLBACK_POSTMIX 0x00000040
|
|
#define FMOD_SYSTEM_CALLBACK_ERROR 0x00000080
|
|
#define FMOD_SYSTEM_CALLBACK_MIDMIX 0x00000100
|
|
#define FMOD_SYSTEM_CALLBACK_THREADDESTROYED 0x00000200
|
|
#define FMOD_SYSTEM_CALLBACK_PREUPDATE 0x00000400
|
|
#define FMOD_SYSTEM_CALLBACK_POSTUPDATE 0x00000800
|
|
#define FMOD_SYSTEM_CALLBACK_RECORDLISTCHANGED 0x00001000
|
|
#define FMOD_SYSTEM_CALLBACK_ALL 0xFFFFFFFF
|
|
|
|
typedef unsigned int FMOD_MODE;
|
|
#define FMOD_DEFAULT 0x00000000
|
|
#define FMOD_LOOP_OFF 0x00000001
|
|
#define FMOD_LOOP_NORMAL 0x00000002
|
|
#define FMOD_LOOP_BIDI 0x00000004
|
|
#define FMOD_2D 0x00000008
|
|
#define FMOD_3D 0x00000010
|
|
#define FMOD_CREATESTREAM 0x00000080
|
|
#define FMOD_CREATESAMPLE 0x00000100
|
|
#define FMOD_CREATECOMPRESSEDSAMPLE 0x00000200
|
|
#define FMOD_OPENUSER 0x00000400
|
|
#define FMOD_OPENMEMORY 0x00000800
|
|
#define FMOD_OPENMEMORY_POINT 0x10000000
|
|
#define FMOD_OPENRAW 0x00001000
|
|
#define FMOD_OPENONLY 0x00002000
|
|
#define FMOD_ACCURATETIME 0x00004000
|
|
#define FMOD_MPEGSEARCH 0x00008000
|
|
#define FMOD_NONBLOCKING 0x00010000
|
|
#define FMOD_UNIQUE 0x00020000
|
|
#define FMOD_3D_HEADRELATIVE 0x00040000
|
|
#define FMOD_3D_WORLDRELATIVE 0x00080000
|
|
#define FMOD_3D_INVERSEROLLOFF 0x00100000
|
|
#define FMOD_3D_LINEARROLLOFF 0x00200000
|
|
#define FMOD_3D_LINEARSQUAREROLLOFF 0x00400000
|
|
#define FMOD_3D_INVERSETAPEREDROLLOFF 0x00800000
|
|
#define FMOD_3D_CUSTOMROLLOFF 0x04000000
|
|
#define FMOD_3D_IGNOREGEOMETRY 0x40000000
|
|
#define FMOD_IGNORETAGS 0x02000000
|
|
#define FMOD_LOWMEM 0x08000000
|
|
#define FMOD_VIRTUAL_PLAYFROMSTART 0x80000000
|
|
|
|
typedef unsigned int FMOD_CHANNELMASK;
|
|
#define FMOD_CHANNELMASK_FRONT_LEFT 0x00000001
|
|
#define FMOD_CHANNELMASK_FRONT_RIGHT 0x00000002
|
|
#define FMOD_CHANNELMASK_FRONT_CENTER 0x00000004
|
|
#define FMOD_CHANNELMASK_LOW_FREQUENCY 0x00000008
|
|
#define FMOD_CHANNELMASK_SURROUND_LEFT 0x00000010
|
|
#define FMOD_CHANNELMASK_SURROUND_RIGHT 0x00000020
|
|
#define FMOD_CHANNELMASK_BACK_LEFT 0x00000040
|
|
#define FMOD_CHANNELMASK_BACK_RIGHT 0x00000080
|
|
#define FMOD_CHANNELMASK_BACK_CENTER 0x00000100
|
|
|
|
#define FMOD_CHANNELMASK_MONO (FMOD_CHANNELMASK_FRONT_LEFT)
|
|
#define FMOD_CHANNELMASK_STEREO (FMOD_CHANNELMASK_FRONT_LEFT | FMOD_CHANNELMASK_FRONT_RIGHT)
|
|
#define FMOD_CHANNELMASK_LRC (FMOD_CHANNELMASK_FRONT_LEFT | FMOD_CHANNELMASK_FRONT_RIGHT | FMOD_CHANNELMASK_FRONT_CENTER)
|
|
#define FMOD_CHANNELMASK_QUAD (FMOD_CHANNELMASK_FRONT_LEFT | FMOD_CHANNELMASK_FRONT_RIGHT | FMOD_CHANNELMASK_SURROUND_LEFT | FMOD_CHANNELMASK_SURROUND_RIGHT)
|
|
#define FMOD_CHANNELMASK_SURROUND (FMOD_CHANNELMASK_FRONT_LEFT | FMOD_CHANNELMASK_FRONT_RIGHT | FMOD_CHANNELMASK_FRONT_CENTER | FMOD_CHANNELMASK_SURROUND_LEFT | FMOD_CHANNELMASK_SURROUND_RIGHT)
|
|
#define FMOD_CHANNELMASK_5POINT1 (FMOD_CHANNELMASK_FRONT_LEFT | FMOD_CHANNELMASK_FRONT_RIGHT | FMOD_CHANNELMASK_FRONT_CENTER | FMOD_CHANNELMASK_LOW_FREQUENCY | FMOD_CHANNELMASK_SURROUND_LEFT | FMOD_CHANNELMASK_SURROUND_RIGHT)
|
|
#define FMOD_CHANNELMASK_5POINT1_REARS (FMOD_CHANNELMASK_FRONT_LEFT | FMOD_CHANNELMASK_FRONT_RIGHT | FMOD_CHANNELMASK_FRONT_CENTER | FMOD_CHANNELMASK_LOW_FREQUENCY | FMOD_CHANNELMASK_BACK_LEFT | FMOD_CHANNELMASK_BACK_RIGHT)
|
|
#define FMOD_CHANNELMASK_7POINT0 (FMOD_CHANNELMASK_FRONT_LEFT | FMOD_CHANNELMASK_FRONT_RIGHT | FMOD_CHANNELMASK_FRONT_CENTER | FMOD_CHANNELMASK_SURROUND_LEFT | FMOD_CHANNELMASK_SURROUND_RIGHT | FMOD_CHANNELMASK_BACK_LEFT | FMOD_CHANNELMASK_BACK_RIGHT)
|
|
#define FMOD_CHANNELMASK_7POINT1 (FMOD_CHANNELMASK_FRONT_LEFT | FMOD_CHANNELMASK_FRONT_RIGHT | FMOD_CHANNELMASK_FRONT_CENTER | FMOD_CHANNELMASK_LOW_FREQUENCY | FMOD_CHANNELMASK_SURROUND_LEFT | FMOD_CHANNELMASK_SURROUND_RIGHT | FMOD_CHANNELMASK_BACK_LEFT | FMOD_CHANNELMASK_BACK_RIGHT)
|
|
|
|
/* Preset for FMOD_REVERB_PROPERTIES */
|
|
#define FMOD_PRESET_OFF { 1000, 7, 11, 5000, 100, 100, 100, 250, 0, 20, 96, -80.0f }
|
|
#define FMOD_PRESET_GENERIC { 1500, 7, 11, 5000, 83, 100, 100, 250, 0, 14500, 96, -8.0f }
|
|
#define FMOD_PRESET_PADDEDCELL { 170, 1, 2, 5000, 10, 100, 100, 250, 0, 160, 84, -7.8f }
|
|
#define FMOD_PRESET_ROOM { 400, 2, 3, 5000, 83, 100, 100, 250, 0, 6050, 88, -9.4f }
|
|
#define FMOD_PRESET_BATHROOM { 1500, 7, 11, 5000, 54, 100, 60, 250, 0, 2900, 83, 0.5f }
|
|
#define FMOD_PRESET_LIVINGROOM { 500, 3, 4, 5000, 10, 100, 100, 250, 0, 160, 58, -19.0f }
|
|
#define FMOD_PRESET_STONEROOM { 2300, 12, 17, 5000, 64, 100, 100, 250, 0, 7800, 71, -8.5f }
|
|
#define FMOD_PRESET_AUDITORIUM { 4300, 20, 30, 5000, 59, 100, 100, 250, 0, 5850, 64, -11.7f }
|
|
#define FMOD_PRESET_CONCERTHALL { 3900, 20, 29, 5000, 70, 100, 100, 250, 0, 5650, 80, -9.8f }
|
|
#define FMOD_PRESET_CAVE { 2900, 15, 22, 5000, 100, 100, 100, 250, 0, 20000, 59, -11.3f }
|
|
#define FMOD_PRESET_ARENA { 7200, 20, 30, 5000, 33, 100, 100, 250, 0, 4500, 80, -9.6f }
|
|
#define FMOD_PRESET_HANGAR { 10000, 20, 30, 5000, 23, 100, 100, 250, 0, 3400, 72, -7.4f }
|
|
#define FMOD_PRESET_CARPETTEDHALLWAY { 300, 2, 30, 5000, 10, 100, 100, 250, 0, 500, 56, -24.0f }
|
|
#define FMOD_PRESET_HALLWAY { 1500, 7, 11, 5000, 59, 100, 100, 250, 0, 7800, 87, -5.5f }
|
|
#define FMOD_PRESET_STONECORRIDOR { 270, 13, 20, 5000, 79, 100, 100, 250, 0, 9000, 86, -6.0f }
|
|
#define FMOD_PRESET_ALLEY { 1500, 7, 11, 5000, 86, 100, 100, 250, 0, 8300, 80, -9.8f }
|
|
#define FMOD_PRESET_FOREST { 1500, 162, 88, 5000, 54, 79, 100, 250, 0, 760, 94, -12.3f }
|
|
#define FMOD_PRESET_CITY { 1500, 7, 11, 5000, 67, 50, 100, 250, 0, 4050, 66, -26.0f }
|
|
#define FMOD_PRESET_MOUNTAINS { 1500, 300, 100, 5000, 21, 27, 100, 250, 0, 1220, 82, -24.0f }
|
|
#define FMOD_PRESET_QUARRY { 1500, 61, 25, 5000, 83, 100, 100, 250, 0, 3400, 100, -5.0f }
|
|
#define FMOD_PRESET_PLAIN { 1500, 179, 100, 5000, 50, 21, 100, 250, 0, 1670, 65, -28.0f }
|
|
#define FMOD_PRESET_PARKINGLOT { 1700, 8, 12, 5000, 100, 100, 100, 250, 0, 20000, 56, -19.5f }
|
|
#define FMOD_PRESET_SEWERPIPE { 2800, 14, 21, 5000, 14, 80, 60, 250, 0, 3400, 66, 1.2f }
|
|
#define FMOD_PRESET_UNDERWATER { 1500, 7, 11, 5000, 10, 100, 100, 250, 0, 500, 92, 7.0f }
|
|
|
|
#define FMOD_MAX_CHANNEL_WIDTH 32
|
|
#define FMOD_MAX_SYSTEMS 8
|
|
#define FMOD_MAX_LISTENERS 8
|
|
#define FMOD_REVERB_MAXINSTANCES 4
|
|
#define FMOD_PORT_INDEX_NONE 0xFFFFFFFFFFFFFFFF
|
|
|
|
typedef enum FMOD_RESULT
|
|
{
|
|
FMOD_OK,
|
|
FMOD_ERR_BADCOMMAND,
|
|
FMOD_ERR_CHANNEL_ALLOC,
|
|
FMOD_ERR_CHANNEL_STOLEN,
|
|
FMOD_ERR_DMA,
|
|
FMOD_ERR_DSP_CONNECTION,
|
|
FMOD_ERR_DSP_DONTPROCESS,
|
|
FMOD_ERR_DSP_FORMAT,
|
|
FMOD_ERR_DSP_INUSE,
|
|
FMOD_ERR_DSP_NOTFOUND,
|
|
FMOD_ERR_DSP_RESERVED,
|
|
FMOD_ERR_DSP_SILENCE,
|
|
FMOD_ERR_DSP_TYPE,
|
|
FMOD_ERR_FILE_BAD,
|
|
FMOD_ERR_FILE_COULDNOTSEEK,
|
|
FMOD_ERR_FILE_DISKEJECTED,
|
|
FMOD_ERR_FILE_EOF,
|
|
FMOD_ERR_FILE_ENDOFDATA,
|
|
FMOD_ERR_FILE_NOTFOUND,
|
|
FMOD_ERR_FORMAT,
|
|
FMOD_ERR_HEADER_MISMATCH,
|
|
FMOD_ERR_HTTP,
|
|
FMOD_ERR_HTTP_ACCESS,
|
|
FMOD_ERR_HTTP_PROXY_AUTH,
|
|
FMOD_ERR_HTTP_SERVER_ERROR,
|
|
FMOD_ERR_HTTP_TIMEOUT,
|
|
FMOD_ERR_INITIALIZATION,
|
|
FMOD_ERR_INITIALIZED,
|
|
FMOD_ERR_INTERNAL,
|
|
FMOD_ERR_INVALID_FLOAT,
|
|
FMOD_ERR_INVALID_HANDLE,
|
|
FMOD_ERR_INVALID_PARAM,
|
|
FMOD_ERR_INVALID_POSITION,
|
|
FMOD_ERR_INVALID_SPEAKER,
|
|
FMOD_ERR_INVALID_SYNCPOINT,
|
|
FMOD_ERR_INVALID_THREAD,
|
|
FMOD_ERR_INVALID_VECTOR,
|
|
FMOD_ERR_MAXAUDIBLE,
|
|
FMOD_ERR_MEMORY,
|
|
FMOD_ERR_MEMORY_CANTPOINT,
|
|
FMOD_ERR_NEEDS3D,
|
|
FMOD_ERR_NEEDSHARDWARE,
|
|
FMOD_ERR_NET_CONNECT,
|
|
FMOD_ERR_NET_SOCKET_ERROR,
|
|
FMOD_ERR_NET_URL,
|
|
FMOD_ERR_NET_WOULD_BLOCK,
|
|
FMOD_ERR_NOTREADY,
|
|
FMOD_ERR_OUTPUT_ALLOCATED,
|
|
FMOD_ERR_OUTPUT_CREATEBUFFER,
|
|
FMOD_ERR_OUTPUT_DRIVERCALL,
|
|
FMOD_ERR_OUTPUT_FORMAT,
|
|
FMOD_ERR_OUTPUT_INIT,
|
|
FMOD_ERR_OUTPUT_NODRIVERS,
|
|
FMOD_ERR_PLUGIN,
|
|
FMOD_ERR_PLUGIN_MISSING,
|
|
FMOD_ERR_PLUGIN_RESOURCE,
|
|
FMOD_ERR_PLUGIN_VERSION,
|
|
FMOD_ERR_RECORD,
|
|
FMOD_ERR_REVERB_CHANNELGROUP,
|
|
FMOD_ERR_REVERB_INSTANCE,
|
|
FMOD_ERR_SUBSOUNDS,
|
|
FMOD_ERR_SUBSOUND_ALLOCATED,
|
|
FMOD_ERR_SUBSOUND_CANTMOVE,
|
|
FMOD_ERR_TAGNOTFOUND,
|
|
FMOD_ERR_TOOMANYCHANNELS,
|
|
FMOD_ERR_TRUNCATED,
|
|
FMOD_ERR_UNIMPLEMENTED,
|
|
FMOD_ERR_UNINITIALIZED,
|
|
FMOD_ERR_UNSUPPORTED,
|
|
FMOD_ERR_VERSION,
|
|
FMOD_ERR_EVENT_ALREADY_LOADED,
|
|
FMOD_ERR_EVENT_LIVEUPDATE_BUSY,
|
|
FMOD_ERR_EVENT_LIVEUPDATE_MISMATCH,
|
|
FMOD_ERR_EVENT_LIVEUPDATE_TIMEOUT,
|
|
FMOD_ERR_EVENT_NOTFOUND,
|
|
FMOD_ERR_STUDIO_UNINITIALIZED,
|
|
FMOD_ERR_STUDIO_NOT_LOADED,
|
|
FMOD_ERR_INVALID_STRING,
|
|
FMOD_ERR_ALREADY_LOCKED,
|
|
FMOD_ERR_NOT_LOCKED,
|
|
FMOD_ERR_RECORD_DISCONNECTED,
|
|
FMOD_ERR_TOOMANYSAMPLES,
|
|
|
|
FMOD_RESULT_FORCEINT = 65536
|
|
} FMOD_RESULT;
|
|
|
|
typedef enum FMOD_CHANNELCONTROL_TYPE
|
|
{
|
|
FMOD_CHANNELCONTROL_CHANNEL,
|
|
FMOD_CHANNELCONTROL_CHANNELGROUP,
|
|
|
|
FMOD_CHANNELCONTROL_MAX,
|
|
FMOD_CHANNELCONTROL_FORCEINT = 65536
|
|
} FMOD_CHANNELCONTROL_TYPE;
|
|
|
|
typedef enum FMOD_OUTPUTTYPE
|
|
{
|
|
FMOD_OUTPUTTYPE_AUTODETECT,
|
|
FMOD_OUTPUTTYPE_UNKNOWN,
|
|
FMOD_OUTPUTTYPE_NOSOUND,
|
|
FMOD_OUTPUTTYPE_WAVWRITER,
|
|
FMOD_OUTPUTTYPE_NOSOUND_NRT,
|
|
FMOD_OUTPUTTYPE_WAVWRITER_NRT,
|
|
FMOD_OUTPUTTYPE_WASAPI,
|
|
FMOD_OUTPUTTYPE_ASIO,
|
|
FMOD_OUTPUTTYPE_PULSEAUDIO,
|
|
FMOD_OUTPUTTYPE_ALSA,
|
|
FMOD_OUTPUTTYPE_COREAUDIO,
|
|
FMOD_OUTPUTTYPE_AUDIOTRACK,
|
|
FMOD_OUTPUTTYPE_OPENSL,
|
|
FMOD_OUTPUTTYPE_AUDIOOUT,
|
|
FMOD_OUTPUTTYPE_AUDIO3D,
|
|
FMOD_OUTPUTTYPE_WEBAUDIO,
|
|
FMOD_OUTPUTTYPE_NNAUDIO,
|
|
FMOD_OUTPUTTYPE_WINSONIC,
|
|
FMOD_OUTPUTTYPE_AAUDIO,
|
|
|
|
FMOD_OUTPUTTYPE_MAX,
|
|
FMOD_OUTPUTTYPE_FORCEINT = 65536
|
|
} FMOD_OUTPUTTYPE;
|
|
|
|
typedef enum FMOD_DEBUG_MODE
|
|
{
|
|
FMOD_DEBUG_MODE_TTY,
|
|
FMOD_DEBUG_MODE_FILE,
|
|
FMOD_DEBUG_MODE_CALLBACK,
|
|
|
|
FMOD_DEBUG_MODE_FORCEINT = 65536
|
|
} FMOD_DEBUG_MODE;
|
|
|
|
typedef enum FMOD_SPEAKERMODE
|
|
{
|
|
FMOD_SPEAKERMODE_DEFAULT,
|
|
FMOD_SPEAKERMODE_RAW,
|
|
FMOD_SPEAKERMODE_MONO,
|
|
FMOD_SPEAKERMODE_STEREO,
|
|
FMOD_SPEAKERMODE_QUAD,
|
|
FMOD_SPEAKERMODE_SURROUND,
|
|
FMOD_SPEAKERMODE_5POINT1,
|
|
FMOD_SPEAKERMODE_7POINT1,
|
|
FMOD_SPEAKERMODE_7POINT1POINT4,
|
|
|
|
FMOD_SPEAKERMODE_MAX,
|
|
FMOD_SPEAKERMODE_FORCEINT = 65536
|
|
} FMOD_SPEAKERMODE;
|
|
|
|
typedef enum FMOD_SPEAKER
|
|
{
|
|
FMOD_SPEAKER_NONE = -1,
|
|
FMOD_SPEAKER_FRONT_LEFT = 0,
|
|
FMOD_SPEAKER_FRONT_RIGHT,
|
|
FMOD_SPEAKER_FRONT_CENTER,
|
|
FMOD_SPEAKER_LOW_FREQUENCY,
|
|
FMOD_SPEAKER_SURROUND_LEFT,
|
|
FMOD_SPEAKER_SURROUND_RIGHT,
|
|
FMOD_SPEAKER_BACK_LEFT,
|
|
FMOD_SPEAKER_BACK_RIGHT,
|
|
FMOD_SPEAKER_TOP_FRONT_LEFT,
|
|
FMOD_SPEAKER_TOP_FRONT_RIGHT,
|
|
FMOD_SPEAKER_TOP_BACK_LEFT,
|
|
FMOD_SPEAKER_TOP_BACK_RIGHT,
|
|
|
|
FMOD_SPEAKER_MAX,
|
|
FMOD_SPEAKER_FORCEINT = 65536
|
|
} FMOD_SPEAKER;
|
|
|
|
typedef enum FMOD_CHANNELORDER
|
|
{
|
|
FMOD_CHANNELORDER_DEFAULT,
|
|
FMOD_CHANNELORDER_WAVEFORMAT,
|
|
FMOD_CHANNELORDER_PROTOOLS,
|
|
FMOD_CHANNELORDER_ALLMONO,
|
|
FMOD_CHANNELORDER_ALLSTEREO,
|
|
FMOD_CHANNELORDER_ALSA,
|
|
|
|
FMOD_CHANNELORDER_MAX,
|
|
FMOD_CHANNELORDER_FORCEINT = 65536
|
|
} FMOD_CHANNELORDER;
|
|
|
|
typedef enum FMOD_PLUGINTYPE
|
|
{
|
|
FMOD_PLUGINTYPE_OUTPUT,
|
|
FMOD_PLUGINTYPE_CODEC,
|
|
FMOD_PLUGINTYPE_DSP,
|
|
|
|
FMOD_PLUGINTYPE_MAX,
|
|
FMOD_PLUGINTYPE_FORCEINT = 65536
|
|
} FMOD_PLUGINTYPE;
|
|
|
|
typedef enum FMOD_SOUND_TYPE
|
|
{
|
|
FMOD_SOUND_TYPE_UNKNOWN,
|
|
FMOD_SOUND_TYPE_AIFF,
|
|
FMOD_SOUND_TYPE_ASF,
|
|
FMOD_SOUND_TYPE_DLS,
|
|
FMOD_SOUND_TYPE_FLAC,
|
|
FMOD_SOUND_TYPE_FSB,
|
|
FMOD_SOUND_TYPE_IT,
|
|
FMOD_SOUND_TYPE_MIDI,
|
|
FMOD_SOUND_TYPE_MOD,
|
|
FMOD_SOUND_TYPE_MPEG,
|
|
FMOD_SOUND_TYPE_OGGVORBIS,
|
|
FMOD_SOUND_TYPE_PLAYLIST,
|
|
FMOD_SOUND_TYPE_RAW,
|
|
FMOD_SOUND_TYPE_S3M,
|
|
FMOD_SOUND_TYPE_USER,
|
|
FMOD_SOUND_TYPE_WAV,
|
|
FMOD_SOUND_TYPE_XM,
|
|
FMOD_SOUND_TYPE_XMA,
|
|
FMOD_SOUND_TYPE_AUDIOQUEUE,
|
|
FMOD_SOUND_TYPE_AT9,
|
|
FMOD_SOUND_TYPE_VORBIS,
|
|
FMOD_SOUND_TYPE_MEDIA_FOUNDATION,
|
|
FMOD_SOUND_TYPE_MEDIACODEC,
|
|
FMOD_SOUND_TYPE_FADPCM,
|
|
FMOD_SOUND_TYPE_OPUS,
|
|
|
|
FMOD_SOUND_TYPE_MAX,
|
|
FMOD_SOUND_TYPE_FORCEINT = 65536
|
|
} FMOD_SOUND_TYPE;
|
|
|
|
typedef enum FMOD_SOUND_FORMAT
|
|
{
|
|
FMOD_SOUND_FORMAT_NONE,
|
|
FMOD_SOUND_FORMAT_PCM8,
|
|
FMOD_SOUND_FORMAT_PCM16,
|
|
FMOD_SOUND_FORMAT_PCM24,
|
|
FMOD_SOUND_FORMAT_PCM32,
|
|
FMOD_SOUND_FORMAT_PCMFLOAT,
|
|
FMOD_SOUND_FORMAT_BITSTREAM,
|
|
|
|
FMOD_SOUND_FORMAT_MAX,
|
|
FMOD_SOUND_FORMAT_FORCEINT = 65536
|
|
} FMOD_SOUND_FORMAT;
|
|
|
|
typedef enum FMOD_OPENSTATE
|
|
{
|
|
FMOD_OPENSTATE_READY,
|
|
FMOD_OPENSTATE_LOADING,
|
|
FMOD_OPENSTATE_ERROR,
|
|
FMOD_OPENSTATE_CONNECTING,
|
|
FMOD_OPENSTATE_BUFFERING,
|
|
FMOD_OPENSTATE_SEEKING,
|
|
FMOD_OPENSTATE_PLAYING,
|
|
FMOD_OPENSTATE_SETPOSITION,
|
|
|
|
FMOD_OPENSTATE_MAX,
|
|
FMOD_OPENSTATE_FORCEINT = 65536
|
|
} FMOD_OPENSTATE;
|
|
|
|
typedef enum FMOD_SOUNDGROUP_BEHAVIOR
|
|
{
|
|
FMOD_SOUNDGROUP_BEHAVIOR_FAIL,
|
|
FMOD_SOUNDGROUP_BEHAVIOR_MUTE,
|
|
FMOD_SOUNDGROUP_BEHAVIOR_STEALLOWEST,
|
|
|
|
FMOD_SOUNDGROUP_BEHAVIOR_MAX,
|
|
FMOD_SOUNDGROUP_BEHAVIOR_FORCEINT = 65536
|
|
} FMOD_SOUNDGROUP_BEHAVIOR;
|
|
|
|
typedef enum FMOD_CHANNELCONTROL_CALLBACK_TYPE
|
|
{
|
|
FMOD_CHANNELCONTROL_CALLBACK_END,
|
|
FMOD_CHANNELCONTROL_CALLBACK_VIRTUALVOICE,
|
|
FMOD_CHANNELCONTROL_CALLBACK_SYNCPOINT,
|
|
FMOD_CHANNELCONTROL_CALLBACK_OCCLUSION,
|
|
|
|
FMOD_CHANNELCONTROL_CALLBACK_MAX,
|
|
FMOD_CHANNELCONTROL_CALLBACK_FORCEINT = 65536
|
|
} FMOD_CHANNELCONTROL_CALLBACK_TYPE;
|
|
|
|
typedef enum FMOD_CHANNELCONTROL_DSP_INDEX
|
|
{
|
|
FMOD_CHANNELCONTROL_DSP_HEAD = -1,
|
|
FMOD_CHANNELCONTROL_DSP_FADER = -2,
|
|
FMOD_CHANNELCONTROL_DSP_TAIL = -3,
|
|
|
|
FMOD_CHANNELCONTROL_DSP_FORCEINT = 65536
|
|
} FMOD_CHANNELCONTROL_DSP_INDEX;
|
|
|
|
typedef enum FMOD_ERRORCALLBACK_INSTANCETYPE
|
|
{
|
|
FMOD_ERRORCALLBACK_INSTANCETYPE_NONE,
|
|
FMOD_ERRORCALLBACK_INSTANCETYPE_SYSTEM,
|
|
FMOD_ERRORCALLBACK_INSTANCETYPE_CHANNEL,
|
|
FMOD_ERRORCALLBACK_INSTANCETYPE_CHANNELGROUP,
|
|
FMOD_ERRORCALLBACK_INSTANCETYPE_CHANNELCONTROL,
|
|
FMOD_ERRORCALLBACK_INSTANCETYPE_SOUND,
|
|
FMOD_ERRORCALLBACK_INSTANCETYPE_SOUNDGROUP,
|
|
FMOD_ERRORCALLBACK_INSTANCETYPE_DSP,
|
|
FMOD_ERRORCALLBACK_INSTANCETYPE_DSPCONNECTION,
|
|
FMOD_ERRORCALLBACK_INSTANCETYPE_GEOMETRY,
|
|
FMOD_ERRORCALLBACK_INSTANCETYPE_REVERB3D,
|
|
FMOD_ERRORCALLBACK_INSTANCETYPE_STUDIO_SYSTEM,
|
|
FMOD_ERRORCALLBACK_INSTANCETYPE_STUDIO_EVENTDESCRIPTION,
|
|
FMOD_ERRORCALLBACK_INSTANCETYPE_STUDIO_EVENTINSTANCE,
|
|
FMOD_ERRORCALLBACK_INSTANCETYPE_STUDIO_PARAMETERINSTANCE,
|
|
FMOD_ERRORCALLBACK_INSTANCETYPE_STUDIO_BUS,
|
|
FMOD_ERRORCALLBACK_INSTANCETYPE_STUDIO_VCA,
|
|
FMOD_ERRORCALLBACK_INSTANCETYPE_STUDIO_BANK,
|
|
FMOD_ERRORCALLBACK_INSTANCETYPE_STUDIO_COMMANDREPLAY,
|
|
|
|
FMOD_ERRORCALLBACK_INSTANCETYPE_FORCEINT = 65536
|
|
} FMOD_ERRORCALLBACK_INSTANCETYPE;
|
|
|
|
typedef enum FMOD_DSP_RESAMPLER
|
|
{
|
|
FMOD_DSP_RESAMPLER_DEFAULT,
|
|
FMOD_DSP_RESAMPLER_NOINTERP,
|
|
FMOD_DSP_RESAMPLER_LINEAR,
|
|
FMOD_DSP_RESAMPLER_CUBIC,
|
|
FMOD_DSP_RESAMPLER_SPLINE,
|
|
|
|
FMOD_DSP_RESAMPLER_MAX,
|
|
FMOD_DSP_RESAMPLER_FORCEINT = 65536
|
|
} FMOD_DSP_RESAMPLER;
|
|
|
|
typedef enum FMOD_DSPCONNECTION_TYPE
|
|
{
|
|
FMOD_DSPCONNECTION_TYPE_STANDARD,
|
|
FMOD_DSPCONNECTION_TYPE_SIDECHAIN,
|
|
FMOD_DSPCONNECTION_TYPE_SEND,
|
|
FMOD_DSPCONNECTION_TYPE_SEND_SIDECHAIN,
|
|
|
|
FMOD_DSPCONNECTION_TYPE_MAX,
|
|
FMOD_DSPCONNECTION_TYPE_FORCEINT = 65536
|
|
} FMOD_DSPCONNECTION_TYPE;
|
|
|
|
typedef enum FMOD_TAGTYPE
|
|
{
|
|
FMOD_TAGTYPE_UNKNOWN,
|
|
FMOD_TAGTYPE_ID3V1,
|
|
FMOD_TAGTYPE_ID3V2,
|
|
FMOD_TAGTYPE_VORBISCOMMENT,
|
|
FMOD_TAGTYPE_SHOUTCAST,
|
|
FMOD_TAGTYPE_ICECAST,
|
|
FMOD_TAGTYPE_ASF,
|
|
FMOD_TAGTYPE_MIDI,
|
|
FMOD_TAGTYPE_PLAYLIST,
|
|
FMOD_TAGTYPE_FMOD,
|
|
FMOD_TAGTYPE_USER,
|
|
|
|
FMOD_TAGTYPE_MAX,
|
|
FMOD_TAGTYPE_FORCEINT = 65536
|
|
} FMOD_TAGTYPE;
|
|
|
|
typedef enum FMOD_TAGDATATYPE
|
|
{
|
|
FMOD_TAGDATATYPE_BINARY,
|
|
FMOD_TAGDATATYPE_INT,
|
|
FMOD_TAGDATATYPE_FLOAT,
|
|
FMOD_TAGDATATYPE_STRING,
|
|
FMOD_TAGDATATYPE_STRING_UTF16,
|
|
FMOD_TAGDATATYPE_STRING_UTF16BE,
|
|
FMOD_TAGDATATYPE_STRING_UTF8,
|
|
|
|
FMOD_TAGDATATYPE_MAX,
|
|
FMOD_TAGDATATYPE_FORCEINT = 65536
|
|
} FMOD_TAGDATATYPE;
|
|
|
|
/*
|
|
FMOD callbacks
|
|
*/
|
|
typedef FMOD_RESULT (F_CALL *FMOD_DEBUG_CALLBACK) (FMOD_DEBUG_FLAGS flags, const char *file, int line, const char* func, const char* message);
|
|
typedef FMOD_RESULT (F_CALL *FMOD_SYSTEM_CALLBACK) (FMOD_SYSTEM *system, FMOD_SYSTEM_CALLBACK_TYPE type, void *commanddata1, void* commanddata2, void *userdata);
|
|
typedef FMOD_RESULT (F_CALL *FMOD_CHANNELCONTROL_CALLBACK) (FMOD_CHANNELCONTROL *channelcontrol, FMOD_CHANNELCONTROL_TYPE controltype, FMOD_CHANNELCONTROL_CALLBACK_TYPE callbacktype, void *commanddata1, void *commanddata2);
|
|
typedef FMOD_RESULT (F_CALL *FMOD_SOUND_NONBLOCK_CALLBACK) (FMOD_SOUND *sound, FMOD_RESULT result);
|
|
typedef FMOD_RESULT (F_CALL *FMOD_SOUND_PCMREAD_CALLBACK) (FMOD_SOUND *sound, void *data, unsigned int datalen);
|
|
typedef FMOD_RESULT (F_CALL *FMOD_SOUND_PCMSETPOS_CALLBACK) (FMOD_SOUND *sound, int subsound, unsigned int position, FMOD_TIMEUNIT postype);
|
|
typedef FMOD_RESULT (F_CALL *FMOD_FILE_OPEN_CALLBACK) (const char *name, unsigned int *filesize, void **handle, void *userdata);
|
|
typedef FMOD_RESULT (F_CALL *FMOD_FILE_CLOSE_CALLBACK) (void *handle, void *userdata);
|
|
typedef FMOD_RESULT (F_CALL *FMOD_FILE_READ_CALLBACK) (void *handle, void *buffer, unsigned int sizebytes, unsigned int *bytesread, void *userdata);
|
|
typedef FMOD_RESULT (F_CALL *FMOD_FILE_SEEK_CALLBACK) (void *handle, unsigned int pos, void *userdata);
|
|
typedef FMOD_RESULT (F_CALL *FMOD_FILE_ASYNCREAD_CALLBACK) (FMOD_ASYNCREADINFO *info, void *userdata);
|
|
typedef FMOD_RESULT (F_CALL *FMOD_FILE_ASYNCCANCEL_CALLBACK)(FMOD_ASYNCREADINFO *info, void *userdata);
|
|
typedef void (F_CALL *FMOD_FILE_ASYNCDONE_FUNC) (FMOD_ASYNCREADINFO *info, FMOD_RESULT result);
|
|
typedef void* (F_CALL *FMOD_MEMORY_ALLOC_CALLBACK) (unsigned int size, FMOD_MEMORY_TYPE type, const char *sourcestr);
|
|
typedef void* (F_CALL *FMOD_MEMORY_REALLOC_CALLBACK) (void *ptr, unsigned int size, FMOD_MEMORY_TYPE type, const char *sourcestr);
|
|
typedef void (F_CALL *FMOD_MEMORY_FREE_CALLBACK) (void *ptr, FMOD_MEMORY_TYPE type, const char *sourcestr);
|
|
typedef float (F_CALL *FMOD_3D_ROLLOFF_CALLBACK) (FMOD_CHANNELCONTROL *channelcontrol, float distance);
|
|
|
|
/*
|
|
FMOD structs
|
|
*/
|
|
struct FMOD_ASYNCREADINFO
|
|
{
|
|
void *handle;
|
|
unsigned int offset;
|
|
unsigned int sizebytes;
|
|
int priority;
|
|
void *userdata;
|
|
void *buffer;
|
|
unsigned int bytesread;
|
|
FMOD_FILE_ASYNCDONE_FUNC done;
|
|
};
|
|
|
|
typedef struct FMOD_VECTOR
|
|
{
|
|
float x;
|
|
float y;
|
|
float z;
|
|
} FMOD_VECTOR;
|
|
|
|
typedef struct FMOD_3D_ATTRIBUTES
|
|
{
|
|
FMOD_VECTOR position;
|
|
FMOD_VECTOR velocity;
|
|
FMOD_VECTOR forward;
|
|
FMOD_VECTOR up;
|
|
} FMOD_3D_ATTRIBUTES;
|
|
|
|
typedef struct FMOD_GUID
|
|
{
|
|
unsigned int Data1;
|
|
unsigned short Data2;
|
|
unsigned short Data3;
|
|
unsigned char Data4[8];
|
|
} FMOD_GUID;
|
|
|
|
typedef struct FMOD_PLUGINLIST
|
|
{
|
|
FMOD_PLUGINTYPE type;
|
|
void *description;
|
|
} FMOD_PLUGINLIST;
|
|
|
|
typedef struct FMOD_ADVANCEDSETTINGS
|
|
{
|
|
int cbSize;
|
|
int maxMPEGCodecs;
|
|
int maxADPCMCodecs;
|
|
int maxXMACodecs;
|
|
int maxVorbisCodecs;
|
|
int maxAT9Codecs;
|
|
int maxFADPCMCodecs;
|
|
int maxPCMCodecs;
|
|
int ASIONumChannels;
|
|
char **ASIOChannelList;
|
|
FMOD_SPEAKER *ASIOSpeakerList;
|
|
float vol0virtualvol;
|
|
unsigned int defaultDecodeBufferSize;
|
|
unsigned short profilePort;
|
|
unsigned int geometryMaxFadeTime;
|
|
float distanceFilterCenterFreq;
|
|
int reverb3Dinstance;
|
|
int DSPBufferPoolSize;
|
|
unsigned int stackSizeStream;
|
|
unsigned int stackSizeNonBlocking;
|
|
unsigned int stackSizeMixer;
|
|
FMOD_DSP_RESAMPLER resamplerMethod;
|
|
unsigned int commandQueueSize;
|
|
unsigned int randomSeed;
|
|
} FMOD_ADVANCEDSETTINGS;
|
|
|
|
typedef struct FMOD_TAG
|
|
{
|
|
FMOD_TAGTYPE type;
|
|
FMOD_TAGDATATYPE datatype;
|
|
char *name;
|
|
void *data;
|
|
unsigned int datalen;
|
|
FMOD_BOOL updated;
|
|
} FMOD_TAG;
|
|
|
|
typedef struct FMOD_CREATESOUNDEXINFO
|
|
{
|
|
int cbsize;
|
|
unsigned int length;
|
|
unsigned int fileoffset;
|
|
int numchannels;
|
|
int defaultfrequency;
|
|
FMOD_SOUND_FORMAT format;
|
|
unsigned int decodebuffersize;
|
|
int initialsubsound;
|
|
int numsubsounds;
|
|
int *inclusionlist;
|
|
int inclusionlistnum;
|
|
FMOD_SOUND_PCMREAD_CALLBACK pcmreadcallback;
|
|
FMOD_SOUND_PCMSETPOS_CALLBACK pcmsetposcallback;
|
|
FMOD_SOUND_NONBLOCK_CALLBACK nonblockcallback;
|
|
const char *dlsname;
|
|
const char *encryptionkey;
|
|
int maxpolyphony;
|
|
void *userdata;
|
|
FMOD_SOUND_TYPE suggestedsoundtype;
|
|
FMOD_FILE_OPEN_CALLBACK fileuseropen;
|
|
FMOD_FILE_CLOSE_CALLBACK fileuserclose;
|
|
FMOD_FILE_READ_CALLBACK fileuserread;
|
|
FMOD_FILE_SEEK_CALLBACK fileuserseek;
|
|
FMOD_FILE_ASYNCREAD_CALLBACK fileuserasyncread;
|
|
FMOD_FILE_ASYNCCANCEL_CALLBACK fileuserasynccancel;
|
|
void *fileuserdata;
|
|
int filebuffersize;
|
|
FMOD_CHANNELORDER channelorder;
|
|
FMOD_SOUNDGROUP *initialsoundgroup;
|
|
unsigned int initialseekposition;
|
|
FMOD_TIMEUNIT initialseekpostype;
|
|
int ignoresetfilesystem;
|
|
unsigned int audioqueuepolicy;
|
|
unsigned int minmidigranularity;
|
|
int nonblockthreadid;
|
|
FMOD_GUID *fsbguid;
|
|
} FMOD_CREATESOUNDEXINFO;
|
|
|
|
typedef struct FMOD_REVERB_PROPERTIES
|
|
{
|
|
float DecayTime;
|
|
float EarlyDelay;
|
|
float LateDelay;
|
|
float HFReference;
|
|
float HFDecayRatio;
|
|
float Diffusion;
|
|
float Density;
|
|
float LowShelfFrequency;
|
|
float LowShelfGain;
|
|
float HighCut;
|
|
float EarlyLateMix;
|
|
float WetLevel;
|
|
} FMOD_REVERB_PROPERTIES;
|
|
|
|
typedef struct FMOD_ERRORCALLBACK_INFO
|
|
{
|
|
FMOD_RESULT result;
|
|
FMOD_ERRORCALLBACK_INSTANCETYPE instancetype;
|
|
void *instance;
|
|
const char *functionname;
|
|
const char *functionparams;
|
|
} FMOD_ERRORCALLBACK_INFO;
|
|
|
|
/*
|
|
FMOD optional headers for plugin development
|
|
*/
|
|
#include "fmod_codec.h"
|
|
#include "fmod_dsp.h"
|
|
#include "fmod_output.h"
|
|
|
|
#endif
|