[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