diff options
author | Johannes Schickel | 2013-06-08 08:17:51 -0700 |
---|---|---|
committer | Johannes Schickel | 2013-06-08 08:17:51 -0700 |
commit | 190ec9c2b64c940272d2f3e207296ce3eaab043f (patch) | |
tree | 2ea468d8dc818e0b230bdf28f36de7ea1c5391ab | |
parent | 4401f40f7203f7aaa78c2e1c904c70902325436c (diff) | |
parent | c3de517fb427c681415680daa0e3c5b4f087e095 (diff) | |
download | scummvm-rg350-190ec9c2b64c940272d2f3e207296ce3eaab043f.tar.gz scummvm-rg350-190ec9c2b64c940272d2f3e207296ce3eaab043f.tar.bz2 scummvm-rg350-190ec9c2b64c940272d2f3e207296ce3eaab043f.zip |
Merge pull request #336 from madmoose/smacker-8-bit-audio-fix
VIDEO: Wrap 8-bit smacker audio properly
-rw-r--r-- | video/smk_decoder.cpp | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/video/smk_decoder.cpp b/video/smk_decoder.cpp index 4e18268e72..b622a0ab61 100644 --- a/video/smk_decoder.cpp +++ b/video/smk_decoder.cpp @@ -821,8 +821,9 @@ void SmackerDecoder::SmackerAudioTrack::queueCompressedBuffer(byte *buffer, uint // (the exact opposite to the base values) if (!is16Bits) { for (int k = 0; k < (isStereo ? 2 : 1); k++) { - bases[k] += (int8) ((int16) audioTrees[k]->getCode(audioBS)); - *curPointer++ = CLIP<int>(bases[k], 0, 255) ^ 0x80; + int8 delta = (int8) ((int16) audioTrees[k]->getCode(audioBS)); + bases[k] = (bases[k] + delta) & 0xFF; + *curPointer++ = bases[k] ^ 0x80; curPos++; } } else { |