Browse Source

Fixed wrapping bug on non-dithered 16bit output when level = 1.0 +- 2^-15

Buf report and patch by Nick Lamb


git-svn-id: svn+ssh://jackaudio.org/trunk/jack@617 0c269be4-1314-0410-8aa9-9f06e86f4224
tags/0.109.0
theno23 22 years ago
parent
commit
c1c6855667
1 changed files with 5 additions and 5 deletions
  1. +5
    -5
      drivers/alsa/memops.c

+ 5
- 5
drivers/alsa/memops.c View File

@@ -341,18 +341,18 @@ void sample_move_dither_shaped_d24_sS (char *dst, jack_default_audio_sample_t *
void sample_move_d16_sS (char *dst, jack_default_audio_sample_t *src, unsigned long nsamples, unsigned long dst_skip, dither_state_t *state)
{
jack_default_audio_sample_t val;
int tmp;

/* ALERT: signed sign-extension portability !!! */

while (nsamples--) {
val = *src;
if (val > 1.0f) {
tmp = f_round(*src * SAMPLE_MAX_16BIT);
if (tmp > SHRT_MAX) {
*((short *)dst) = SHRT_MAX;
} else if (val < -1.0f) {
} else if (tmp < SHRT_MIN) {
*((short *)dst) = SHRT_MIN;
} else {
*((short *) dst) = (short) f_round(val * SAMPLE_MAX_16BIT);
*((short *) dst) = (short) tmp;
}
dst += dst_skip;
src++;


Loading…
Cancel
Save