Proper lag calculation even if the SMK has no audio
svn-id: r35698
This commit is contained in:
parent
23e6fff0bf
commit
0430bb9b3a
2 changed files with 16 additions and 2 deletions
|
@ -370,12 +370,22 @@ int32 SMKPlayer::getFrameDelay() {
|
||||||
}
|
}
|
||||||
|
|
||||||
int32 SMKPlayer::getAudioLag() {
|
int32 SMKPlayer::getAudioLag() {
|
||||||
if (!_fileStream || !_audioStream)
|
if (!_fileStream)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
int32 frameDelay = getFrameDelay();
|
int32 frameDelay = getFrameDelay();
|
||||||
int32 videoTime = _currentSMKFrame * frameDelay;
|
int32 videoTime = _currentSMKFrame * frameDelay;
|
||||||
int32 audioTime = (((int32) _mixer->getSoundElapsedTime(_audioHandle)) * 100);
|
int32 audioTime;
|
||||||
|
|
||||||
|
if (!_audioStream) {
|
||||||
|
/* No audio.
|
||||||
|
Calculate the lag by how much time has gone by since the first frame
|
||||||
|
and how much time *should* have passed.
|
||||||
|
*/
|
||||||
|
|
||||||
|
audioTime = (g_system->getMillis() - _startTime) * 100;
|
||||||
|
} else
|
||||||
|
audioTime = (((int32) _mixer->getSoundElapsedTime(_audioHandle)) * 100);
|
||||||
|
|
||||||
return videoTime - audioTime;
|
return videoTime - audioTime;
|
||||||
}
|
}
|
||||||
|
@ -546,6 +556,9 @@ bool SMKPlayer::decodeNextFrame() {
|
||||||
|
|
||||||
uint32 startPos = _fileStream->pos();
|
uint32 startPos = _fileStream->pos();
|
||||||
|
|
||||||
|
if (_currentSMKFrame == 0)
|
||||||
|
_startTime = g_system->getMillis();
|
||||||
|
|
||||||
// Check if we got a frame with palette data, and
|
// Check if we got a frame with palette data, and
|
||||||
// call back the virtual setPalette function to set
|
// call back the virtual setPalette function to set
|
||||||
// the current palette
|
// the current palette
|
||||||
|
|
|
@ -184,6 +184,7 @@ private:
|
||||||
Audio::SoundHandle _audioHandle;
|
Audio::SoundHandle _audioHandle;
|
||||||
|
|
||||||
uint32 _currentSMKFrame;
|
uint32 _currentSMKFrame;
|
||||||
|
uint32 _startTime;
|
||||||
|
|
||||||
BigHuffmanTree *_MMapTree;
|
BigHuffmanTree *_MMapTree;
|
||||||
BigHuffmanTree *_MClrTree;
|
BigHuffmanTree *_MClrTree;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue