openal-alsa-creative/include/AL/alexttypes.h

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_ */