From 9e330174c8b8a0d2574746f1bc055423be263311 Mon Sep 17 00:00:00 2001 From: Matthew Hoops Date: Sat, 12 May 2012 21:28:13 -0400 Subject: VIDEO: Change getElapsedTime() into getTime() This name change accompanies a slight meaning change; now it means the current time position from the beginning of the video and not from starting the video. --- engines/sword2/animation.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'engines/sword2/animation.cpp') diff --git a/engines/sword2/animation.cpp b/engines/sword2/animation.cpp index e77ae98163..90ee7375ab 100644 --- a/engines/sword2/animation.cpp +++ b/engines/sword2/animation.cpp @@ -410,11 +410,11 @@ DXADecoderWithSound::DXADecoderWithSound(Audio::Mixer *mixer, Audio::SoundHandle : _mixer(mixer), _bgSoundHandle(bgSoundHandle) { } -uint32 DXADecoderWithSound::getElapsedTime() const { +uint32 DXADecoderWithSound::getTime() const { if (_mixer->isSoundHandleActive(*_bgSoundHandle)) return _mixer->getSoundElapsedTime(*_bgSoundHandle); - return DXADecoder::getElapsedTime(); + return DXADecoder::getTime(); } /////////////////////////////////////////////////////////////////////////////// -- cgit v1.2.3 From 808e41d807cd909d18dadc612bc77d14bae2a18e Mon Sep 17 00:00:00 2001 From: Johannes Schickel Date: Sat, 16 Jun 2012 02:37:25 +0200 Subject: SWORD2: Get rid of casts on OSystem::copyRectToScreen calls. --- engines/sword2/animation.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'engines/sword2/animation.cpp') diff --git a/engines/sword2/animation.cpp b/engines/sword2/animation.cpp index 90ee7375ab..5e3f8929e9 100644 --- a/engines/sword2/animation.cpp +++ b/engines/sword2/animation.cpp @@ -332,7 +332,7 @@ bool MoviePlayer::playVideo() { if (_decoderType == kVideoDecoderPSX) drawFramePSX(frame); else - _vm->_system->copyRectToScreen((byte *)frame->pixels, frame->pitch, x, y, frame->w, frame->h); + _vm->_system->copyRectToScreen(frame->pixels, frame->pitch, x, y, frame->w, frame->h); } if (_decoder->hasDirtyPalette()) { @@ -401,7 +401,7 @@ void MoviePlayer::drawFramePSX(const Graphics::Surface *frame) { uint16 x = (g_system->getWidth() - scaledFrame.w) / 2; uint16 y = (g_system->getHeight() - scaledFrame.h) / 2; - _vm->_system->copyRectToScreen((byte *)scaledFrame.pixels, scaledFrame.pitch, x, y, scaledFrame.w, scaledFrame.h); + _vm->_system->copyRectToScreen(scaledFrame.pixels, scaledFrame.pitch, x, y, scaledFrame.w, scaledFrame.h); scaledFrame.free(); } -- cgit v1.2.3 From 24c97b89138190d211b1f19d5575c9029c0329b2 Mon Sep 17 00:00:00 2001 From: Matthew Hoops Date: Sat, 21 Jul 2012 17:31:00 -0400 Subject: VIDEO: Move PSXStreamDecoder to the new VideoDecoder API --- engines/sword2/animation.cpp | 1 + 1 file changed, 1 insertion(+) (limited to 'engines/sword2/animation.cpp') diff --git a/engines/sword2/animation.cpp b/engines/sword2/animation.cpp index 5e3f8929e9..c1cf33ff09 100644 --- a/engines/sword2/animation.cpp +++ b/engines/sword2/animation.cpp @@ -99,6 +99,7 @@ bool MoviePlayer::load(const char *name) { // Need to load here in case it fails in which case we'd need // to go back to paletted mode if (_decoder->loadFile(filename)) { + ((Video::AdvancedVideoDecoder *)_decoder)->start(); // TODO: Remove after new API is complete return true; } else { initGraphics(640, 480, true); -- cgit v1.2.3 From a652f6669e2e9225aee17431784b433397b41ae3 Mon Sep 17 00:00:00 2001 From: Matthew Hoops Date: Mon, 23 Jul 2012 21:04:51 -0400 Subject: VIDEO: Rewrite SmackerDecoder to use the new API --- engines/sword2/animation.cpp | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) (limited to 'engines/sword2/animation.cpp') diff --git a/engines/sword2/animation.cpp b/engines/sword2/animation.cpp index c1cf33ff09..e257ec9029 100644 --- a/engines/sword2/animation.cpp +++ b/engines/sword2/animation.cpp @@ -89,6 +89,13 @@ bool MoviePlayer::load(const char *name) { break; case kVideoDecoderSMK: filename = Common::String::format("%s.smk", name); + + if (_decoder->loadFile(filename)) { + ((Video::AdvancedVideoDecoder *)_decoder)->start(); // TODO: Remove after new API is complete + return true; + } else { + return false; + } break; case kVideoDecoderPSX: filename = Common::String::format("%s.str", name); @@ -442,7 +449,7 @@ MoviePlayer *makeMoviePlayer(const char *name, Sword2Engine *vm, Audio::Mixer *s filename = Common::String::format("%s.smk", name); if (Common::File::exists(filename)) { - Video::SmackerDecoder *smkDecoder = new Video::SmackerDecoder(snd); + Video::SmackerDecoder *smkDecoder = new Video::SmackerDecoder(); return new MoviePlayer(vm, snd, system, bgSoundHandle, smkDecoder, kVideoDecoderSMK); } -- cgit v1.2.3 From 3117e4a8ff12c3a2ba4f2d4c69e8539040d49eb0 Mon Sep 17 00:00:00 2001 From: Matthew Hoops Date: Tue, 24 Jul 2012 13:24:01 -0400 Subject: VIDEO: Convert DXADecoder to the AdvancedVideoDecoder API --- engines/sword2/animation.cpp | 62 +++++++++++++------------------------------- 1 file changed, 18 insertions(+), 44 deletions(-) (limited to 'engines/sword2/animation.cpp') diff --git a/engines/sword2/animation.cpp b/engines/sword2/animation.cpp index e257ec9029..e603925e73 100644 --- a/engines/sword2/animation.cpp +++ b/engines/sword2/animation.cpp @@ -40,6 +40,7 @@ #include "gui/message.h" +#include "video/dxa_decoder.h" #include "video/smk_decoder.h" #include "video/psx_decoder.h" @@ -51,9 +52,8 @@ namespace Sword2 { // Basic movie player /////////////////////////////////////////////////////////////////////////////// -MoviePlayer::MoviePlayer(Sword2Engine *vm, Audio::Mixer *snd, OSystem *system, Audio::SoundHandle *bgSoundHandle, Video::VideoDecoder *decoder, DecoderType decoderType) - : _vm(vm), _snd(snd), _bgSoundHandle(bgSoundHandle), _system(system) { - _bgSoundStream = NULL; +MoviePlayer::MoviePlayer(Sword2Engine *vm, OSystem *system, Video::VideoDecoder *decoder, DecoderType decoderType) + : _vm(vm), _system(system) { _decoderType = decoderType; _decoder = decoder; @@ -62,7 +62,6 @@ MoviePlayer::MoviePlayer(Sword2Engine *vm, Audio::Mixer *snd, OSystem *system, A } MoviePlayer::~MoviePlayer() { - delete _bgSoundHandle; delete _decoder; } @@ -75,11 +74,6 @@ bool MoviePlayer::load(const char *name) { if (_vm->shouldQuit()) return false; - if (_decoderType == kVideoDecoderDXA) - _bgSoundStream = Audio::SeekableAudioStream::openStreamFile(name); - else - _bgSoundStream = NULL; - _textSurface = NULL; Common::String filename; @@ -89,13 +83,6 @@ bool MoviePlayer::load(const char *name) { break; case kVideoDecoderSMK: filename = Common::String::format("%s.smk", name); - - if (_decoder->loadFile(filename)) { - ((Video::AdvancedVideoDecoder *)_decoder)->start(); // TODO: Remove after new API is complete - return true; - } else { - return false; - } break; case kVideoDecoderPSX: filename = Common::String::format("%s.str", name); @@ -114,7 +101,15 @@ bool MoviePlayer::load(const char *name) { } } - return _decoder->loadFile(filename.c_str()); + if (!_decoder->loadFile(filename)) + return false; + + // For DXA, also add the external sound file + if (_decoderType == kVideoDecoderDXA) + ((Video::AdvancedVideoDecoder *)_decoder)->addStreamFileTrack(name); + + ((Video::AdvancedVideoDecoder *)_decoder)->start(); // TODO: Remove after new API is complete + return true; } void MoviePlayer::play(MovieText *movieTexts, uint32 numMovieTexts, uint32 leadIn, uint32 leadOut) { @@ -130,24 +125,15 @@ void MoviePlayer::play(MovieText *movieTexts, uint32 numMovieTexts, uint32 leadI if (leadIn) _vm->_sound->playMovieSound(leadIn, kLeadInSound); - if (_bgSoundStream) - _snd->playStream(Audio::Mixer::kSFXSoundType, _bgSoundHandle, _bgSoundStream); - - bool terminated = false; - - terminated = !playVideo(); + bool terminated = !playVideo(); closeTextObject(_currentMovieText, NULL, 0); if (terminated) { - _snd->stopHandle(*_bgSoundHandle); _vm->_sound->stopMovieSounds(); _vm->_sound->stopSpeech(); } - while (_snd->isSoundHandleActive(*_bgSoundHandle)) - _system->delayMillis(100); - if (_decoderType == kVideoDecoderPSX) { // Need to jump back to paletted color initGraphics(640, 480, true); @@ -414,31 +400,19 @@ void MoviePlayer::drawFramePSX(const Graphics::Surface *frame) { scaledFrame.free(); } -DXADecoderWithSound::DXADecoderWithSound(Audio::Mixer *mixer, Audio::SoundHandle *bgSoundHandle) - : _mixer(mixer), _bgSoundHandle(bgSoundHandle) { -} - -uint32 DXADecoderWithSound::getTime() const { - if (_mixer->isSoundHandleActive(*_bgSoundHandle)) - return _mixer->getSoundElapsedTime(*_bgSoundHandle); - - return DXADecoder::getTime(); -} - /////////////////////////////////////////////////////////////////////////////// // Factory function for creating the appropriate cutscene player /////////////////////////////////////////////////////////////////////////////// -MoviePlayer *makeMoviePlayer(const char *name, Sword2Engine *vm, Audio::Mixer *snd, OSystem *system, uint32 frameCount) { +MoviePlayer *makeMoviePlayer(const char *name, Sword2Engine *vm, OSystem *system, uint32 frameCount) { Common::String filename; - Audio::SoundHandle *bgSoundHandle = new Audio::SoundHandle; filename = Common::String::format("%s.str", name); if (Common::File::exists(filename)) { #ifdef USE_RGB_COLOR Video::VideoDecoder *psxDecoder = new Video::PSXStreamDecoder(Video::PSXStreamDecoder::kCD2x, frameCount); - return new MoviePlayer(vm, snd, system, bgSoundHandle, psxDecoder, kVideoDecoderPSX); + return new MoviePlayer(vm, system, psxDecoder, kVideoDecoderPSX); #else GUI::MessageDialog dialog(_("PSX cutscenes found but ScummVM has been built without RGB color support"), _("OK")); dialog.runModal(); @@ -450,15 +424,15 @@ MoviePlayer *makeMoviePlayer(const char *name, Sword2Engine *vm, Audio::Mixer *s if (Common::File::exists(filename)) { Video::SmackerDecoder *smkDecoder = new Video::SmackerDecoder(); - return new MoviePlayer(vm, snd, system, bgSoundHandle, smkDecoder, kVideoDecoderSMK); + return new MoviePlayer(vm, system, smkDecoder, kVideoDecoderSMK); } filename = Common::String::format("%s.dxa", name); if (Common::File::exists(filename)) { #ifdef USE_ZLIB - DXADecoderWithSound *dxaDecoder = new DXADecoderWithSound(snd, bgSoundHandle); - return new MoviePlayer(vm, snd, system, bgSoundHandle, dxaDecoder, kVideoDecoderDXA); + Video::DXADecoder *dxaDecoder = new Video::DXADecoder(); + return new MoviePlayer(vm, system, dxaDecoder, kVideoDecoderDXA); #else GUI::MessageDialog dialog(_("DXA cutscenes found but ScummVM has been built without zlib support"), _("OK")); dialog.runModal(); -- cgit v1.2.3 From fb35c7f46f986a22235638e2946ba8492e735109 Mon Sep 17 00:00:00 2001 From: Matthew Hoops Date: Thu, 16 Aug 2012 13:30:32 -0400 Subject: VIDEO: Remove setSystemPalette() --- engines/sword2/animation.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'engines/sword2/animation.cpp') diff --git a/engines/sword2/animation.cpp b/engines/sword2/animation.cpp index e603925e73..24b52cd85a 100644 --- a/engines/sword2/animation.cpp +++ b/engines/sword2/animation.cpp @@ -38,6 +38,8 @@ #include "sword2/screen.h" #include "sword2/animation.h" +#include "graphics/palette.h" + #include "gui/message.h" #include "video/dxa_decoder.h" @@ -330,7 +332,7 @@ bool MoviePlayer::playVideo() { } if (_decoder->hasDirtyPalette()) { - _decoder->setSystemPalette(); + _vm->_system->getPaletteManager()->setPalette(_decoder->getPalette(), 0, 256); uint32 maxWeight = 0; uint32 minWeight = 0xFFFFFFFF; -- cgit v1.2.3 From 18823198ad4e7dedd0ca33760eb453e9fe673551 Mon Sep 17 00:00:00 2001 From: Matthew Hoops Date: Thu, 16 Aug 2012 14:00:14 -0400 Subject: VIDEO: Merge AdvancedVideoDecoder into VideoDecoder --- engines/sword2/animation.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'engines/sword2/animation.cpp') diff --git a/engines/sword2/animation.cpp b/engines/sword2/animation.cpp index 24b52cd85a..00260f789a 100644 --- a/engines/sword2/animation.cpp +++ b/engines/sword2/animation.cpp @@ -95,7 +95,7 @@ bool MoviePlayer::load(const char *name) { // Need to load here in case it fails in which case we'd need // to go back to paletted mode if (_decoder->loadFile(filename)) { - ((Video::AdvancedVideoDecoder *)_decoder)->start(); // TODO: Remove after new API is complete + _decoder->start(); return true; } else { initGraphics(640, 480, true); @@ -108,9 +108,9 @@ bool MoviePlayer::load(const char *name) { // For DXA, also add the external sound file if (_decoderType == kVideoDecoderDXA) - ((Video::AdvancedVideoDecoder *)_decoder)->addStreamFileTrack(name); + _decoder->addStreamFileTrack(name); - ((Video::AdvancedVideoDecoder *)_decoder)->start(); // TODO: Remove after new API is complete + _decoder->start(); return true; } -- cgit v1.2.3