summaryrefslogtreecommitdiffstats
path: root/src/pulsecore/svolume_arm.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/pulsecore/svolume_arm.c')
-rw-r--r--src/pulsecore/svolume_arm.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/src/pulsecore/svolume_arm.c b/src/pulsecore/svolume_arm.c
index 5bd1448f..fdd8f09a 100644
--- a/src/pulsecore/svolume_arm.c
+++ b/src/pulsecore/svolume_arm.c
@@ -47,7 +47,10 @@ pa_volume_s16ne_arm (int16_t *samples, int32_t *volumes, unsigned channels, unsi
{
int32_t *ve;
- channels = PA_MAX (4U, channels);
+ /* Channels must be at least 4, and always a multiple of the original number.
+ * This is also the max amount we overread the volume array, which should
+ * have enough padding. */
+ channels = channels == 3 ? 6 : PA_MAX (4U, channels);
ve = volumes + channels;
__asm__ __volatile__ (