summaryrefslogtreecommitdiff
path: root/apps/dsp.c
diff options
context:
space:
mode:
Diffstat (limited to 'apps/dsp.c')
-rw-r--r--apps/dsp.c8
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}