AGS: Skip videos with unsupported video tracks rather than erroring
This commit is contained in:
parent
c924c3e84e
commit
d9ed62041d
4 changed files with 12 additions and 7 deletions
|
@ -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
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
||||
|
|
|
@ -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();
|
||||
|
|
|
@ -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);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue