fix issue with unclipped dither

custom
jacqueline 1 year ago
parent d1ae1a4230
commit 1525afe8aa
  1. 9
      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

Loading…
Cancel
Save