1
1
Fork 0
mirror of https://github.com/QB64Official/qb64.git synced 2024-09-19 22:35:24 +00:00
qb64/internal/c/parts/audio/out/android/OpenAL/OpenAL32/alBuffer.h
2015-10-30 23:18:44 +11:00

98 lines
2.5 KiB
C

#ifndef _AL_BUFFER_H_
#define _AL_BUFFER_H_
#include "AL/al.h"
#ifdef __cplusplus
extern "C" {
#endif
/* Input formats (some are currently theoretical) */
enum UserFmtType {
UserFmtByte, /* AL_BYTE */
UserFmtUByte, /* AL_UNSIGNED_BYTE */
UserFmtShort, /* AL_SHORT */
UserFmtUShort, /* AL_UNSIGNED_SHORT */
UserFmtInt, /* AL_INT */
UserFmtUInt, /* AL_UNSIGNED_INT */
UserFmtFloat, /* AL_FLOAT */
UserFmtDouble, /* AL_DOUBLE */
UserFmtMulaw, /* AL_MULAW */
UserFmtIMA4, /* AL_IMA4 */
};
enum UserFmtChannels {
UserFmtMono, /* AL_MONO */
UserFmtStereo, /* AL_STEREO */
UserFmtRear, /* AL_REAR */
UserFmtQuad, /* AL_QUAD */
UserFmtX51, /* AL_5POINT1 (WFX order) */
UserFmtX61, /* AL_6POINT1 (WFX order) */
UserFmtX71, /* AL_7POINT1 (WFX order) */
};
ALboolean DecomposeUserFormat(ALenum format, enum UserFmtChannels *chans,
enum UserFmtType *type);
ALuint BytesFromUserFmt(enum UserFmtType type);
ALuint ChannelsFromUserFmt(enum UserFmtChannels chans);
static __inline ALuint FrameSizeFromUserFmt(enum UserFmtChannels chans,
enum UserFmtType type)
{
return ChannelsFromUserFmt(chans) * BytesFromUserFmt(type);
}
/* Storable formats */
enum FmtType {
FmtUByte = UserFmtUByte,
FmtShort = UserFmtShort,
FmtFloat = UserFmtFloat,
};
enum FmtChannels {
FmtMono = UserFmtMono,
FmtStereo = UserFmtStereo,
FmtRear = UserFmtRear,
FmtQuad = UserFmtQuad,
FmtX51 = UserFmtX51,
FmtX61 = UserFmtX61,
FmtX71 = UserFmtX71,
};
ALboolean DecomposeFormat(ALenum format, enum FmtChannels *chans, enum FmtType *type);
ALuint BytesFromFmt(enum FmtType type);
ALuint ChannelsFromFmt(enum FmtChannels chans);
static __inline ALuint FrameSizeFromFmt(enum FmtChannels chans, enum FmtType type)
{
return ChannelsFromFmt(chans) * BytesFromFmt(type);
}
typedef struct ALbuffer
{
ALvoid *data;
ALsizei size;
ALsizei Frequency;
enum FmtChannels FmtChannels;
enum FmtType FmtType;
enum UserFmtChannels OriginalChannels;
enum UserFmtType OriginalType;
ALsizei OriginalSize;
ALsizei OriginalAlign;
ALsizei LoopStart;
ALsizei LoopEnd;
ALuint refcount; // Number of sources using this buffer (deletion can only occur when this is 0)
// Index to itself
ALuint buffer;
} ALbuffer;
ALvoid ReleaseALBuffers(ALCdevice *device);
#ifdef __cplusplus
}
#endif
#endif