diff options
Diffstat (limited to 'vendor/fmod/inc/fmod_dsp.h')
| -rw-r--r-- | vendor/fmod/inc/fmod_dsp.h | 421 |
1 files changed, 421 insertions, 0 deletions
| diff --git a/vendor/fmod/inc/fmod_dsp.h b/vendor/fmod/inc/fmod_dsp.h new file mode 100644 index 0000000..3e28a40 --- /dev/null +++ b/vendor/fmod/inc/fmod_dsp.h | |||
| @@ -0,0 +1,421 @@ | |||
| 1 | /* ======================================================================================== */ | ||
| 2 | /* FMOD Core API - DSP header file. */ | ||
| 3 | /* Copyright (c), Firelight Technologies Pty, Ltd. 2004-2021. */ | ||
| 4 | /* */ | ||
| 5 | /* Use this header if you are wanting to develop your own DSP plugin to use with FMODs */ | ||
| 6 | /* dsp system. With this header you can make your own DSP plugin that FMOD can */ | ||
| 7 | /* register and use. See the documentation and examples on how to make a working plugin. */ | ||
| 8 | /* */ | ||
| 9 | /* For more detail visit: */ | ||
| 10 | /* https://fmod.com/resources/documentation-api?version=2.0&page=plugin-api-dsp.html */ | ||
| 11 | /* =========================================================================================*/ | ||
| 12 | #ifndef _FMOD_DSP_H | ||
| 13 | #define _FMOD_DSP_H | ||
| 14 | |||
| 15 | #include "fmod_dsp_effects.h" | ||
| 16 | |||
| 17 | typedef struct FMOD_DSP_STATE FMOD_DSP_STATE; | ||
| 18 | typedef struct FMOD_DSP_BUFFER_ARRAY FMOD_DSP_BUFFER_ARRAY; | ||
| 19 | typedef struct FMOD_COMPLEX FMOD_COMPLEX; | ||
| 20 | |||
| 21 | /* | ||
| 22 | DSP Constants | ||
| 23 | */ | ||
| 24 | #define FMOD_PLUGIN_SDK_VERSION 110 | ||
| 25 | #define FMOD_DSP_GETPARAM_VALUESTR_LENGTH 32 | ||
| 26 | |||
| 27 | typedef enum | ||
| 28 | { | ||
| 29 | FMOD_DSP_PROCESS_PERFORM, | ||
| 30 | FMOD_DSP_PROCESS_QUERY | ||
| 31 | } FMOD_DSP_PROCESS_OPERATION; | ||
| 32 | |||
| 33 | typedef enum FMOD_DSP_PAN_SURROUND_FLAGS | ||
| 34 | { | ||
| 35 | FMOD_DSP_PAN_SURROUND_DEFAULT = 0, | ||
| 36 | FMOD_DSP_PAN_SURROUND_ROTATION_NOT_BIASED = 1, | ||
| 37 | |||
| 38 | FMOD_DSP_PAN_SURROUND_FLAGS_FORCEINT = 65536 | ||
| 39 | } FMOD_DSP_PAN_SURROUND_FLAGS; | ||
| 40 | |||
| 41 | typedef enum | ||
| 42 | { | ||
| 43 | FMOD_DSP_PARAMETER_TYPE_FLOAT, | ||
| 44 | FMOD_DSP_PARAMETER_TYPE_INT, | ||
| 45 | FMOD_DSP_PARAMETER_TYPE_BOOL, | ||
| 46 | FMOD_DSP_PARAMETER_TYPE_DATA, | ||
| 47 | |||
| 48 | FMOD_DSP_PARAMETER_TYPE_MAX, | ||
| 49 | FMOD_DSP_PARAMETER_TYPE_FORCEINT = 65536 | ||
| 50 | } FMOD_DSP_PARAMETER_TYPE; | ||
| 51 | |||
| 52 | typedef enum | ||
| 53 | { | ||
| 54 | FMOD_DSP_PARAMETER_FLOAT_MAPPING_TYPE_LINEAR, | ||
| 55 | FMOD_DSP_PARAMETER_FLOAT_MAPPING_TYPE_AUTO, | ||
| 56 | FMOD_DSP_PARAMETER_FLOAT_MAPPING_TYPE_PIECEWISE_LINEAR, | ||
| 57 | |||
| 58 | FMOD_DSP_PARAMETER_FLOAT_MAPPING_TYPE_FORCEINT = 65536 | ||
| 59 | } FMOD_DSP_PARAMETER_FLOAT_MAPPING_TYPE; | ||
| 60 | |||
| 61 | typedef enum | ||
| 62 | { | ||
| 63 | FMOD_DSP_PARAMETER_DATA_TYPE_USER = 0, | ||
| 64 | FMOD_DSP_PARAMETER_DATA_TYPE_OVERALLGAIN = -1, | ||
| 65 | FMOD_DSP_PARAMETER_DATA_TYPE_3DATTRIBUTES = -2, | ||
| 66 | FMOD_DSP_PARAMETER_DATA_TYPE_SIDECHAIN = -3, | ||
| 67 | FMOD_DSP_PARAMETER_DATA_TYPE_FFT = -4, | ||
| 68 | FMOD_DSP_PARAMETER_DATA_TYPE_3DATTRIBUTES_MULTI = -5, | ||
| 69 | FMOD_DSP_PARAMETER_DATA_TYPE_ATTENUATION_RANGE = -6, | ||
| 70 | } FMOD_DSP_PARAMETER_DATA_TYPE; | ||
| 71 | |||
| 72 | /* | ||
| 73 | DSP Callbacks | ||
| 74 | */ | ||
| 75 | typedef FMOD_RESULT (F_CALL *FMOD_DSP_CREATE_CALLBACK) (FMOD_DSP_STATE *dsp_state); | ||
| 76 | typedef FMOD_RESULT (F_CALL *FMOD_DSP_RELEASE_CALLBACK) (FMOD_DSP_STATE *dsp_state); | ||
| 77 | typedef FMOD_RESULT (F_CALL *FMOD_DSP_RESET_CALLBACK) (FMOD_DSP_STATE *dsp_state); | ||
| 78 | typedef FMOD_RESULT (F_CALL *FMOD_DSP_READ_CALLBACK) (FMOD_DSP_STATE *dsp_state, float *inbuffer, float *outbuffer, unsigned int length, int inchannels, int *outchannels); | ||
| 79 | typedef FMOD_RESULT (F_CALL *FMOD_DSP_PROCESS_CALLBACK) (FMOD_DSP_STATE *dsp_state, unsigned int length, const FMOD_DSP_BUFFER_ARRAY *inbufferarray, FMOD_DSP_BUFFER_ARRAY *outbufferarray, FMOD_BOOL inputsidle, FMOD_DSP_PROCESS_OPERATION op); | ||
| 80 | typedef FMOD_RESULT (F_CALL *FMOD_DSP_SETPOSITION_CALLBACK) (FMOD_DSP_STATE *dsp_state, unsigned int pos); | ||
| 81 | typedef FMOD_RESULT (F_CALL *FMOD_DSP_SHOULDIPROCESS_CALLBACK) (FMOD_DSP_STATE *dsp_state, FMOD_BOOL inputsidle, unsigned int length, FMOD_CHANNELMASK inmask, int inchannels, FMOD_SPEAKERMODE speakermode); | ||
| 82 | typedef FMOD_RESULT (F_CALL *FMOD_DSP_SETPARAM_FLOAT_CALLBACK) (FMOD_DSP_STATE *dsp_state, int index, float value); | ||
| 83 | typedef FMOD_RESULT (F_CALL *FMOD_DSP_SETPARAM_INT_CALLBACK) (FMOD_DSP_STATE *dsp_state, int index, int value); | ||
| 84 | typedef FMOD_RESULT (F_CALL *FMOD_DSP_SETPARAM_BOOL_CALLBACK) (FMOD_DSP_STATE *dsp_state, int index, FMOD_BOOL value); | ||
| 85 | typedef FMOD_RESULT (F_CALL *FMOD_DSP_SETPARAM_DATA_CALLBACK) (FMOD_DSP_STATE *dsp_state, int index, void *data, unsigned int length); | ||
| 86 | typedef FMOD_RESULT (F_CALL *FMOD_DSP_GETPARAM_FLOAT_CALLBACK) (FMOD_DSP_STATE *dsp_state, int index, float *value, char *valuestr); | ||
| 87 | typedef FMOD_RESULT (F_CALL *FMOD_DSP_GETPARAM_INT_CALLBACK) (FMOD_DSP_STATE *dsp_state, int index, int *value, char *valuestr); | ||
| 88 | typedef FMOD_RESULT (F_CALL *FMOD_DSP_GETPARAM_BOOL_CALLBACK) (FMOD_DSP_STATE *dsp_state, int index, FMOD_BOOL *value, char *valuestr); | ||
| 89 | typedef FMOD_RESULT (F_CALL *FMOD_DSP_GETPARAM_DATA_CALLBACK) (FMOD_DSP_STATE *dsp_state, int index, void **data, unsigned int *length, char *valuestr); | ||
| 90 | typedef FMOD_RESULT (F_CALL *FMOD_DSP_SYSTEM_REGISTER_CALLBACK) (FMOD_DSP_STATE *dsp_state); | ||
| 91 | typedef FMOD_RESULT (F_CALL *FMOD_DSP_SYSTEM_DEREGISTER_CALLBACK) (FMOD_DSP_STATE *dsp_state); | ||
| 92 | typedef FMOD_RESULT (F_CALL *FMOD_DSP_SYSTEM_MIX_CALLBACK) (FMOD_DSP_STATE *dsp_state, int stage); | ||
| 93 | |||
| 94 | /* | ||
| 95 | DSP Functions | ||
| 96 | */ | ||
| 97 | typedef void * (F_CALL *FMOD_DSP_ALLOC_FUNC) (unsigned int size, FMOD_MEMORY_TYPE type, const char *sourcestr); | ||
| 98 | typedef void * (F_CALL *FMOD_DSP_REALLOC_FUNC) (void *ptr, unsigned int size, FMOD_MEMORY_TYPE type, const char *sourcestr); | ||
| 99 | typedef void (F_CALL *FMOD_DSP_FREE_FUNC) (void *ptr, FMOD_MEMORY_TYPE type, const char *sourcestr); | ||
| 100 | typedef void (F_CALL *FMOD_DSP_LOG_FUNC) (FMOD_DEBUG_FLAGS level, const char *file, int line, const char *function, const char *string, ...); | ||
| 101 | typedef FMOD_RESULT (F_CALL *FMOD_DSP_GETSAMPLERATE_FUNC) (FMOD_DSP_STATE *dsp_state, int *rate); | ||
| 102 | typedef FMOD_RESULT (F_CALL *FMOD_DSP_GETBLOCKSIZE_FUNC) (FMOD_DSP_STATE *dsp_state, unsigned int *blocksize); | ||
| 103 | typedef FMOD_RESULT (F_CALL *FMOD_DSP_GETSPEAKERMODE_FUNC) (FMOD_DSP_STATE *dsp_state, FMOD_SPEAKERMODE *speakermode_mixer, FMOD_SPEAKERMODE *speakermode_output); | ||
| 104 | typedef FMOD_RESULT (F_CALL *FMOD_DSP_GETCLOCK_FUNC) (FMOD_DSP_STATE *dsp_state, unsigned long long *clock, unsigned int *offset, unsigned int *length); | ||
| 105 | typedef FMOD_RESULT (F_CALL *FMOD_DSP_GETLISTENERATTRIBUTES_FUNC) (FMOD_DSP_STATE *dsp_state, int *numlisteners, FMOD_3D_ATTRIBUTES *attributes); | ||
| 106 | typedef FMOD_RESULT (F_CALL *FMOD_DSP_GETUSERDATA_FUNC) (FMOD_DSP_STATE *dsp_state, void **userdata); | ||
| 107 | typedef FMOD_RESULT (F_CALL *FMOD_DSP_DFT_FFTREAL_FUNC) (FMOD_DSP_STATE *dsp_state, int size, const float *signal, FMOD_COMPLEX* dft, const float *window, int signalhop); | ||
| 108 | typedef FMOD_RESULT (F_CALL *FMOD_DSP_DFT_IFFTREAL_FUNC) (FMOD_DSP_STATE *dsp_state, int size, const FMOD_COMPLEX *dft, float* signal, const float *window, int signalhop); | ||
| 109 | typedef FMOD_RESULT (F_CALL *FMOD_DSP_PAN_SUMMONOMATRIX_FUNC) (FMOD_DSP_STATE *dsp_state, FMOD_SPEAKERMODE sourceSpeakerMode, float lowFrequencyGain, float overallGain, float *matrix); | ||
| 110 | typedef FMOD_RESULT (F_CALL *FMOD_DSP_PAN_SUMSTEREOMATRIX_FUNC) (FMOD_DSP_STATE *dsp_state, FMOD_SPEAKERMODE sourceSpeakerMode, float pan, float lowFrequencyGain, float overallGain, int matrixHop, float *matrix); | ||
| 111 | typedef FMOD_RESULT (F_CALL *FMOD_DSP_PAN_SUMSURROUNDMATRIX_FUNC) (FMOD_DSP_STATE *dsp_state, FMOD_SPEAKERMODE sourceSpeakerMode, FMOD_SPEAKERMODE targetSpeakerMode, float direction, float extent, float rotation, float lowFrequencyGain, float overallGain, int matrixHop, float *matrix, FMOD_DSP_PAN_SURROUND_FLAGS flags); | ||
| 112 | typedef FMOD_RESULT (F_CALL *FMOD_DSP_PAN_SUMMONOTOSURROUNDMATRIX_FUNC) (FMOD_DSP_STATE *dsp_state, FMOD_SPEAKERMODE targetSpeakerMode, float direction, float extent, float lowFrequencyGain, float overallGain, int matrixHop, float *matrix); | ||
| 113 | typedef FMOD_RESULT (F_CALL *FMOD_DSP_PAN_SUMSTEREOTOSURROUNDMATRIX_FUNC) (FMOD_DSP_STATE *dsp_state, FMOD_SPEAKERMODE targetSpeakerMode, float direction, float extent, float rotation, float lowFrequencyGain, float overallGain, int matrixHop, float *matrix); | ||
| 114 | typedef FMOD_RESULT (F_CALL *FMOD_DSP_PAN_GETROLLOFFGAIN_FUNC) (FMOD_DSP_STATE *dsp_state, FMOD_DSP_PAN_3D_ROLLOFF_TYPE rolloff, float distance, float mindistance, float maxdistance, float *gain); | ||
| 115 | |||
| 116 | /* | ||
| 117 | DSP Structures | ||
| 118 | */ | ||
| 119 | struct FMOD_DSP_BUFFER_ARRAY | ||
| 120 | { | ||
| 121 | int numbuffers; | ||
| 122 | int *buffernumchannels; | ||
| 123 | FMOD_CHANNELMASK *bufferchannelmask; | ||
| 124 | float **buffers; | ||
| 125 | FMOD_SPEAKERMODE speakermode; | ||
| 126 | }; | ||
| 127 | |||
| 128 | struct FMOD_COMPLEX | ||
| 129 | { | ||
| 130 | float real; | ||
| 131 | float imag; | ||
| 132 | }; | ||
| 133 | |||
| 134 | typedef struct FMOD_DSP_PARAMETER_FLOAT_MAPPING_PIECEWISE_LINEAR | ||
| 135 | { | ||
| 136 | int numpoints; | ||
| 137 | float *pointparamvalues; | ||
| 138 | float *pointpositions; | ||
| 139 | } FMOD_DSP_PARAMETER_FLOAT_MAPPING_PIECEWISE_LINEAR; | ||
| 140 | |||
| 141 | typedef struct FMOD_DSP_PARAMETER_FLOAT_MAPPING | ||
| 142 | { | ||
| 143 | FMOD_DSP_PARAMETER_FLOAT_MAPPING_TYPE type; | ||
| 144 | FMOD_DSP_PARAMETER_FLOAT_MAPPING_PIECEWISE_LINEAR piecewiselinearmapping; | ||
| 145 | } FMOD_DSP_PARAMETER_FLOAT_MAPPING; | ||
| 146 | |||
| 147 | typedef struct FMOD_DSP_PARAMETER_DESC_FLOAT | ||
| 148 | { | ||
| 149 | float min; | ||
| 150 | float max; | ||
| 151 | float defaultval; | ||
| 152 | FMOD_DSP_PARAMETER_FLOAT_MAPPING mapping; | ||
| 153 | } FMOD_DSP_PARAMETER_DESC_FLOAT; | ||
| 154 | |||
| 155 | typedef struct FMOD_DSP_PARAMETER_DESC_INT | ||
| 156 | { | ||
| 157 | int min; | ||
| 158 | int max; | ||
| 159 | int defaultval; | ||
| 160 | FMOD_BOOL goestoinf; | ||
| 161 | const char* const* valuenames; | ||
| 162 | } FMOD_DSP_PARAMETER_DESC_INT; | ||
| 163 | |||
| 164 | typedef struct FMOD_DSP_PARAMETER_DESC_BOOL | ||
| 165 | { | ||
| 166 | FMOD_BOOL defaultval; | ||
| 167 | const char* const* valuenames; | ||
| 168 | } FMOD_DSP_PARAMETER_DESC_BOOL; | ||
| 169 | |||
| 170 | typedef struct FMOD_DSP_PARAMETER_DESC_DATA | ||
| 171 | { | ||
| 172 | int datatype; | ||
| 173 | } FMOD_DSP_PARAMETER_DESC_DATA; | ||
| 174 | |||
| 175 | typedef struct FMOD_DSP_PARAMETER_DESC | ||
| 176 | { | ||
| 177 | FMOD_DSP_PARAMETER_TYPE type; | ||
| 178 | char name[16]; | ||
| 179 | char label[16]; | ||
| 180 | const char *description; | ||
| 181 | |||
| 182 | union | ||
| 183 | { | ||
| 184 | FMOD_DSP_PARAMETER_DESC_FLOAT floatdesc; | ||
| 185 | FMOD_DSP_PARAMETER_DESC_INT intdesc; | ||
| 186 | FMOD_DSP_PARAMETER_DESC_BOOL booldesc; | ||
| 187 | FMOD_DSP_PARAMETER_DESC_DATA datadesc; | ||
| 188 | }; | ||
| 189 | } FMOD_DSP_PARAMETER_DESC; | ||
| 190 | |||
| 191 | typedef struct FMOD_DSP_PARAMETER_OVERALLGAIN | ||
| 192 | { | ||
| 193 | float linear_gain; | ||
| 194 | float linear_gain_additive; | ||
| 195 | } FMOD_DSP_PARAMETER_OVERALLGAIN; | ||
| 196 | |||
| 197 | typedef struct FMOD_DSP_PARAMETER_3DATTRIBUTES | ||
| 198 | { | ||
| 199 | FMOD_3D_ATTRIBUTES relative; | ||
| 200 | FMOD_3D_ATTRIBUTES absolute; | ||
| 201 | } FMOD_DSP_PARAMETER_3DATTRIBUTES; | ||
| 202 | |||
| 203 | typedef struct FMOD_DSP_PARAMETER_3DATTRIBUTES_MULTI | ||
| 204 | { | ||
| 205 | int numlisteners; | ||
| 206 | FMOD_3D_ATTRIBUTES relative[FMOD_MAX_LISTENERS]; | ||
| 207 | float weight[FMOD_MAX_LISTENERS]; | ||
| 208 | FMOD_3D_ATTRIBUTES absolute; | ||
| 209 | } FMOD_DSP_PARAMETER_3DATTRIBUTES_MULTI; | ||
| 210 | |||
| 211 | typedef struct FMOD_DSP_PARAMETER_ATTENUATION_RANGE | ||
| 212 | { | ||
| 213 | float min; | ||
| 214 | float max; | ||
| 215 | } FMOD_DSP_PARAMETER_ATTENUATION_RANGE; | ||
| 216 | |||
| 217 | typedef struct FMOD_DSP_PARAMETER_SIDECHAIN | ||
| 218 | { | ||
| 219 | FMOD_BOOL sidechainenable; | ||
| 220 | } FMOD_DSP_PARAMETER_SIDECHAIN; | ||
| 221 | |||
| 222 | typedef struct FMOD_DSP_PARAMETER_FFT | ||
| 223 | { | ||
| 224 | int length; | ||
| 225 | int numchannels; | ||
| 226 | float *spectrum[32]; | ||
| 227 | } FMOD_DSP_PARAMETER_FFT; | ||
| 228 | |||
| 229 | typedef struct FMOD_DSP_DESCRIPTION | ||
| 230 | { | ||
| 231 | unsigned int pluginsdkversion; | ||
| 232 | char name[32]; | ||
| 233 | unsigned int version; | ||
| 234 | int numinputbuffers; | ||
| 235 | int numoutputbuffers; | ||
| 236 | FMOD_DSP_CREATE_CALLBACK create; | ||
| 237 | FMOD_DSP_RELEASE_CALLBACK release; | ||
| 238 | FMOD_DSP_RESET_CALLBACK reset; | ||
| 239 | FMOD_DSP_READ_CALLBACK read; | ||
| 240 | FMOD_DSP_PROCESS_CALLBACK process; | ||
| 241 | FMOD_DSP_SETPOSITION_CALLBACK setposition; | ||
| 242 | |||
| 243 | int numparameters; | ||
| 244 | FMOD_DSP_PARAMETER_DESC **paramdesc; | ||
| 245 | FMOD_DSP_SETPARAM_FLOAT_CALLBACK setparameterfloat; | ||
| 246 | FMOD_DSP_SETPARAM_INT_CALLBACK setparameterint; | ||
| 247 | FMOD_DSP_SETPARAM_BOOL_CALLBACK setparameterbool; | ||
| 248 | FMOD_DSP_SETPARAM_DATA_CALLBACK setparameterdata; | ||
| 249 | FMOD_DSP_GETPARAM_FLOAT_CALLBACK getparameterfloat; | ||
| 250 | FMOD_DSP_GETPARAM_INT_CALLBACK getparameterint; | ||
| 251 | FMOD_DSP_GETPARAM_BOOL_CALLBACK getparameterbool; | ||
| 252 | FMOD_DSP_GETPARAM_DATA_CALLBACK getparameterdata; | ||
| 253 | FMOD_DSP_SHOULDIPROCESS_CALLBACK shouldiprocess; | ||
| 254 | void *userdata; | ||
| 255 | |||
| 256 | FMOD_DSP_SYSTEM_REGISTER_CALLBACK sys_register; | ||
| 257 | FMOD_DSP_SYSTEM_DEREGISTER_CALLBACK sys_deregister; | ||
| 258 | FMOD_DSP_SYSTEM_MIX_CALLBACK sys_mix; | ||
| 259 | |||
| 260 | } FMOD_DSP_DESCRIPTION; | ||
| 261 | |||
| 262 | typedef struct FMOD_DSP_STATE_DFT_FUNCTIONS | ||
| 263 | { | ||
| 264 | FMOD_DSP_DFT_FFTREAL_FUNC fftreal; | ||
| 265 | FMOD_DSP_DFT_IFFTREAL_FUNC inversefftreal; | ||
| 266 | } FMOD_DSP_STATE_DFT_FUNCTIONS; | ||
| 267 | |||
| 268 | typedef struct FMOD_DSP_STATE_PAN_FUNCTIONS | ||
| 269 | { | ||
| 270 | FMOD_DSP_PAN_SUMMONOMATRIX_FUNC summonomatrix; | ||
| 271 | FMOD_DSP_PAN_SUMSTEREOMATRIX_FUNC sumstereomatrix; | ||
| 272 | FMOD_DSP_PAN_SUMSURROUNDMATRIX_FUNC sumsurroundmatrix; | ||
| 273 | FMOD_DSP_PAN_SUMMONOTOSURROUNDMATRIX_FUNC summonotosurroundmatrix; | ||
| 274 | FMOD_DSP_PAN_SUMSTEREOTOSURROUNDMATRIX_FUNC sumstereotosurroundmatrix; | ||
| 275 | FMOD_DSP_PAN_GETROLLOFFGAIN_FUNC getrolloffgain; | ||
| 276 | } FMOD_DSP_STATE_PAN_FUNCTIONS; | ||
| 277 | |||
| 278 | typedef struct FMOD_DSP_STATE_FUNCTIONS | ||
| 279 | { | ||
| 280 | FMOD_DSP_ALLOC_FUNC alloc; | ||
| 281 | FMOD_DSP_REALLOC_FUNC realloc; | ||
| 282 | FMOD_DSP_FREE_FUNC free; | ||
| 283 | FMOD_DSP_GETSAMPLERATE_FUNC getsamplerate; | ||
| 284 | FMOD_DSP_GETBLOCKSIZE_FUNC getblocksize; | ||
| 285 | FMOD_DSP_STATE_DFT_FUNCTIONS *dft; | ||
| 286 | FMOD_DSP_STATE_PAN_FUNCTIONS *pan; | ||
| 287 | FMOD_DSP_GETSPEAKERMODE_FUNC getspeakermode; | ||
| 288 | FMOD_DSP_GETCLOCK_FUNC getclock; | ||
| 289 | FMOD_DSP_GETLISTENERATTRIBUTES_FUNC getlistenerattributes; | ||
| 290 | FMOD_DSP_LOG_FUNC log; | ||
| 291 | FMOD_DSP_GETUSERDATA_FUNC getuserdata; | ||
| 292 | } FMOD_DSP_STATE_FUNCTIONS; | ||
| 293 | |||
| 294 | struct FMOD_DSP_STATE | ||
| 295 | { | ||
| 296 | void *instance; | ||
| 297 | void *plugindata; | ||
| 298 | FMOD_CHANNELMASK channelmask; | ||
| 299 | FMOD_SPEAKERMODE source_speakermode; | ||
| 300 | float *sidechaindata; | ||
| 301 | int sidechainchannels; | ||
| 302 | FMOD_DSP_STATE_FUNCTIONS *functions; | ||
| 303 | int systemobject; | ||
| 304 | }; | ||
| 305 | |||
| 306 | typedef struct FMOD_DSP_METERING_INFO | ||
| 307 | { | ||
| 308 | int numsamples; | ||
| 309 | float peaklevel[32]; | ||
| 310 | float rmslevel[32]; | ||
| 311 | short numchannels; | ||
| 312 | } FMOD_DSP_METERING_INFO; | ||
| 313 | |||
| 314 | /* | ||
| 315 | DSP Macros | ||
| 316 | */ | ||
| 317 | #define FMOD_DSP_INIT_PARAMDESC_FLOAT(_paramstruct, _name, _label, _description, _min, _max, _defaultval) \ | ||
| 318 | memset(&(_paramstruct), 0, sizeof(_paramstruct)); \ | ||
| 319 | (_paramstruct).type = FMOD_DSP_PARAMETER_TYPE_FLOAT; \ | ||
| 320 | strncpy((_paramstruct).name, _name, 15); \ | ||
| 321 | strncpy((_paramstruct).label, _label, 15); \ | ||
| 322 | (_paramstruct).description = _description; \ | ||
| 323 | (_paramstruct).floatdesc.min = _min; \ | ||
| 324 | (_paramstruct).floatdesc.max = _max; \ | ||
| 325 | (_paramstruct).floatdesc.defaultval = _defaultval; \ | ||
| 326 | (_paramstruct).floatdesc.mapping.type = FMOD_DSP_PARAMETER_FLOAT_MAPPING_TYPE_AUTO; | ||
| 327 | |||
| 328 | #define FMOD_DSP_INIT_PARAMDESC_FLOAT_WITH_MAPPING(_paramstruct, _name, _label, _description, _defaultval, _values, _positions); \ | ||
| 329 | memset(&(_paramstruct), 0, sizeof(_paramstruct)); \ | ||
| 330 | (_paramstruct).type = FMOD_DSP_PARAMETER_TYPE_FLOAT; \ | ||
| 331 | strncpy((_paramstruct).name, _name , 15); \ | ||
| 332 | strncpy((_paramstruct).label, _label, 15); \ | ||
| 333 | (_paramstruct).description = _description; \ | ||
| 334 | (_paramstruct).floatdesc.min = _values[0]; \ | ||
| 335 | (_paramstruct).floatdesc.max = _values[sizeof(_values) / sizeof(float) - 1]; \ | ||
| 336 | (_paramstruct).floatdesc.defaultval = _defaultval; \ | ||
| 337 | (_paramstruct).floatdesc.mapping.type = FMOD_DSP_PARAMETER_FLOAT_MAPPING_TYPE_PIECEWISE_LINEAR; \ | ||
| 338 | (_paramstruct).floatdesc.mapping.piecewiselinearmapping.numpoints = sizeof(_values) / sizeof(float); \ | ||
| 339 | (_paramstruct).floatdesc.mapping.piecewiselinearmapping.pointparamvalues = _values; \ | ||
| 340 | (_paramstruct).floatdesc.mapping.piecewiselinearmapping.pointpositions = _positions; | ||
| 341 | |||
| 342 | #define FMOD_DSP_INIT_PARAMDESC_INT(_paramstruct, _name, _label, _description, _min, _max, _defaultval, _goestoinf, _valuenames) \ | ||
| 343 | memset(&(_paramstruct), 0, sizeof(_paramstruct)); \ | ||
| 344 | (_paramstruct).type = FMOD_DSP_PARAMETER_TYPE_INT; \ | ||
| 345 | strncpy((_paramstruct).name, _name , 15); \ | ||
| 346 | strncpy((_paramstruct).label, _label, 15); \ | ||
| 347 | (_paramstruct).description = _description; \ | ||
| 348 | (_paramstruct).intdesc.min = _min; \ | ||
| 349 | (_paramstruct).intdesc.max = _max; \ | ||
| 350 | (_paramstruct).intdesc.defaultval = _defaultval; \ | ||
| 351 | (_paramstruct).intdesc.goestoinf = _goestoinf; \ | ||
| 352 | (_paramstruct).intdesc.valuenames = _valuenames; | ||
| 353 | |||
| 354 | #define FMOD_DSP_INIT_PARAMDESC_INT_ENUMERATED(_paramstruct, _name, _label, _description, _defaultval, _valuenames) \ | ||
| 355 | memset(&(_paramstruct), 0, sizeof(_paramstruct)); \ | ||
| 356 | (_paramstruct).type = FMOD_DSP_PARAMETER_TYPE_INT; \ | ||
| 357 | strncpy((_paramstruct).name, _name , 15); \ | ||
| 358 | strncpy((_paramstruct).label, _label, 15); \ | ||
| 359 | (_paramstruct).description = _description; \ | ||
| 360 | (_paramstruct).intdesc.min = 0; \ | ||
| 361 | (_paramstruct).intdesc.max = sizeof(_valuenames) / sizeof(char*) - 1; \ | ||
| 362 | (_paramstruct).intdesc.defaultval = _defaultval; \ | ||
| 363 | (_paramstruct).intdesc.goestoinf = false; \ | ||
| 364 | (_paramstruct).intdesc.valuenames = _valuenames; | ||
| 365 | |||
| 366 | #define FMOD_DSP_INIT_PARAMDESC_BOOL(_paramstruct, _name, _label, _description, _defaultval, _valuenames) \ | ||
| 367 | memset(&(_paramstruct), 0, sizeof(_paramstruct)); \ | ||
| 368 | (_paramstruct).type = FMOD_DSP_PARAMETER_TYPE_BOOL; \ | ||
| 369 | strncpy((_paramstruct).name, _name , 15); \ | ||
| 370 | strncpy((_paramstruct).label, _label, 15); \ | ||
| 371 | (_paramstruct).description = _description; \ | ||
| 372 | (_paramstruct).booldesc.defaultval = _defaultval; \ | ||
| 373 | (_paramstruct).booldesc.valuenames = _valuenames; | ||
| 374 | |||
| 375 | #define FMOD_DSP_INIT_PARAMDESC_DATA(_paramstruct, _name, _label, _description, _datatype) \ | ||
| 376 | memset(&(_paramstruct), 0, sizeof(_paramstruct)); \ | ||
| 377 | (_paramstruct).type = FMOD_DSP_PARAMETER_TYPE_DATA; \ | ||
| 378 | strncpy((_paramstruct).name, _name , 15); \ | ||
| 379 | strncpy((_paramstruct).label, _label, 15); \ | ||
| 380 | (_paramstruct).description = _description; \ | ||
| 381 | (_paramstruct).datadesc.datatype = _datatype; | ||
| 382 | |||
| 383 | #define FMOD_DSP_ALLOC(_state, _size) \ | ||
| 384 | (_state)->functions->alloc(_size, FMOD_MEMORY_NORMAL, __FILE__) | ||
| 385 | #define FMOD_DSP_REALLOC(_state, _ptr, _size) \ | ||
| 386 | (_state)->functions->realloc(_ptr, _size, FMOD_MEMORY_NORMAL, __FILE__) | ||
| 387 | #define FMOD_DSP_FREE(_state, _ptr) \ | ||
| 388 | (_state)->functions->free(_ptr, FMOD_MEMORY_NORMAL, __FILE__) | ||
| 389 | #define FMOD_DSP_LOG(_state, _level, _location, _format, ...) \ | ||
| 390 | (_state)->functions->log(_level, __FILE__, __LINE__, _location, _format, __VA_ARGS__) | ||
| 391 | #define FMOD_DSP_GETSAMPLERATE(_state, _rate) \ | ||
| 392 | (_state)->functions->getsamplerate(_state, _rate) | ||
| 393 | #define FMOD_DSP_GETBLOCKSIZE(_state, _blocksize) \ | ||
| 394 | (_state)->functions->getblocksize(_state, _blocksize) | ||
| 395 | #define FMOD_DSP_GETSPEAKERMODE(_state, _speakermodemix, _speakermodeout) \ | ||
| 396 | (_state)->functions->getspeakermode(_state, _speakermodemix, _speakermodeout) | ||
| 397 | #define FMOD_DSP_GETCLOCK(_state, _clock, _offset, _length) \ | ||
| 398 | (_state)->functions->getclock(_state, _clock, _offset, _length) | ||
| 399 | #define FMOD_DSP_GETLISTENERATTRIBUTES(_state, _numlisteners, _attributes) \ | ||
| 400 | (_state)->functions->getlistenerattributes(_state, _numlisteners, _attributes) | ||
| 401 | #define FMOD_DSP_GETUSERDATA(_state, _userdata) \ | ||
| 402 | (_state)->functions->getuserdata(_state, _userdata) | ||
| 403 | #define FMOD_DSP_DFT_FFTREAL(_state, _size, _signal, _dft, _window, _signalhop) \ | ||
| 404 | (_state)->functions->dft->fftreal(_state, _size, _signal, _dft, _window, _signalhop) | ||
| 405 | #define FMOD_DSP_DFT_IFFTREAL(_state, _size, _dft, _signal, _window, _signalhop) \ | ||
| 406 | (_state)->functions->dft->inversefftreal(_state, _size, _dft, _signal, _window, _signalhop) | ||
| 407 | #define FMOD_DSP_PAN_SUMMONOMATRIX(_state, _sourcespeakermode, _lowfrequencygain, _overallgain, _matrix) \ | ||
| 408 | (_state)->functions->pan->summonomatrix(_state, _sourcespeakermode, _lowfrequencygain, _overallgain, _matrix) | ||
| 409 | #define FMOD_DSP_PAN_SUMSTEREOMATRIX(_state, _sourcespeakermode, _pan, _lowfrequencygain, _overallgain, _matrixhop, _matrix) \ | ||
| 410 | (_state)->functions->pan->sumstereomatrix(_state, _sourcespeakermode, _pan, _lowfrequencygain, _overallgain, _matrixhop, _matrix) | ||
| 411 | #define FMOD_DSP_PAN_SUMSURROUNDMATRIX(_state, _sourcespeakermode, _targetspeakermode, _direction, _extent, _rotation, _lowfrequencygain, _overallgain, _matrixhop, _matrix, _flags) \ | ||
| 412 | (_state)->functions->pan->sumsurroundmatrix(_state, _sourcespeakermode, _targetspeakermode, _direction, _extent, _rotation, _lowfrequencygain, _overallgain, _matrixhop, _matrix, _flags) | ||
| 413 | #define FMOD_DSP_PAN_SUMMONOTOSURROUNDMATRIX(_state, _targetspeakermode, _direction, _extent, _lowfrequencygain, _overallgain, _matrixhop, _matrix) \ | ||
| 414 | (_state)->functions->pan->summonotosurroundmatrix(_state, _targetspeakermode, _direction, _extent, _lowfrequencygain, _overallgain, _matrixhop, _matrix) | ||
| 415 | #define FMOD_DSP_PAN_SUMSTEREOTOSURROUNDMATRIX(_state, _targetspeakermode, _direction, _extent, _rotation, _lowfrequencygain, _overallgain, matrixhop, _matrix) \ | ||
| 416 | (_state)->functions->pan->sumstereotosurroundmatrix(_state, _targetspeakermode, _direction, _extent, _rotation, _lowfrequencygain, _overallgain, matrixhop, _matrix) | ||
| 417 | #define FMOD_DSP_PAN_GETROLLOFFGAIN(_state, _rolloff, _distance, _mindistance, _maxdistance, _gain) \ | ||
| 418 | (_state)->functions->pan->getrolloffgain(_state, _rolloff, _distance, _mindistance, _maxdistance, _gain) | ||
| 419 | |||
| 420 | #endif | ||
| 421 | |||
