[Scummvm-git-logs] scummvm master -> 0a9ad229a89a04b2fe437597584684f43479ca14
peterkohaut
peterkohaut at users.noreply.github.com
Tue Jan 22 19:02:07 CET 2019
This automated email contains information about 1 new commit which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .
Summary:
0a9ad229a8 BLADERUNNER: Fixed outtake player
Commit: 0a9ad229a89a04b2fe437597584684f43479ca14
https://github.com/scummvm/scummvm/commit/0a9ad229a89a04b2fe437597584684f43479ca14
Author: Peter Kohaut (peter.kohaut at gmail.com)
Date: 2019-01-22T19:00:31+01:00
Commit Message:
BLADERUNNER: Fixed outtake player
In some scenes, background video got corrupted as outtake was rendered
into a wrong surface.
Changed paths:
engines/bladerunner/outtake.cpp
engines/bladerunner/outtake.h
diff --git a/engines/bladerunner/outtake.cpp b/engines/bladerunner/outtake.cpp
index 4698a83..fc610b2 100644
--- a/engines/bladerunner/outtake.cpp
+++ b/engines/bladerunner/outtake.cpp
@@ -32,6 +32,15 @@
namespace BladeRunner {
+OuttakePlayer::OuttakePlayer(BladeRunnerEngine *vm) {
+ _vm = vm;
+ _surfaceVideo.create(_vm->_surfaceBack.w, _vm->_surfaceBack.h, createRGB555());
+}
+
+OuttakePlayer::~OuttakePlayer() {
+ _surfaceVideo.free();
+}
+
void OuttakePlayer::play(const Common::String &name, bool noLocalization, int container) {
if (container > 0) {
debug("OuttakePlayer::play TODO");
@@ -45,7 +54,7 @@ void OuttakePlayer::play(const Common::String &name, bool noLocalization, int co
Common::String resNameNoVQASuffix = resName;
resName = resName + ".VQA";
- VQAPlayer vqa_player(_vm, &_vm->_surfaceBack, resName); // surfaceBack is needed here for subtitles rendering properly, original was _surfaceFront here
+ VQAPlayer vqa_player(_vm, &_surfaceVideo, resName); // in original game _surfaceFront is used here, but for proper subtitles rendering we need separate surface
vqa_player.open();
@@ -57,9 +66,10 @@ void OuttakePlayer::play(const Common::String &name, bool noLocalization, int co
return;
int frame = vqa_player.update();
- blit(_vm->_surfaceBack, _vm->_surfaceFront); // This helps to make subtitles disappear properly, if the video is rendered in surface back and then pushed to the front surface
- if (frame == -3)
+ blit(_surfaceVideo, _vm->_surfaceFront); // This helps to make subtitles disappear properly, if the video is rendered in separate surface and then pushed to the front surface
+ if (frame == -3) { // end of video
break;
+ }
if (frame >= 0) {
_vm->_subtitles->getOuttakeSubsText(resNameNoVQASuffix, frame);
@@ -69,6 +79,8 @@ void OuttakePlayer::play(const Common::String &name, bool noLocalization, int co
_vm->_system->delayMillis(10);
}
+
+ // TODO: scene video is played fast after end of outtake, fix it (visible in tb07)
}
} // End of namespace BladeRunner
diff --git a/engines/bladerunner/outtake.h b/engines/bladerunner/outtake.h
index 8386965..32b6690 100644
--- a/engines/bladerunner/outtake.h
+++ b/engines/bladerunner/outtake.h
@@ -33,11 +33,11 @@ class BladeRunnerEngine;
class OuttakePlayer {
BladeRunnerEngine *_vm;
+ Graphics::Surface _surfaceVideo;
public:
- OuttakePlayer(BladeRunnerEngine *vm) {
- _vm = vm;
- }
+ OuttakePlayer(BladeRunnerEngine *vm);
+ ~OuttakePlayer();
void play(const Common::String &name, bool noLocalization, int container);
};
More information about the Scummvm-git-logs
mailing list