aboutsummaryrefslogtreecommitdiffstats
path: root/Alc
diff options
context:
space:
mode:
authorChris Robinson <[email protected]>2018-05-12 00:52:09 -0700
committerChris Robinson <[email protected]>2018-05-12 00:52:09 -0700
commite787a241c0e96b890f2173ec71aa02b5b9411ec6 (patch)
tree23c8965efe5599829eb13964ca1a6da0b48fea54 /Alc
parent3867cad94de7e1ddc1538e25d77e30381bf4bb40 (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.c2
-rw-r--r--Alc/helpers.c1
2 files changed, 2 insertions, 1 deletions
diff --git a/Alc/ALu.c b/Alc/ALu.c
index 81914850..9d7fcdd5 100644
--- a/Alc/ALu.c
+++ b/Alc/ALu.c
@@ -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);