[Scummvm-git-logs] scummvm master -> f73034d55b8af7c192fdc5497a5a3f119b3a451f
dreammaster
dreammaster at scummvm.org
Sat Sep 25 17:28:49 UTC 2021
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:
f73034d55b AGS: Skip videos with unsupported video tracks rather than erroring
Commit: f73034d55b8af7c192fdc5497a5a3f119b3a451f
https://github.com/scummvm/scummvm/commit/f73034d55b8af7c192fdc5497a5a3f119b3a451f
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2021-09-25T10:28:47-07:00
Commit Message:
AGS: Skip videos with unsupported video tracks rather than erroring
Changed paths:
engines/ags/engine/ac/global_video.cpp
engines/ags/engine/media/video/video.cpp
video/avi_decoder.cpp
video/avi_decoder.h
diff --git a/engines/ags/engine/ac/global_video.cpp b/engines/ags/engine/ac/global_video.cpp
index 63907a6421..1d47593d9c 100644
--- a/engines/ags/engine/ac/global_video.cpp
+++ b/engines/ags/engine/ac/global_video.cpp
@@ -48,9 +48,6 @@ void scrPlayVideo(const char *name, int skip, int flags) {
return;
if (_G(debug_flags) & DBG_NOVIDEO)
return;
- // FIXME: Stargate Adventure videos used unsupported ix00 & ix01 audio tracks
- if (::AGS::g_vm->getGameId() == "stargateadv")
- return;
if ((flags < 10) && (_GP(usetup).audio_backend == 0)) {
// if game audio is disabled in Setup, then don't
diff --git a/engines/ags/engine/media/video/video.cpp b/engines/ags/engine/media/video/video.cpp
index bef24afb84..cae6f831f8 100644
--- a/engines/ags/engine/media/video/video.cpp
+++ b/engines/ags/engine/media/video/video.cpp
@@ -64,9 +64,7 @@ static bool play_video(Video::VideoDecoder *decoder, const char *name, int skip,
AGS::Shared::ScummVMReadStream *stream = new AGS::Shared::ScummVMReadStream(video_stream.get(), DisposeAfterUse::NO);
if (!decoder->loadStream(stream)) {
- delete stream;
- if (showError)
- Display("Unable to decode video '%s'", name);
+ warning("Unable to decode video '%s'", name);
return false;
}
diff --git a/video/avi_decoder.cpp b/video/avi_decoder.cpp
index 0266f8bbe5..ae86821a22 100644
--- a/video/avi_decoder.cpp
+++ b/video/avi_decoder.cpp
@@ -347,7 +347,11 @@ void AVIDecoder::handleStreamHeader(uint32 size) {
}
}
- addTrack(new AVIVideoTrack(_header.totalFrames, sHeader, bmInfo, initialPalette));
+ AVIVideoTrack *track = new AVIVideoTrack(_header.totalFrames, sHeader, bmInfo, initialPalette);
+ if (track->isValid())
+ addTrack(track);
+ else
+ delete track;
} else if (sHeader.streamType == ID_AUDS) {
PCMWaveFormat wvInfo;
wvInfo.tag = _fileStream->readUint16LE();
@@ -443,6 +447,11 @@ bool AVIDecoder::loadStream(Common::SeekableReadStream *stream) {
while (_fileStream->pos() < fileSize && parseNextChunk())
;
+ if (_decodedHeader) {
+ // Ensure there's at least a supported video track
+ _decodedHeader = findNextVideoTrack() != nullptr;
+ }
+
if (!_decodedHeader) {
warning("Failed to parse AVI header");
close();
diff --git a/video/avi_decoder.h b/video/avi_decoder.h
index 6ec0d285b5..95ba787c39 100644
--- a/video/avi_decoder.h
+++ b/video/avi_decoder.h
@@ -225,6 +225,7 @@ protected:
void useInitialPalette();
bool canDither() const;
void setDither(const byte *palette);
+ bool isValid() const { return _videoCodec != nullptr; }
bool isTruemotion1() const;
void forceDimensions(uint16 width, uint16 height);
More information about the Scummvm-git-logs
mailing list