aboutsummaryrefslogtreecommitdiff
path: root/engines
diff options
context:
space:
mode:
authorMartin Kiewitz2010-05-02 10:21:02 +0000
committerMartin Kiewitz2010-05-02 10:21:02 +0000
commit561ad566169177227facc2b8e7a64959c3dca586 (patch)
tree5d7d179e6c094794320c38c1f8f9a8d806cd23a6 /engines
parent0cd0d8bafe300f3cf9c02fbea0a9d3287936c6f7 (diff)
downloadscummvm-rg350-561ad566169177227facc2b8e7a64959c3dca586.tar.gz
scummvm-rg350-561ad566169177227facc2b8e7a64959c3dca586.tar.bz2
scummvm-rg350-561ad566169177227facc2b8e7a64959c3dca586.zip
SCI: make audio decompression (mp3/ogg/flac) work on BE devices
svn-id: r48889
Diffstat (limited to 'engines')
-rw-r--r--engines/sci/resource.cpp14
1 files changed, 9 insertions, 5 deletions
diff --git a/engines/sci/resource.cpp b/engines/sci/resource.cpp
index 3651fe9e91..9b9e56b6d7 100644
--- a/engines/sci/resource.cpp
+++ b/engines/sci/resource.cpp
@@ -282,14 +282,18 @@ void ResourceManager::checkIfAudioVolumeIsCompressed(ResourceSource *source) {
// Detected a compressed audio volume
source->audioCompressionType = compressionType;
// Now read the whole offset mapping table for later usage
- uint32 recordCount = file->readUint32LE();
+ int32 recordCount = file->readUint32LE();
if (!recordCount)
error("compressed audio volume doesn't contain any entries!");
- source->audioCompressionOffsetMapping = new int32[(recordCount + 1) * 2];
- file->read(source->audioCompressionOffsetMapping, recordCount * 4 * 2);
+ int32 *offsetMapping = new int32[(recordCount + 1) * 2];
+ source->audioCompressionOffsetMapping = offsetMapping;
+ for (int recordNo = 0; recordNo < recordCount; recordNo++) {
+ *offsetMapping++ = file->readUint32LE();
+ *offsetMapping++ = file->readUint32LE();
+ }
// Put ending zero
- source->audioCompressionOffsetMapping[recordCount * 2] = 0;
- source->audioCompressionOffsetMapping[recordCount * 2 + 1] = file->size();
+ *offsetMapping++ = 0;
+ *offsetMapping++ = file->size();
}
}