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 SrcFmtFloat
, /* AL_FLOAT */
17 SrcFmtDouble
, /* AL_DOUBLE */
18 SrcFmtMulaw
, /* AL_MULAW */
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
)
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
);
47 static __inline ALuint
ChannelsFromSrcFmt(enum SrcFmtChannels 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;
61 static __inline ALuint
FrameSizeFromSrcFmt(enum SrcFmtType type
,
62 enum SrcFmtChannels chans
)
64 return BytesFromSrcFmt(type
) * ChannelsFromSrcFmt(chans
);
68 /* Storable formats */
84 void DecomposeFormat(ALenum format
, enum FmtType
*type
, enum FmtChannels
*order
);
86 static __inline ALuint
BytesFromFmt(enum FmtType type
)
90 case FmtUByte
: return sizeof(ALubyte
);
91 case FmtShort
: return sizeof(ALshort
);
92 case FmtFloat
: return sizeof(ALfloat
);
96 static __inline ALuint
ChannelsFromFmt(enum FmtChannels chans
)
100 case FmtMono
: return 1;
101 case FmtStereo
: return 2;
102 case FmtRear
: return 2;
103 case FmtQuad
: return 4;
104 case FmtX51
: return 6;
105 case FmtX61
: return 7;
106 case FmtX71
: return 8;
110 static __inline ALuint
FrameSizeFromFmt(enum FmtType type
, enum FmtChannels chans
)
112 return BytesFromFmt(type
) * ChannelsFromFmt(chans
);
116 typedef struct ALbuffer
122 enum FmtType FmtType
;
123 enum FmtChannels FmtChannels
;
125 ALenum OriginalFormat
;
126 ALsizei OriginalSize
;
127 ALsizei OriginalAlign
;
132 ALuint refcount
; // Number of sources using this buffer (deletion can only occur when this is 0)
138 ALvoid
ReleaseALBuffers(ALCdevice
*device
);