| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121 |
- #ifndef ALC_DEVFORMAT_H
- #define ALC_DEVFORMAT_H
- #include <cstdint>
- #include "AL/al.h"
- #include "AL/alext.h"
- #include "inprogext.h"
- enum Channel {
- FrontLeft = 0,
- FrontRight,
- FrontCenter,
- LFE,
- BackLeft,
- BackRight,
- BackCenter,
- SideLeft,
- SideRight,
- UpperFrontLeft,
- UpperFrontRight,
- UpperBackLeft,
- UpperBackRight,
- LowerFrontLeft,
- LowerFrontRight,
- LowerBackLeft,
- LowerBackRight,
- Aux0,
- Aux1,
- Aux2,
- Aux3,
- Aux4,
- Aux5,
- Aux6,
- Aux7,
- Aux8,
- Aux9,
- Aux10,
- Aux11,
- Aux12,
- Aux13,
- Aux14,
- Aux15,
- MaxChannels
- };
- /* Device formats */
- enum DevFmtType : ALenum {
- DevFmtByte = ALC_BYTE_SOFT,
- DevFmtUByte = ALC_UNSIGNED_BYTE_SOFT,
- DevFmtShort = ALC_SHORT_SOFT,
- DevFmtUShort = ALC_UNSIGNED_SHORT_SOFT,
- DevFmtInt = ALC_INT_SOFT,
- DevFmtUInt = ALC_UNSIGNED_INT_SOFT,
- DevFmtFloat = ALC_FLOAT_SOFT,
- DevFmtTypeDefault = DevFmtFloat
- };
- enum DevFmtChannels : ALenum {
- DevFmtMono = ALC_MONO_SOFT,
- DevFmtStereo = ALC_STEREO_SOFT,
- DevFmtQuad = ALC_QUAD_SOFT,
- DevFmtX51 = ALC_5POINT1_SOFT,
- DevFmtX61 = ALC_6POINT1_SOFT,
- DevFmtX71 = ALC_7POINT1_SOFT,
- DevFmtAmbi3D = ALC_BFORMAT3D_SOFT,
- /* Similar to 5.1, except using rear channels instead of sides */
- DevFmtX51Rear = 0x70000000,
- DevFmtChannelsDefault = DevFmtStereo
- };
- #define MAX_OUTPUT_CHANNELS (16)
- /* DevFmtType traits, providing the type, etc given a DevFmtType. */
- template<DevFmtType T>
- struct DevFmtTypeTraits { };
- template<>
- struct DevFmtTypeTraits<DevFmtByte> { using Type = int8_t; };
- template<>
- struct DevFmtTypeTraits<DevFmtUByte> { using Type = uint8_t; };
- template<>
- struct DevFmtTypeTraits<DevFmtShort> { using Type = int16_t; };
- template<>
- struct DevFmtTypeTraits<DevFmtUShort> { using Type = uint16_t; };
- template<>
- struct DevFmtTypeTraits<DevFmtInt> { using Type = int32_t; };
- template<>
- struct DevFmtTypeTraits<DevFmtUInt> { using Type = uint32_t; };
- template<>
- struct DevFmtTypeTraits<DevFmtFloat> { using Type = float; };
- ALuint BytesFromDevFmt(DevFmtType type) noexcept;
- ALuint ChannelsFromDevFmt(DevFmtChannels chans, ALuint ambiorder) noexcept;
- inline ALuint FrameSizeFromDevFmt(DevFmtChannels chans, DevFmtType type, ALuint ambiorder) noexcept
- { return ChannelsFromDevFmt(chans, ambiorder) * BytesFromDevFmt(type); }
- enum class AmbiLayout {
- FuMa = ALC_FUMA_SOFT, /* FuMa channel order */
- ACN = ALC_ACN_SOFT, /* ACN channel order */
- Default = ACN
- };
- enum class AmbiNorm {
- FuMa = ALC_FUMA_SOFT, /* FuMa normalization */
- SN3D = ALC_SN3D_SOFT, /* SN3D normalization */
- N3D = ALC_N3D_SOFT, /* N3D normalization */
- Default = SN3D
- };
- #endif /* ALC_DEVFORMAT_H */
|