Move ConeScale and ZScale to ALu.c and alu.h, and make them floats
[openal-soft/android.git] / OpenAL32 / Include / alBuffer.h
blob9393a6e69759a4ae3e4ba50f40802569d106111d
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,
13 UserFmtUByte = AL_UNSIGNED_BYTE,
14 UserFmtShort = AL_SHORT,
15 UserFmtUShort = AL_UNSIGNED_SHORT,
16 UserFmtInt = AL_INT,
17 UserFmtUInt = AL_UNSIGNED_INT,
18 UserFmtFloat = AL_FLOAT,
19 UserFmtDouble = AL_DOUBLE,
20 UserFmtMulaw = AL_MULAW,
21 UserFmtIMA4 = AL_IMA4,
22 UserFmtByte3 = AL_BYTE3,
23 UserFmtUByte3 = AL_UNSIGNED_BYTE3,
25 enum UserFmtChannels {
26 UserFmtMono = AL_MONO,
27 UserFmtStereo = AL_STEREO,
28 UserFmtRear = AL_REAR,
29 UserFmtQuad = AL_QUAD,
30 UserFmtX51 = AL_5POINT1, /* (WFX order) */
31 UserFmtX61 = AL_6POINT1, /* (WFX order) */
32 UserFmtX71 = AL_7POINT1 /* (WFX order) */
35 ALuint BytesFromUserFmt(enum UserFmtType type);
36 ALuint ChannelsFromUserFmt(enum UserFmtChannels chans);
37 static __inline ALuint FrameSizeFromUserFmt(enum UserFmtChannels chans,
38 enum UserFmtType type)
40 return ChannelsFromUserFmt(chans) * BytesFromUserFmt(type);
44 /* Storable formats */
45 enum FmtType {
46 FmtByte = UserFmtByte,
47 FmtShort = UserFmtShort,
48 FmtFloat = UserFmtFloat,
50 enum FmtChannels {
51 FmtMono = UserFmtMono,
52 FmtStereo = UserFmtStereo,
53 FmtRear = UserFmtRear,
54 FmtQuad = UserFmtQuad,
55 FmtX51 = UserFmtX51,
56 FmtX61 = UserFmtX61,
57 FmtX71 = UserFmtX71,
60 ALuint BytesFromFmt(enum FmtType type);
61 ALuint ChannelsFromFmt(enum FmtChannels chans);
62 static __inline ALuint FrameSizeFromFmt(enum FmtChannels chans, enum FmtType type)
64 return ChannelsFromFmt(chans) * BytesFromFmt(type);
68 typedef struct ALbuffer
70 ALvoid *data;
71 ALsizei size;
73 ALsizei Frequency;
74 enum FmtChannels FmtChannels;
75 enum FmtType FmtType;
77 enum UserFmtChannels OriginalChannels;
78 enum UserFmtType OriginalType;
79 ALsizei OriginalSize;
80 ALsizei OriginalAlign;
82 ALsizei LoopStart;
83 ALsizei LoopEnd;
85 RefCount ref; // Number of sources using this buffer (deletion can only occur when this is 0)
87 RWLock lock;
89 // Index to itself
90 ALuint buffer;
91 } ALbuffer;
93 ALvoid ReleaseALBuffers(ALCdevice *device);
95 #ifdef __cplusplus
97 #endif
99 #endif