unsignedintversion;/* [in] Plugin writer's version number. */
intdefaultasstream;/* [in] Tells FMOD to open the file as a stream when calling System::createSound, and not a static sample. Should normally be 0 (FALSE), because generally the user wants to decode the file into memory when using System::createSound. Mainly used for formats that decode for a very long time, or could use large amounts of memory when decoded. Usually sequenced formats such as mod/s3m/xm/it/midi fall into this category. It is mainly to stop users that don't know what they're doing from getting FMOD_ERR_MEMORY returned from createSound when they should have in fact called System::createStream or used FMOD_CREATESTREAM in System::createSound. */
FMOD_TIMEUNITtimeunits;/* [in] When setposition codec is called, only these time formats will be passed to the codec. Use bitwise OR to accumulate different types. */
FMOD_CODEC_OPENCALLBACKopen;/* [in] Open callback for the codec for when FMOD tries to open a sound using this codec. */
FMOD_CODEC_CLOSECALLBACKclose;/* [in] Close callback for the codec for when FMOD tries to close a sound using this codec. */
FMOD_CODEC_READCALLBACKread;/* [in] Read callback for the codec for when FMOD tries to read some data from the file to the destination format (specified in the open callback). */
FMOD_CODEC_GETLENGTHCALLBACKgetlength;/* [in] Callback to return the length of the song in whatever format required when Sound::getLength is called. */
FMOD_CODEC_SETPOSITIONCALLBACKsetposition;/* [in] Seek callback for the codec for when FMOD tries to seek within the file with Channel::setPosition. */
FMOD_CODEC_GETPOSITIONCALLBACKgetposition;/* [in] Tell callback for the codec for when FMOD tries to get the current position within the with Channel::getPosition. */
FMOD_CODEC_SOUNDCREATECALLBACKsoundcreate;/* [in] Sound creation callback for the codec when FMOD finishes creating the sound. (So the codec can set more parameters for the related created sound, ie loop points/mode or 3D attributes etc). */
FMOD_CODEC_GETWAVEFORMATgetwaveformat;/* [in] Callback to tell FMOD about the waveformat of a particular subsound. This is to save memory, rather than saving 1000 FMOD_CODEC_WAVEFORMAT structures in the codec, the codec might have a more optimal way of storing this information. */
FMOD_SOUND_FORMATformat;/* [in] Format for (decompressed) codec output, ie FMOD_SOUND_FORMAT_PCM8, FMOD_SOUND_FORMAT_PCM16.*/
intchannels;/* [in] Number of channels used by codec, ie mono = 1, stereo = 2. */
intfrequency;/* [in] Default frequency in hz of the codec, ie 44100. */
unsignedintlengthbytes;/* [in] Length in bytes of the source data. */
unsignedintlengthpcm;/* [in] Length in decompressed, PCM samples of the file, ie length in seconds * frequency. Used for Sound::getLength and for memory allocation of static decompressed sample data. */
intblockalign;/* [in] Blockalign in decompressed, PCM samples of the optimal decode chunk size for this format. The codec read callback will be called in multiples of this value. */
intloopstart;/* [in] Loopstart in decompressed, PCM samples of file. */
intloopend;/* [in] Loopend in decompressed, PCM samples of file. */
FMOD_MODEmode;/* [in] Mode to determine whether the sound should by default load as looping, non looping, 2d or 3d. */
unsignedintchannelmask;/* [in] Microsoft speaker channel mask, as defined for WAVEFORMATEXTENSIBLE and is found in ksmedia.h. Leave at 0 to play in natural speaker order. */
intnumsubsounds;/* [in] Number of 'subsounds' in this sound. Anything other than 0 makes it a 'container' format (ie CDDA/DLS/FSB etc which contain 1 or more su bsounds). For most normal, single sound codec such as WAV/AIFF/MP3, this should be 0 as they are not a container for subsounds, they are the sound by itself. */
FMOD_CODEC_WAVEFORMAT*waveformat;/* [in] Pointer to an array of format structures containing information about each sample. Can be 0 or NULL if FMOD_CODEC_GETWAVEFORMAT callback is preferred. The number of entries here must equal the number of subsounds defined in the subsound parameter. If numsubsounds = 0 then there should be 1 instance of this structure. */
void*plugindata;/* [in] Plugin writer created data the codec author wants to attach to this object. */
void*filehandle;/* [out] This will return an internal FMOD file handle to use with the callbacks provided. */
unsignedintfilesize;/* [out] This will contain the size of the file in bytes. */
FMOD_FILE_READCALLBACKfileread;/* [out] This will return a callable FMOD file function to use from codec. */
FMOD_FILE_SEEKCALLBACKfileseek;/* [out] This will return a callable FMOD file function to use from codec. */
FMOD_CODEC_METADATACALLBACKmetadata;/* [out] This will return a callable FMOD metadata function to use from codec. */