[Scummvm-cvs-logs] SF.net SVN: scummvm:[35458] scummvm/trunk

Kirben at users.sourceforge.net Kirben at users.sourceforge.net
Sun Dec 21 06:55:38 CET 2008


Revision: 35458
          http://scummvm.svn.sourceforge.net/scummvm/?rev=35458&view=rev
Author:   Kirben
Date:     2008-12-21 05:55:37 +0000 (Sun, 21 Dec 2008)

Log Message:
-----------
Return exact frame rate in Smacker player, and minor cleanup.

Modified Paths:
--------------
    scummvm/trunk/engines/agos/animation.cpp
    scummvm/trunk/graphics/dxa_player.cpp
    scummvm/trunk/graphics/dxa_player.h
    scummvm/trunk/graphics/smk_player.cpp
    scummvm/trunk/graphics/smk_player.h

Modified: scummvm/trunk/engines/agos/animation.cpp
===================================================================
--- scummvm/trunk/engines/agos/animation.cpp	2008-12-21 04:36:11 UTC (rev 35457)
+++ scummvm/trunk/engines/agos/animation.cpp	2008-12-21 05:55:37 UTC (rev 35458)
@@ -312,7 +312,7 @@
 }
 
 void MoviePlayerDXA::nextFrame() {
-	if (_vm->_mixer->isSoundHandleActive(_bgSound) && (_vm->_mixer->getSoundElapsedTime(_bgSound) * _framesPerSec) / 1000 < _frameNum) {
+	if (_vm->_mixer->isSoundHandleActive(_bgSound) && (_vm->_mixer->getSoundElapsedTime(_bgSound) * getFrameRate()) / 1000 < _frameNum) {
 		copyFrameToBuffer(_vm->getBackBuf(), 465, 222, _vm->_screenWidth);
 		return;
 	}
@@ -353,15 +353,15 @@
 	copyFrameToBuffer((byte *)screen->pixels, (_vm->_screenWidth - _width) / 2, (_vm->_screenHeight - _height) / 2, _vm->_screenWidth);
 	_vm->_system->unlockScreen();
 
-	if ((_bgSoundStream == NULL) || ((int)(_mixer->getSoundElapsedTime(_bgSound) * _framesPerSec) / 1000 < _frameNum + 1) ||
-		_frameSkipped > _framesPerSec) {
-		if (_frameSkipped > _framesPerSec) {
+	if ((_bgSoundStream == NULL) || ((int)(_mixer->getSoundElapsedTime(_bgSound) * getFrameRate()) / 1000 < _frameNum + 1) ||
+		_frameSkipped > getFrameRate()) {
+		if (_frameSkipped > getFrameRate()) {
 			warning("force frame %i redraw", _frameNum);
 			_frameSkipped = 0;
 		}
 
 		if (_bgSoundStream && _mixer->isSoundHandleActive(_bgSound)) {
-			while (_mixer->isSoundHandleActive(_bgSound) && (_mixer->getSoundElapsedTime(_bgSound) * _framesPerSec) / 1000 < _frameNum) {
+			while (_mixer->isSoundHandleActive(_bgSound) && (_mixer->getSoundElapsedTime(_bgSound) * getFrameRate()) / 1000 < _frameNum) {
 				_vm->_system->delayMillis(10);
 			}
 			// In case the background sound ends prematurely, update
@@ -369,7 +369,7 @@
 			// sync case for the subsequent frames.
 			_ticks = _vm->_system->getMillis();
 		} else {
-			_ticks += _frameTicks;
+			_ticks += getFrameDelay();
 			while (_vm->_system->getMillis() < _ticks)
 				_vm->_system->delayMillis(10);
 		}
@@ -463,7 +463,7 @@
 	copyFrameToBuffer((byte *)screen->pixels, (_vm->_screenWidth - getWidth()) / 2, (_vm->_screenHeight - getHeight()) / 2, _vm->_screenWidth);
 	_vm->_system->unlockScreen();
 
-	if (!getAudioLag() || getAudioLag() > 0 || _frameSkipped > getFrameRate()) {
+	if (!getAudioLag() || getFrameWaitTime() || _frameSkipped > getFrameRate()) {
 		if (_frameSkipped > getFrameRate()) {
 			warning("force frame %i redraw", getCurFrame());
 			_frameSkipped = 0;

Modified: scummvm/trunk/graphics/dxa_player.cpp
===================================================================
--- scummvm/trunk/graphics/dxa_player.cpp	2008-12-21 04:36:11 UTC (rev 35457)
+++ scummvm/trunk/graphics/dxa_player.cpp	2008-12-21 05:55:37 UTC (rev 35458)
@@ -88,6 +88,19 @@
 	return _framesCount;
 }
 
+int DXAPlayer::getFrameRate() {
+	if (!_fileStream)
+		return 0;
+	return _framesPerSec;
+}
+
+int32 DXAPlayer::getFrameDelay() {
+	if (!_fileStream)
+		return 0;
+
+	return _frameTicks;
+}
+
 bool DXAPlayer::loadFile(const char *fileName) {
 	uint32 tag;
 	int32 frameRate;

Modified: scummvm/trunk/graphics/dxa_player.h
===================================================================
--- scummvm/trunk/graphics/dxa_player.h	2008-12-21 04:36:11 UTC (rev 35457)
+++ scummvm/trunk/graphics/dxa_player.h	2008-12-21 05:55:37 UTC (rev 35458)
@@ -85,6 +85,18 @@
 	int getFrameCount();
 
 	/**
+	 * Returns the frame rate of the video
+	 * @return the frame rate of the video
+	 */
+	int32 getFrameRate();
+
+	/**
+	 * Returns the time to wait for each frame in 1/100 ms
+	 * @return the time to wait for each frame in 1/100 ms
+	 */
+	int32 getFrameDelay();
+
+	/**
 	 * Load a DXA encoded video file
 	 * @param filename	the filename to load
 	 */

Modified: scummvm/trunk/graphics/smk_player.cpp
===================================================================
--- scummvm/trunk/graphics/smk_player.cpp	2008-12-21 04:36:11 UTC (rev 35457)
+++ scummvm/trunk/graphics/smk_player.cpp	2008-12-21 05:55:37 UTC (rev 35458)
@@ -348,7 +348,13 @@
 int32 SMKPlayer::getFrameRate() {
 	if (!_fileStream)
 		return 0;
-	return _header.frameRate;
+
+	if (_header.frameRate > 0)
+		return 1000 / _header.frameRate;
+	else if (_header.frameRate < 0)
+		return 100000 / (-_header.frameRate);
+	else
+		return 10;
 }
 
 int32 SMKPlayer::getFrameDelay() {

Modified: scummvm/trunk/graphics/smk_player.h
===================================================================
--- scummvm/trunk/graphics/smk_player.h	2008-12-21 04:36:11 UTC (rev 35457)
+++ scummvm/trunk/graphics/smk_player.h	2008-12-21 05:55:37 UTC (rev 35458)
@@ -75,9 +75,6 @@
 
 	/**
 	 * Returns the frame rate of the video
-	 * If > 0, fps are 1000 / FrameRate
-	 * If < 0, fps are 100000 / (-FrameRate)
-	 * If 0, fps are 10
 	 * @return the frame rate of the video
 	 */
 	int32 getFrameRate();


This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.




More information about the Scummvm-git-logs mailing list