aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-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);