aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJohannes Schickel2010-01-07 16:44:17 +0000
committerJohannes Schickel2010-01-07 16:44:17 +0000
commit4f52dcea66e412f2ccfb6527beb01777e5b2c850 (patch)
tree45930ba4a16016e85aec4f326561556bd7d2472a
parentd5fe29c3c949fda84a5a7a276160d57e646fc952 (diff)
downloadscummvm-rg350-4f52dcea66e412f2ccfb6527beb01777e5b2c850.tar.gz
scummvm-rg350-4f52dcea66e412f2ccfb6527beb01777e5b2c850.tar.bz2
scummvm-rg350-4f52dcea66e412f2ccfb6527beb01777e5b2c850.zip
Adapt TUCKER to use RewindableAudioStream and Mixer::playInputStreamLooping. (Needs testing, please :-)
svn-id: r47130
-rw-r--r--engines/tucker/resource.cpp24
-rw-r--r--engines/tucker/sequences.cpp17
-rw-r--r--engines/tucker/tucker.h7
3 files changed, 25 insertions, 23 deletions
diff --git a/engines/tucker/resource.cpp b/engines/tucker/resource.cpp
index c8f2448980..41add14c5c 100644
--- a/engines/tucker/resource.cpp
+++ b/engines/tucker/resource.cpp
@@ -43,7 +43,7 @@ enum {
struct CompressedSoundFile {
const char *filename;
- Audio::AudioStream *(*makeStream)(Common::SeekableReadStream *stream, bool disposeAfterUse, uint32 startTime, uint32 duration, uint numLoops);
+ Audio::SeekableAudioStream *(*makeStream)(Common::SeekableReadStream *stream, bool disposeAfterUse);
};
static const CompressedSoundFile compressedSoundFilesTable[] = {
@@ -232,7 +232,7 @@ void CompressedSound::closeFile() {
_fCompressedSound.close();
}
-Audio::AudioStream *CompressedSound::load(CompressedSoundType type, int num, bool loop) {
+Audio::RewindableAudioStream *CompressedSound::load(CompressedSoundType type, int num) {
if (_compressedSoundType < 0) {
return 0;
}
@@ -256,7 +256,7 @@ Audio::AudioStream *CompressedSound::load(CompressedSoundType type, int num, boo
if (offset == 0) {
return 0;
}
- Audio::AudioStream *stream = 0;
+ Audio::SeekableAudioStream *stream = 0;
_fCompressedSound.seek(offset);
int dirOffset = _fCompressedSound.readUint32LE();
int dirSize = _fCompressedSound.readUint32LE();
@@ -270,7 +270,7 @@ Audio::AudioStream *CompressedSound::load(CompressedSoundType type, int num, boo
_fCompressedSound.seek(dirOffset + dirSize * 8 + soundOffset);
Common::MemoryReadStream *tmp = _fCompressedSound.readStream(soundSize);
if (tmp) {
- stream = (compressedSoundFilesTable[_compressedSoundType].makeStream)(tmp, true, 0, 0, loop ? 0 : 1);
+ stream = (compressedSoundFilesTable[_compressedSoundType].makeStream)(tmp, true);
}
}
}
@@ -913,16 +913,16 @@ void TuckerEngine::loadFx() {
}
void TuckerEngine::loadSound(Audio::Mixer::SoundType type, int num, int volume, bool loop, Audio::SoundHandle *handle) {
- Audio::AudioStream *stream = 0;
+ Audio::RewindableAudioStream *stream = 0;
switch (type) {
case Audio::Mixer::kSFXSoundType:
- stream = _compressedSound.load(kSoundTypeFx, num, loop);
+ stream = _compressedSound.load(kSoundTypeFx, num);
break;
case Audio::Mixer::kMusicSoundType:
- stream = _compressedSound.load(kSoundTypeMusic, num, loop);
+ stream = _compressedSound.load(kSoundTypeMusic, num);
break;
case Audio::Mixer::kSpeechSoundType:
- stream = _compressedSound.load(kSoundTypeSpeech, num, loop);
+ stream = _compressedSound.load(kSoundTypeSpeech, num);
break;
default:
return;
@@ -946,7 +946,7 @@ void TuckerEngine::loadSound(Audio::Mixer::SoundType type, int num, int volume,
snprintf(fileName, sizeof(fileName), fmt, num);
Common::File *f = new Common::File;
if (f->open(fileName)) {
- stream = Audio::makeLoopingAudioStream(Audio::makeWAVStream(f, true), loop ? 0 : 1);
+ stream = Audio::makeWAVStream(f, true);
} else {
delete f;
}
@@ -954,7 +954,11 @@ void TuckerEngine::loadSound(Audio::Mixer::SoundType type, int num, int volume,
if (stream) {
_mixer->stopHandle(*handle);
- _mixer->playInputStream(type, handle, stream, -1, scaleMixerVolume(volume, kMaxSoundVolume));
+
+ if (loop)
+ _mixer->playInputStreamLooping(type, handle, stream, 0, -1, scaleMixerVolume(volume, kMaxSoundVolume));
+ else
+ _mixer->playInputStream(type, handle, stream, -1, scaleMixerVolume(volume, kMaxSoundVolume));
}
}
diff --git a/engines/tucker/sequences.cpp b/engines/tucker/sequences.cpp
index ed31778209..a7527166cc 100644
--- a/engines/tucker/sequences.cpp
+++ b/engines/tucker/sequences.cpp
@@ -574,11 +574,11 @@ void AnimationSequencePlayer::syncTime() {
} while (_lastFrameTime <= end);
}
-Audio::AudioStream *AnimationSequencePlayer::loadSound(int index, AnimationSoundType type) {
- Audio::AudioStream *stream = _compressedSound->load(kSoundTypeIntro, index, type == kAnimationSoundTypeLoopingWAV);
- if (stream) {
+Audio::RewindableAudioStream *AnimationSequencePlayer::loadSound(int index, AnimationSoundType type) {
+ Audio::RewindableAudioStream *stream = _compressedSound->load(kSoundTypeIntro, index);
+ if (stream)
return stream;
- }
+
char fileName[64];
snprintf(fileName, sizeof(fileName), "audio/%s", _audioFileNamesTable[index]);
Common::File f;
@@ -603,8 +603,7 @@ Audio::AudioStream *AnimationSequencePlayer::loadSound(int index, AnimationSound
}
break;
case kAnimationSoundTypeWAV:
- case kAnimationSoundTypeLoopingWAV:
- stream = Audio::makeLoopingAudioStream(Audio::makeWAVStream(&f, true), type == kAnimationSoundTypeLoopingWAV ? 0 : 1);
+ stream = Audio::makeWAVStream(&f, true);
break;
}
@@ -625,7 +624,7 @@ void AnimationSequencePlayer::loadSounds(int num) {
}
void AnimationSequencePlayer::updateSounds() {
- Audio::AudioStream *s = 0;
+ Audio::RewindableAudioStream *s = 0;
const SoundSequenceData *p = &_soundSeqData[_soundSeqDataIndex];
while (_soundSeqDataIndex < _soundSeqDataCount && p->timestamp <= _frameCounter) {
switch (p->opcode) {
@@ -635,8 +634,8 @@ void AnimationSequencePlayer::updateSounds() {
}
break;
case 1:
- if ((s = loadSound(p->num, kAnimationSoundTypeLoopingWAV)) != 0) {
- _mixer->playInputStream(Audio::Mixer::kSFXSoundType, &_soundsHandle[p->index], s, -1, scaleMixerVolume(p->volume));
+ if ((s = loadSound(p->num, kAnimationSoundTypeWAV)) != 0) {
+ _mixer->playInputStreamLooping(Audio::Mixer::kSFXSoundType, &_soundsHandle[p->index], s, 0, -1, scaleMixerVolume(p->volume));
}
break;
case 2:
diff --git a/engines/tucker/tucker.h b/engines/tucker/tucker.h
index 05ec9cf60e..aff8e52550 100644
--- a/engines/tucker/tucker.h
+++ b/engines/tucker/tucker.h
@@ -232,7 +232,7 @@ public:
void openFile();
void closeFile();
- Audio::AudioStream *load(CompressedSoundType type, int num, bool loop);
+ Audio::RewindableAudioStream *load(CompressedSoundType type, int num);
private:
@@ -872,8 +872,7 @@ enum {
enum AnimationSoundType {
kAnimationSoundType8BitsRAW,
kAnimationSoundType16BitsRAW,
- kAnimationSoundTypeWAV,
- kAnimationSoundTypeLoopingWAV
+ kAnimationSoundTypeWAV
};
enum {
@@ -927,7 +926,7 @@ private:
void syncTime();
void loadSounds(int num);
- Audio::AudioStream *loadSound(int index, AnimationSoundType type);
+ Audio::RewindableAudioStream *loadSound(int index, AnimationSoundType type);
void updateSounds();
void fadeInPalette();
void fadeOutPalette();