From e3351e16c69eab9daeb56ed824963fc0be961067 Mon Sep 17 00:00:00 2001 From: Chris Moeller Date: Thu, 22 May 2014 00:02:16 -0700 Subject: [PATCH] Fixed st3play handling 16 bit samples incorrectly --- Frameworks/modplay/modplay/st3play.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Frameworks/modplay/modplay/st3play.c b/Frameworks/modplay/modplay/st3play.c index 6de1a0a60..dc2c31186 100644 --- a/Frameworks/modplay/modplay/st3play.c +++ b/Frameworks/modplay/modplay/st3play.c @@ -3240,7 +3240,7 @@ static inline void mix16b(PLAYER *p, uint8_t ch, uint32_t samples) while (interpolating && resampler_get_free_count(resampler)) { - resampler_write_sample_fixed(resampler, get_le16(&sampleData[samplePosition]), 16); + resampler_write_sample_fixed(resampler, (int16_t)get_le16(&sampleData[samplePosition]), 16); ++samplePosition; @@ -3381,8 +3381,8 @@ static inline void mix16bstereo(PLAYER *p, uint8_t ch, uint32_t samples) while (interpolating && resampler_get_free_count(resampler[0])) { - resampler_write_sample_fixed(resampler[0], get_le16(&sampleData[samplePosition]), 16); - resampler_write_sample_fixed(resampler[1], get_le16(&sampleData[sampleLength + samplePosition]), 16); + resampler_write_sample_fixed(resampler[0], (int16_t)get_le16(&sampleData[samplePosition]), 16); + resampler_write_sample_fixed(resampler[1], (int16_t)get_le16(&sampleData[sampleLength + samplePosition]), 16); ++samplePosition;