aboutsummaryrefslogtreecommitdiff
path: root/audio/mixer_intern.h
diff options
context:
space:
mode:
authorColin Snover2017-09-09 22:32:55 -0500
committerColin Snover2017-09-09 23:29:58 -0500
commit41506201b908347ae7fba88cfdd3bcc53e6b4056 (patch)
treeb09ce301fb52776f1234987ca3b615ce7a3125e3 /audio/mixer_intern.h
parent393c0d1f6250d0fd13f201c7ae28e51bd8c93215 (diff)
downloadscummvm-rg350-41506201b908347ae7fba88cfdd3bcc53e6b4056.tar.gz
scummvm-rg350-41506201b908347ae7fba88cfdd3bcc53e6b4056.tar.bz2
scummvm-rg350-41506201b908347ae7fba88cfdd3bcc53e6b4056.zip
AUDIO: Fix incorrect reading of DK3 ADPCM audio data
Previously, _topNibble was not reset at the beginning of a new audio block, and the alignment byte at the end of odd blocks was being read as audio data, which caused audible clicks and out-of-bounds sample generation. There may have also been read errors related to the use of continue/break keywords inside of a macro wrapped with do-while(0). The introduction of partial block reads in this code when it was converted from ffmpeg to a ReadStream interface was also confusing and somewhat inefficient (calling SeekableReadStream::pos frequently), so this code has been refactored for clarity and to improve efficiency by reducing the number of virtual calls. Error detection has also been improved somewhat by ensuring that there are enough bytes to read a block header, and that the step indexes in the header are within the valid range.
Diffstat (limited to 'audio/mixer_intern.h')
0 files changed, 0 insertions, 0 deletions