From 7f27a4e146fd5122cdb4fb412165a30751731b18 Mon Sep 17 00:00:00 2001 From: Philip de Nier Date: Mon, 9 Sep 2024 17:14:23 +0100 Subject: [PATCH] mxfreader: Don't immediately log essence read errors Set the the MXF reader's mReadErrorMessage when less essence data is read from a file than was requested, but don't log the error. This avoids it being logged when reading a growing file where a later attempt succeeds. Note that this doesn't prevent non-essence read errors, e.g other KLVs. --- include/bmx/BMXException.h | 8 ++++++++ src/mxf_reader/EssenceReader.cpp | 4 ++-- test/growing_file/growing_file.md5 | 2 +- 3 files changed, 11 insertions(+), 3 deletions(-) diff --git a/include/bmx/BMXException.h b/include/bmx/BMXException.h index e6ec14e0..547d94fc 100644 --- a/include/bmx/BMXException.h +++ b/include/bmx/BMXException.h @@ -51,6 +51,14 @@ BMX_EXCEPTION(("'%s' check failed", #cond)); \ } while (0) +#define BMX_CHECK_NOLOG(cond) \ + do { \ + if (!(cond)) { \ + throw BMXException( \ + "'%s' check failed near %s:%d", #cond, __FILENAME__, __LINE__); \ + } \ + } while (0) + #define BMX_CHECK_M(cond, err) \ do { \ if (!(cond)) \ diff --git a/src/mxf_reader/EssenceReader.cpp b/src/mxf_reader/EssenceReader.cpp index f16b3de0..14186018 100644 --- a/src/mxf_reader/EssenceReader.cpp +++ b/src/mxf_reader/EssenceReader.cpp @@ -529,7 +529,7 @@ uint32_t EssenceReader::ReadClipWrappedSamples(uint32_t num_samples) frame->Grow((uint32_t)size); uint32_t num_read = mFile->read(frame->GetBytesAvailable(), (uint32_t)size); current_file_position += num_read; - BMX_CHECK(num_read == size); + BMX_CHECK_NOLOG(num_read == size); size -= mImageEndOffset; if (mImageStartOffset > 0) { @@ -638,7 +638,7 @@ uint32_t EssenceReader::ReadFrameWrappedSamples(uint32_t num_samples) if (!mParseOnly) { uint32_t num_read = mFile->read(frame->GetBytesAvailable(), (uint32_t)len); - BMX_CHECK(num_read == len); + BMX_CHECK_NOLOG(num_read == len); } else { mFile->skip(len); } diff --git a/test/growing_file/growing_file.md5 b/test/growing_file/growing_file.md5 index 4db7843c..7006bd33 100644 --- a/test/growing_file/growing_file.md5 +++ b/test/growing_file/growing_file.md5 @@ -1 +1 @@ -2c0703daa26c571738c6f313cfd2b054 \ No newline at end of file +aa99fd8e8e058b07af7db303dc58653c \ No newline at end of file