diff options
author | Chris Robinson <[email protected]> | 2018-05-12 00:52:09 -0700 |
---|---|---|
committer | Chris Robinson <[email protected]> | 2018-05-12 00:52:09 -0700 |
commit | e787a241c0e96b890f2173ec71aa02b5b9411ec6 (patch) | |
tree | 23c8965efe5599829eb13964ca1a6da0b48fea54 /Alc | |
parent | 3867cad94de7e1ddc1538e25d77e30381bf4bb40 (diff) |
Add and use a method for fast float rounding
Unlike fastf2i, this keeps the result as a float instead of converting to
integer.
Diffstat (limited to 'Alc')
-rw-r--r-- | Alc/ALu.c | 2 | ||||
-rw-r--r-- | Alc/helpers.c | 1 |
2 files changed, 2 insertions, 1 deletions
@@ -1663,7 +1663,7 @@ static void ApplyDither(ALfloat (*restrict Samples)[BUFFERSIZE], ALuint *dither_ ALuint rng0 = dither_rng(&seed); ALuint rng1 = dither_rng(&seed); val += (ALfloat)(rng0*(1.0/UINT_MAX) - rng1*(1.0/UINT_MAX)); - samples[i] = fastf2i(val) * invscale; + samples[i] = fast_roundf(val) * invscale; } } *dither_seed = seed; diff --git a/Alc/helpers.c b/Alc/helpers.c index 7bcb3f4a..e54f3fb2 100644 --- a/Alc/helpers.c +++ b/Alc/helpers.c @@ -125,6 +125,7 @@ extern inline ALuint NextPowerOf2(ALuint value); extern inline size_t RoundUp(size_t value, size_t r); extern inline ALint fastf2i(ALfloat f); extern inline int float2int(float f); +extern inline float fast_roundf(float f); #ifndef __GNUC__ #if defined(HAVE_BITSCANFORWARD64_INTRINSIC) extern inline int msvc64_ctz64(ALuint64 v); |