Generic mixing function for 32bits pcm has used 8bits right shift for
pre-scaling. But this is generating wrong result if pcm data is
negative value because return value type of bswap_32() is unsigned int.
This patch adds type cast bswap_32() result to signed int.
Fixes: https://github.com/alsa-project/alsa-lib/pull/222
Signed-off-by: Katsuhiro Suzuki <katsuhiro@katsuster.net>
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
register signed int sample;
for (;;) {
- sample = bswap_32(*src) >> 8;
+ sample = (signed int) bswap_32(*src) >> 8;
if (! *dst) {
*sum = sample;
*dst = *src;
register signed int sample;
for (;;) {
- sample = bswap_32(*src) >> 8;
+ sample = (signed int) bswap_32(*src) >> 8;
if (! *dst) {
*sum = -sample;
*dst = bswap_32(-sample);