diff options
| author | Johannes Schickel | 2010-01-10 15:20:14 +0000 |
|---|---|---|
| committer | Johannes Schickel | 2010-01-10 15:20:14 +0000 |
| commit | 6ca0570fe3bb3f3765677ff8cd3f9e0cbf062d6b (patch) | |
| tree | 732a2cc846d6f70dd2c42b0dc0cd52d45de34bb2 /engines | |
| parent | bda3fc940c3ecca011b04a32fb20970f53f49d1c (diff) | |
| download | scummvm-rg350-6ca0570fe3bb3f3765677ff8cd3f9e0cbf062d6b.tar.gz scummvm-rg350-6ca0570fe3bb3f3765677ff8cd3f9e0cbf062d6b.tar.bz2 scummvm-rg350-6ca0570fe3bb3f3765677ff8cd3f9e0cbf062d6b.zip | |
- Add a SubLoopingAudioStream, which loops a nested part of a stream and thus features the same looping capabilites as LinearMemoryStream and LinearDiskStream.
- Remove custom looping code from LinearMemoryStream and LinearDiskStream.
- Adapt various client code to the changes.
svn-id: r47226
Diffstat (limited to 'engines')
| -rw-r--r-- | engines/kyra/sound.cpp | 4 | ||||
| -rw-r--r-- | engines/saga/music.cpp | 16 | ||||
| -rw-r--r-- | engines/sci/sound/audio.cpp | 7 | ||||
| -rw-r--r-- | engines/sci/sound/music.cpp | 3 | ||||
| -rw-r--r-- | engines/tucker/sequences.cpp | 2 |
5 files changed, 19 insertions, 13 deletions
diff --git a/engines/kyra/sound.cpp b/engines/kyra/sound.cpp index 4049d2b456..b97d367206 100644 --- a/engines/kyra/sound.cpp +++ b/engines/kyra/sound.cpp @@ -244,9 +244,9 @@ namespace { Audio::SeekableAudioStream *makeVOCStream(Common::SeekableReadStream *stream, bool disposeAfterUse) { #ifdef STREAM_AUDIO_FROM_DISK - Audio::SeekableAudioStream *as = Audio::makeVOCStream(*stream, Audio::Mixer::FLAG_UNSIGNED, 0, 0, disposeAfterUse); + Audio::SeekableAudioStream *as = Audio::makeVOCStream(*stream, Audio::Mixer::FLAG_UNSIGNED, disposeAfterUse); #else - Audio::SeekableAudioStream *as = Audio::makeVOCStream(*stream, Audio::Mixer::FLAG_UNSIGNED); + Audio::SeekableAudioStream *as = Audio::makeVOCStream(*stream, Audio::Mixer::FLAG_UNSIGNED, false); if (disposeAfterUse) delete stream; diff --git a/engines/saga/music.cpp b/engines/saga/music.cpp index a5c28c213e..7fe8c0dbb2 100644 --- a/engines/saga/music.cpp +++ b/engines/saga/music.cpp @@ -292,7 +292,7 @@ void Music::play(uint32 resourceId, MusicFlags flags) { loopStart = 0; // Fix ITE sunstatm/sunspot score if (resourceId == MUSIC_SUNSPOT) - loopStart = 4 * 18727; + loopStart = 18727; // Digital music ResourceData *resData = _digitalMusicContext->getResourceData(resourceId - 9); @@ -311,7 +311,7 @@ void Music::play(uint32 resourceId, MusicFlags flags) { Audio::LinearDiskStreamAudioBlock audioBlocks[1]; audioBlocks[0].pos = 0; audioBlocks[0].len = resData->size / 2; // 16-bit sound - audioStream = Audio::makeLinearDiskStream(musicStream, audioBlocks, 1, 11025, musicFlags, false, loopStart, 0); + audioStream = Audio::makeLinearDiskStream(musicStream, audioBlocks, 1, 11025, musicFlags, false); } else { // Read compressed header to determine compression type musicFile->seek((uint32)resData->offset, SEEK_SET); @@ -337,8 +337,16 @@ void Music::play(uint32 resourceId, MusicFlags flags) { if (audioStream) { debug(2, "Playing digitized music"); - _mixer->playInputStream(Audio::Mixer::kMusicSoundType, &_musicHandle, - Audio::makeLoopingAudioStream(audioStream, (flags == MUSIC_LOOP ? 0 : 1))); + if (loopStart) { + _mixer->playInputStream(Audio::Mixer::kMusicSoundType, &_musicHandle, + new Audio::SubLoopingAudioStream(audioStream, + (flags == MUSIC_LOOP ? 0 : 1), + Audio::Timestamp(0, loopStart, audioStream->getRate()), + audioStream->getLength())); + } else { + _mixer->playInputStream(Audio::Mixer::kMusicSoundType, &_musicHandle, + Audio::makeLoopingAudioStream(audioStream, (flags == MUSIC_LOOP ? 0 : 1))); + } _digitalMusic = true; return; } diff --git a/engines/sci/sound/audio.cpp b/engines/sci/sound/audio.cpp index 5a4f7aeafc..4011aa9fa3 100644 --- a/engines/sci/sound/audio.cpp +++ b/engines/sci/sound/audio.cpp @@ -243,10 +243,9 @@ Audio::RewindableAudioStream *AudioPlayer::getAudioStream(uint32 number, uint32 } } - if (data) { - audioStream = Audio::makeLinearInputStream(data, size, _audioRate, - flags | Audio::Mixer::FLAG_AUTOFREE, 0, 0); - } + if (data) + audioStream = Audio::makeLinearInputStream(data, size, _audioRate, flags | Audio::Mixer::FLAG_AUTOFREE); + if (audioStream) { *sampleLen = (flags & Audio::Mixer::FLAG_16BITS ? size >> 1 : size) * 60 / _audioRate; return audioStream; diff --git a/engines/sci/sound/music.cpp b/engines/sci/sound/music.cpp index 1bb4fa883f..4b452aad56 100644 --- a/engines/sci/sound/music.cpp +++ b/engines/sci/sound/music.cpp @@ -303,8 +303,7 @@ void SciMusic::soundInitSnd(MusicEntry *pSnd) { if (track->digitalChannelNr != -1) { byte *channelData = track->channels[track->digitalChannelNr].data; delete pSnd->pStreamAud; - pSnd->pStreamAud = Audio::makeLinearInputStream(channelData, track->digitalSampleSize, track->digitalSampleRate, - Audio::Mixer::FLAG_UNSIGNED, 0, 0); + pSnd->pStreamAud = Audio::makeLinearInputStream(channelData, track->digitalSampleSize, track->digitalSampleRate, Audio::Mixer::FLAG_UNSIGNED); delete pSnd->pLoopStream; pSnd->pLoopStream = 0; pSnd->soundType = Audio::Mixer::kSFXSoundType; diff --git a/engines/tucker/sequences.cpp b/engines/tucker/sequences.cpp index cae0f527c2..204913addf 100644 --- a/engines/tucker/sequences.cpp +++ b/engines/tucker/sequences.cpp @@ -598,7 +598,7 @@ Audio::RewindableAudioStream *AnimationSequencePlayer::loadSound(int index, Anim uint8 *sampleData = (uint8 *)malloc(size); if (sampleData) { f.read(sampleData, size); - stream = Audio::makeLinearInputStream(sampleData, size, rate, flags, 0, 0); + stream = Audio::makeLinearInputStream(sampleData, size, rate, flags); } } break; |
