aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--al/buffer.cpp15
-rw-r--r--al/buffer.h10
-rw-r--r--al/source.cpp16
3 files changed, 21 insertions, 20 deletions
diff --git a/al/buffer.cpp b/al/buffer.cpp
index abad6236..de8abeb6 100644
--- a/al/buffer.cpp
+++ b/al/buffer.cpp
@@ -911,8 +911,8 @@ START_API_FUNC
context->setError(AL_INVALID_OPERATION, "Unpacking data into mapped buffer %u", buffer);
else
{
- ALuint num_chans{ChannelsFromFmt(albuf->mFmtChannels)};
- ALuint frame_size{num_chans * BytesFromFmt(albuf->mFmtType)};
+ ALuint num_chans{albuf->channelsFromFmt()};
+ ALuint frame_size{num_chans * albuf->bytesFromFmt()};
ALuint byte_align{
(albuf->OriginalType == UserFmtIMA4) ? ((align-1)/2 + 4) * num_chans :
(albuf->OriginalType == UserFmtMSADPCM) ? ((align-2)/2 + 7) * num_chans :
@@ -1279,16 +1279,15 @@ START_API_FUNC
break;
case AL_BITS:
- *value = static_cast<ALint>(BytesFromFmt(albuf->mFmtType) * 8);
+ *value = static_cast<ALint>(albuf->bytesFromFmt() * 8);
break;
case AL_CHANNELS:
- *value = static_cast<ALint>(ChannelsFromFmt(albuf->mFmtChannels));
+ *value = static_cast<ALint>(albuf->channelsFromFmt());
break;
case AL_SIZE:
- *value = static_cast<ALint>(albuf->SampleLen *
- FrameSizeFromFmt(albuf->mFmtChannels, albuf->mFmtType));
+ *value = static_cast<ALint>(albuf->SampleLen * albuf->frameSizeFromFmt());
break;
case AL_UNPACK_BLOCK_ALIGNMENT_SOFT:
@@ -1377,7 +1376,7 @@ START_API_FUNC
END_API_FUNC
-ALuint BytesFromFmt(FmtType type)
+ALuint BytesFromFmt(FmtType type) noexcept
{
switch(type)
{
@@ -1390,7 +1389,7 @@ ALuint BytesFromFmt(FmtType type)
}
return 0;
}
-ALuint ChannelsFromFmt(FmtChannels chans)
+ALuint ChannelsFromFmt(FmtChannels chans) noexcept
{
switch(chans)
{
diff --git a/al/buffer.h b/al/buffer.h
index ad7aeb35..07012b2d 100644
--- a/al/buffer.h
+++ b/al/buffer.h
@@ -59,10 +59,8 @@ enum FmtChannels : unsigned char {
#define MAX_INPUT_CHANNELS (8)
-ALuint BytesFromFmt(FmtType type);
-ALuint ChannelsFromFmt(FmtChannels chans);
-inline ALuint FrameSizeFromFmt(FmtChannels chans, FmtType type)
-{ return ChannelsFromFmt(chans) * BytesFromFmt(type); }
+ALuint BytesFromFmt(FmtType type) noexcept;
+ALuint ChannelsFromFmt(FmtChannels chans) noexcept;
struct ALbuffer {
@@ -97,6 +95,10 @@ struct ALbuffer {
/* Self ID */
ALuint id{0};
+
+ inline ALuint bytesFromFmt() const noexcept { return BytesFromFmt(mFmtType); }
+ inline ALuint channelsFromFmt() const noexcept { return ChannelsFromFmt(mFmtChannels); }
+ inline ALuint frameSizeFromFmt() const noexcept { return channelsFromFmt() * bytesFromFmt(); }
};
#endif
diff --git a/al/source.cpp b/al/source.cpp
index e81351df..ed94f20b 100644
--- a/al/source.cpp
+++ b/al/source.cpp
@@ -348,7 +348,7 @@ ALdouble GetSourceOffset(ALsource *Source, ALenum name, ALCcontext *context)
{
ALuint FrameBlockSize{BufferFmt->OriginalAlign};
ALuint align{(BufferFmt->OriginalAlign-1)/2 + 4};
- ALuint BlockSize{align * ChannelsFromFmt(BufferFmt->mFmtChannels)};
+ ALuint BlockSize{align * BufferFmt->channelsFromFmt()};
/* Round down to nearest ADPCM block */
offset = static_cast<ALdouble>(readPos / FrameBlockSize * BlockSize);
@@ -357,14 +357,14 @@ ALdouble GetSourceOffset(ALsource *Source, ALenum name, ALCcontext *context)
{
ALuint FrameBlockSize{BufferFmt->OriginalAlign};
ALuint align{(FrameBlockSize-2)/2 + 7};
- ALuint BlockSize{align * ChannelsFromFmt(BufferFmt->mFmtChannels)};
+ ALuint BlockSize{align * BufferFmt->channelsFromFmt()};
/* Round down to nearest ADPCM block */
offset = static_cast<ALdouble>(readPos / FrameBlockSize * BlockSize);
}
else
{
- const ALuint FrameSize{FrameSizeFromFmt(BufferFmt->mFmtChannels, BufferFmt->mFmtType)};
+ const ALuint FrameSize{BufferFmt->frameSizeFromFmt()};
offset = static_cast<ALdouble>(readPos * FrameSize);
}
break;
@@ -416,17 +416,17 @@ al::optional<VoicePos> GetSampleOffset(ALsource *Source)
if(BufferFmt->OriginalType == UserFmtIMA4)
{
const ALuint align{(BufferFmt->OriginalAlign-1)/2 + 4};
- offset /= align * ChannelsFromFmt(BufferFmt->mFmtChannels);
+ offset /= align * BufferFmt->channelsFromFmt();
offset *= BufferFmt->OriginalAlign;
}
else if(BufferFmt->OriginalType == UserFmtMSADPCM)
{
const ALuint align{(BufferFmt->OriginalAlign-2)/2 + 7};
- offset /= align * ChannelsFromFmt(BufferFmt->mFmtChannels);
+ offset /= align * BufferFmt->channelsFromFmt();
offset *= BufferFmt->OriginalAlign;
}
else
- offset /= FrameSizeFromFmt(BufferFmt->mFmtChannels, BufferFmt->mFmtType);
+ offset /= BufferFmt->frameSizeFromFmt();
frac = 0;
break;
@@ -2789,8 +2789,8 @@ START_API_FUNC
ALbuffer *buffer{BufferList->mBuffer};
voice->mFrequency = buffer->Frequency;
voice->mFmtChannels = buffer->mFmtChannels;
- voice->mNumChannels = ChannelsFromFmt(buffer->mFmtChannels);
- voice->mSampleSize = BytesFromFmt(buffer->mFmtType);
+ voice->mNumChannels = buffer->channelsFromFmt();
+ voice->mSampleSize = buffer->bytesFromFmt();
voice->mAmbiLayout = static_cast<AmbiLayout>(buffer->AmbiLayout);
voice->mAmbiScaling = static_cast<AmbiNorm>(buffer->AmbiScaling);
voice->mAmbiOrder = 1;