[Scummvm-git-logs] scummvm branch-2-3 -> d9ed62041d271e36c144dbc03e417319306bd6fb

dreammaster dreammaster at scummvm.org
Sat Sep 25 17:29:26 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:
d9ed62041d AGS: Skip videos with unsupported video tracks rather than erroring


Commit: d9ed62041d271e36c144dbc03e417319306bd6fb
    https://github.com/scummvm/scummvm/commit/d9ed62041d271e36c144dbc03e417319306bd6fb
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2021-09-25T10:29:21-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