summaryrefslogtreecommitdiffstats
path: root/src/pulsecore
diff options
context:
space:
mode:
authorLennart Poettering <lennart@poettering.net>2008-10-02 02:29:56 +0200
committerLennart Poettering <lennart@poettering.net>2008-10-02 02:29:56 +0200
commitea82dec294310b83be25b4e0c940fd2cd2c7eeb3 (patch)
treef68e05851c314a8caed9cd0084d43e56f37f6883 /src/pulsecore
parent08cf9db0d17f8e2cfc68976fd96f0374721cdf22 (diff)
when we mix into a 16bit accumulator make sure we clamp before we scale with a volume to avoid range faults when multiplying
Diffstat (limited to 'src/pulsecore')
-rw-r--r--src/pulsecore/sample-util.c8
1 files changed, 4 insertions, 4 deletions
diff --git a/src/pulsecore/sample-util.c b/src/pulsecore/sample-util.c
index b4234af5..25178a8a 100644
--- a/src/pulsecore/sample-util.c
+++ b/src/pulsecore/sample-util.c
@@ -214,8 +214,8 @@ size_t pa_mix(
m->ptr = (uint8_t*) m->ptr + sizeof(int16_t);
}
- sum = (sum * linear[channel]) / 0x10000;
sum = PA_CLAMP_UNLIKELY(sum, -0x8000, 0x7FFF);
+ sum = (sum * linear[channel]) / 0x10000;
*((int16_t*) data) = (int16_t) sum;
data = (uint8_t*) data + sizeof(int16_t);
@@ -253,8 +253,8 @@ size_t pa_mix(
m->ptr = (uint8_t*) m->ptr + sizeof(int16_t);
}
- sum = (sum * linear[channel]) / 0x10000;
sum = PA_CLAMP_UNLIKELY(sum, -0x8000, 0x7FFF);
+ sum = (sum * linear[channel]) / 0x10000;
*((int16_t*) data) = PA_INT16_SWAP((int16_t) sum);
data = (uint8_t*) data + sizeof(int16_t);
@@ -411,8 +411,8 @@ size_t pa_mix(
m->ptr = (uint8_t*) m->ptr + 1;
}
- sum = (sum * linear[channel]) / 0x10000;
sum = PA_CLAMP_UNLIKELY(sum, -0x8000, 0x7FFF);
+ sum = (sum * linear[channel]) / 0x10000;
*((uint8_t*) data) = (uint8_t) st_14linear2ulaw((int16_t) sum >> 2);
data = (uint8_t*) data + 1;
@@ -450,8 +450,8 @@ size_t pa_mix(
m->ptr = (uint8_t*) m->ptr + 1;
}
- sum = (sum * linear[channel]) / 0x10000;
sum = PA_CLAMP_UNLIKELY(sum, -0x8000, 0x7FFF);
+ sum = (sum * linear[channel]) / 0x10000;
*((uint8_t*) data) = (uint8_t) st_13linear2alaw((int16_t) sum >> 3);
data = (uint8_t*) data + 1;