Reorder some parameters for consistency
[openal-soft/openal-hmr.git] / OpenAL32 / Include / alBuffer.h
blob1007e4d7af2d011523bcb36d6a18552c533146bd
1 #ifndef _AL_BUFFER_H_
2 #define _AL_BUFFER_H_
4 #include "AL/al.h"
6 #ifdef __cplusplus
7 extern "C" {
8 #endif
10 /* Input formats (some are currently theoretical) */
11 enum SrcFmtType {
12 SrcFmtByte, /* AL_BYTE */
13 SrcFmtUByte, /* AL_UNSIGNED_BYTE */
14 SrcFmtShort, /* AL_SHORT */
15 SrcFmtUShort, /* AL_UNSIGNED_SHORT */
16 SrcFmtInt, /* AL_INT */
17 SrcFmtUInt, /* AL_UNSIGNED_INT */
18 SrcFmtFloat, /* AL_FLOAT */
19 SrcFmtDouble, /* AL_DOUBLE */
20 SrcFmtMulaw, /* AL_MULAW */
21 SrcFmtIMA4, /* AL_IMA4 */
23 enum SrcFmtChannels {
24 SrcFmtMono, /* AL_MONO */
25 SrcFmtStereo, /* AL_STEREO */
26 SrcFmtRear, /* AL_REAR */
27 SrcFmtQuad, /* AL_QUAD */
28 SrcFmtX51, /* AL_5POINT1 (WFX order) */
29 SrcFmtX61, /* AL_6POINT1 (WFX order) */
30 SrcFmtX71, /* AL_7POINT1 (WFX order) */
33 void DecomposeInputFormat(ALenum format, enum SrcFmtChannels *chans,
34 enum SrcFmtType *type);
35 ALuint BytesFromSrcFmt(enum SrcFmtType type);
36 ALuint ChannelsFromSrcFmt(enum SrcFmtChannels chans);
37 static __inline ALuint FrameSizeFromSrcFmt(enum SrcFmtChannels chans,
38 enum SrcFmtType type)
40 return ChannelsFromSrcFmt(chans) * BytesFromSrcFmt(type);
44 /* Storable formats */
45 enum FmtType {
46 FmtUByte,
47 FmtShort,
48 FmtFloat,
50 enum FmtChannels {
51 FmtMono,
52 FmtStereo,
53 FmtRear,
54 FmtQuad,
55 FmtX51,
56 FmtX61,
57 FmtX71,
60 void DecomposeFormat(ALenum format, enum FmtChannels *chans, enum FmtType *type);
61 ALuint BytesFromFmt(enum FmtType type);
62 ALuint ChannelsFromFmt(enum FmtChannels chans);
63 static __inline ALuint FrameSizeFromFmt(enum FmtChannels chans, enum FmtType type)
65 return ChannelsFromFmt(chans) * BytesFromFmt(type);
69 typedef struct ALbuffer
71 ALvoid *data;
72 ALsizei size;
74 ALsizei Frequency;
75 enum FmtChannels FmtChannels;
76 enum FmtType FmtType;
78 enum SrcFmtChannels OriginalChannels;
79 enum SrcFmtType OriginalType;
80 ALsizei OriginalSize;
81 ALsizei OriginalAlign;
83 ALsizei LoopStart;
84 ALsizei LoopEnd;
86 ALuint refcount; // Number of sources using this buffer (deletion can only occur when this is 0)
88 // Index to itself
89 ALuint buffer;
90 } ALbuffer;
92 ALvoid ReleaseALBuffers(ALCdevice *device);
94 #ifdef __cplusplus
96 #endif
98 #endif