[Scummvm-git-logs] scummvm master -> 680b6686145e2fff9a15b37e22093f9965817ce2
dreammaster
dreammaster at scummvm.org
Mon Jun 26 02:48:28 CEST 2017
This automated email contains information about 1 new commit which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .
Summary:
680b668614 VIDEO: Fix transparency track seeking in AVIDecoder
Commit: 680b6686145e2fff9a15b37e22093f9965817ce2
https://github.com/scummvm/scummvm/commit/680b6686145e2fff9a15b37e22093f9965817ce2
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2017-06-25T20:48:12-04:00
Commit Message:
VIDEO: Fix transparency track seeking in AVIDecoder
Changed paths:
video/avi_decoder.cpp
video/avi_decoder.h
diff --git a/video/avi_decoder.cpp b/video/avi_decoder.cpp
index ae30ec0..9f97ffd 100644
--- a/video/avi_decoder.cpp
+++ b/video/avi_decoder.cpp
@@ -717,10 +717,6 @@ bool AVIDecoder::seekIntern(const Audio::Timestamp &time) {
// Update any secondary video track for transparencies
if (_videoTracks.size() == 2) {
- // Set it's frame number
- AVIVideoTrack *videoTrack2 = static_cast<AVIVideoTrack *>(_videoTracks.back().track);
- videoTrack2->setCurFrame((int)frame - 1);
-
// Find the index entry for the frame
int indexFrame = frame;
OldIndex *entry = nullptr;
@@ -729,6 +725,10 @@ bool AVIDecoder::seekIntern(const Audio::Timestamp &time) {
} while (!entry && indexFrame-- > 0);
assert(entry);
+ // Set it's frame number
+ AVIVideoTrack *videoTrack2 = static_cast<AVIVideoTrack *>(_videoTracks.back().track);
+ videoTrack2->setCurFrame(indexFrame - 1);
+
// Read in the frame
Common::SeekableReadStream *chunk = nullptr;
_fileStream->seek(entry->offset + 8);
@@ -746,6 +746,9 @@ bool AVIDecoder::seekIntern(const Audio::Timestamp &time) {
handleNextPacket(status);
}
}
+
+ videoTrack2->setCurFrame((int)frame - 1);
+ videoTrack2->setFrameRate(videoTrack->getFrameRate());
}
// Set the video track's frame
diff --git a/video/avi_decoder.h b/video/avi_decoder.h
index cc5c2c4..541c73e 100644
--- a/video/avi_decoder.h
+++ b/video/avi_decoder.h
@@ -229,9 +229,19 @@ protected:
* Returns true if at the end of the video track
*/
virtual bool endOfTrack() const;
- protected:
+
+ /**
+ * Get track frame rate
+ */
Common::Rational getFrameRate() const { return Common::Rational(_vidsHeader.rate, _vidsHeader.scale); }
+ /**
+ * Force sets a new frame rate
+ */
+ void setFrameRate(const Common::Rational &r) {
+ _vidsHeader.rate = r.getNumerator();
+ _vidsHeader.scale = r.getDenominator();
+ }
private:
AVIStreamHeader _vidsHeader;
BitmapInfoHeader _bmInfo;
More information about the Scummvm-git-logs
mailing list