diff options
-rw-r--r-- | al/buffer.cpp | 15 | ||||
-rw-r--r-- | al/buffer.h | 10 | ||||
-rw-r--r-- | al/source.cpp | 16 |
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; |