From ee8cb6aa67e20947b771558ba81c3dd02f3163d4 Mon Sep 17 00:00:00 2001 From: Wim Taymans Date: Wed, 27 Sep 2023 16:10:56 +0200 Subject: [PATCH] filter-chain: fix gain when mixing 1 source The gain was not used when mixing just one source. --- src/modules/module-filter-chain/dsp-ops-c.c | 3 --- src/modules/module-filter-chain/dsp-ops-sse.c | 2 +- 2 files changed, 1 insertion(+), 4 deletions(-) diff --git a/src/modules/module-filter-chain/dsp-ops-c.c b/src/modules/module-filter-chain/dsp-ops-c.c index 68b3080e8..30fe8be18 100644 --- a/src/modules/module-filter-chain/dsp-ops-c.c +++ b/src/modules/module-filter-chain/dsp-ops-c.c @@ -63,9 +63,6 @@ void dsp_mix_gain_c(struct dsp_ops *ops, uint32_t i; if (n_src == 0) { dsp_clear_c(ops, dst, n_samples); - } else if (n_src == 1) { - if (dst != src[0]) - dsp_copy_c(ops, dst, src[0], n_samples); } else { if (gain[0] == 1.0f) dsp_copy_c(ops, dst, src[0], n_samples); diff --git a/src/modules/module-filter-chain/dsp-ops-sse.c b/src/modules/module-filter-chain/dsp-ops-sse.c index 4821303d7..9eb94f794 100644 --- a/src/modules/module-filter-chain/dsp-ops-sse.c +++ b/src/modules/module-filter-chain/dsp-ops-sse.c @@ -19,7 +19,7 @@ void dsp_mix_gain_sse(struct dsp_ops *ops, { if (n_src == 0) { memset(dst, 0, n_samples * sizeof(float)); - } else if (n_src == 1) { + } else if (n_src == 1 && gain[0] == 1.0f) { if (dst != src[0]) spa_memcpy(dst, src[0], n_samples * sizeof(float)); } else {