Silence a couple MSVC warnings
[openal-soft.git] / OpenAL32 / Include / alBuffer.h
blobd7f4206abd35543dc072e674662ecfda5e6e24e3
1 #ifndef _AL_BUFFER_H_
2 #define _AL_BUFFER_H_
4 #include "AL/al.h"
6 #ifdef __cplusplus
7 extern "C" {
8 #endif
10 /* User formats */
11 enum UserFmtType {
12 UserFmtByte = AL_BYTE_SOFT,
13 UserFmtUByte = AL_UNSIGNED_BYTE_SOFT,
14 UserFmtShort = AL_SHORT_SOFT,
15 UserFmtUShort = AL_UNSIGNED_SHORT_SOFT,
16 UserFmtInt = AL_INT_SOFT,
17 UserFmtUInt = AL_UNSIGNED_INT_SOFT,
18 UserFmtFloat = AL_FLOAT_SOFT,
19 UserFmtDouble = AL_DOUBLE_SOFT,
20 UserFmtByte3 = AL_BYTE3_SOFT,
21 UserFmtUByte3 = AL_UNSIGNED_BYTE3_SOFT,
22 UserFmtMulaw,
23 UserFmtAlaw,
24 UserFmtIMA4,
26 enum UserFmtChannels {
27 UserFmtMono = AL_MONO_SOFT,
28 UserFmtStereo = AL_STEREO_SOFT,
29 UserFmtRear = AL_REAR_SOFT,
30 UserFmtQuad = AL_QUAD_SOFT,
31 UserFmtX51 = AL_5POINT1_SOFT, /* (WFX order) */
32 UserFmtX61 = AL_6POINT1_SOFT, /* (WFX order) */
33 UserFmtX71 = AL_7POINT1_SOFT, /* (WFX order) */
36 ALuint BytesFromUserFmt(enum UserFmtType type);
37 ALuint ChannelsFromUserFmt(enum UserFmtChannels chans);
38 static __inline ALuint FrameSizeFromUserFmt(enum UserFmtChannels chans,
39 enum UserFmtType type)
41 return ChannelsFromUserFmt(chans) * BytesFromUserFmt(type);
45 /* Storable formats */
46 enum FmtType {
47 FmtByte = UserFmtByte,
48 FmtShort = UserFmtShort,
49 FmtFloat = UserFmtFloat,
51 enum FmtChannels {
52 FmtMono = UserFmtMono,
53 FmtStereo = UserFmtStereo,
54 FmtRear = UserFmtRear,
55 FmtQuad = UserFmtQuad,
56 FmtX51 = UserFmtX51,
57 FmtX61 = UserFmtX61,
58 FmtX71 = UserFmtX71,
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;
73 ALsizei Frequency;
74 ALenum Format;
75 ALsizei SampleLen;
77 enum FmtChannels FmtChannels;
78 enum FmtType FmtType;
80 enum UserFmtChannels OriginalChannels;
81 enum UserFmtType OriginalType;
82 ALsizei OriginalSize;
84 ALsizei LoopStart;
85 ALsizei LoopEnd;
87 /* Number of times buffer was attached to a source (deletion can only occur when 0) */
88 RefCount ref;
90 RWLock lock;
92 /* Self ID */
93 ALuint id;
94 } ALbuffer;
96 ALvoid ReleaseALBuffers(ALCdevice *device);
98 #ifdef __cplusplus
100 #endif
102 #endif