From 5683f076331d2831eb4720b65bb53e8d01ca33ee Mon Sep 17 00:00:00 2001 From: Einar Johan Trøan Sømåen Date: Sat, 21 Jul 2012 18:19:07 +0200 Subject: WINTERMUTE: Rename CamelCased filenames to prefixed_under_score-filenames This is mostly a lead-up to namespacing the Ad/Base folders, and then possibly removing the prefixes from the files, it also has the added benefit of getting rid of the odd case-typos that makes for issues on platforms that don't ignore case. --- engines/wintermute/video/video_player.cpp | 470 ++++++++++++++++++++++++++++++ 1 file changed, 470 insertions(+) create mode 100644 engines/wintermute/video/video_player.cpp (limited to 'engines/wintermute/video/video_player.cpp') diff --git a/engines/wintermute/video/video_player.cpp b/engines/wintermute/video/video_player.cpp new file mode 100644 index 0000000000..49d1c6c50f --- /dev/null +++ b/engines/wintermute/video/video_player.cpp @@ -0,0 +1,470 @@ +/* ScummVM - Graphic Adventure Engine + * + * ScummVM is the legal property of its developers, whose names + * are too numerous to list here. Please refer to the COPYRIGHT + * file distributed with this source distribution. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + */ + +/* + * This file is based on WME Lite. + * http://dead-code.org/redir.php?target=wmelite + * Copyright (c) 2011 Jan Nedoma + */ + + +#include "engines/wintermute/dcgf.h" +#include "engines/wintermute/video/video_player.h" + +//#pragma comment(lib, "vfw32.lib") + +namespace WinterMute { + +////////////////////////////////////////////////////////////////////// +// Construction/Destruction +////////////////////////////////////////////////////////////////////// + +////////////////////////////////////////////////////////////////////////// +CVidPlayer::CVidPlayer(CBGame *inGame): CBBase(inGame) { + SetDefaults(); +} + + +////////////////////////////////////////////////////////////////////////// +bool CVidPlayer::SetDefaults() { + _playing = false; + + /* _aviFile = NULL; + + _audioStream = NULL; + _audioFormat = NULL; + + _videoStream = NULL; + _videoFormat = NULL; + _videoPGF = NULL;*/ + _videoEndTime = 0; + + //_sound = NULL; + _soundAvailable = false; + + //_vidRenderer = NULL; + + _startTime = 0; + _totalVideoTime = 0; + + //_lastSample = -1; + + //_targetFormat = NULL; + + _playPosX = _playPosY = 0; + _playZoom = 0.0f; + + _filename = NULL; + + _slowRendering = false; + + _currentSubtitle = 0; + _showSubtitle = false; + + return STATUS_OK; +} + + +////////////////////////////////////////////////////////////////////////// +CVidPlayer::~CVidPlayer() { + cleanup(); +} + + +////////////////////////////////////////////////////////////////////////// +bool CVidPlayer::cleanup() { +#if 0 + if (_sound) _sound->Stop(); + if (_videoPGF) AVIStreamGetFrameClose(_videoPGF); + _videoPGF = NULL; + + _playing = false; + + + if (_aviFile) AVIFileRelease(m_AviFile); + + if (_audioStream) AVIStreamRelease(m_AudioStream); + if (_videoStream) AVIStreamRelease(m_VideoStream); + + if (_audioFormat) delete [](byte *)m_AudioFormat; + if (_videoFormat) delete [](byte *)m_VideoFormat; + if (_targetFormat) delete [](byte *)m_TargetFormat; + + SAFE_DELETE(_sound); + SAFE_DELETE(_vidRenderer); + + SAFE_DELETE_ARRAY(_filename); + + for (int i = 0; i < _subtitles.getSize(); i++) delete _subtitles[i]; + _subtitles.removeAll(); + + return SetDefaults(); +#endif + return 0; +} + + +////////////////////////////////////////////////////////////////////////// +bool CVidPlayer::initialize(const char *inFilename, const char *SubtitleFile) { +#if 0 + cleanup(); + + char Filename[MAX_PATH_LENGTH]; + _gameRef->_fileManager->GetFullPath(inFilename, filename); + + // open file + if (AVIFileOpen(&_aviFile, Filename, OF_READ, NULL) != 0) { + _gameRef->LOG(0, "Error opening AVI file '%s'", filename); + return STATUS_FAILED; + } + + // get video stream + if (AVIFileGetStream(_aviFile, &_videoStream, streamtypeVIDEO, 0) != 0) { + _gameRef->LOG(0, "Error finding video stream in AVI file '%s'", filename); + return STATUS_FAILED; + } + _totalVideoTime = AVIStreamEndTime(_videoStream); + + // get audio stream + if (_gameRef->m_SoundMgr->_soundAvailable && AVIFileGetStream(_aviFile, &_audioStream, streamtypeAUDIO, 0) == 0) + _soundAvailable = true; + else + _soundAvailable = false; + + + LONG Size; + + // get video format + if (AVIStreamReadFormat(m_VideoStream, 0, NULL, &Size)) { + _gameRef->LOG(0, "Error obtaining video stream format in AVI file '%s'", filename); + return STATUS_FAILED; + } + _videoFormat = (LPBITMAPINFO)new BYTE[Size]; + AVIStreamReadFormat(m_VideoStream, 0, m_VideoFormat, &Size); + + // initialize optimal target format + m_TargetFormat = (LPBITMAPV4HEADER)new BYTE[max(Size, sizeof(BITMAPV4HEADER))]; + memset(m_TargetFormat, 0, sizeof(BITMAPV4HEADER)); + memcpy(m_TargetFormat, m_VideoFormat, Size); + m_TargetFormat->bV4Size = max(Size, sizeof(BITMAPV4HEADER)); + + m_TargetFormat->bV4BitCount = 24; + m_TargetFormat->bV4V4Compression = BI_RGB; + + if (_gameRef->m_UseD3D) + m_VidRenderer = new CVidRendererD3D(_gameRef); + else + m_VidRenderer = new CVidRendererDD(_gameRef); + + if (!m_VidRenderer || DID_FAIL(m_VidRenderer->Initialize(m_VideoFormat, m_TargetFormat))) { + _gameRef->LOG(0, "Error initializing video renderer for AVI file '%s'", filename); + SAFE_DELETE(m_VidRenderer); + return STATUS_FAILED; + } + + + // create sound buffer + bool res; + + if (_soundAvailable) { + _sound = new CBSoundAVI(_gameRef); + if (DID_FAIL(res = _sound->InitializeBuffer(_audioStream))) { + SAFE_DELETE(_sound); + _soundAvailable = false; + _gameRef->LOG(res, "Error initializing sound buffer for AVI file '%s'", filename); + } + } + + if (_gameRef->_videoSubtitles) LoadSubtitles(inFilename, SubtitleFile); + + _filename = new char[strlen(filename) + 1]; + if (_filename) strcpy(_filename, filename); +#endif + return STATUS_OK; +} + + +////////////////////////////////////////////////////////////////////////// +bool CVidPlayer::update() { +#if 0 + if (!m_Playing) return STATUS_OK; + + bool res; + + if (_soundAvailable && m_Sound) { + res = _sound->update(); + if (DID_FAIL(res)) return res; + } + + + DWORD CurrentTime; // current playing time (in ms) + /* + if(m_SoundAvailable && m_Sound){ + CurrentTime = m_Sound->GetPosition(); // in samples + CurrentTime /= (m_Sound->m_Format.wf.nSamplesPerSec / 1000); + + if(!m_Sound->IsPlaying()) CurrentTime = m_TotalVideoTime; + } + else + CurrentTime = timeGetTime() - m_StartTime; + */ + CurrentTime = timeGetTime() - _startTime; + + if (CurrentTime >= _totalVideoTime) { + Stop(); + return STATUS_OK; + } + + + // get and render frame + DWORD sample = AVIStreamTimeToSample(_videoStream, CurrentTime); + if (sample != _lastSample) { + _lastSample = sample; + + // process subtitles + _showSubtitle = false; + while (_currentSubtitle < _subtitles.getSize()) { + int End = _subtitles[_currentSubtitle]->m_EndFrame; + + bool NextFrameOK = (_currentSubtitle < _subtitles.getSize() - 1 && _subtitles[_currentSubtitle + 1]->_startFrame <= sample); + + if (sample > End) { + if (NextFrameOK) { + _currentSubtitle++; + } else { + _showSubtitle = (End == 0); + break; + } + } else { + _showSubtitle = true; + break; + } + } + + + // render frame + LPBITMAPINFOHEADER FrameData = (LPBITMAPINFOHEADER)AVIStreamGetFrame(m_VideoPGF, sample); + if (FrameData) { + if (_slowRendering) return _vidRenderer->ProcessFrameSlow(FrameData); + else return _vidRenderer->ProcessFrame(FrameData); + } else return STATUS_FAILED; + } else return STATUS_OK; +#endif + return 0; +} + + +////////////////////////////////////////////////////////////////////////// +bool CVidPlayer::display() { +#if 0 + if (!m_Playing) return STATUS_OK; + + bool res; + if (_vidRenderer) res = _vidRenderer->display(m_PlayPosX, m_PlayPosY, m_PlayZoom); + else res = STATUS_FAILED; + + // display subtitle + if (m_ShowSubtitle) { + CBFont *font = _gameRef->_videoFont ? _gameRef->_videoFont : _gameRef->_systemFont; + int Height = font->GetTextHeight((BYTE *)m_Subtitles[_currentSubtitle]->_text, _gameRef->_renderer->_width); + font->drawText((byte *)_subtitles[m_CurrentSubtitle]->_text, 0, _gameRef->_renderer->_height - Height - 5, _gameRef->_renderer->_width, TAL_CENTER); + } + + return res; +#endif + return 0; +} + + + + +////////////////////////////////////////////////////////////////////////// +bool CVidPlayer::play(TVideoPlayback Type, int X, int Y, bool FreezeMusic) { +#if 0 + if (!_videoStream || !_vidRenderer) return STATUS_FAILED; + + switch (Type) { + case VID_PLAY_POS: + _playZoom = 100.0f; + _playPosX = X; + _playPosY = Y; + break; + + case VID_PLAY_STRETCH: { + float ZoomX = (float)((float)_gameRef->_renderer->m_Width / (float)_videoFormat->bmiHeader.biWidth * 100); + float ZoomY = (float)((float)_gameRef->_renderer->m_Height / (float)_videoFormat->bmiHeader.biHeight * 100); + _playZoom = min(ZoomX, ZoomY); + _playPosX = (_gameRef->_renderer->_width - _videoFormat->bmiHeader.biWidth * (_playZoom / 100)) / 2; + _playPosY = (_gameRef->_renderer->_height - _videoFormat->bmiHeader.biHeight * (_playZoom / 100)) / 2; + } + break; + + case VID_PLAY_CENTER: + _playZoom = 100.0f; + _playPosX = (_gameRef->_renderer->_width - _videoFormat->bmiHeader.biWidth) / 2; + _playPosY = (_gameRef->_renderer->_height - _videoFormat->bmiHeader.biHeight) / 2; + break; + } + + _targetFormat->bV4BitCount = 24; + _targetFormat->bV4V4Compression = BI_RGB; + + + _videoPGF = AVIStreamGetFrameOpen(_videoStream, (LPBITMAPINFOHEADER)m_TargetFormat); + if (!_videoPGF) { + _videoPGF = AVIStreamGetFrameOpen(_videoStream, NULL); + if (!_videoPGF) { + _gameRef->LOG(0, "Error: Unsupported AVI format (file '%s')", m_Filename); + cleanup(); + return STATUS_FAILED; + } else { + _gameRef->LOG(0, "Performance warning: non-optimal AVI format, using generic (i.e. slow) rendering routines (file '%s')", m_Filename); + _slowRendering = true; + } + } else _slowRendering = false; + + // HACK!!! + _slowRendering = true; + + + _currentSubtitle = 0; + + _gameRef->Freeze(FreezeMusic); + + _playing = true; + if (_sound) _sound->Play(); + _startTime = timeGetTime(); +#endif + return STATUS_OK; +} + + +////////////////////////////////////////////////////////////////////////// +bool CVidPlayer::stop() { +#if 0 + if (!_playing) return STATUS_OK; + + cleanup(); + + _gameRef->Unfreeze(); +#endif + return STATUS_OK; +} + + +////////////////////////////////////////////////////////////////////////// +bool CVidPlayer::isPlaying() { + return _playing; +} + + +////////////////////////////////////////////////////////////////////////// +bool CVidPlayer::loadSubtitles(const char *filename, const char *SubtitleFile) { +#if 0 + if (!Filename) return STATUS_OK; + + char NewFile[MAX_PATH_LENGTH]; + char drive[_MAX_DRIVE]; + char dir[_MAX_DIR]; + char fname[_MAX_FNAME]; + + if (SubtitleFile) { + strcpy(NewFile, SubtitleFile); + } else { + _splitpath(filename, drive, dir, fname, NULL); + _makepath(NewFile, drive, dir, fname, ".SUB"); + } + + DWORD Size; + BYTE *Buffer = _gameRef->m_FileManager->readWholeFile(NewFile, &Size, false); + if (Buffer == NULL) return STATUS_OK; // no subtitles + + + LONG Start, End; + bool InToken; + char *TokenStart; + int TokenLength; + int TokenPos; + int TextLength; + + int Pos = 0; + int LineLength = 0; + while (Pos < Size) { + Start = End = -1; + InToken = false; + TokenPos = -1; + TextLength = 0; + + LineLength = 0; + while (Pos + LineLength < Size && Buffer[Pos + LineLength] != '\n' && Buffer[Pos + LineLength] != '\0') LineLength++; + + int RealLength = LineLength - (Pos + LineLength >= Size ? 0 : 1); + char *Text = new char[RealLength + 1]; + char *line = (char *)&Buffer[Pos]; + + for (int i = 0; i < RealLength; i++) { + if (line[i] == '{') { + if (!InToken) { + InToken = true; + TokenStart = line + i + 1; + TokenLength = 0; + TokenPos++; + } else TokenLength++; + } else if (line[i] == '}') { + if (InToken) { + InToken = false; + char *Token = new char[TokenLength + 1]; + strncpy(Token, TokenStart, TokenLength); + Token[TokenLength] = '\0'; + if (TokenPos == 0) Start = atoi(Token); + else if (TokenPos == 1) End = atoi(Token); + + delete [] Token; + } else { + Text[TextLength] = line[i]; + TextLength++; + } + } else { + if (InToken) { + TokenLength++; + } else { + Text[TextLength] = line[i]; + if (Text[TextLength] == '|') Text[TextLength] = '\n'; + TextLength++; + } + } + } + Text[TextLength] = '\0'; + + if (Start != -1 && TextLength > 0) _subtitles.add(new CVidSubtitle(_gameRef, Text, Start, End)); + + delete [] Text; + + Pos += LineLength + 1; + } + + delete [] Buffer; +#endif + return STATUS_OK; +} + +} // end of namespace WinterMute -- cgit v1.2.3 From b5a07fef8ebf29f7f44b15d9b34799c7e115fdad Mon Sep 17 00:00:00 2001 From: Einar Johan Trøan Sømåen Date: Sat, 21 Jul 2012 21:01:47 +0200 Subject: WINTERMUTE: Get rid of the C-prefix for class-definitions. --- engines/wintermute/video/video_player.cpp | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) (limited to 'engines/wintermute/video/video_player.cpp') diff --git a/engines/wintermute/video/video_player.cpp b/engines/wintermute/video/video_player.cpp index 49d1c6c50f..2806dbe516 100644 --- a/engines/wintermute/video/video_player.cpp +++ b/engines/wintermute/video/video_player.cpp @@ -39,13 +39,13 @@ namespace WinterMute { ////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////// -CVidPlayer::CVidPlayer(CBGame *inGame): CBBase(inGame) { +VideoPlayer::VideoPlayer(BaseGame *inGame): BaseClass(inGame) { SetDefaults(); } ////////////////////////////////////////////////////////////////////////// -bool CVidPlayer::SetDefaults() { +bool VideoPlayer::SetDefaults() { _playing = false; /* _aviFile = NULL; @@ -85,13 +85,13 @@ bool CVidPlayer::SetDefaults() { ////////////////////////////////////////////////////////////////////////// -CVidPlayer::~CVidPlayer() { +VideoPlayer::~VideoPlayer() { cleanup(); } ////////////////////////////////////////////////////////////////////////// -bool CVidPlayer::cleanup() { +bool VideoPlayer::cleanup() { #if 0 if (_sound) _sound->Stop(); if (_videoPGF) AVIStreamGetFrameClose(_videoPGF); @@ -124,7 +124,7 @@ bool CVidPlayer::cleanup() { ////////////////////////////////////////////////////////////////////////// -bool CVidPlayer::initialize(const char *inFilename, const char *SubtitleFile) { +bool VideoPlayer::initialize(const char *inFilename, const char *SubtitleFile) { #if 0 cleanup(); @@ -186,7 +186,7 @@ bool CVidPlayer::initialize(const char *inFilename, const char *SubtitleFile) { bool res; if (_soundAvailable) { - _sound = new CBSoundAVI(_gameRef); + _sound = new BaseSoundAVI(_gameRef); if (DID_FAIL(res = _sound->InitializeBuffer(_audioStream))) { SAFE_DELETE(_sound); _soundAvailable = false; @@ -204,7 +204,7 @@ bool CVidPlayer::initialize(const char *inFilename, const char *SubtitleFile) { ////////////////////////////////////////////////////////////////////////// -bool CVidPlayer::update() { +bool VideoPlayer::update() { #if 0 if (!m_Playing) return STATUS_OK; @@ -274,7 +274,7 @@ bool CVidPlayer::update() { ////////////////////////////////////////////////////////////////////////// -bool CVidPlayer::display() { +bool VideoPlayer::display() { #if 0 if (!m_Playing) return STATUS_OK; @@ -284,7 +284,7 @@ bool CVidPlayer::display() { // display subtitle if (m_ShowSubtitle) { - CBFont *font = _gameRef->_videoFont ? _gameRef->_videoFont : _gameRef->_systemFont; + BaseFont *font = _gameRef->_videoFont ? _gameRef->_videoFont : _gameRef->_systemFont; int Height = font->GetTextHeight((BYTE *)m_Subtitles[_currentSubtitle]->_text, _gameRef->_renderer->_width); font->drawText((byte *)_subtitles[m_CurrentSubtitle]->_text, 0, _gameRef->_renderer->_height - Height - 5, _gameRef->_renderer->_width, TAL_CENTER); } @@ -298,7 +298,7 @@ bool CVidPlayer::display() { ////////////////////////////////////////////////////////////////////////// -bool CVidPlayer::play(TVideoPlayback Type, int X, int Y, bool FreezeMusic) { +bool VideoPlayer::play(TVideoPlayback Type, int X, int Y, bool FreezeMusic) { #if 0 if (!_videoStream || !_vidRenderer) return STATUS_FAILED; @@ -359,7 +359,7 @@ bool CVidPlayer::play(TVideoPlayback Type, int X, int Y, bool FreezeMusic) { ////////////////////////////////////////////////////////////////////////// -bool CVidPlayer::stop() { +bool VideoPlayer::stop() { #if 0 if (!_playing) return STATUS_OK; @@ -372,13 +372,13 @@ bool CVidPlayer::stop() { ////////////////////////////////////////////////////////////////////////// -bool CVidPlayer::isPlaying() { +bool VideoPlayer::isPlaying() { return _playing; } ////////////////////////////////////////////////////////////////////////// -bool CVidPlayer::loadSubtitles(const char *filename, const char *SubtitleFile) { +bool VideoPlayer::loadSubtitles(const char *filename, const char *SubtitleFile) { #if 0 if (!Filename) return STATUS_OK; -- cgit v1.2.3 From aedb0aea505e764c4c7bab1f90520b380be4d688 Mon Sep 17 00:00:00 2001 From: Einar Johan Trøan Sømåen Date: Mon, 23 Jul 2012 03:22:49 +0200 Subject: WINTERMUTE: Remove dcgf.h from almost all includes. --- engines/wintermute/video/video_player.cpp | 1 - 1 file changed, 1 deletion(-) (limited to 'engines/wintermute/video/video_player.cpp') diff --git a/engines/wintermute/video/video_player.cpp b/engines/wintermute/video/video_player.cpp index 2806dbe516..be3bb3ec94 100644 --- a/engines/wintermute/video/video_player.cpp +++ b/engines/wintermute/video/video_player.cpp @@ -27,7 +27,6 @@ */ -#include "engines/wintermute/dcgf.h" #include "engines/wintermute/video/video_player.h" //#pragma comment(lib, "vfw32.lib") -- cgit v1.2.3 From fa96c9ea187cdb26e9f1ce048c9132f723e25df1 Mon Sep 17 00:00:00 2001 From: Einar Johan Trøan Sømåen Date: Wed, 25 Jul 2012 21:05:03 +0200 Subject: WINTERMUTE: "delete []" -> "delete[]" --- engines/wintermute/video/video_player.cpp | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) (limited to 'engines/wintermute/video/video_player.cpp') diff --git a/engines/wintermute/video/video_player.cpp b/engines/wintermute/video/video_player.cpp index be3bb3ec94..ac16104268 100644 --- a/engines/wintermute/video/video_player.cpp +++ b/engines/wintermute/video/video_player.cpp @@ -104,9 +104,9 @@ bool VideoPlayer::cleanup() { if (_audioStream) AVIStreamRelease(m_AudioStream); if (_videoStream) AVIStreamRelease(m_VideoStream); - if (_audioFormat) delete [](byte *)m_AudioFormat; - if (_videoFormat) delete [](byte *)m_VideoFormat; - if (_targetFormat) delete [](byte *)m_TargetFormat; + if (_audioFormat) delete[](byte *)m_AudioFormat; + if (_videoFormat) delete[](byte *)m_VideoFormat; + if (_targetFormat) delete[](byte *)m_TargetFormat; SAFE_DELETE(_sound); SAFE_DELETE(_vidRenderer); @@ -437,7 +437,7 @@ bool VideoPlayer::loadSubtitles(const char *filename, const char *SubtitleFile) if (TokenPos == 0) Start = atoi(Token); else if (TokenPos == 1) End = atoi(Token); - delete [] Token; + delete[] Token; } else { Text[TextLength] = line[i]; TextLength++; @@ -456,12 +456,12 @@ bool VideoPlayer::loadSubtitles(const char *filename, const char *SubtitleFile) if (Start != -1 && TextLength > 0) _subtitles.add(new CVidSubtitle(_gameRef, Text, Start, End)); - delete [] Text; + delete[] Text; Pos += LineLength + 1; } - delete [] Buffer; + delete[] Buffer; #endif return STATUS_OK; } -- cgit v1.2.3 From 1ad859a468415cc7fd93adaa84beba02aae29ad8 Mon Sep 17 00:00:00 2001 From: Einar Johan Trøan Sømåen Date: Wed, 25 Jul 2012 21:21:55 +0200 Subject: WINTERMUTE: "if(" -> "if (" --- engines/wintermute/video/video_player.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'engines/wintermute/video/video_player.cpp') diff --git a/engines/wintermute/video/video_player.cpp b/engines/wintermute/video/video_player.cpp index ac16104268..464cbec7ff 100644 --- a/engines/wintermute/video/video_player.cpp +++ b/engines/wintermute/video/video_player.cpp @@ -217,11 +217,11 @@ bool VideoPlayer::update() { DWORD CurrentTime; // current playing time (in ms) /* - if(m_SoundAvailable && m_Sound){ + if (m_SoundAvailable && m_Sound){ CurrentTime = m_Sound->GetPosition(); // in samples CurrentTime /= (m_Sound->m_Format.wf.nSamplesPerSec / 1000); - if(!m_Sound->IsPlaying()) CurrentTime = m_TotalVideoTime; + if (!m_Sound->IsPlaying()) CurrentTime = m_TotalVideoTime; } else CurrentTime = timeGetTime() - m_StartTime; -- cgit v1.2.3 From ef11f9d0c53cbdd9d88a99143de6f43f34d7e24d Mon Sep 17 00:00:00 2001 From: Einar Johan Trøan Sømåen Date: Thu, 26 Jul 2012 15:59:26 +0200 Subject: WINTERMUTE: Run Astyle with add-braces to break one-line statements into easier-to-read-code. --- engines/wintermute/video/video_player.cpp | 135 ++++++++++++++++++++++-------- 1 file changed, 99 insertions(+), 36 deletions(-) (limited to 'engines/wintermute/video/video_player.cpp') diff --git a/engines/wintermute/video/video_player.cpp b/engines/wintermute/video/video_player.cpp index 464cbec7ff..7affd91013 100644 --- a/engines/wintermute/video/video_player.cpp +++ b/engines/wintermute/video/video_player.cpp @@ -92,28 +92,46 @@ VideoPlayer::~VideoPlayer() { ////////////////////////////////////////////////////////////////////////// bool VideoPlayer::cleanup() { #if 0 - if (_sound) _sound->Stop(); - if (_videoPGF) AVIStreamGetFrameClose(_videoPGF); + if (_sound) { + _sound->Stop(); + } + if (_videoPGF) { + AVIStreamGetFrameClose(_videoPGF); + } _videoPGF = NULL; _playing = false; - if (_aviFile) AVIFileRelease(m_AviFile); + if (_aviFile) { + AVIFileRelease(m_AviFile); + } - if (_audioStream) AVIStreamRelease(m_AudioStream); - if (_videoStream) AVIStreamRelease(m_VideoStream); + if (_audioStream) { + AVIStreamRelease(m_AudioStream); + } + if (_videoStream) { + AVIStreamRelease(m_VideoStream); + } - if (_audioFormat) delete[](byte *)m_AudioFormat; - if (_videoFormat) delete[](byte *)m_VideoFormat; - if (_targetFormat) delete[](byte *)m_TargetFormat; + if (_audioFormat) { + delete[](byte *)m_AudioFormat; + } + if (_videoFormat) { + delete[](byte *)m_VideoFormat; + } + if (_targetFormat) { + delete[](byte *)m_TargetFormat; + } SAFE_DELETE(_sound); SAFE_DELETE(_vidRenderer); SAFE_DELETE_ARRAY(_filename); - for (int i = 0; i < _subtitles.getSize(); i++) delete _subtitles[i]; + for (int i = 0; i < _subtitles.getSize(); i++) { + delete _subtitles[i]; + } _subtitles.removeAll(); return SetDefaults(); @@ -144,10 +162,11 @@ bool VideoPlayer::initialize(const char *inFilename, const char *SubtitleFile) { _totalVideoTime = AVIStreamEndTime(_videoStream); // get audio stream - if (_gameRef->m_SoundMgr->_soundAvailable && AVIFileGetStream(_aviFile, &_audioStream, streamtypeAUDIO, 0) == 0) + if (_gameRef->m_SoundMgr->_soundAvailable && AVIFileGetStream(_aviFile, &_audioStream, streamtypeAUDIO, 0) == 0) { _soundAvailable = true; - else + } else { _soundAvailable = false; + } LONG Size; @@ -169,10 +188,11 @@ bool VideoPlayer::initialize(const char *inFilename, const char *SubtitleFile) { m_TargetFormat->bV4BitCount = 24; m_TargetFormat->bV4V4Compression = BI_RGB; - if (_gameRef->m_UseD3D) + if (_gameRef->m_UseD3D) { m_VidRenderer = new CVidRendererD3D(_gameRef); - else + } else { m_VidRenderer = new CVidRendererDD(_gameRef); + } if (!m_VidRenderer || DID_FAIL(m_VidRenderer->Initialize(m_VideoFormat, m_TargetFormat))) { _gameRef->LOG(0, "Error initializing video renderer for AVI file '%s'", filename); @@ -193,10 +213,14 @@ bool VideoPlayer::initialize(const char *inFilename, const char *SubtitleFile) { } } - if (_gameRef->_videoSubtitles) LoadSubtitles(inFilename, SubtitleFile); + if (_gameRef->_videoSubtitles) { + LoadSubtitles(inFilename, SubtitleFile); + } _filename = new char[strlen(filename) + 1]; - if (_filename) strcpy(_filename, filename); + if (_filename) { + strcpy(_filename, filename); + } #endif return STATUS_OK; } @@ -205,13 +229,17 @@ bool VideoPlayer::initialize(const char *inFilename, const char *SubtitleFile) { ////////////////////////////////////////////////////////////////////////// bool VideoPlayer::update() { #if 0 - if (!m_Playing) return STATUS_OK; + if (!m_Playing) { + return STATUS_OK; + } bool res; if (_soundAvailable && m_Sound) { res = _sound->update(); - if (DID_FAIL(res)) return res; + if (DID_FAIL(res)) { + return res; + } } @@ -263,10 +291,17 @@ bool VideoPlayer::update() { // render frame LPBITMAPINFOHEADER FrameData = (LPBITMAPINFOHEADER)AVIStreamGetFrame(m_VideoPGF, sample); if (FrameData) { - if (_slowRendering) return _vidRenderer->ProcessFrameSlow(FrameData); - else return _vidRenderer->ProcessFrame(FrameData); - } else return STATUS_FAILED; - } else return STATUS_OK; + if (_slowRendering) { + return _vidRenderer->ProcessFrameSlow(FrameData); + } else { + return _vidRenderer->ProcessFrame(FrameData); + } + } else { + return STATUS_FAILED; + } + } else { + return STATUS_OK; + } #endif return 0; } @@ -275,11 +310,16 @@ bool VideoPlayer::update() { ////////////////////////////////////////////////////////////////////////// bool VideoPlayer::display() { #if 0 - if (!m_Playing) return STATUS_OK; + if (!m_Playing) { + return STATUS_OK; + } bool res; - if (_vidRenderer) res = _vidRenderer->display(m_PlayPosX, m_PlayPosY, m_PlayZoom); - else res = STATUS_FAILED; + if (_vidRenderer) { + res = _vidRenderer->display(m_PlayPosX, m_PlayPosY, m_PlayZoom); + } else { + res = STATUS_FAILED; + } // display subtitle if (m_ShowSubtitle) { @@ -299,7 +339,9 @@ bool VideoPlayer::display() { ////////////////////////////////////////////////////////////////////////// bool VideoPlayer::play(TVideoPlayback Type, int X, int Y, bool FreezeMusic) { #if 0 - if (!_videoStream || !_vidRenderer) return STATUS_FAILED; + if (!_videoStream || !_vidRenderer) { + return STATUS_FAILED; + } switch (Type) { case VID_PLAY_POS: @@ -339,7 +381,9 @@ bool VideoPlayer::play(TVideoPlayback Type, int X, int Y, bool FreezeMusic) { _gameRef->LOG(0, "Performance warning: non-optimal AVI format, using generic (i.e. slow) rendering routines (file '%s')", m_Filename); _slowRendering = true; } - } else _slowRendering = false; + } else { + _slowRendering = false; + } // HACK!!! _slowRendering = true; @@ -350,7 +394,9 @@ bool VideoPlayer::play(TVideoPlayback Type, int X, int Y, bool FreezeMusic) { _gameRef->Freeze(FreezeMusic); _playing = true; - if (_sound) _sound->Play(); + if (_sound) { + _sound->Play(); + } _startTime = timeGetTime(); #endif return STATUS_OK; @@ -360,7 +406,9 @@ bool VideoPlayer::play(TVideoPlayback Type, int X, int Y, bool FreezeMusic) { ////////////////////////////////////////////////////////////////////////// bool VideoPlayer::stop() { #if 0 - if (!_playing) return STATUS_OK; + if (!_playing) { + return STATUS_OK; + } cleanup(); @@ -379,7 +427,9 @@ bool VideoPlayer::isPlaying() { ////////////////////////////////////////////////////////////////////////// bool VideoPlayer::loadSubtitles(const char *filename, const char *SubtitleFile) { #if 0 - if (!Filename) return STATUS_OK; + if (!Filename) { + return STATUS_OK; + } char NewFile[MAX_PATH_LENGTH]; char drive[_MAX_DRIVE]; @@ -395,7 +445,9 @@ bool VideoPlayer::loadSubtitles(const char *filename, const char *SubtitleFile) DWORD Size; BYTE *Buffer = _gameRef->m_FileManager->readWholeFile(NewFile, &Size, false); - if (Buffer == NULL) return STATUS_OK; // no subtitles + if (Buffer == NULL) { + return STATUS_OK; // no subtitles + } LONG Start, End; @@ -414,7 +466,9 @@ bool VideoPlayer::loadSubtitles(const char *filename, const char *SubtitleFile) TextLength = 0; LineLength = 0; - while (Pos + LineLength < Size && Buffer[Pos + LineLength] != '\n' && Buffer[Pos + LineLength] != '\0') LineLength++; + while (Pos + LineLength < Size && Buffer[Pos + LineLength] != '\n' && Buffer[Pos + LineLength] != '\0') { + LineLength++; + } int RealLength = LineLength - (Pos + LineLength >= Size ? 0 : 1); char *Text = new char[RealLength + 1]; @@ -427,15 +481,20 @@ bool VideoPlayer::loadSubtitles(const char *filename, const char *SubtitleFile) TokenStart = line + i + 1; TokenLength = 0; TokenPos++; - } else TokenLength++; + } else { + TokenLength++; + } } else if (line[i] == '}') { if (InToken) { InToken = false; char *Token = new char[TokenLength + 1]; strncpy(Token, TokenStart, TokenLength); Token[TokenLength] = '\0'; - if (TokenPos == 0) Start = atoi(Token); - else if (TokenPos == 1) End = atoi(Token); + if (TokenPos == 0) { + Start = atoi(Token); + } else if (TokenPos == 1) { + End = atoi(Token); + } delete[] Token; } else { @@ -447,14 +506,18 @@ bool VideoPlayer::loadSubtitles(const char *filename, const char *SubtitleFile) TokenLength++; } else { Text[TextLength] = line[i]; - if (Text[TextLength] == '|') Text[TextLength] = '\n'; + if (Text[TextLength] == '|') { + Text[TextLength] = '\n'; + } TextLength++; } } } Text[TextLength] = '\0'; - if (Start != -1 && TextLength > 0) _subtitles.add(new CVidSubtitle(_gameRef, Text, Start, End)); + if (Start != -1 && TextLength > 0) { + _subtitles.add(new CVidSubtitle(_gameRef, Text, Start, End)); + } delete[] Text; -- cgit v1.2.3 From 4eda234611bd77f053defe9e61d592b308270eaa Mon Sep 17 00:00:00 2001 From: Einar Johan Trøan Sømåen Date: Thu, 26 Jul 2012 19:41:18 +0200 Subject: WINTERMUTE: Replace BaseArray with a templated subclass of Common::Array. This needs additional cleanup, but compiles and runs at this point. --- engines/wintermute/video/video_player.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'engines/wintermute/video/video_player.cpp') diff --git a/engines/wintermute/video/video_player.cpp b/engines/wintermute/video/video_player.cpp index 7affd91013..66ec926582 100644 --- a/engines/wintermute/video/video_player.cpp +++ b/engines/wintermute/video/video_player.cpp @@ -132,7 +132,7 @@ bool VideoPlayer::cleanup() { for (int i = 0; i < _subtitles.getSize(); i++) { delete _subtitles[i]; } - _subtitles.removeAll(); + _subtitles.clear(); return SetDefaults(); #endif -- cgit v1.2.3 From 3a49f2bad407787ef65d04c5f9ae423485629b41 Mon Sep 17 00:00:00 2001 From: Einar Johan Trøan Sømåen Date: Thu, 26 Jul 2012 22:20:55 +0200 Subject: WINTERMUTE: More variable/function renaming VarName->varName --- engines/wintermute/video/video_player.cpp | 58 +++++++++++++++---------------- 1 file changed, 29 insertions(+), 29 deletions(-) (limited to 'engines/wintermute/video/video_player.cpp') diff --git a/engines/wintermute/video/video_player.cpp b/engines/wintermute/video/video_player.cpp index 66ec926582..a4c81d12b5 100644 --- a/engines/wintermute/video/video_player.cpp +++ b/engines/wintermute/video/video_player.cpp @@ -39,12 +39,12 @@ namespace WinterMute { ////////////////////////////////////////////////////////////////////////// VideoPlayer::VideoPlayer(BaseGame *inGame): BaseClass(inGame) { - SetDefaults(); + setDefaults(); } ////////////////////////////////////////////////////////////////////////// -bool VideoPlayer::SetDefaults() { +bool VideoPlayer::setDefaults() { _playing = false; /* _aviFile = NULL; @@ -145,7 +145,7 @@ bool VideoPlayer::initialize(const char *inFilename, const char *SubtitleFile) { #if 0 cleanup(); - char Filename[MAX_PATH_LENGTH]; + char filename[MAX_PATH_LENGTH]; _gameRef->_fileManager->GetFullPath(inFilename, filename); // open file @@ -270,9 +270,9 @@ bool VideoPlayer::update() { // process subtitles _showSubtitle = false; while (_currentSubtitle < _subtitles.getSize()) { - int End = _subtitles[_currentSubtitle]->m_EndFrame; + int end = _subtitles[_currentSubtitle]->m_EndFrame; - bool NextFrameOK = (_currentSubtitle < _subtitles.getSize() - 1 && _subtitles[_currentSubtitle + 1]->_startFrame <= sample); + bool nextFrameOK = (_currentSubtitle < _subtitles.getSize() - 1 && _subtitles[_currentSubtitle + 1]->_startFrame <= sample); if (sample > End) { if (NextFrameOK) { @@ -324,7 +324,7 @@ bool VideoPlayer::display() { // display subtitle if (m_ShowSubtitle) { BaseFont *font = _gameRef->_videoFont ? _gameRef->_videoFont : _gameRef->_systemFont; - int Height = font->GetTextHeight((BYTE *)m_Subtitles[_currentSubtitle]->_text, _gameRef->_renderer->_width); + int height = font->GetTextHeight((BYTE *)m_Subtitles[_currentSubtitle]->_text, _gameRef->_renderer->_width); font->drawText((byte *)_subtitles[m_CurrentSubtitle]->_text, 0, _gameRef->_renderer->_height - Height - 5, _gameRef->_renderer->_width, TAL_CENTER); } @@ -337,7 +337,7 @@ bool VideoPlayer::display() { ////////////////////////////////////////////////////////////////////////// -bool VideoPlayer::play(TVideoPlayback Type, int X, int Y, bool FreezeMusic) { +bool VideoPlayer::play(TVideoPlayback type, int x, int y, bool FreezeMusic) { #if 0 if (!_videoStream || !_vidRenderer) { return STATUS_FAILED; @@ -351,8 +351,8 @@ bool VideoPlayer::play(TVideoPlayback Type, int X, int Y, bool FreezeMusic) { break; case VID_PLAY_STRETCH: { - float ZoomX = (float)((float)_gameRef->_renderer->m_Width / (float)_videoFormat->bmiHeader.biWidth * 100); - float ZoomY = (float)((float)_gameRef->_renderer->m_Height / (float)_videoFormat->bmiHeader.biHeight * 100); + float zoomX = (float)((float)_gameRef->_renderer->m_Width / (float)_videoFormat->bmiHeader.biWidth * 100); + float zoomY = (float)((float)_gameRef->_renderer->m_Height / (float)_videoFormat->bmiHeader.biHeight * 100); _playZoom = min(ZoomX, ZoomY); _playPosX = (_gameRef->_renderer->_width - _videoFormat->bmiHeader.biWidth * (_playZoom / 100)) / 2; _playPosY = (_gameRef->_renderer->_height - _videoFormat->bmiHeader.biHeight * (_playZoom / 100)) / 2; @@ -431,7 +431,7 @@ bool VideoPlayer::loadSubtitles(const char *filename, const char *SubtitleFile) return STATUS_OK; } - char NewFile[MAX_PATH_LENGTH]; + char newFile[MAX_PATH_LENGTH]; char drive[_MAX_DRIVE]; char dir[_MAX_DIR]; char fname[_MAX_FNAME]; @@ -443,35 +443,35 @@ bool VideoPlayer::loadSubtitles(const char *filename, const char *SubtitleFile) _makepath(NewFile, drive, dir, fname, ".SUB"); } - DWORD Size; - BYTE *Buffer = _gameRef->m_FileManager->readWholeFile(NewFile, &Size, false); + DWORD size; + BYTE *buffer = _gameRef->m_FileManager->readWholeFile(NewFile, &Size, false); if (Buffer == NULL) { return STATUS_OK; // no subtitles } LONG Start, End; - bool InToken; - char *TokenStart; - int TokenLength; - int TokenPos; - int TextLength; - - int Pos = 0; - int LineLength = 0; + bool inToken; + char *tokenStart; + int tokenLength; + int tokenPos; + int textLength; + + int pos = 0; + int lineLength = 0; while (Pos < Size) { - Start = End = -1; - InToken = false; - TokenPos = -1; - TextLength = 0; + start = End = -1; + inToken = false; + tokenPos = -1; + textLength = 0; - LineLength = 0; + lineLength = 0; while (Pos + LineLength < Size && Buffer[Pos + LineLength] != '\n' && Buffer[Pos + LineLength] != '\0') { - LineLength++; + lineLength++; } - int RealLength = LineLength - (Pos + LineLength >= Size ? 0 : 1); - char *Text = new char[RealLength + 1]; + int realLength = LineLength - (Pos + LineLength >= Size ? 0 : 1); + char *text = new char[RealLength + 1]; char *line = (char *)&Buffer[Pos]; for (int i = 0; i < RealLength; i++) { @@ -487,7 +487,7 @@ bool VideoPlayer::loadSubtitles(const char *filename, const char *SubtitleFile) } else if (line[i] == '}') { if (InToken) { InToken = false; - char *Token = new char[TokenLength + 1]; + char *token = new char[TokenLength + 1]; strncpy(Token, TokenStart, TokenLength); Token[TokenLength] = '\0'; if (TokenPos == 0) { -- cgit v1.2.3 From 99d4c55e88712a0b0dc0d97e4c9c52946a5f48f2 Mon Sep 17 00:00:00 2001 From: Einar Johan Trøan Sømåen Date: Fri, 27 Jul 2012 19:07:00 +0200 Subject: WINTERMUTE: Remove all unneccessary #if 0 blocks --- engines/wintermute/video/video_player.cpp | 431 +----------------------------- 1 file changed, 4 insertions(+), 427 deletions(-) (limited to 'engines/wintermute/video/video_player.cpp') diff --git a/engines/wintermute/video/video_player.cpp b/engines/wintermute/video/video_player.cpp index a4c81d12b5..d0b4019621 100644 --- a/engines/wintermute/video/video_player.cpp +++ b/engines/wintermute/video/video_player.cpp @@ -29,8 +29,6 @@ #include "engines/wintermute/video/video_player.h" -//#pragma comment(lib, "vfw32.lib") - namespace WinterMute { ////////////////////////////////////////////////////////////////////// @@ -42,33 +40,13 @@ VideoPlayer::VideoPlayer(BaseGame *inGame): BaseClass(inGame) { setDefaults(); } - ////////////////////////////////////////////////////////////////////////// bool VideoPlayer::setDefaults() { _playing = false; - - /* _aviFile = NULL; - - _audioStream = NULL; - _audioFormat = NULL; - - _videoStream = NULL; - _videoFormat = NULL; - _videoPGF = NULL;*/ _videoEndTime = 0; - - //_sound = NULL; _soundAvailable = false; - - //_vidRenderer = NULL; - _startTime = 0; _totalVideoTime = 0; - - //_lastSample = -1; - - //_targetFormat = NULL; - _playPosX = _playPosY = 0; _playZoom = 0.0f; @@ -82,450 +60,49 @@ bool VideoPlayer::setDefaults() { return STATUS_OK; } - ////////////////////////////////////////////////////////////////////////// VideoPlayer::~VideoPlayer() { cleanup(); } - ////////////////////////////////////////////////////////////////////////// bool VideoPlayer::cleanup() { -#if 0 - if (_sound) { - _sound->Stop(); - } - if (_videoPGF) { - AVIStreamGetFrameClose(_videoPGF); - } - _videoPGF = NULL; - - _playing = false; - - - if (_aviFile) { - AVIFileRelease(m_AviFile); - } - - if (_audioStream) { - AVIStreamRelease(m_AudioStream); - } - if (_videoStream) { - AVIStreamRelease(m_VideoStream); - } - - if (_audioFormat) { - delete[](byte *)m_AudioFormat; - } - if (_videoFormat) { - delete[](byte *)m_VideoFormat; - } - if (_targetFormat) { - delete[](byte *)m_TargetFormat; - } - - SAFE_DELETE(_sound); - SAFE_DELETE(_vidRenderer); - - SAFE_DELETE_ARRAY(_filename); - - for (int i = 0; i < _subtitles.getSize(); i++) { - delete _subtitles[i]; - } - _subtitles.clear(); - - return SetDefaults(); -#endif return 0; } - ////////////////////////////////////////////////////////////////////////// -bool VideoPlayer::initialize(const char *inFilename, const char *SubtitleFile) { -#if 0 - cleanup(); - - char filename[MAX_PATH_LENGTH]; - _gameRef->_fileManager->GetFullPath(inFilename, filename); - - // open file - if (AVIFileOpen(&_aviFile, Filename, OF_READ, NULL) != 0) { - _gameRef->LOG(0, "Error opening AVI file '%s'", filename); - return STATUS_FAILED; - } - - // get video stream - if (AVIFileGetStream(_aviFile, &_videoStream, streamtypeVIDEO, 0) != 0) { - _gameRef->LOG(0, "Error finding video stream in AVI file '%s'", filename); - return STATUS_FAILED; - } - _totalVideoTime = AVIStreamEndTime(_videoStream); - - // get audio stream - if (_gameRef->m_SoundMgr->_soundAvailable && AVIFileGetStream(_aviFile, &_audioStream, streamtypeAUDIO, 0) == 0) { - _soundAvailable = true; - } else { - _soundAvailable = false; - } - - - LONG Size; - - // get video format - if (AVIStreamReadFormat(m_VideoStream, 0, NULL, &Size)) { - _gameRef->LOG(0, "Error obtaining video stream format in AVI file '%s'", filename); - return STATUS_FAILED; - } - _videoFormat = (LPBITMAPINFO)new BYTE[Size]; - AVIStreamReadFormat(m_VideoStream, 0, m_VideoFormat, &Size); - - // initialize optimal target format - m_TargetFormat = (LPBITMAPV4HEADER)new BYTE[max(Size, sizeof(BITMAPV4HEADER))]; - memset(m_TargetFormat, 0, sizeof(BITMAPV4HEADER)); - memcpy(m_TargetFormat, m_VideoFormat, Size); - m_TargetFormat->bV4Size = max(Size, sizeof(BITMAPV4HEADER)); - - m_TargetFormat->bV4BitCount = 24; - m_TargetFormat->bV4V4Compression = BI_RGB; - - if (_gameRef->m_UseD3D) { - m_VidRenderer = new CVidRendererD3D(_gameRef); - } else { - m_VidRenderer = new CVidRendererDD(_gameRef); - } - - if (!m_VidRenderer || DID_FAIL(m_VidRenderer->Initialize(m_VideoFormat, m_TargetFormat))) { - _gameRef->LOG(0, "Error initializing video renderer for AVI file '%s'", filename); - SAFE_DELETE(m_VidRenderer); - return STATUS_FAILED; - } - - - // create sound buffer - bool res; - - if (_soundAvailable) { - _sound = new BaseSoundAVI(_gameRef); - if (DID_FAIL(res = _sound->InitializeBuffer(_audioStream))) { - SAFE_DELETE(_sound); - _soundAvailable = false; - _gameRef->LOG(res, "Error initializing sound buffer for AVI file '%s'", filename); - } - } - - if (_gameRef->_videoSubtitles) { - LoadSubtitles(inFilename, SubtitleFile); - } - - _filename = new char[strlen(filename) + 1]; - if (_filename) { - strcpy(_filename, filename); - } -#endif +bool VideoPlayer::initialize(const char *inFilename, const char *subtitleFile) { + warning("VideoPlayer: %s %s - Not implemented yet", inFilename, subtitleFile); return STATUS_OK; } - ////////////////////////////////////////////////////////////////////////// bool VideoPlayer::update() { -#if 0 - if (!m_Playing) { - return STATUS_OK; - } - - bool res; - - if (_soundAvailable && m_Sound) { - res = _sound->update(); - if (DID_FAIL(res)) { - return res; - } - } - - - DWORD CurrentTime; // current playing time (in ms) - /* - if (m_SoundAvailable && m_Sound){ - CurrentTime = m_Sound->GetPosition(); // in samples - CurrentTime /= (m_Sound->m_Format.wf.nSamplesPerSec / 1000); - - if (!m_Sound->IsPlaying()) CurrentTime = m_TotalVideoTime; - } - else - CurrentTime = timeGetTime() - m_StartTime; - */ - CurrentTime = timeGetTime() - _startTime; - - if (CurrentTime >= _totalVideoTime) { - Stop(); - return STATUS_OK; - } - - - // get and render frame - DWORD sample = AVIStreamTimeToSample(_videoStream, CurrentTime); - if (sample != _lastSample) { - _lastSample = sample; - - // process subtitles - _showSubtitle = false; - while (_currentSubtitle < _subtitles.getSize()) { - int end = _subtitles[_currentSubtitle]->m_EndFrame; - - bool nextFrameOK = (_currentSubtitle < _subtitles.getSize() - 1 && _subtitles[_currentSubtitle + 1]->_startFrame <= sample); - - if (sample > End) { - if (NextFrameOK) { - _currentSubtitle++; - } else { - _showSubtitle = (End == 0); - break; - } - } else { - _showSubtitle = true; - break; - } - } - - - // render frame - LPBITMAPINFOHEADER FrameData = (LPBITMAPINFOHEADER)AVIStreamGetFrame(m_VideoPGF, sample); - if (FrameData) { - if (_slowRendering) { - return _vidRenderer->ProcessFrameSlow(FrameData); - } else { - return _vidRenderer->ProcessFrame(FrameData); - } - } else { - return STATUS_FAILED; - } - } else { - return STATUS_OK; - } -#endif return 0; } - ////////////////////////////////////////////////////////////////////////// bool VideoPlayer::display() { -#if 0 - if (!m_Playing) { - return STATUS_OK; - } - - bool res; - if (_vidRenderer) { - res = _vidRenderer->display(m_PlayPosX, m_PlayPosY, m_PlayZoom); - } else { - res = STATUS_FAILED; - } - - // display subtitle - if (m_ShowSubtitle) { - BaseFont *font = _gameRef->_videoFont ? _gameRef->_videoFont : _gameRef->_systemFont; - int height = font->GetTextHeight((BYTE *)m_Subtitles[_currentSubtitle]->_text, _gameRef->_renderer->_width); - font->drawText((byte *)_subtitles[m_CurrentSubtitle]->_text, 0, _gameRef->_renderer->_height - Height - 5, _gameRef->_renderer->_width, TAL_CENTER); - } - - return res; -#endif return 0; } - - - ////////////////////////////////////////////////////////////////////////// -bool VideoPlayer::play(TVideoPlayback type, int x, int y, bool FreezeMusic) { -#if 0 - if (!_videoStream || !_vidRenderer) { - return STATUS_FAILED; - } - - switch (Type) { - case VID_PLAY_POS: - _playZoom = 100.0f; - _playPosX = X; - _playPosY = Y; - break; - - case VID_PLAY_STRETCH: { - float zoomX = (float)((float)_gameRef->_renderer->m_Width / (float)_videoFormat->bmiHeader.biWidth * 100); - float zoomY = (float)((float)_gameRef->_renderer->m_Height / (float)_videoFormat->bmiHeader.biHeight * 100); - _playZoom = min(ZoomX, ZoomY); - _playPosX = (_gameRef->_renderer->_width - _videoFormat->bmiHeader.biWidth * (_playZoom / 100)) / 2; - _playPosY = (_gameRef->_renderer->_height - _videoFormat->bmiHeader.biHeight * (_playZoom / 100)) / 2; - } - break; - - case VID_PLAY_CENTER: - _playZoom = 100.0f; - _playPosX = (_gameRef->_renderer->_width - _videoFormat->bmiHeader.biWidth) / 2; - _playPosY = (_gameRef->_renderer->_height - _videoFormat->bmiHeader.biHeight) / 2; - break; - } - - _targetFormat->bV4BitCount = 24; - _targetFormat->bV4V4Compression = BI_RGB; - - - _videoPGF = AVIStreamGetFrameOpen(_videoStream, (LPBITMAPINFOHEADER)m_TargetFormat); - if (!_videoPGF) { - _videoPGF = AVIStreamGetFrameOpen(_videoStream, NULL); - if (!_videoPGF) { - _gameRef->LOG(0, "Error: Unsupported AVI format (file '%s')", m_Filename); - cleanup(); - return STATUS_FAILED; - } else { - _gameRef->LOG(0, "Performance warning: non-optimal AVI format, using generic (i.e. slow) rendering routines (file '%s')", m_Filename); - _slowRendering = true; - } - } else { - _slowRendering = false; - } - - // HACK!!! - _slowRendering = true; - - - _currentSubtitle = 0; - - _gameRef->Freeze(FreezeMusic); - - _playing = true; - if (_sound) { - _sound->Play(); - } - _startTime = timeGetTime(); -#endif +bool VideoPlayer::play(TVideoPlayback type, int x, int y, bool freezeMusic) { return STATUS_OK; } - ////////////////////////////////////////////////////////////////////////// bool VideoPlayer::stop() { -#if 0 - if (!_playing) { - return STATUS_OK; - } - - cleanup(); - - _gameRef->Unfreeze(); -#endif return STATUS_OK; } - ////////////////////////////////////////////////////////////////////////// bool VideoPlayer::isPlaying() { return _playing; } - ////////////////////////////////////////////////////////////////////////// -bool VideoPlayer::loadSubtitles(const char *filename, const char *SubtitleFile) { -#if 0 - if (!Filename) { - return STATUS_OK; - } - - char newFile[MAX_PATH_LENGTH]; - char drive[_MAX_DRIVE]; - char dir[_MAX_DIR]; - char fname[_MAX_FNAME]; - - if (SubtitleFile) { - strcpy(NewFile, SubtitleFile); - } else { - _splitpath(filename, drive, dir, fname, NULL); - _makepath(NewFile, drive, dir, fname, ".SUB"); - } - - DWORD size; - BYTE *buffer = _gameRef->m_FileManager->readWholeFile(NewFile, &Size, false); - if (Buffer == NULL) { - return STATUS_OK; // no subtitles - } - - - LONG Start, End; - bool inToken; - char *tokenStart; - int tokenLength; - int tokenPos; - int textLength; - - int pos = 0; - int lineLength = 0; - while (Pos < Size) { - start = End = -1; - inToken = false; - tokenPos = -1; - textLength = 0; - - lineLength = 0; - while (Pos + LineLength < Size && Buffer[Pos + LineLength] != '\n' && Buffer[Pos + LineLength] != '\0') { - lineLength++; - } - - int realLength = LineLength - (Pos + LineLength >= Size ? 0 : 1); - char *text = new char[RealLength + 1]; - char *line = (char *)&Buffer[Pos]; - - for (int i = 0; i < RealLength; i++) { - if (line[i] == '{') { - if (!InToken) { - InToken = true; - TokenStart = line + i + 1; - TokenLength = 0; - TokenPos++; - } else { - TokenLength++; - } - } else if (line[i] == '}') { - if (InToken) { - InToken = false; - char *token = new char[TokenLength + 1]; - strncpy(Token, TokenStart, TokenLength); - Token[TokenLength] = '\0'; - if (TokenPos == 0) { - Start = atoi(Token); - } else if (TokenPos == 1) { - End = atoi(Token); - } - - delete[] Token; - } else { - Text[TextLength] = line[i]; - TextLength++; - } - } else { - if (InToken) { - TokenLength++; - } else { - Text[TextLength] = line[i]; - if (Text[TextLength] == '|') { - Text[TextLength] = '\n'; - } - TextLength++; - } - } - } - Text[TextLength] = '\0'; - - if (Start != -1 && TextLength > 0) { - _subtitles.add(new CVidSubtitle(_gameRef, Text, Start, End)); - } - - delete[] Text; - - Pos += LineLength + 1; - } - - delete[] Buffer; -#endif +bool VideoPlayer::loadSubtitles(const char *filename, const char *subtitleFile) { return STATUS_OK; } -- cgit v1.2.3 From 8ed71a99f6aaee27a3187cb47fe0c3b30acf88a0 Mon Sep 17 00:00:00 2001 From: Einar Johan Trøan Sømåen Date: Fri, 27 Jul 2012 19:37:00 +0200 Subject: WINTERMUTE: Constructor(args): SuperClass(args) -> Constructor(args) : SuperClass(args) --- engines/wintermute/video/video_player.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'engines/wintermute/video/video_player.cpp') diff --git a/engines/wintermute/video/video_player.cpp b/engines/wintermute/video/video_player.cpp index d0b4019621..a3eedaa293 100644 --- a/engines/wintermute/video/video_player.cpp +++ b/engines/wintermute/video/video_player.cpp @@ -36,7 +36,7 @@ namespace WinterMute { ////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////// -VideoPlayer::VideoPlayer(BaseGame *inGame): BaseClass(inGame) { +VideoPlayer::VideoPlayer(BaseGame *inGame) : BaseClass(inGame) { setDefaults(); } -- cgit v1.2.3 From fed19cb66ae5b56dd7dc81b90edd5a0d15986678 Mon Sep 17 00:00:00 2001 From: Einar Johan Trøan Sømåen Date: Mon, 13 Aug 2012 03:42:30 +0200 Subject: WINTERMUTE: WinterMute -> Wintermute --- engines/wintermute/video/video_player.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'engines/wintermute/video/video_player.cpp') diff --git a/engines/wintermute/video/video_player.cpp b/engines/wintermute/video/video_player.cpp index a3eedaa293..2577b8aedc 100644 --- a/engines/wintermute/video/video_player.cpp +++ b/engines/wintermute/video/video_player.cpp @@ -29,7 +29,7 @@ #include "engines/wintermute/video/video_player.h" -namespace WinterMute { +namespace Wintermute { ////////////////////////////////////////////////////////////////////// // Construction/Destruction @@ -106,4 +106,4 @@ bool VideoPlayer::loadSubtitles(const char *filename, const char *subtitleFile) return STATUS_OK; } -} // end of namespace WinterMute +} // end of namespace Wintermute -- cgit v1.2.3