From b87034404e7e165489175e85c58d53d489d25960 Mon Sep 17 00:00:00 2001 From: Alex Szpakowski Date: Wed, 24 Nov 2021 21:15:51 -0400 Subject: [PATCH] newVideo: slightly more descriptive error when given an invalid file --- src/modules/video/theora/OggDemuxer.cpp | 12 ++++++++---- src/modules/video/theora/OggDemuxer.h | 2 +- 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/src/modules/video/theora/OggDemuxer.cpp b/src/modules/video/theora/OggDemuxer.cpp index acc6f9849..31136c897 100644 --- a/src/modules/video/theora/OggDemuxer.cpp +++ b/src/modules/video/theora/OggDemuxer.cpp @@ -43,7 +43,7 @@ OggDemuxer::~OggDemuxer() ogg_sync_clear(&sync); } -void OggDemuxer::readPage(bool throweof) +bool OggDemuxer::readPage(bool erroreof) { char *syncBuffer = nullptr; while (ogg_sync_pageout(&sync, &page) != 1) @@ -53,11 +53,13 @@ void OggDemuxer::readPage(bool throweof) syncBuffer = ogg_sync_buffer(&sync, 8192); size_t read = file->read(syncBuffer, 8192); - if (read == 0 && throweof) - throw love::Exception("Invalid stream"); + if (read == 0 && erroreof) + return false; ogg_sync_wrote(&sync, read); } + + return true; } bool OggDemuxer::readPacket(ogg_packet &packet, bool mustSucceed) @@ -129,8 +131,10 @@ OggDemuxer::StreamType OggDemuxer::findStream() while (true) { + if (!readPage(true)) + return TYPE_UNKNOWN; + // If this page isn't at the start of a stream, we've seen all streams - readPage(true); if (!ogg_page_bos(&page)) break; diff --git a/src/modules/video/theora/OggDemuxer.h b/src/modules/video/theora/OggDemuxer.h index f55a352d2..242f73717 100644 --- a/src/modules/video/theora/OggDemuxer.h +++ b/src/modules/video/theora/OggDemuxer.h @@ -67,7 +67,7 @@ private: int videoSerial; bool eos; - void readPage(bool throweof = false); + bool readPage(bool erroreof = false); StreamType determineType(); }; // OggDemuxer