10 /* Input formats (some are currently theoretical) */
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 */
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
,
40 return ChannelsFromSrcFmt(chans
) * BytesFromSrcFmt(type
);
44 /* Storable formats */
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
75 enum FmtChannels FmtChannels
;
78 enum SrcFmtChannels OriginalChannels
;
79 enum SrcFmtType OriginalType
;
81 ALsizei OriginalAlign
;
86 ALuint refcount
; // Number of sources using this buffer (deletion can only occur when this is 0)
92 ALvoid
ReleaseALBuffers(ALCdevice
*device
);