diff options
Diffstat (limited to 'engines/tucker')
| -rw-r--r-- | engines/tucker/sequences.cpp | 25 |
1 files changed, 11 insertions, 14 deletions
diff --git a/engines/tucker/sequences.cpp b/engines/tucker/sequences.cpp index e8280c3038..d115b1a8d1 100644 --- a/engines/tucker/sequences.cpp +++ b/engines/tucker/sequences.cpp @@ -601,27 +601,24 @@ Audio::AudioStream *AnimationSequencePlayer::loadSound(int index, AnimationSound case kAnimationSoundType16BitsRAW: size = f.size(); rate = 22050; - flags = Audio::Mixer::FLAG_UNSIGNED; - if (type == kAnimationSoundType16BitsRAW) { + flags = Audio::Mixer::FLAG_UNSIGNED|Audio::Mixer::FLAG_AUTOFREE; + if (type == kAnimationSoundType16BitsRAW) flags = Audio::Mixer::FLAG_LITTLE_ENDIAN | Audio::Mixer::FLAG_16BITS; + + if (size != 0) { + uint8 *sampleData = (uint8 *)malloc(size); + if (sampleData) { + f.read(sampleData, size); + stream = Audio::makeLinearInputStream(sampleData, size, rate, flags, 0, 0); + } } break; case kAnimationSoundTypeWAV: case kAnimationSoundTypeLoopingWAV: - Audio::loadWAVFromStream(f, size, rate, flags); - if (type == kAnimationSoundTypeLoopingWAV) { - flags |= Audio::Mixer::FLAG_LOOP; - } + stream = Audio::makeWAVStream(&f, true, type == kAnimationSoundTypeLoopingWAV); break; } - if (size != 0) { - uint8 *sampleData = (uint8 *)malloc(size); - if (sampleData) { - f.read(sampleData, size); - flags |= Audio::Mixer::FLAG_AUTOFREE; - stream = Audio::makeLinearInputStream(sampleData, size, rate, flags, 0, 0); - } - } + } return stream; } |
