diff options
Diffstat (limited to 'graphics/video/smk_decoder.cpp')
-rw-r--r-- | graphics/video/smk_decoder.cpp | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/graphics/video/smk_decoder.cpp b/graphics/video/smk_decoder.cpp index a919c60574..2f796c4a65 100644 --- a/graphics/video/smk_decoder.cpp +++ b/graphics/video/smk_decoder.cpp @@ -368,7 +368,7 @@ int32 SmackerDecoder::getAudioLag() { return 0; int32 frameDelay = getFrameDelay(); - int32 videoTime = _videoInfo.currentFrame * frameDelay; + int32 videoTime = (_videoInfo.currentFrame + 1) * frameDelay; int32 audioTime; if (!_audioStream) { @@ -396,7 +396,7 @@ bool SmackerDecoder::loadFile(const char *fileName) { return false; // Seek to the first frame - _videoInfo.currentFrame = 0; + _videoInfo.currentFrame = -1; _header.signature = _fileStream->readUint32BE(); // No BINK support available @@ -535,6 +535,8 @@ bool SmackerDecoder::decodeNextFrame() { uint32 startPos = _fileStream->pos(); + _videoInfo.currentFrame++; + if (_videoInfo.currentFrame == 0) _videoInfo.startTime = g_system->getMillis(); @@ -749,7 +751,7 @@ bool SmackerDecoder::decodeNextFrame() { free(_frameData); - return ++_videoInfo.currentFrame < _videoInfo.frameCount; + return !endOfVideo(); } void SmackerDecoder::queueCompressedBuffer(byte *buffer, uint32 bufferSize, |