From e74e115cd0509de49f0210049699e0a96ea9cd69 Mon Sep 17 00:00:00 2001 From: relrelb Date: Fri, 30 Oct 2020 19:10:00 +0200 Subject: [PATCH] core: Fix bug in PcmDecoder::next It looks like the mono and stereo cases were mistakenly swapped for 8-bit sounds. This commit simply swaps them to the correct order. --- core/src/backend/audio/decoders/pcm.rs | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/core/src/backend/audio/decoders/pcm.rs b/core/src/backend/audio/decoders/pcm.rs index dffbc1b8b..2cee5e056 100644 --- a/core/src/backend/audio/decoders/pcm.rs +++ b/core/src/backend/audio/decoders/pcm.rs @@ -35,10 +35,11 @@ impl Iterator for PcmDecoder { let right = i16::from_le_bytes(right); Some([left, right]) } else { - let mut bytes = [0u8]; + let mut bytes = [0u8; 2]; self.inner.read_exact(&mut bytes).ok()?; - let sample = (i16::from(bytes[0]) - 127) * 128; - Some([sample, sample]) + let left = (i16::from(bytes[0]) - 127) * 128; + let right = (i16::from(bytes[1]) - 127) * 128; + Some([left, right]) } } else if self.is_16_bit { let mut bytes = [0u8; 2]; @@ -46,11 +47,10 @@ impl Iterator for PcmDecoder { let sample = i16::from_le_bytes(bytes); Some([sample, sample]) } else { - let mut bytes = [0u8; 2]; + let mut bytes = [0u8]; self.inner.read_exact(&mut bytes).ok()?; - let left = (i16::from(bytes[0]) - 127) * 128; - let right = (i16::from(bytes[1]) - 127) * 128; - Some([left, right]) + let sample = (i16::from(bytes[0]) - 127) * 128; + Some([sample, sample]) } } }