12 UserFmtByte
= AL_BYTE
,
13 UserFmtUByte
= AL_UNSIGNED_BYTE
,
14 UserFmtShort
= AL_SHORT
,
15 UserFmtUShort
= AL_UNSIGNED_SHORT
,
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 */
46 FmtByte
= UserFmtByte
,
47 FmtShort
= UserFmtShort
,
48 FmtFloat
= UserFmtFloat
,
51 FmtMono
= UserFmtMono
,
52 FmtStereo
= UserFmtStereo
,
53 FmtRear
= UserFmtRear
,
54 FmtQuad
= UserFmtQuad
,
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
74 enum FmtChannels FmtChannels
;
77 enum UserFmtChannels OriginalChannels
;
78 enum UserFmtType OriginalType
;
80 ALsizei OriginalAlign
;
85 RefCount ref
; // Number of sources using this buffer (deletion can only occur when this is 0)
93 ALvoid
ReleaseALBuffers(ALCdevice
*device
);