1 #ifndef ALC_DEVFORMAT_H
2 #define ALC_DEVFORMAT_H
36 enum DevFmtType
: ALenum
{
37 DevFmtByte
= ALC_BYTE_SOFT
,
38 DevFmtUByte
= ALC_UNSIGNED_BYTE_SOFT
,
39 DevFmtShort
= ALC_SHORT_SOFT
,
40 DevFmtUShort
= ALC_UNSIGNED_SHORT_SOFT
,
41 DevFmtInt
= ALC_INT_SOFT
,
42 DevFmtUInt
= ALC_UNSIGNED_INT_SOFT
,
43 DevFmtFloat
= ALC_FLOAT_SOFT
,
45 DevFmtTypeDefault
= DevFmtFloat
47 enum DevFmtChannels
: ALenum
{
48 DevFmtMono
= ALC_MONO_SOFT
,
49 DevFmtStereo
= ALC_STEREO_SOFT
,
50 DevFmtQuad
= ALC_QUAD_SOFT
,
51 DevFmtX51
= ALC_5POINT1_SOFT
,
52 DevFmtX61
= ALC_6POINT1_SOFT
,
53 DevFmtX71
= ALC_7POINT1_SOFT
,
54 DevFmtAmbi3D
= ALC_BFORMAT3D_SOFT
,
56 /* Similar to 5.1, except using rear channels instead of sides */
57 DevFmtX51Rear
= 0x70000000,
59 DevFmtChannelsDefault
= DevFmtStereo
61 #define MAX_OUTPUT_CHANNELS 16
63 /* DevFmtType traits, providing the type, etc given a DevFmtType. */
64 template<DevFmtType T
>
65 struct DevFmtTypeTraits
{ };
68 struct DevFmtTypeTraits
<DevFmtByte
> { using Type
= int8_t; };
70 struct DevFmtTypeTraits
<DevFmtUByte
> { using Type
= uint8_t; };
72 struct DevFmtTypeTraits
<DevFmtShort
> { using Type
= int16_t; };
74 struct DevFmtTypeTraits
<DevFmtUShort
> { using Type
= uint16_t; };
76 struct DevFmtTypeTraits
<DevFmtInt
> { using Type
= int32_t; };
78 struct DevFmtTypeTraits
<DevFmtUInt
> { using Type
= uint32_t; };
80 struct DevFmtTypeTraits
<DevFmtFloat
> { using Type
= float; };
83 ALuint
BytesFromDevFmt(DevFmtType type
) noexcept
;
84 ALuint
ChannelsFromDevFmt(DevFmtChannels chans
, ALuint ambiorder
) noexcept
;
85 inline ALuint
FrameSizeFromDevFmt(DevFmtChannels chans
, DevFmtType type
, ALuint ambiorder
) noexcept
86 { return ChannelsFromDevFmt(chans
, ambiorder
) * BytesFromDevFmt(type
); }
88 enum class DevAmbiLayout
: ALenum
{
89 FuMa
= ALC_FUMA_SOFT
, /* FuMa channel order */
90 ACN
= ALC_ACN_SOFT
, /* ACN channel order */
95 enum class DevAmbiScaling
: ALenum
{
96 FuMa
= ALC_FUMA_SOFT
, /* FuMa normalization */
97 SN3D
= ALC_SN3D_SOFT
, /* SN3D normalization */
98 N3D
= ALC_N3D_SOFT
, /* N3D normalization */
103 #endif /* ALC_DEVFORMAT_H */