Avoid using some more AL types
This commit is contained in:
parent
2deb5e47d1
commit
aff410fa6d
@ -116,7 +116,7 @@ void DecodeIMA4Block(int16_t *dst, const al::byte *src, size_t numchans, size_t
|
||||
index[c] = clampi((index[c]^0x8000) - 32768, 0, 88);
|
||||
src += 2;
|
||||
|
||||
*(dst++) = static_cast<ALshort>(sample[c]);
|
||||
*(dst++) = static_cast<int16_t>(sample[c]);
|
||||
}
|
||||
|
||||
for(size_t i{1};i < align;i++)
|
||||
@ -142,14 +142,14 @@ void DecodeIMA4Block(int16_t *dst, const al::byte *src, size_t numchans, size_t
|
||||
index[c] += IMA4Index_adjust[nibble];
|
||||
index[c] = clampi(index[c], 0, 88);
|
||||
|
||||
*(dst++) = static_cast<ALshort>(sample[c]);
|
||||
*(dst++) = static_cast<int16_t>(sample[c]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void DecodeMSADPCMBlock(int16_t *dst, const al::byte *src, size_t numchans, size_t align)
|
||||
{
|
||||
ALubyte blockpred[MaxAdpcmChannels]{};
|
||||
uint8_t blockpred[MaxAdpcmChannels]{};
|
||||
int delta[MaxAdpcmChannels]{};
|
||||
int16_t samples[MaxAdpcmChannels][2]{};
|
||||
|
||||
@ -211,7 +211,7 @@ void DecodeMSADPCMBlock(int16_t *dst, const al::byte *src, size_t numchans, size
|
||||
}
|
||||
}
|
||||
|
||||
void Convert_ALshort_ALima4(int16_t *dst, const al::byte *src, size_t numchans, size_t len,
|
||||
void Convert_int16_ima4(int16_t *dst, const al::byte *src, size_t numchans, size_t len,
|
||||
size_t align)
|
||||
{
|
||||
assert(numchans <= MaxAdpcmChannels);
|
||||
@ -226,7 +226,7 @@ void Convert_ALshort_ALima4(int16_t *dst, const al::byte *src, size_t numchans,
|
||||
}
|
||||
}
|
||||
|
||||
void Convert_ALshort_ALmsadpcm(int16_t *dst, const al::byte *src, size_t numchans, size_t len,
|
||||
void Convert_int16_msadpcm(int16_t *dst, const al::byte *src, size_t numchans, size_t len,
|
||||
size_t align)
|
||||
{
|
||||
assert(numchans <= MaxAdpcmChannels);
|
||||
@ -246,12 +246,12 @@ ALuint BytesFromUserFmt(UserFmtType type) noexcept
|
||||
{
|
||||
switch(type)
|
||||
{
|
||||
case UserFmtUByte: return sizeof(ALubyte);
|
||||
case UserFmtShort: return sizeof(ALshort);
|
||||
case UserFmtFloat: return sizeof(ALfloat);
|
||||
case UserFmtDouble: return sizeof(ALdouble);
|
||||
case UserFmtMulaw: return sizeof(ALubyte);
|
||||
case UserFmtAlaw: return sizeof(ALubyte);
|
||||
case UserFmtUByte: return sizeof(uint8_t);
|
||||
case UserFmtShort: return sizeof(int16_t);
|
||||
case UserFmtFloat: return sizeof(float);
|
||||
case UserFmtDouble: return sizeof(double);
|
||||
case UserFmtMulaw: return sizeof(uint8_t);
|
||||
case UserFmtAlaw: return sizeof(uint8_t);
|
||||
case UserFmtIMA4: break; /* not handled here */
|
||||
case UserFmtMSADPCM: break; /* not handled here */
|
||||
}
|
||||
@ -523,16 +523,16 @@ void LoadData(ALCcontext *context, ALbuffer *ALBuf, ALsizei freq, ALuint size,
|
||||
{
|
||||
assert(DstType == FmtShort);
|
||||
if(SrcData != nullptr && !ALBuf->mData.empty())
|
||||
Convert_ALshort_ALima4(reinterpret_cast<int16_t*>(ALBuf->mData.data()),
|
||||
SrcData, NumChannels, frames, align);
|
||||
Convert_int16_ima4(reinterpret_cast<int16_t*>(ALBuf->mData.data()), SrcData,
|
||||
NumChannels, frames, align);
|
||||
ALBuf->OriginalAlign = align;
|
||||
}
|
||||
else if(SrcType == UserFmtMSADPCM)
|
||||
{
|
||||
assert(DstType == FmtShort);
|
||||
if(SrcData != nullptr && !ALBuf->mData.empty())
|
||||
Convert_ALshort_ALmsadpcm(reinterpret_cast<int16_t*>(ALBuf->mData.data()),
|
||||
SrcData, NumChannels, frames, align);
|
||||
Convert_int16_msadpcm(reinterpret_cast<int16_t*>(ALBuf->mData.data()), SrcData,
|
||||
NumChannels, frames, align);
|
||||
ALBuf->OriginalAlign = align;
|
||||
}
|
||||
else
|
||||
@ -1019,10 +1019,10 @@ START_API_FUNC
|
||||
|
||||
void *dst = albuf->mData.data() + byteoff;
|
||||
if(usrfmt->type == UserFmtIMA4 && albuf->mFmtType == FmtShort)
|
||||
Convert_ALshort_ALima4(static_cast<ALshort*>(dst),
|
||||
static_cast<const al::byte*>(data), num_chans, samplen, align);
|
||||
Convert_int16_ima4(static_cast<int16_t*>(dst), static_cast<const al::byte*>(data),
|
||||
num_chans, samplen, align);
|
||||
else if(usrfmt->type == UserFmtMSADPCM && albuf->mFmtType == FmtShort)
|
||||
Convert_ALshort_ALmsadpcm(static_cast<ALshort*>(dst),
|
||||
Convert_int16_msadpcm(static_cast<int16_t*>(dst),
|
||||
static_cast<const al::byte*>(data), num_chans, samplen, align);
|
||||
else
|
||||
{
|
||||
@ -1581,12 +1581,12 @@ ALuint BytesFromFmt(FmtType type) noexcept
|
||||
{
|
||||
switch(type)
|
||||
{
|
||||
case FmtUByte: return sizeof(ALubyte);
|
||||
case FmtShort: return sizeof(ALshort);
|
||||
case FmtFloat: return sizeof(ALfloat);
|
||||
case FmtDouble: return sizeof(ALdouble);
|
||||
case FmtMulaw: return sizeof(ALubyte);
|
||||
case FmtAlaw: return sizeof(ALubyte);
|
||||
case FmtUByte: return sizeof(uint8_t);
|
||||
case FmtShort: return sizeof(int16_t);
|
||||
case FmtFloat: return sizeof(float);
|
||||
case FmtDouble: return sizeof(double);
|
||||
case FmtMulaw: return sizeof(uint8_t);
|
||||
case FmtAlaw: return sizeof(uint8_t);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
14
alc/alc.cpp
14
alc/alc.cpp
@ -1317,13 +1317,13 @@ ALuint BytesFromDevFmt(DevFmtType type) noexcept
|
||||
{
|
||||
switch(type)
|
||||
{
|
||||
case DevFmtByte: return sizeof(ALCbyte);
|
||||
case DevFmtUByte: return sizeof(ALCubyte);
|
||||
case DevFmtShort: return sizeof(ALCshort);
|
||||
case DevFmtUShort: return sizeof(ALCushort);
|
||||
case DevFmtInt: return sizeof(ALCint);
|
||||
case DevFmtUInt: return sizeof(ALCuint);
|
||||
case DevFmtFloat: return sizeof(ALCfloat);
|
||||
case DevFmtByte: return sizeof(int8_t);
|
||||
case DevFmtUByte: return sizeof(uint8_t);
|
||||
case DevFmtShort: return sizeof(int16_t);
|
||||
case DevFmtUShort: return sizeof(uint16_t);
|
||||
case DevFmtInt: return sizeof(int32_t);
|
||||
case DevFmtUInt: return sizeof(uint32_t);
|
||||
case DevFmtFloat: return sizeof(float);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
@ -184,7 +184,7 @@ namespace {
|
||||
|
||||
/* A quick'n'dirty lookup table to decode a muLaw-encoded byte sample into a
|
||||
* signed 16-bit sample */
|
||||
constexpr ALshort muLawDecompressionTable[256] = {
|
||||
constexpr int16_t muLawDecompressionTable[256] = {
|
||||
-32124,-31100,-30076,-29052,-28028,-27004,-25980,-24956,
|
||||
-23932,-22908,-21884,-20860,-19836,-18812,-17788,-16764,
|
||||
-15996,-15484,-14972,-14460,-13948,-13436,-12924,-12412,
|
||||
@ -221,7 +221,7 @@ constexpr ALshort muLawDecompressionTable[256] = {
|
||||
|
||||
/* A quick'n'dirty lookup table to decode an aLaw-encoded byte sample into a
|
||||
* signed 16-bit sample */
|
||||
constexpr ALshort aLawDecompressionTable[256] = {
|
||||
constexpr int16_t aLawDecompressionTable[256] = {
|
||||
-5504, -5248, -6016, -5760, -4480, -4224, -4992, -4736,
|
||||
-7552, -7296, -8064, -7808, -6528, -6272, -7040, -6784,
|
||||
-2752, -2624, -3008, -2880, -2240, -2112, -2496, -2368,
|
||||
@ -261,35 +261,35 @@ struct FmtTypeTraits { };
|
||||
|
||||
template<>
|
||||
struct FmtTypeTraits<FmtUByte> {
|
||||
using Type = ALubyte;
|
||||
using Type = uint8_t;
|
||||
static constexpr inline float to_float(const Type val) noexcept
|
||||
{ return val*(1.0f/128.0f) - 1.0f; }
|
||||
};
|
||||
template<>
|
||||
struct FmtTypeTraits<FmtShort> {
|
||||
using Type = ALshort;
|
||||
using Type = int16_t;
|
||||
static constexpr inline float to_float(const Type val) noexcept { return val*(1.0f/32768.0f); }
|
||||
};
|
||||
template<>
|
||||
struct FmtTypeTraits<FmtFloat> {
|
||||
using Type = ALfloat;
|
||||
using Type = float;
|
||||
static constexpr inline float to_float(const Type val) noexcept { return val; }
|
||||
};
|
||||
template<>
|
||||
struct FmtTypeTraits<FmtDouble> {
|
||||
using Type = ALdouble;
|
||||
using Type = double;
|
||||
static constexpr inline float to_float(const Type val) noexcept
|
||||
{ return static_cast<float>(val); }
|
||||
};
|
||||
template<>
|
||||
struct FmtTypeTraits<FmtMulaw> {
|
||||
using Type = ALubyte;
|
||||
using Type = uint8_t;
|
||||
static constexpr inline float to_float(const Type val) noexcept
|
||||
{ return muLawDecompressionTable[val] * (1.0f/32768.0f); }
|
||||
};
|
||||
template<>
|
||||
struct FmtTypeTraits<FmtAlaw> {
|
||||
using Type = ALubyte;
|
||||
using Type = uint8_t;
|
||||
static constexpr inline float to_float(const Type val) noexcept
|
||||
{ return aLawDecompressionTable[val] * (1.0f/32768.0f); }
|
||||
};
|
||||
|
Loading…
x
Reference in New Issue
Block a user