[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