aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatthew Hoops2012-08-20 17:06:58 -0400
committerMatthew Hoops2012-08-20 17:06:58 -0400
commit6c155b6b36f77a932a54e9b01c08f938c73e24eb (patch)
tree1baa404c63bf057e3ee16f71b39ae8b29b7d64dd
parent7af4e403042c9d67c6f00bb151225cee6abc5e0d (diff)
downloadscummvm-rg350-6c155b6b36f77a932a54e9b01c08f938c73e24eb.tar.gz
scummvm-rg350-6c155b6b36f77a932a54e9b01c08f938c73e24eb.tar.bz2
scummvm-rg350-6c155b6b36f77a932a54e9b01c08f938c73e24eb.zip
VIDEO: Implement rewinding Smacker audio tracks
-rw-r--r--video/smk_decoder.cpp7
-rw-r--r--video/smk_decoder.h3
2 files changed, 9 insertions, 1 deletions
diff --git a/video/smk_decoder.cpp b/video/smk_decoder.cpp
index d01ec730f4..bea65142a1 100644
--- a/video/smk_decoder.cpp
+++ b/video/smk_decoder.cpp
@@ -410,7 +410,6 @@ void SmackerDecoder::close() {
bool SmackerDecoder::rewind() {
// Call the parent method to rewind the tracks first
- // In particular, only videos without sound can be rewound
if (!VideoDecoder::rewind())
return false;
@@ -755,6 +754,12 @@ SmackerDecoder::SmackerAudioTrack::~SmackerAudioTrack() {
delete _audioStream;
}
+bool SmackerDecoder::SmackerAudioTrack::rewind() {
+ delete _audioStream;
+ _audioStream = Audio::makeQueuingAudioStream(_audioInfo.sampleRate, _audioInfo.isStereo);
+ return true;
+}
+
Audio::AudioStream *SmackerDecoder::SmackerAudioTrack::getAudioStream() const {
return _audioStream;
}
diff --git a/video/smk_decoder.h b/video/smk_decoder.h
index 6bded64a37..7227238373 100644
--- a/video/smk_decoder.h
+++ b/video/smk_decoder.h
@@ -156,6 +156,9 @@ private:
SmackerAudioTrack(const AudioInfo &audioInfo, Audio::Mixer::SoundType soundType);
~SmackerAudioTrack();
+ bool isRewindable() const { return true; }
+ bool rewind();
+
Audio::Mixer::SoundType getSoundType() const { return _soundType; }
void queueCompressedBuffer(byte *buffer, uint32 bufferSize, uint32 unpackedSize);