Avoid a divide-by-zero in UhjDecoder::decodeStereo
parent
1369a081a0
commit
90db129d60
|
@ -191,14 +191,14 @@ void UhjDecoder::decodeStereo(const al::span<float*> samples, const size_t sampl
|
||||||
*/
|
*/
|
||||||
const float wtarget{mWidthControl};
|
const float wtarget{mWidthControl};
|
||||||
const float wcurrent{unlikely(mCurrentWidth < 0.0f) ? wtarget : mCurrentWidth};
|
const float wcurrent{unlikely(mCurrentWidth < 0.0f) ? wtarget : mCurrentWidth};
|
||||||
const float wstep{(wtarget - wcurrent) / static_cast<float>(forwardSamples)};
|
if(likely(wtarget == wcurrent) || unlikely(forwardSamples == 0))
|
||||||
if(likely(wstep < 0.00001f))
|
|
||||||
{
|
{
|
||||||
for(size_t i{0};i < samplesToDo+sFilterDelay;++i)
|
for(size_t i{0};i < samplesToDo+sFilterDelay;++i)
|
||||||
mD[i] = (left[i] - right[i]) * wtarget;
|
mD[i] = (left[i] - right[i]) * wcurrent;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
const float wstep{(wtarget - wcurrent) / static_cast<float>(forwardSamples)};
|
||||||
float fi{0.0f};
|
float fi{0.0f};
|
||||||
size_t i{0};
|
size_t i{0};
|
||||||
for(;i < forwardSamples;++i)
|
for(;i < forwardSamples;++i)
|
||||||
|
@ -208,8 +208,8 @@ void UhjDecoder::decodeStereo(const al::span<float*> samples, const size_t sampl
|
||||||
}
|
}
|
||||||
for(;i < samplesToDo+sFilterDelay;++i)
|
for(;i < samplesToDo+sFilterDelay;++i)
|
||||||
mD[i] = (left[i] - right[i]) * wtarget;
|
mD[i] = (left[i] - right[i]) * wtarget;
|
||||||
|
mCurrentWidth = wtarget;
|
||||||
}
|
}
|
||||||
mCurrentWidth = wtarget;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
float *RESTRICT woutput{al::assume_aligned<16>(samples[0])};
|
float *RESTRICT woutput{al::assume_aligned<16>(samples[0])};
|
||||||
|
|
Loading…
Reference in New Issue