summaryrefslogtreecommitdiff
path: root/src/codecs/sample.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/codecs/sample.cpp')
-rw-r--r--src/codecs/sample.cpp9
1 files changed, 3 insertions, 6 deletions
diff --git a/src/codecs/sample.cpp b/src/codecs/sample.cpp
index c99710f1..63d14203 100644
--- a/src/codecs/sample.cpp
+++ b/src/codecs/sample.cpp
@@ -17,12 +17,9 @@ static uint64_t sSeed1{0};
static uint64_t sSeed2{0};
auto shiftWithDither(int64_t src, uint_fast8_t bits) -> Sample {
- // Generate `bits` random bits
- uint64_t mask = 0xFFFFFFFF;
- mask >>= 32 - bits;
- int64_t noise = static_cast<int32_t>(komirand(&sSeed1, &sSeed2) & mask);
- // Apply to the sample, then shift to 16 bit.
- return (src + noise) >> bits;
+ // FIXME: Use a better dither.
+ int16_t noise = static_cast<int16_t>(komirand(&sSeed1, &sSeed2) & 1);
+ return (src >> bits) ^ noise;
}
} // namespace sample