diff options
Diffstat (limited to 'apps/dsp.c')
-rw-r--r-- | apps/dsp.c | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/apps/dsp.c b/apps/dsp.c index f05c6f14ce..699b0c5c67 100644 --- a/apps/dsp.c +++ b/apps/dsp.c | |||
@@ -414,10 +414,11 @@ static void sample_output_mono(int count, struct dsp_data *data, | |||
414 | { | 414 | { |
415 | const int32_t *s0 = src[0]; | 415 | const int32_t *s0 = src[0]; |
416 | const int scale = data->output_scale; | 416 | const int scale = data->output_scale; |
417 | const int dc_bias = 1 << (scale - 1); | ||
417 | 418 | ||
418 | do | 419 | do |
419 | { | 420 | { |
420 | int32_t lr = clip_sample_16(*s0++ >> scale); | 421 | int32_t lr = clip_sample_16((*s0++ + dc_bias) >> scale); |
421 | *dst++ = lr; | 422 | *dst++ = lr; |
422 | *dst++ = lr; | 423 | *dst++ = lr; |
423 | } | 424 | } |
@@ -433,11 +434,12 @@ static void sample_output_stereo(int count, struct dsp_data *data, | |||
433 | const int32_t *s0 = src[0]; | 434 | const int32_t *s0 = src[0]; |
434 | const int32_t *s1 = src[1]; | 435 | const int32_t *s1 = src[1]; |
435 | const int scale = data->output_scale; | 436 | const int scale = data->output_scale; |
437 | const int dc_bias = 1 << (scale - 1); | ||
436 | 438 | ||
437 | do | 439 | do |
438 | { | 440 | { |
439 | *dst++ = clip_sample_16(*s0++ >> scale); | 441 | *dst++ = clip_sample_16((*s0++ + dc_bias) >> scale); |
440 | *dst++ = clip_sample_16(*s1++ >> scale); | 442 | *dst++ = clip_sample_16((*s1++ + dc_bias) >> scale); |
441 | } | 443 | } |
442 | while (--count > 0); | 444 | while (--count > 0); |
443 | } | 445 | } |