aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--al/source.cpp6
-rw-r--r--alc/alc.cpp34
-rw-r--r--alc/alu.cpp10
-rw-r--r--alc/backends/alsa.cpp2
-rw-r--r--alc/backends/coreaudio.cpp17
-rw-r--r--alc/backends/opensl.cpp6
-rw-r--r--alc/backends/pulseaudio.cpp2
-rw-r--r--alc/bs2b.cpp4
-rw-r--r--alc/converter.cpp2
-rw-r--r--alc/effects/autowah.cpp9
-rw-r--r--alc/effects/chorus.cpp32
-rw-r--r--alc/effects/echo.cpp6
-rw-r--r--alc/effects/fshifter.cpp3
-rw-r--r--alc/effects/modulator.cpp2
-rw-r--r--alc/effects/pshifter.cpp19
-rw-r--r--alc/effects/vmorpher.cpp14
-rw-r--r--alc/hrtf.cpp49
-rw-r--r--alc/mastering.cpp3
-rw-r--r--alc/mastering.h3
-rw-r--r--alc/mixer/mixer_c.cpp9
-rw-r--r--alc/mixer/mixer_neon.cpp13
-rw-r--r--alc/mixer/mixer_sse.cpp7
-rw-r--r--alc/mixer/mixer_sse2.cpp2
-rw-r--r--alc/mixer/mixer_sse41.cpp2
-rw-r--r--alc/mixvoice.cpp18
-rw-r--r--common/almalloc.cpp6
-rw-r--r--examples/alrecord.c5
-rw-r--r--examples/altonegen.c2
-rw-r--r--examples/common/alhelpers.c4
29 files changed, 156 insertions, 135 deletions
diff --git a/al/source.cpp b/al/source.cpp
index 478ee3d2..733758f7 100644
--- a/al/source.cpp
+++ b/al/source.cpp
@@ -310,8 +310,8 @@ ALdouble GetSourceOffset(ALsource *Source, ALenum name, ALCcontext *context)
const ALbufferlistitem *BufferList{Source->queue};
const ALbuffer *BufferFmt{nullptr};
- ALboolean readFin{AL_FALSE};
ALuint totalBufferLen{0u};
+ bool readFin{false};
while(BufferList)
{
@@ -1662,7 +1662,7 @@ bool GetSourcedv(ALsource *Source, ALCcontext *Context, SourceProp prop, const a
case AL_SEC_OFFSET_CLOCK_SOFT:
CHECKSIZE(values, 2);
values[0] = GetSourceSecOffset(Source, Context, &srcclock);
- values[1] = srcclock.count() / 1000000000.0;
+ values[1] = static_cast<ALdouble>(srcclock.count()) / 1000000000.0;
return true;
case AL_POSITION:
@@ -2851,7 +2851,7 @@ START_API_FUNC
if(device->AvgSpeakerDist > 0.0f)
{
const ALfloat w1{SPEEDOFSOUNDMETRESPERSEC /
- (device->AvgSpeakerDist * device->Frequency)};
+ (device->AvgSpeakerDist * static_cast<float>(device->Frequency))};
auto init_nfc = [w1](ALvoice::ChannelData &chandata) -> void
{ chandata.mDryParams.NFCtrlFilter.init(w1); };
std::for_each(voice->mChans.begin(), voice->mChans.begin()+voice->mNumChannels,
diff --git a/alc/alc.cpp b/alc/alc.cpp
index 408b3ca3..8e9d3963 100644
--- a/alc/alc.cpp
+++ b/alc/alc.cpp
@@ -1587,9 +1587,9 @@ static void alcSetError(ALCdevice *device, ALCenum errorCode)
static std::unique_ptr<Compressor> CreateDeviceLimiter(const ALCdevice *device, const ALfloat threshold)
{
- return CompressorInit(static_cast<ALuint>(device->RealOut.Buffer.size()), device->Frequency,
- AL_TRUE, AL_TRUE, AL_TRUE, AL_TRUE, AL_TRUE, 0.001f, 0.002f, 0.0f, 0.0f, threshold,
- INFINITY, 0.0f, 0.020f, 0.200f);
+ return CompressorInit(static_cast<ALuint>(device->RealOut.Buffer.size()),
+ static_cast<float>(device->Frequency), AL_TRUE, AL_TRUE, AL_TRUE, AL_TRUE, AL_TRUE, 0.001f,
+ 0.002f, 0.0f, 0.0f, threshold, INFINITY, 0.0f, 0.020f, 0.200f);
}
/* UpdateClockBase
@@ -2145,17 +2145,21 @@ static ALCenum UpdateDeviceParams(ALCdevice *device, const ALCint *attrList)
if(old_sends != device->NumAuxSends)
{
- if(source->Send.size() > static_cast<ALuint>(device->NumAuxSends))
- std::for_each(source->Send.begin()+device->NumAuxSends, source->Send.end(),
- [](ALsource::SendData &send) -> void
- {
- if(send.Slot)
- DecrementRef(send.Slot->ref);
- send.Slot = nullptr;
- });
-
- source->Send.resize(static_cast<ALuint>(device->NumAuxSends),
- ALsource::SendData{nullptr, 1.0f, 1.0f, LOWPASSFREQREF, 1.0f, HIGHPASSFREQREF});
+ if(source->Send.size() > device->NumAuxSends)
+ {
+ auto clear_send = [](ALsource::SendData &send) -> void
+ {
+ if(send.Slot)
+ DecrementRef(send.Slot->ref);
+ send.Slot = nullptr;
+ };
+ auto send_begin = source->Send.begin() +
+ static_cast<ptrdiff_t>(device->NumAuxSends);
+ std::for_each(send_begin, source->Send.end(), clear_send);
+ }
+
+ source->Send.resize(device->NumAuxSends,
+ {nullptr, 1.0f, 1.0f, LOWPASSFREQREF, 1.0f, HIGHPASSFREQREF});
source->Send.shrink_to_fit();
}
@@ -2209,7 +2213,7 @@ static ALCenum UpdateDeviceParams(ALCdevice *device, const ALCint *attrList)
{
/* Reinitialize the NFC filters for new parameters. */
const ALfloat w1{SPEEDOFSOUNDMETRESPERSEC /
- (device->AvgSpeakerDist * device->Frequency)};
+ (device->AvgSpeakerDist * static_cast<float>(device->Frequency))};
auto init_nfc = [w1](ALvoice::ChannelData &chandata) -> void
{ chandata.mDryParams.NFCtrlFilter.init(w1); };
std::for_each(voice.mChans.begin(), voice.mChans.begin()+voice.mNumChannels,
diff --git a/alc/alu.cpp b/alc/alu.cpp
index 0def577e..d7acf8d3 100644
--- a/alc/alu.cpp
+++ b/alc/alu.cpp
@@ -201,19 +201,19 @@ void ALCdevice::ProcessBs2b(const size_t SamplesToDo)
*/
void BsincPrepare(const ALuint increment, BsincState *state, const BSincTable *table)
{
- ALsizei si{BSINC_SCALE_COUNT - 1};
- ALfloat sf{0.0f};
+ size_t si{BSINC_SCALE_COUNT - 1};
+ float sf{0.0f};
if(increment > FRACTIONONE)
{
- sf = static_cast<ALfloat>FRACTIONONE / increment;
+ sf = FRACTIONONE / static_cast<float>(increment);
sf = maxf(0.0f, (BSINC_SCALE_COUNT-1) * (sf-table->scaleBase) * table->scaleRange);
- si = float2int(sf);
+ si = float2uint(sf);
/* The interpolation factor is fit to this diagonally-symmetric curve
* to reduce the transition ripple caused by interpolating different
* scales of the sinc function.
*/
- sf = 1.0f - std::cos(std::asin(sf - si));
+ sf = 1.0f - std::cos(std::asin(sf - static_cast<float>(si)));
}
state->sf = sf;
diff --git a/alc/backends/alsa.cpp b/alc/backends/alsa.cpp
index cd85afaf..b797c768 100644
--- a/alc/backends/alsa.cpp
+++ b/alc/backends/alsa.cpp
@@ -1112,7 +1112,7 @@ ALCenum AlsaCapture::captureSamples(ALCvoid *buffer, ALCuint samples)
}
buffer = static_cast<al::byte*>(buffer) + amt;
- samples -= amt;
+ samples -= static_cast<ALCuint>(amt);
}
if(samples > 0)
std::fill_n(static_cast<al::byte*>(buffer), snd_pcm_frames_to_bytes(mPcmHandle, samples),
diff --git a/alc/backends/coreaudio.cpp b/alc/backends/coreaudio.cpp
index 39f6241a..99b06b7a 100644
--- a/alc/backends/coreaudio.cpp
+++ b/alc/backends/coreaudio.cpp
@@ -177,7 +177,7 @@ ALCboolean CoreAudioPlayback::reset()
{
mDevice->BufferSize = static_cast<ALuint>(uint64_t{mDevice->BufferSize} *
streamFormat.mSampleRate / mDevice->Frequency);
- mDevice->Frequency = streamFormat.mSampleRate;
+ mDevice->Frequency = static_cast<ALuint>(streamFormat.mSampleRate);
}
/* FIXME: How to tell what channels are what in the output device, and how
@@ -357,7 +357,8 @@ OSStatus CoreAudioCapture::RecordProc(AudioUnitRenderActionFlags*,
} audiobuf = { { 0 } };
auto rec_vec = mRing->getWriteVector();
- inNumberFrames = minz(inNumberFrames, rec_vec.first.len+rec_vec.second.len);
+ inNumberFrames = static_cast<UInt32>(minz(inNumberFrames,
+ rec_vec.first.len+rec_vec.second.len));
// Fill the ringbuffer's two segments with data from the input device
if(rec_vec.first.len >= inNumberFrames)
@@ -369,7 +370,7 @@ OSStatus CoreAudioCapture::RecordProc(AudioUnitRenderActionFlags*,
}
else
{
- const size_t remaining{inNumberFrames-rec_vec.first.len};
+ const auto remaining = static_cast<ALuint>(inNumberFrames - rec_vec.first.len);
audiobuf.list.mNumberBuffers = 2;
audiobuf.list.mBuffers[0].mNumberChannels = mFormat.mChannelsPerFrame;
audiobuf.list.mBuffers[0].mData = rec_vec.first.buf;
@@ -594,7 +595,7 @@ ALCenum CoreAudioCapture::open(const ALCchar *name)
// Set the AudioUnit output format frame count
uint64_t FrameCount64{mDevice->UpdateSize};
- FrameCount64 = (FrameCount64*outputFormat.mSampleRate + mDevice->Frequency-1) /
+ FrameCount64 = static_cast<uint64_t>(FrameCount64*outputFormat.mSampleRate + mDevice->Frequency-1) /
mDevice->Frequency;
FrameCount64 += MAX_RESAMPLE_PADDING*2;
if(FrameCount64 > std::numeric_limits<uint32_t>::max()/2)
@@ -615,8 +616,8 @@ ALCenum CoreAudioCapture::open(const ALCchar *name)
// Set up sample converter if needed
if(outputFormat.mSampleRate != mDevice->Frequency)
mConverter = CreateSampleConverter(mDevice->FmtType, mDevice->FmtType,
- mFormat.mChannelsPerFrame, hardwareFormat.mSampleRate, mDevice->Frequency,
- BSinc24Resampler);
+ mFormat.mChannelsPerFrame, static_cast<ALuint>(hardwareFormat.mSampleRate),
+ mDevice->Frequency, BSinc24Resampler);
mRing = CreateRingBuffer(outputFrameCount, mFrameSize, false);
if(!mRing) return ALC_INVALID_VALUE;
@@ -671,8 +672,8 @@ ALCenum CoreAudioCapture::captureSamples(void *buffer, ALCuint samples)
ALCuint CoreAudioCapture::availableSamples()
{
- if(!mConverter) return mRing->readSpace();
- return mConverter->availableOut(mRing->readSpace());
+ if(!mConverter) return static_cast<ALCuint>(mRing->readSpace());
+ return mConverter->availableOut(static_cast<ALCuint>(mRing->readSpace()));
}
} // namespace
diff --git a/alc/backends/opensl.cpp b/alc/backends/opensl.cpp
index 3ec2177f..06d5cd40 100644
--- a/alc/backends/opensl.cpp
+++ b/alc/backends/opensl.cpp
@@ -170,7 +170,7 @@ struct OpenSLPlayback final : public BackendBase {
RingBufferPtr mRing{nullptr};
al::semaphore mSem;
- ALsizei mFrameSize{0};
+ ALuint mFrameSize{0};
std::atomic<bool> mKillNow{true};
std::thread mThread;
@@ -630,7 +630,7 @@ struct OpenSLCapture final : public BackendBase {
RingBufferPtr mRing{nullptr};
ALCuint mSplOffset{0u};
- ALsizei mFrameSize{0};
+ ALuint mFrameSize{0};
DEF_NEWDEL(OpenSLCapture)
};
@@ -851,7 +851,7 @@ void OpenSLCapture::stop()
ALCenum OpenSLCapture::captureSamples(void *buffer, ALCuint samples)
{
- ALsizei chunk_size = mDevice->UpdateSize * mFrameSize;
+ ALuint chunk_size{mDevice->UpdateSize * mFrameSize};
SLAndroidSimpleBufferQueueItf bufferQueue;
SLresult result;
ALCuint i;
diff --git a/alc/backends/pulseaudio.cpp b/alc/backends/pulseaudio.cpp
index 08420748..30c13a69 100644
--- a/alc/backends/pulseaudio.cpp
+++ b/alc/backends/pulseaudio.cpp
@@ -1324,7 +1324,7 @@ ALCenum PulseCapture::captureSamples(ALCvoid *buffer, ALCuint samples)
/* Capture is done in fragment-sized chunks, so we loop until we get all
* that's available */
- mLastReadable -= dstbuf.size();
+ mLastReadable -= static_cast<ALCuint>(dstbuf.size());
std::lock_guard<std::mutex> _{pulse_lock};
while(!dstbuf.empty())
{
diff --git a/alc/bs2b.cpp b/alc/bs2b.cpp
index fb75188c..00207bc0 100644
--- a/alc/bs2b.cpp
+++ b/alc/bs2b.cpp
@@ -91,11 +91,11 @@ static void init(struct bs2b *bs2b)
* $d = 1 / 2 / pi / $fc;
* $x = exp(-1 / $d);
*/
- x = std::exp(-al::MathDefs<float>::Tau() * Fc_lo / bs2b->srate);
+ x = std::exp(-al::MathDefs<float>::Tau() * Fc_lo / static_cast<float>(bs2b->srate));
bs2b->b1_lo = x;
bs2b->a0_lo = G_lo * (1.0f - x) * g;
- x = std::exp(-al::MathDefs<float>::Tau() * Fc_hi / bs2b->srate);
+ x = std::exp(-al::MathDefs<float>::Tau() * Fc_hi / static_cast<float>(bs2b->srate));
bs2b->b1_hi = x;
bs2b->a0_hi = (1.0f - G_hi * (1.0f - x)) * g;
bs2b->a1_hi = -x * g;
diff --git a/alc/converter.cpp b/alc/converter.cpp
index 2913f533..2ad2ac3b 100644
--- a/alc/converter.cpp
+++ b/alc/converter.cpp
@@ -27,7 +27,7 @@ template<> inline ALfloat LoadSample<DevFmtByte>(DevFmtTypeTraits<DevFmtByte>::T
template<> inline ALfloat LoadSample<DevFmtShort>(DevFmtTypeTraits<DevFmtShort>::Type val) noexcept
{ return val * (1.0f/32768.0f); }
template<> inline ALfloat LoadSample<DevFmtInt>(DevFmtTypeTraits<DevFmtInt>::Type val) noexcept
-{ return val * (1.0f/2147483648.0f); }
+{ return static_cast<float>(val) * (1.0f/2147483648.0f); }
template<> inline ALfloat LoadSample<DevFmtFloat>(DevFmtTypeTraits<DevFmtFloat>::Type val) noexcept
{ return val; }
diff --git a/alc/effects/autowah.cpp b/alc/effects/autowah.cpp
index f28cfd54..5e396d0c 100644
--- a/alc/effects/autowah.cpp
+++ b/alc/effects/autowah.cpp
@@ -107,16 +107,17 @@ ALboolean ALautowahState::deviceUpdate(const ALCdevice*)
void ALautowahState::update(const ALCcontext *context, const ALeffectslot *slot, const EffectProps *props, const EffectTarget target)
{
const ALCdevice *device{context->mDevice.get()};
+ const auto frequency = static_cast<float>(device->Frequency);
const ALfloat ReleaseTime{clampf(props->Autowah.ReleaseTime, 0.001f, 1.0f)};
- mAttackRate = expf(-1.0f / (props->Autowah.AttackTime*device->Frequency));
- mReleaseRate = expf(-1.0f / (ReleaseTime*device->Frequency));
+ mAttackRate = std::exp(-1.0f / (props->Autowah.AttackTime*frequency));
+ mReleaseRate = std::exp(-1.0f / (ReleaseTime*frequency));
/* 0-20dB Resonance Peak gain */
mResonanceGain = std::sqrt(std::log10(props->Autowah.Resonance)*10.0f / 3.0f);
mPeakGain = 1.0f - std::log10(props->Autowah.PeakGain/AL_AUTOWAH_MAX_PEAK_GAIN);
- mFreqMinNorm = MIN_FREQ / device->Frequency;
- mBandwidthNorm = (MAX_FREQ-MIN_FREQ) / device->Frequency;
+ mFreqMinNorm = MIN_FREQ / frequency;
+ mBandwidthNorm = (MAX_FREQ-MIN_FREQ) / frequency;
mOutTarget = target.Main->Buffer;
for(size_t i{0u};i < slot->Wet.Buffer.size();++i)
diff --git a/alc/effects/chorus.cpp b/alc/effects/chorus.cpp
index 6e73f1f0..0e3c9d89 100644
--- a/alc/effects/chorus.cpp
+++ b/alc/effects/chorus.cpp
@@ -64,8 +64,8 @@ void GetTriangleDelays(ALuint *delays, const ALuint start_offset, const ALuint l
auto gen_lfo = [&offset,lfo_range,lfo_scale,depth,delay]() -> ALuint
{
offset = (offset+1)%lfo_range;
- return static_cast<ALuint>(
- fastf2i((1.0f - std::abs(2.0f - lfo_scale*offset)) * depth) + delay);
+ const float offset_norm{static_cast<float>(offset) * lfo_scale};
+ return static_cast<ALuint>(fastf2i((1.0f-std::abs(2.0f-offset_norm)) * depth) + delay);
};
std::generate_n(delays, todo, gen_lfo);
}
@@ -80,7 +80,8 @@ void GetSinusoidDelays(ALuint *delays, const ALuint start_offset, const ALuint l
auto gen_lfo = [&offset,lfo_range,lfo_scale,depth,delay]() -> ALuint
{
offset = (offset+1)%lfo_range;
- return static_cast<ALuint>(fastf2i(std::sin(lfo_scale*offset) * depth) + delay);
+ const float offset_norm{static_cast<float>(offset) * lfo_scale};
+ return static_cast<ALuint>(fastf2i(std::sin(offset_norm)*depth) + delay);
};
std::generate_n(delays, todo, gen_lfo);
}
@@ -118,7 +119,8 @@ ALboolean ChorusState::deviceUpdate(const ALCdevice *Device)
{
constexpr ALfloat max_delay{maxf(AL_CHORUS_MAX_DELAY, AL_FLANGER_MAX_DELAY)};
- const size_t maxlen{NextPowerOf2(float2uint(max_delay*2.0f*Device->Frequency) + 1u)};
+ const auto frequency = static_cast<float>(Device->Frequency);
+ const size_t maxlen{NextPowerOf2(float2uint(max_delay*2.0f*frequency) + 1u)};
if(maxlen != mSampleBuffer.size())
{
mSampleBuffer.resize(maxlen);
@@ -153,9 +155,11 @@ void ChorusState::update(const ALCcontext *Context, const ALeffectslot *Slot, co
* delay and depth to allow enough padding for resampling.
*/
const ALCdevice *device{Context->mDevice.get()};
- const auto frequency = static_cast<ALfloat>(device->Frequency);
+ const auto frequency = static_cast<float>(device->Frequency);
+
mDelay = maxi(float2int(props->Chorus.Delay*frequency*FRACTIONONE + 0.5f), mindelay);
- mDepth = minf(props->Chorus.Depth * mDelay, static_cast<ALfloat>(mDelay - mindelay));
+ mDepth = minf(props->Chorus.Depth * static_cast<float>(mDelay),
+ static_cast<float>(mDelay - mindelay));
mFeedback = props->Chorus.Feedback;
@@ -188,10 +192,10 @@ void ChorusState::update(const ALCcontext *Context, const ALeffectslot *Slot, co
switch(mWaveform)
{
case WaveForm::Triangle:
- mLfoScale = 4.0f / mLfoRange;
+ mLfoScale = 4.0f / static_cast<float>(mLfoRange);
break;
case WaveForm::Sinusoid:
- mLfoScale = al::MathDefs<float>::Tau() / mLfoRange;
+ mLfoScale = al::MathDefs<float>::Tau() / static_cast<float>(mLfoRange);
break;
}
@@ -229,7 +233,7 @@ void ChorusState::process(const size_t samplesToDo, const al::span<const FloatBu
GetTriangleDelays(moddelays[1], (mLfoOffset+mLfoDisp)%mLfoRange, mLfoRange, mLfoScale,
mDepth, mDelay, todo);
}
- mLfoOffset = (mLfoOffset+todo) % mLfoRange;
+ mLfoOffset = (mLfoOffset+static_cast<ALuint>(todo)) % mLfoRange;
alignas(16) ALfloat temps[2][256];
for(size_t i{0u};i < todo;i++)
@@ -239,17 +243,15 @@ void ChorusState::process(const size_t samplesToDo, const al::span<const FloatBu
// Tap for the left output.
ALuint delay{offset - (moddelays[0][i]>>FRACTIONBITS)};
- ALfloat mu{(moddelays[0][i]&FRACTIONMASK) * (1.0f/FRACTIONONE)};
+ ALfloat mu{static_cast<float>(moddelays[0][i]&FRACTIONMASK) * (1.0f/FRACTIONONE)};
temps[0][i] = cubic(delaybuf[(delay+1) & bufmask], delaybuf[(delay ) & bufmask],
- delaybuf[(delay-1) & bufmask], delaybuf[(delay-2) & bufmask],
- mu);
+ delaybuf[(delay-1) & bufmask], delaybuf[(delay-2) & bufmask], mu);
// Tap for the right output.
delay = offset - (moddelays[1][i]>>FRACTIONBITS);
- mu = (moddelays[1][i]&FRACTIONMASK) * (1.0f/FRACTIONONE);
+ mu = static_cast<float>(moddelays[1][i]&FRACTIONMASK) * (1.0f/FRACTIONONE);
temps[1][i] = cubic(delaybuf[(delay+1) & bufmask], delaybuf[(delay ) & bufmask],
- delaybuf[(delay-1) & bufmask], delaybuf[(delay-2) & bufmask],
- mu);
+ delaybuf[(delay-1) & bufmask], delaybuf[(delay-2) & bufmask], mu);
// Accumulate feedback from the average delay of the taps.
delaybuf[offset&bufmask] += delaybuf[(offset-avgdelay) & bufmask] * feedback;
diff --git a/alc/effects/echo.cpp b/alc/effects/echo.cpp
index 47c0fedb..a9213df5 100644
--- a/alc/effects/echo.cpp
+++ b/alc/effects/echo.cpp
@@ -66,10 +66,12 @@ struct EchoState final : public EffectState {
ALboolean EchoState::deviceUpdate(const ALCdevice *Device)
{
+ const auto frequency = static_cast<float>(Device->Frequency);
+
// Use the next power of 2 for the buffer length, so the tap offsets can be
// wrapped using a mask instead of a modulo
- const ALuint maxlen{NextPowerOf2(float2uint(AL_ECHO_MAX_DELAY*Device->Frequency + 0.5f) +
- float2uint(AL_ECHO_MAX_LRDELAY*Device->Frequency + 0.5f))};
+ const ALuint maxlen{NextPowerOf2(float2uint(AL_ECHO_MAX_DELAY*frequency + 0.5f) +
+ float2uint(AL_ECHO_MAX_LRDELAY*frequency + 0.5f))};
if(maxlen != mSampleBuffer.size())
{
mSampleBuffer.resize(maxlen);
diff --git a/alc/effects/fshifter.cpp b/alc/effects/fshifter.cpp
index c015831c..1b935047 100644
--- a/alc/effects/fshifter.cpp
+++ b/alc/effects/fshifter.cpp
@@ -51,7 +51,8 @@ std::array<ALdouble,HIL_SIZE> InitHannWindow()
/* Create lookup table of the Hann window for the desired size, i.e. HIL_SIZE */
for(size_t i{0};i < HIL_SIZE>>1;i++)
{
- const double val{std::sin(al::MathDefs<double>::Pi() * i / double{HIL_SIZE-1})};
+ constexpr double scale{al::MathDefs<double>::Pi() / double{HIL_SIZE-1}};
+ const double val{std::sin(static_cast<double>(i) * scale)};
ret[i] = ret[HIL_SIZE-1-i] = val * val;
}
return ret;
diff --git a/alc/effects/modulator.cpp b/alc/effects/modulator.cpp
index fbc6377c..8042378a 100644
--- a/alc/effects/modulator.cpp
+++ b/alc/effects/modulator.cpp
@@ -146,7 +146,7 @@ void ModulatorState::process(const size_t samplesToDo, const al::span<const Floa
size_t td{minz(MAX_UPDATE_SAMPLES, samplesToDo-base)};
mGetSamples(modsamples, mIndex, mStep, td);
- mIndex += (mStep*td) & WAVEFORM_FRACMASK;
+ mIndex += static_cast<ALuint>(mStep * td);
mIndex &= WAVEFORM_FRACMASK;
auto chandata = std::addressof(mChans[0]);
diff --git a/alc/effects/pshifter.cpp b/alc/effects/pshifter.cpp
index a4d66706..d7ba072e 100644
--- a/alc/effects/pshifter.cpp
+++ b/alc/effects/pshifter.cpp
@@ -57,7 +57,8 @@ std::array<ALdouble,STFT_SIZE> InitHannWindow()
/* Create lookup table of the Hann window for the desired size, i.e. HIL_SIZE */
for(size_t i{0};i < STFT_SIZE>>1;i++)
{
- const double val{std::sin(al::MathDefs<double>::Pi() * i / ALdouble{STFT_SIZE-1})};
+ constexpr double scale{al::MathDefs<double>::Pi() / double{STFT_SIZE-1}};
+ const double val{std::sin(static_cast<double>(i) * scale)};
ret[i] = ret[STFT_SIZE-1-i] = val * val;
}
return ret;
@@ -129,7 +130,7 @@ ALboolean PshifterState::deviceUpdate(const ALCdevice *device)
mCount = FIFO_LATENCY;
mPitchShiftI = FRACTIONONE;
mPitchShift = 1.0f;
- mFreqPerBin = device->Frequency / static_cast<ALfloat>(STFT_SIZE);
+ mFreqPerBin = static_cast<float>(device->Frequency) / float{STFT_SIZE};
std::fill(std::begin(mInFIFO), std::end(mInFIFO), 0.0f);
std::fill(std::begin(mOutFIFO), std::end(mOutFIFO), 0.0f);
@@ -152,7 +153,7 @@ void PshifterState::update(const ALCcontext*, const ALeffectslot *slot, const Ef
static_cast<ALfloat>(props->Pshifter.CoarseTune*100 + props->Pshifter.FineTune) / 1200.0f
)};
mPitchShiftI = fastf2u(pitch*FRACTIONONE);
- mPitchShift = mPitchShiftI * (1.0f/FRACTIONONE);
+ mPitchShift = static_cast<float>(mPitchShiftI) * (1.0f/FRACTIONONE);
ALfloat coeffs[MAX_AMBI_CHANNELS];
CalcDirectionCoeffs({0.0f, 0.0f, -1.0f}, 0.0f, coeffs);
@@ -187,7 +188,7 @@ void PshifterState::process(const size_t samplesToDo, const al::span<const Float
count = FIFO_LATENCY;
/* Real signal windowing and store in FFTbuffer */
- for(size_t k{0u};k < STFT_SIZE;k++)
+ for(ALuint k{0u};k < STFT_SIZE;k++)
{
mFFTbuffer[k].real(mInFIFO[k] * HannWindow[k]);
mFFTbuffer[k].imag(0.0);
@@ -200,7 +201,7 @@ void PshifterState::process(const size_t samplesToDo, const al::span<const Float
/* Analyze the obtained data. Since the real FFT is symmetric, only
* STFT_HALF_SIZE+1 samples are needed.
*/
- for(size_t k{0u};k < STFT_HALF_SIZE+1;k++)
+ for(ALuint k{0u};k < STFT_HALF_SIZE+1;k++)
{
/* Compute amplitude and phase */
ALphasor component{rect2polar(mFFTbuffer[k])};
@@ -228,7 +229,7 @@ void PshifterState::process(const size_t samplesToDo, const al::span<const Float
/* PROCESSING */
/* pitch shifting */
- for(size_t k{0u};k < STFT_HALF_SIZE+1;k++)
+ for(ALuint k{0u};k < STFT_HALF_SIZE+1;k++)
{
mSyntesis_buffer[k].Amplitude = 0.0;
mSyntesis_buffer[k].Frequency = 0.0;
@@ -245,7 +246,7 @@ void PshifterState::process(const size_t samplesToDo, const al::span<const Float
/* SYNTHESIS */
/* Synthesis the processing data */
- for(size_t k{0u};k < STFT_HALF_SIZE+1;k++)
+ for(ALuint k{0u};k < STFT_HALF_SIZE+1;k++)
{
ALphasor component;
ALdouble tmp;
@@ -263,14 +264,14 @@ void PshifterState::process(const size_t samplesToDo, const al::span<const Float
mFFTbuffer[k] = polar2rect(component);
}
/* zero negative frequencies for recontruct a real signal */
- for(size_t k{STFT_HALF_SIZE+1};k < STFT_SIZE;k++)
+ for(ALuint k{STFT_HALF_SIZE+1};k < STFT_SIZE;k++)
mFFTbuffer[k] = complex_d{};
/* Apply iFFT to buffer data */
complex_fft(mFFTbuffer, 1.0);
/* Windowing and add to output */
- for(size_t k{0u};k < STFT_SIZE;k++)
+ for(ALuint k{0u};k < STFT_SIZE;k++)
mOutputAccum[k] += HannWindow[k] * mFFTbuffer[k].real() /
(0.5 * STFT_HALF_SIZE * OVERSAMP);
diff --git a/alc/effects/vmorpher.cpp b/alc/effects/vmorpher.cpp
index a6a077b6..c451bedb 100644
--- a/alc/effects/vmorpher.cpp
+++ b/alc/effects/vmorpher.cpp
@@ -86,7 +86,7 @@ struct FormantFilter
FormantFilter() = default;
FormantFilter(ALfloat f0norm_, ALfloat gain) : f0norm{f0norm_}, fGain{gain} { }
- inline void process(const ALfloat* samplesIn, ALfloat* samplesOut, const size_t numInput)
+ inline void process(const ALfloat *samplesIn, ALfloat *samplesOut, const size_t numInput)
{
/* A state variable filter from a topology-preserving transform.
* Based on a talk given by Ivan Cohen: https://www.youtube.com/watch?v=esjHXGPyrhg
@@ -198,9 +198,9 @@ ALboolean VmorpherState::deviceUpdate(const ALCdevice* /*device*/)
for(auto &e : mChans)
{
std::for_each(std::begin(e.Formants[VOWEL_A_INDEX]), std::end(e.Formants[VOWEL_A_INDEX]),
- std::mem_fn(&FormantFilter::clear));
+ std::mem_fn(&FormantFilter::clear));
std::for_each(std::begin(e.Formants[VOWEL_B_INDEX]), std::end(e.Formants[VOWEL_B_INDEX]),
- std::mem_fn(&FormantFilter::clear));
+ std::mem_fn(&FormantFilter::clear));
std::fill(std::begin(e.CurrentGains), std::end(e.CurrentGains), 0.0f);
}
@@ -223,8 +223,10 @@ void VmorpherState::update(const ALCcontext *context, const ALeffectslot *slot,
else /*if(props->Vmorpher.Waveform == AL_VOCAL_MORPHER_WAVEFORM_TRIANGLE)*/
mGetSamples = Oscillate<Triangle>;
- const ALfloat pitchA{std::pow(2.0f, props->Vmorpher.PhonemeACoarseTuning / 12.0f)};
- const ALfloat pitchB{std::pow(2.0f, props->Vmorpher.PhonemeBCoarseTuning / 12.0f)};
+ const ALfloat pitchA{std::pow(2.0f,
+ static_cast<float>(props->Vmorpher.PhonemeACoarseTuning) / 12.0f)};
+ const ALfloat pitchB{std::pow(2.0f,
+ static_cast<float>(props->Vmorpher.PhonemeBCoarseTuning) / 12.0f)};
auto vowelA = getFiltersByPhoneme(props->Vmorpher.PhonemeA, frequency, pitchA);
auto vowelB = getFiltersByPhoneme(props->Vmorpher.PhonemeB, frequency, pitchB);
@@ -255,7 +257,7 @@ void VmorpherState::process(const size_t samplesToDo, const al::span<const Float
const size_t td{minz(MAX_UPDATE_SAMPLES, samplesToDo-base)};
mGetSamples(lfo, mIndex, mStep, td);
- mIndex += (mStep * td) & WAVEFORM_FRACMASK;
+ mIndex += static_cast<ALuint>(mStep * td);
mIndex &= WAVEFORM_FRACMASK;
auto chandata = std::addressof(mChans[0]);
diff --git a/alc/hrtf.cpp b/alc/hrtf.cpp
index bd6ecb3a..e20bf0a9 100644
--- a/alc/hrtf.cpp
+++ b/alc/hrtf.cpp
@@ -182,10 +182,11 @@ struct IdxBlend { ALsizei idx; ALfloat blend; };
*/
IdxBlend CalcEvIndex(ALsizei evcount, ALfloat ev)
{
- ev = (al::MathDefs<float>::Pi()*0.5f + ev) * (evcount-1) / al::MathDefs<float>::Pi();
+ ev = (al::MathDefs<float>::Pi()*0.5f + ev) * static_cast<float>(evcount-1) /
+ al::MathDefs<float>::Pi();
ALsizei idx{float2int(ev)};
- return IdxBlend{mini(idx, evcount-1), ev-idx};
+ return IdxBlend{mini(idx, evcount-1), ev-static_cast<float>(idx)};
}
/* Calculate the azimuth index given the polar azimuth in radians. This will
@@ -193,10 +194,11 @@ IdxBlend CalcEvIndex(ALsizei evcount, ALfloat ev)
*/
IdxBlend CalcAzIndex(ALsizei azcount, ALfloat az)
{
- az = (al::MathDefs<float>::Tau()+az) * azcount / al::MathDefs<float>::Tau();
+ az = (al::MathDefs<float>::Tau()+az) * static_cast<float>(azcount) /
+ al::MathDefs<float>::Tau();
ALsizei idx{float2int(az)};
- return IdxBlend{idx%azcount, az-idx};
+ return IdxBlend{idx%azcount, az-static_cast<float>(idx)};
}
} // namespace
@@ -303,24 +305,25 @@ void BuildBFormatHrtf(const HrtfEntry *Hrtf, DirectHrtfState *state, const ALuin
ASSUME(NumChannels > 0);
ASSUME(AmbiCount > 0);
- auto &field = Hrtf->field[0];
ALuint min_delay{HRTF_HISTORY_LENGTH};
ALuint max_delay{0};
auto idx = al::vector<ALuint>(AmbiCount);
- auto calc_idxs = [Hrtf,&field,&max_delay,&min_delay](const AngularPoint &pt) noexcept -> ALuint
+ auto calc_idxs = [Hrtf,&max_delay,&min_delay](const AngularPoint &pt) noexcept -> ALuint
{
+ auto &field = Hrtf->field[0];
/* Calculate elevation index. */
- const auto evidx = clampi(float2int((90.0f+pt.Elev)*(field.evCount-1)/180.0f + 0.5f),
- 0, field.evCount-1);
+ const auto ev_limit = static_cast<float>(field.evCount-1);
+ const ALuint evidx{float2uint(clampf((90.0f+pt.Elev)/180.0f, 0.0f, 1.0f)*ev_limit + 0.5f)};
const ALuint azcount{Hrtf->elev[evidx].azCount};
const ALuint iroffset{Hrtf->elev[evidx].irOffset};
/* Calculate azimuth index for this elevation. */
- const auto azidx = static_cast<ALuint>((360.0f+pt.Azim)*azcount/360.0f + 0.5f) % azcount;
+ const float az_norm{(360.0f*pt.Azim) / 360.0f};
+ const ALuint azidx{float2uint(az_norm*static_cast<float>(azcount) + 0.5f) % azcount};
/* Calculate the index for the impulse response. */
- ALuint idx{iroffset + azidx};
+ const ALuint idx{iroffset + azidx};
min_delay = minu(min_delay, minu(Hrtf->delays[idx][0], Hrtf->delays[idx][1]));
max_delay = maxu(max_delay, maxu(Hrtf->delays[idx][0], Hrtf->delays[idx][1]));
@@ -594,7 +597,7 @@ std::unique_ptr<HrtfEntry> LoadHrtf00(std::istream &data, const char *filename)
if(failed)
return nullptr;
- al::vector<ALushort> evOffset(evCount);
+ auto evOffset = al::vector<ALushort>(evCount);
for(auto &val : evOffset)
val = GetLE_ALushort(data);
if(!data || data.eof())
@@ -619,10 +622,10 @@ std::unique_ptr<HrtfEntry> LoadHrtf00(std::istream &data, const char *filename)
if(failed)
return nullptr;
- al::vector<ALushort> azCount(evCount);
+ auto azCount = al::vector<ALushort>(evCount);
for(size_t i{1};i < evCount;i++)
{
- azCount[i-1] = evOffset[i] - evOffset[i-1];
+ azCount[i-1] = static_cast<ALushort>(evOffset[i] - evOffset[i-1]);
if(azCount[i-1] < MIN_AZ_COUNT || azCount[i-1] > MAX_AZ_COUNT)
{
ERR("Unsupported azimuth count: azCount[%zd]=%d (%d to %d)\n",
@@ -630,7 +633,7 @@ std::unique_ptr<HrtfEntry> LoadHrtf00(std::istream &data, const char *filename)
failed = AL_TRUE;
}
}
- azCount.back() = irCount - evOffset.back();
+ azCount.back() = static_cast<ALushort>(irCount - evOffset.back());
if(azCount.back() < MIN_AZ_COUNT || azCount.back() > MAX_AZ_COUNT)
{
ERR("Unsupported azimuth count: azCount[%zu]=%d (%d to %d)\n",
@@ -640,8 +643,8 @@ std::unique_ptr<HrtfEntry> LoadHrtf00(std::istream &data, const char *filename)
if(failed)
return nullptr;
- al::vector<std::array<ALfloat,2>> coeffs(irSize*irCount);
- al::vector<std::array<ALubyte,2>> delays(irCount);
+ auto coeffs = al::vector<std::array<ALfloat,2>>(irSize*irCount);
+ auto delays = al::vector<std::array<ALubyte,2>>(irCount);
for(auto &val : coeffs)
val[0] = GetLE_ALshort(data) / 32768.0f;
for(auto &val : delays)
@@ -711,7 +714,7 @@ std::unique_ptr<HrtfEntry> LoadHrtf01(std::istream &data, const char *filename)
if(failed)
return nullptr;
- al::vector<ALushort> azCount(evCount);
+ auto azCount = al::vector<ALushort>(evCount);
std::generate(azCount.begin(), azCount.end(), std::bind(GetLE_ALubyte, std::ref(data)));
if(!data || data.eof())
{
@@ -735,12 +738,12 @@ std::unique_ptr<HrtfEntry> LoadHrtf01(std::istream &data, const char *filename)
ALushort irCount{azCount[0]};
for(size_t i{1};i < evCount;i++)
{
- evOffset[i] = evOffset[i-1] + azCount[i-1];
+ evOffset[i] = static_cast<ALushort>(evOffset[i-1] + azCount[i-1]);
irCount += azCount[i];
}
- al::vector<std::array<ALfloat,2>> coeffs(irSize*irCount);
- al::vector<std::array<ALubyte,2>> delays(irCount);
+ auto coeffs = al::vector<std::array<ALfloat,2>>(irSize*irCount);
+ auto delays = al::vector<std::array<ALubyte,2>>(irCount);
for(auto &val : coeffs)
val[0] = GetLE_ALshort(data) / 32768.0f;
for(auto &val : delays)
@@ -903,7 +906,7 @@ std::unique_ptr<HrtfEntry> LoadHrtf02(std::istream &data, const char *filename)
else if(sampleType == SAMPLETYPE_S24)
{
for(auto &val : coeffs)
- val[0] = GetLE_ALint24(data) / 8388608.0f;
+ val[0] = static_cast<float>(GetLE_ALint24(data)) / 8388608.0f;
}
for(auto &val : delays)
val[0] = GetLE_ALubyte(data);
@@ -935,8 +938,8 @@ std::unique_ptr<HrtfEntry> LoadHrtf02(std::istream &data, const char *filename)
{
for(auto &val : coeffs)
{
- val[0] = GetLE_ALint24(data) / 8388608.0f;
- val[1] = GetLE_ALint24(data) / 8388608.0f;
+ val[0] = static_cast<float>(GetLE_ALint24(data)) / 8388608.0f;
+ val[1] = static_cast<float>(GetLE_ALint24(data)) / 8388608.0f;
}
}
for(auto &val : delays)
diff --git a/alc/mastering.cpp b/alc/mastering.cpp
index 2f575f35..d0a2f78a 100644
--- a/alc/mastering.cpp
+++ b/alc/mastering.cpp
@@ -337,7 +337,7 @@ void SignalDelay(Compressor *Comp, const ALuint SamplesToDo, FloatBufferLine *Ou
* ReleaseTimeMin - Release time (in seconds). Acts as a maximum when
* automating release time.
*/
-std::unique_ptr<Compressor> CompressorInit(const ALuint NumChans, const ALuint SampleRate,
+std::unique_ptr<Compressor> CompressorInit(const ALuint NumChans, const ALfloat SampleRate,
const ALboolean AutoKnee, const ALboolean AutoAttack, const ALboolean AutoRelease,
const ALboolean AutoPostGain, const ALboolean AutoDeclip, const ALfloat LookAheadTime,
const ALfloat HoldTime, const ALfloat PreGainDb, const ALfloat PostGainDb,
@@ -363,7 +363,6 @@ std::unique_ptr<Compressor> CompressorInit(const ALuint NumChans, const ALuint S
auto Comp = std::unique_ptr<Compressor>{new (al_calloc(16, size)) Compressor{}};
Comp->mNumChans = NumChans;
- Comp->mSampleRate = SampleRate;
Comp->mAuto.Knee = AutoKnee != AL_FALSE;
Comp->mAuto.Attack = AutoAttack != AL_FALSE;
Comp->mAuto.Release = AutoRelease != AL_FALSE;
diff --git a/alc/mastering.h b/alc/mastering.h
index 6c8fc628..851381e9 100644
--- a/alc/mastering.h
+++ b/alc/mastering.h
@@ -24,7 +24,6 @@ struct SlidingHold;
*/
struct Compressor {
ALuint mNumChans{0u};
- ALuint mSampleRate{0u};
struct {
bool Knee : 1;
@@ -94,7 +93,7 @@ struct Compressor {
* ReleaseTimeMin - Release time (in seconds). Acts as a maximum when
* automating release time.
*/
-std::unique_ptr<Compressor> CompressorInit(const ALuint NumChans, const ALuint SampleRate,
+std::unique_ptr<Compressor> CompressorInit(const ALuint NumChans, const ALfloat SampleRate,
const ALboolean AutoKnee, const ALboolean AutoAttack, const ALboolean AutoRelease,
const ALboolean AutoPostGain, const ALboolean AutoDeclip, const ALfloat LookAheadTime,
const ALfloat HoldTime, const ALfloat PreGainDb, const ALfloat PostGainDb,
diff --git a/alc/mixer/mixer_c.cpp b/alc/mixer/mixer_c.cpp
index 720b264b..74315dd5 100644
--- a/alc/mixer/mixer_c.cpp
+++ b/alc/mixer/mixer_c.cpp
@@ -16,9 +16,9 @@ namespace {
inline ALfloat do_point(const InterpState&, const ALfloat *RESTRICT vals, const ALuint)
{ return vals[0]; }
inline ALfloat do_lerp(const InterpState&, const ALfloat *RESTRICT vals, const ALuint frac)
-{ return lerp(vals[0], vals[1], frac * (1.0f/FRACTIONONE)); }
+{ return lerp(vals[0], vals[1], static_cast<float>(frac)*(1.0f/FRACTIONONE)); }
inline ALfloat do_cubic(const InterpState&, const ALfloat *RESTRICT vals, const ALuint frac)
-{ return cubic(vals[0], vals[1], vals[2], vals[3], frac * (1.0f/FRACTIONONE)); }
+{ return cubic(vals[0], vals[1], vals[2], vals[3], static_cast<float>(frac)*(1.0f/FRACTIONONE)); }
inline ALfloat do_bsinc(const InterpState &istate, const ALfloat *RESTRICT vals, const ALuint frac)
{
ASSUME(istate.bsinc.m > 0);
@@ -26,10 +26,11 @@ inline ALfloat do_bsinc(const InterpState &istate, const ALfloat *RESTRICT vals,
// Calculate the phase index and factor.
#define FRAC_PHASE_BITDIFF (FRACTIONBITS-BSINC_PHASE_BITS)
const ALuint pi{frac >> FRAC_PHASE_BITDIFF};
- const ALfloat pf{(frac & ((1<<FRAC_PHASE_BITDIFF)-1)) * (1.0f/(1<<FRAC_PHASE_BITDIFF))};
+ const ALfloat pf{static_cast<float>(frac & ((1<<FRAC_PHASE_BITDIFF)-1)) *
+ (1.0f/(1<<FRAC_PHASE_BITDIFF))};
#undef FRAC_PHASE_BITDIFF
- const ALfloat *fil{istate.bsinc.filter + ptrdiff_t{istate.bsinc.m}*pi*4};
+ const ALfloat *fil{istate.bsinc.filter + static_cast<ptrdiff_t>(istate.bsinc.m)*pi*4};
const ALfloat *scd{fil + istate.bsinc.m};
const ALfloat *phd{scd + istate.bsinc.m};
const ALfloat *spd{phd + istate.bsinc.m};
diff --git a/alc/mixer/mixer_neon.cpp b/alc/mixer/mixer_neon.cpp
index 852bef38..2f11273a 100644
--- a/alc/mixer/mixer_neon.cpp
+++ b/alc/mixer/mixer_neon.cpp
@@ -55,10 +55,10 @@ const ALfloat *Resample_<LerpTag,NEONTag>(const InterpState*, const ALfloat *RES
if(dst_iter != dst.end())
{
src += static_cast<ALuint>(vgetq_lane_s32(pos4, 0));
- frac = vgetq_lane_s32(frac4, 0);
+ frac = static_cast<ALuint>(vgetq_lane_s32(frac4, 0));
do {
- *(dst_iter++) = lerp(src[0], src[1], frac * (1.0f/FRACTIONONE));
+ *(dst_iter++) = lerp(src[0], src[1], static_cast<float>(frac) * (1.0f/FRACTIONONE));
frac += increment;
src += frac>>FRACTIONBITS;
@@ -84,14 +84,15 @@ const ALfloat *Resample_<BSincTag,NEONTag>(const InterpState *state, const ALflo
// Calculate the phase index and factor.
#define FRAC_PHASE_BITDIFF (FRACTIONBITS-BSINC_PHASE_BITS)
const ALuint pi{frac >> FRAC_PHASE_BITDIFF};
- const ALfloat pf{(frac & ((1<<FRAC_PHASE_BITDIFF)-1)) * (1.0f/(1<<FRAC_PHASE_BITDIFF))};
+ const ALfloat pf{static_cast<float>(frac & ((1<<FRAC_PHASE_BITDIFF)-1)) *
+ (1.0f/(1<<FRAC_PHASE_BITDIFF))};
#undef FRAC_PHASE_BITDIFF
// Apply the scale and phase interpolated filter.
float32x4_t r4{vdupq_n_f32(0.0f)};
{
const float32x4_t pf4{vdupq_n_f32(pf)};
- const float *fil{filter + m*pi*4};
+ const float *fil{filter + m*static_cast<ptrdiff_t>(pi*4)};
const float *scd{fil + m};
const float *phd{scd + m};
const float *spd{phd + m};
@@ -179,8 +180,8 @@ void Mix_<NEONTag>(const al::span<const float> InSamples, const al::span<FloatBu
const ALfloat delta{(Counter > 0) ? 1.0f / static_cast<ALfloat>(Counter) : 0.0f};
const bool reached_target{InSamples.size() >= Counter};
const auto min_end = reached_target ? InSamples.begin() + Counter : InSamples.end();
- const auto aligned_end = minz(InSamples.size(), (min_end-InSamples.begin()+3) & ~3u) +
- InSamples.begin();
+ const auto aligned_end = minz(static_cast<uintptr_t>(min_end-InSamples.begin()+3) & ~3u,
+ InSamples.size()) + InSamples.begin();
for(FloatBufferLine &output : OutBuffer)
{
ALfloat *RESTRICT dst{al::assume_aligned<16>(output.data()+OutPos)};
diff --git a/alc/mixer/mixer_sse.cpp b/alc/mixer/mixer_sse.cpp
index 368b8dfe..65eb0dee 100644
--- a/alc/mixer/mixer_sse.cpp
+++ b/alc/mixer/mixer_sse.cpp
@@ -29,7 +29,8 @@ const ALfloat *Resample_<BSincTag,SSETag>(const InterpState *state, const ALfloa
// Calculate the phase index and factor.
#define FRAC_PHASE_BITDIFF (FRACTIONBITS-BSINC_PHASE_BITS)
const ALuint pi{frac >> FRAC_PHASE_BITDIFF};
- const ALfloat pf{(frac & ((1<<FRAC_PHASE_BITDIFF)-1)) * (1.0f/(1<<FRAC_PHASE_BITDIFF))};
+ const ALfloat pf{static_cast<float>(frac & ((1<<FRAC_PHASE_BITDIFF)-1)) *
+ (1.0f/(1<<FRAC_PHASE_BITDIFF))};
#undef FRAC_PHASE_BITDIFF
// Apply the scale and phase interpolated filter.
@@ -145,8 +146,8 @@ void Mix_<SSETag>(const al::span<const float> InSamples, const al::span<FloatBuf
const ALfloat delta{(Counter > 0) ? 1.0f / static_cast<ALfloat>(Counter) : 0.0f};
const bool reached_target{InSamples.size() >= Counter};
const auto min_end = reached_target ? InSamples.begin() + Counter : InSamples.end();
- const auto aligned_end = minz(InSamples.size(), (min_end-InSamples.begin()+3) & ~3u) +
- InSamples.begin();
+ const auto aligned_end = minz(static_cast<uintptr_t>(min_end-InSamples.begin()+3) & ~3u,
+ InSamples.size()) + InSamples.begin();
for(FloatBufferLine &output : OutBuffer)
{
ALfloat *RESTRICT dst{al::assume_aligned<16>(output.data()+OutPos)};
diff --git a/alc/mixer/mixer_sse2.cpp b/alc/mixer/mixer_sse2.cpp
index 38d77fd9..897cd1f7 100644
--- a/alc/mixer/mixer_sse2.cpp
+++ b/alc/mixer/mixer_sse2.cpp
@@ -72,7 +72,7 @@ const ALfloat *Resample_<LerpTag,SSE2Tag>(const InterpState*, const ALfloat *RES
frac = static_cast<ALuint>(_mm_cvtsi128_si32(frac4));
do {
- *(dst_iter++) = lerp(src[0], src[1], frac * (1.0f/FRACTIONONE));
+ *(dst_iter++) = lerp(src[0], src[1], static_cast<float>(frac) * (1.0f/FRACTIONONE));
frac += increment;
src += frac>>FRACTIONBITS;
diff --git a/alc/mixer/mixer_sse41.cpp b/alc/mixer/mixer_sse41.cpp
index 0a87f76f..cfa21e99 100644
--- a/alc/mixer/mixer_sse41.cpp
+++ b/alc/mixer/mixer_sse41.cpp
@@ -77,7 +77,7 @@ const ALfloat *Resample_<LerpTag,SSE4Tag>(const InterpState*, const ALfloat *RES
frac = static_cast<ALuint>(_mm_cvtsi128_si32(frac4));
do {
- *(dst_iter++) = lerp(src[0], src[1], frac * (1.0f/FRACTIONONE));
+ *(dst_iter++) = lerp(src[0], src[1], static_cast<float>(frac) * (1.0f/FRACTIONONE));
frac += increment;
src += frac>>FRACTIONBITS;
diff --git a/alc/mixvoice.cpp b/alc/mixvoice.cpp
index 7bdeea5e..d7a32f35 100644
--- a/alc/mixvoice.cpp
+++ b/alc/mixvoice.cpp
@@ -287,33 +287,35 @@ struct FmtTypeTraits { };
template<>
struct FmtTypeTraits<FmtUByte> {
using Type = ALubyte;
- static constexpr ALfloat to_float(const Type val) { return (val-128) * (1.0f/128.0f); }
+ static constexpr ALfloat to_float(const Type val) noexcept
+ { return val*(1.0f/128.0f) - 128.0f; }
};
template<>
struct FmtTypeTraits<FmtShort> {
using Type = ALshort;
- static constexpr ALfloat to_float(const Type val) { return val * (1.0f/32768.0f); }
+ static constexpr ALfloat to_float(const Type val) noexcept { return val*(1.0f/32768.0f); }
};
template<>
struct FmtTypeTraits<FmtFloat> {
using Type = ALfloat;
- static constexpr ALfloat to_float(const Type val) { return val; }
+ static constexpr ALfloat to_float(const Type val) noexcept { return val; }
};
template<>
struct FmtTypeTraits<FmtDouble> {
using Type = ALdouble;
- static constexpr ALfloat to_float(const Type val) { return static_cast<ALfloat>(val); }
+ static constexpr ALfloat to_float(const Type val) noexcept
+ { return static_cast<ALfloat>(val); }
};
template<>
struct FmtTypeTraits<FmtMulaw> {
using Type = ALubyte;
- static constexpr ALfloat to_float(const Type val)
+ static constexpr ALfloat to_float(const Type val) noexcept
{ return muLawDecompressionTable[val] * (1.0f/32768.0f); }
};
template<>
struct FmtTypeTraits<FmtAlaw> {
using Type = ALubyte;
- static constexpr ALfloat to_float(const Type val)
+ static constexpr ALfloat to_float(const Type val) noexcept
{ return aLawDecompressionTable[val] * (1.0f/32768.0f); }
};
@@ -363,7 +365,7 @@ const ALfloat *DoFilters(BiquadFilter *lpfilter, BiquadFilter *hpfilter, ALfloat
template<FmtType T>
inline void LoadSampleArray(ALfloat *RESTRICT dst, const al::byte *src, const size_t srcstep,
- const size_t samples)
+ const size_t samples) noexcept
{
using SampleType = typename FmtTypeTraits<T>::Type;
@@ -373,7 +375,7 @@ inline void LoadSampleArray(ALfloat *RESTRICT dst, const al::byte *src, const si
}
void LoadSamples(ALfloat *RESTRICT dst, const al::byte *src, const size_t srcstep, FmtType srctype,
- const size_t samples)
+ const size_t samples) noexcept
{
#define HANDLE_FMT(T) case T: LoadSampleArray<T>(dst, src, srcstep, samples); break
switch(srctype)
diff --git a/common/almalloc.cpp b/common/almalloc.cpp
index 8700bddc..842fb400 100644
--- a/common/almalloc.cpp
+++ b/common/almalloc.cpp
@@ -30,11 +30,11 @@ void *al_malloc(size_t alignment, size_t size)
#elif defined(HAVE__ALIGNED_MALLOC)
return _aligned_malloc(size, alignment);
#else
- char *ret = static_cast<char*>(malloc(size+alignment));
+ auto *ret = static_cast<char*>(malloc(size+alignment));
if(ret != nullptr)
{
*(ret++) = 0x00;
- while((reinterpret_cast<ptrdiff_t>(ret)&(alignment-1)) != 0)
+ while((reinterpret_cast<uintptr_t>(ret)&(alignment-1)) != 0)
*(ret++) = 0x55;
}
return ret;
@@ -57,7 +57,7 @@ void al_free(void *ptr) noexcept
#else
if(ptr != nullptr)
{
- char *finder = static_cast<char*>(ptr);
+ auto *finder = static_cast<char*>(ptr);
do {
--finder;
} while(*finder == 0x55);
diff --git a/examples/alrecord.c b/examples/alrecord.c
index 627f8540..a66e5471 100644
--- a/examples/alrecord.c
+++ b/examples/alrecord.c
@@ -54,13 +54,14 @@ static float msvc_strtof(const char *str, char **end)
static void fwrite16le(ALushort val, FILE *f)
{
- ALubyte data[2] = { val&0xff, (val>>8)&0xff };
+ ALubyte data[2] = { (ALubyte)(val&0xff), (ALubyte)((val>>8)&0xff) };
fwrite(data, 1, 2, f);
}
static void fwrite32le(ALuint val, FILE *f)
{
- ALubyte data[4] = { val&0xff, (val>>8)&0xff, (val>>16)&0xff, (val>>24)&0xff };
+ ALubyte data[4] = { (ALubyte)(val&0xff), (ALubyte)((val>>8)&0xff), (ALubyte)((val>>16)&0xff),
+ (ALubyte)((val>>24)&0xff) };
fwrite(data, 1, 4, f);
}
diff --git a/examples/altonegen.c b/examples/altonegen.c
index aacc3496..26ae788d 100644
--- a/examples/altonegen.c
+++ b/examples/altonegen.c
@@ -97,7 +97,7 @@ static ALuint CreateWave(enum WaveType type, ALuint freq, ALuint srate)
ALenum err;
ALuint i;
- data_size = srate * sizeof(ALfloat);
+ data_size = (ALuint)(srate * sizeof(ALfloat));
data = calloc(1, data_size);
switch(type)
{
diff --git a/examples/common/alhelpers.c b/examples/common/alhelpers.c
index 730d2e13..0febef43 100644
--- a/examples/common/alhelpers.c
+++ b/examples/common/alhelpers.c
@@ -175,8 +175,8 @@ int altime_get(void)
void al_nssleep(unsigned long nsec)
{
struct timespec ts, rem;
- ts.tv_sec = nsec / 1000000000ul;
- ts.tv_nsec = nsec % 1000000000ul;
+ ts.tv_sec = (time_t)(nsec / 1000000000ul);
+ ts.tv_nsec = (long)(nsec % 1000000000ul);
while(nanosleep(&ts, &rem) == -1 && errno == EINTR)
ts = rem;
}