Rename some stuff for consistency
[openal-soft.git] / OpenAL32 / Include / alBuffer.h
blob1347eebda35b99f37e23d4a0b959fc8d7ffad350
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 SrcFmtFloat, /* AL_FLOAT */
17 SrcFmtDouble, /* AL_DOUBLE */
18 SrcFmtMulaw, /* AL_MULAW */
20 enum SrcFmtChannels {
21 SrcFmtMono, /* AL_MONO */
22 SrcFmtStereo, /* AL_STEREO */
23 SrcFmtRear, /* AL_REAR */
24 SrcFmtQuad, /* AL_QUAD */
25 SrcFmtX51, /* AL_5POINT1 (WFX order) */
26 SrcFmtX61, /* AL_6POINT1 (WFX order) */
27 SrcFmtX71, /* AL_7POINT1 (WFX order) */
30 void DecomposeInputFormat(ALenum format, enum SrcFmtType *type,
31 enum SrcFmtChannels *order);
33 static __inline ALuint BytesFromSrcFmt(enum SrcFmtType type)
35 switch(type)
37 case SrcFmtByte: return sizeof(ALbyte);
38 case SrcFmtUByte: return sizeof(ALubyte);
39 case SrcFmtShort: return sizeof(ALshort);
40 case SrcFmtUShort: return sizeof(ALushort);
41 case SrcFmtFloat: return sizeof(ALfloat);
42 case SrcFmtDouble: return sizeof(ALdouble);
43 case SrcFmtMulaw: return sizeof(ALubyte);
45 return 0;
47 static __inline ALuint ChannelsFromSrcFmt(enum SrcFmtChannels chans)
49 switch(chans)
51 case SrcFmtMono: return 1;
52 case SrcFmtStereo: return 2;
53 case SrcFmtRear: return 2;
54 case SrcFmtQuad: return 4;
55 case SrcFmtX51: return 6;
56 case SrcFmtX61: return 7;
57 case SrcFmtX71: return 8;
59 return 0;
61 static __inline ALuint FrameSizeFromSrcFmt(enum SrcFmtType type,
62 enum SrcFmtChannels chans)
64 return BytesFromSrcFmt(type) * ChannelsFromSrcFmt(chans);
68 /* Storable formats */
69 enum FmtType {
70 FmtUByte,
71 FmtShort,
72 FmtFloat,
73 FmtDouble,
75 enum FmtChannels {
76 FmtMono,
77 FmtStereo,
78 FmtRear,
79 FmtQuad,
80 FmtX51,
81 FmtX61,
82 FmtX71,
85 void DecomposeFormat(ALenum format, enum FmtType *type, enum FmtChannels *order);
87 static __inline ALuint BytesFromFmt(enum FmtType type)
89 switch(type)
91 case FmtUByte: return sizeof(ALubyte);
92 case FmtShort: return sizeof(ALshort);
93 case FmtFloat: return sizeof(ALfloat);
94 case FmtDouble: return sizeof(ALdouble);
96 return 0;
98 static __inline ALuint ChannelsFromFmt(enum FmtChannels chans)
100 switch(chans)
102 case FmtMono: return 1;
103 case FmtStereo: return 2;
104 case FmtRear: return 2;
105 case FmtQuad: return 4;
106 case FmtX51: return 6;
107 case FmtX61: return 7;
108 case FmtX71: return 8;
110 return 0;
112 static __inline ALuint FrameSizeFromFmt(enum FmtType type, enum FmtChannels chans)
114 return BytesFromFmt(type) * ChannelsFromFmt(chans);
118 typedef struct ALbuffer
120 ALvoid *data;
121 ALsizei size;
123 ALsizei Frequency;
124 enum FmtType FmtType;
125 enum FmtChannels FmtChannels;
127 ALenum OriginalFormat;
128 ALsizei OriginalSize;
129 ALsizei OriginalAlign;
131 ALsizei LoopStart;
132 ALsizei LoopEnd;
134 ALuint refcount; // Number of sources using this buffer (deletion can only occur when this is 0)
136 // Index to itself
137 ALuint buffer;
138 } ALbuffer;
140 ALvoid ReleaseALBuffers(ALCdevice *device);
142 #ifdef __cplusplus
144 #endif
146 #endif