162 lines
4.6 KiB
C
162 lines
4.6 KiB
C
#ifndef _LAL_EXTTYPES_H_
|
|
#define _LAL_EXTTYPES_H_
|
|
|
|
#define LAL_OPENAL 1
|
|
|
|
/* format base 0x10000 */
|
|
#define AL_FORMAT_IMA_ADPCM_MONO16_EXT 0x10000
|
|
#define AL_FORMAT_IMA_ADPCM_STEREO16_EXT 0x10001
|
|
#define AL_FORMAT_WAVE_EXT 0x10002
|
|
#define AL_FORMAT_VORBIS_EXT 0x10003
|
|
|
|
/* four point formats */
|
|
#define AL_FORMAT_QUAD8_LOKI 0x10004
|
|
#define AL_FORMAT_QUAD16_LOKI 0x10005
|
|
|
|
/**
|
|
* token extensions, base 0x20000
|
|
*/
|
|
/**
|
|
* Indicate the gain (volume amplification) applied, in a
|
|
* normalized linear scale. This affects the value retrieved
|
|
* by AL_GAIN.
|
|
*
|
|
* Type: ALfloat.
|
|
* Range: ]0.0- ]
|
|
* A value of 1.0 means un-attenuated/unchanged.
|
|
* A value of 0.0 is interpreted as zero volume - the channel
|
|
* is effectively disabled.
|
|
*/
|
|
#define AL_GAIN_LINEAR_LOKI 0x20000
|
|
|
|
|
|
/*
|
|
* types for special loaders. This should be deprecated in favor
|
|
* of the special format tags.
|
|
*/
|
|
|
|
typedef struct WaveFMT {
|
|
ALushort encoding;
|
|
ALushort channels; /* 1 = mono, 2 = stereo */
|
|
ALuint frequency; /* One of 11025, 22050, or 44100 Hz */
|
|
ALuint byterate; /* Average bytes per second */
|
|
ALushort blockalign; /* Bytes per sample block */
|
|
ALushort bitspersample;
|
|
} alWaveFMT_LOKI;
|
|
|
|
typedef struct _MS_ADPCM_decodestate {
|
|
ALubyte hPredictor;
|
|
ALushort iDelta;
|
|
ALshort iSamp1;
|
|
ALshort iSamp2;
|
|
} alMSADPCM_decodestate_LOKI;
|
|
|
|
typedef struct MS_ADPCM_decoder {
|
|
alWaveFMT_LOKI wavefmt;
|
|
ALushort wSamplesPerBlock;
|
|
ALushort wNumCoef;
|
|
ALshort aCoeff[7][2];
|
|
/* * * */
|
|
alMSADPCM_decodestate_LOKI state[2];
|
|
} alMSADPCM_state_LOKI;
|
|
|
|
typedef struct IMA_ADPCM_decodestate_s {
|
|
ALint valprev; /* Previous output value */
|
|
ALbyte index; /* Index into stepsize table */
|
|
} alIMAADPCM_decodestate_LOKI;
|
|
|
|
typedef struct IMA_ADPCM_decoder {
|
|
alWaveFMT_LOKI wavefmt;
|
|
ALushort wSamplesPerBlock;
|
|
/* * * */
|
|
alIMAADPCM_decodestate_LOKI state[2];
|
|
} alIMAADPCM_state_LOKI;
|
|
|
|
/**
|
|
* Context creation extension tokens
|
|
* base 0x200000
|
|
*/
|
|
|
|
/**
|
|
* followed by ### of sources
|
|
*/
|
|
#define ALC_SOURCES_LOKI 0x200000
|
|
|
|
/**
|
|
* followed by ### of buffers
|
|
*/
|
|
#define ALC_BUFFERS_LOKI 0x200001
|
|
|
|
/*
|
|
* Channel operations are probably a big no-no and destined
|
|
* for obsolesence.
|
|
*
|
|
* base 0x300000
|
|
*/
|
|
#define ALC_CHAN_MAIN_LOKI 0x300000
|
|
#define ALC_CHAN_PCM_LOKI 0x300001
|
|
#define ALC_CHAN_CD_LOKI 0x300002
|
|
|
|
|
|
typedef void (*PFNALCSETAUDIOCHANNELPROC)(ALuint channel, ALfloat volume);
|
|
typedef ALfloat (*PFNALCGETAUDIOCHANNELPROC)(ALuint channel);
|
|
typedef void (*PFNALBOMBONERRORPROC)(void);
|
|
|
|
typedef void (*PFNALBUFFERIPROC)(ALuint bid, ALenum param, ALint value);
|
|
|
|
typedef void (*PFNALBUFFERDATAWITHCALLBACKPROC)(ALuint bid,
|
|
int (*Callback)(ALuint, ALuint, ALshort *, ALenum, ALint, ALint));
|
|
|
|
typedef void (*PFNALBUFFERWRITEDATAPROC)( ALuint buffer,
|
|
ALenum format,
|
|
ALvoid* data,
|
|
ALsizei size,
|
|
ALsizei freq,
|
|
ALenum internalFormat );
|
|
|
|
typedef void (*PFNALGENSTREAMINGBUFFERSPROC)( ALsizei n, ALuint *samples );
|
|
|
|
typedef ALsizei (*PFNALBUFFERAPPENDDATAPROC)( ALuint buffer,
|
|
ALenum format,
|
|
ALvoid* data,
|
|
ALsizei size,
|
|
ALsizei freq );
|
|
|
|
typedef ALsizei (*PFNALBUFFERAPPENDWRITEDATAPROC)( ALuint buffer,
|
|
ALenum format,
|
|
ALvoid* data,
|
|
ALsizei size,
|
|
ALsizei freq,
|
|
ALenum internalFormat );
|
|
|
|
/* captures */
|
|
|
|
typedef ALboolean (*PFNALCAPTUREINITPROC)( ALenum format, ALuint rate, ALsizei bufferSize );
|
|
|
|
typedef ALboolean (*PFNALCAPTUREDESTROYPROC)( ALvoid );
|
|
|
|
typedef ALboolean (*PFNALCAPTURESTARTPROC)( ALvoid );
|
|
|
|
typedef ALboolean (*PFNALCAPTURESTOPPROC)( ALvoid );
|
|
|
|
/* Non-blocking device read */
|
|
typedef ALsizei (*PFNALCAPTUREGETDATAPROC)( ALvoid* data, ALsizei n, ALenum format, ALuint rate );
|
|
|
|
/* vorbis */
|
|
typedef ALboolean (*PFNALUTLOADVORBISPROC)(ALuint bid, ALvoid *data, ALint size);
|
|
|
|
/* custom loaders */
|
|
typedef ALboolean (*PFNALUTLOADRAW_ADPCMDATAPROC)( ALuint bid,
|
|
ALvoid *data, ALuint size, ALuint freq,
|
|
ALenum format);
|
|
|
|
typedef ALboolean (*ALUTLOADIMA_ADPCMDATAPROC)(ALuint bid,
|
|
ALvoid *data, ALuint size,
|
|
alIMAADPCM_state_LOKI *ias);
|
|
|
|
typedef ALboolean (*ALUTLOADMS_ADPCMDATAPROC)(ALuint bid,
|
|
void *data, int size,
|
|
alMSADPCM_state_LOKI *mss);
|
|
|
|
#endif /* _LAL_EXTTYPES_H_ */
|