diff options
| author | Torbjörn Andersson | 2012-10-03 08:28:02 +0200 | 
|---|---|---|
| committer | Torbjörn Andersson | 2012-10-03 08:28:02 +0200 | 
| commit | b50f5a4cde4b6e3549d0c0139b52079c092d0529 (patch) | |
| tree | 91181bca0d4f71431a27404c1cfc4692d9985483 /engines | |
| parent | eea9fc637cb04ec7034fbd4a6d0c8832627f6848 (diff) | |
| download | scummvm-rg350-b50f5a4cde4b6e3549d0c0139b52079c092d0529.tar.gz scummvm-rg350-b50f5a4cde4b6e3549d0c0139b52079c092d0529.tar.bz2 scummvm-rg350-b50f5a4cde4b6e3549d0c0139b52079c092d0529.zip  | |
TOLTECS: Improve audio/video sync in the movie player
At least on my computer, the sound would stall frequently after a
while because the delay between frame was calculated from frame to
frame. Now it's calculated from the start of the sound instead.
Diffstat (limited to 'engines')
| -rw-r--r-- | engines/toltecs/movie.cpp | 7 | 
1 files changed, 3 insertions, 4 deletions
diff --git a/engines/toltecs/movie.cpp b/engines/toltecs/movie.cpp index 75127d7159..44b52b113a 100644 --- a/engines/toltecs/movie.cpp +++ b/engines/toltecs/movie.cpp @@ -96,9 +96,9 @@ void MoviePlayer::playMovie(uint resIndex) {  	fetchAudioChunks(); -	uint32 lastTime = _vm->_mixer->getSoundElapsedTime(_audioStreamHandle);  	byte *chunkBuffer = NULL;  	uint32 chunkBufferSize = 0; +	uint32 frame = 0;  	while (_chunkCount--) {  		byte chunkType = _vm->_arc->readByte(); @@ -136,12 +136,11 @@ void MoviePlayer::playMovie(uint resIndex) {  				fetchAudioChunks();  			} -			while (_vm->_mixer->getSoundElapsedTime(_audioStreamHandle) < lastTime + 111) { +			while (_vm->_mixer->getSoundElapsedTime(_audioStreamHandle) < (1000 * frame) / 9) {  				g_system->delayMillis(10);  			} -			lastTime = _vm->_mixer->getSoundElapsedTime(_audioStreamHandle); - +			frame++;  			break;  		case kChunkPalette:  			unpackPalette(chunkBuffer, moviePalette, 256, 3);  | 
