diff options
| author | Carl Hetherington <cth@carlh.net> | 2025-12-16 17:45:46 +0100 |
|---|---|---|
| committer | Carl Hetherington <cth@carlh.net> | 2025-12-18 01:10:32 +0100 |
| commit | c3c127e0bdb988696d16f47ea8080df3eff38420 (patch) | |
| tree | ecdff8d299152eef491f1946e6ccb4f6d9cf8e71 /src/mono_mpeg2_picture_asset.cc | |
| parent | 45ed3bf55175a8555123b320b366efb69b1ba629 (diff) | |
Add can_be_read() to ReelFileAsset and subclasses.
Diffstat (limited to 'src/mono_mpeg2_picture_asset.cc')
| -rw-r--r-- | src/mono_mpeg2_picture_asset.cc | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/src/mono_mpeg2_picture_asset.cc b/src/mono_mpeg2_picture_asset.cc index 380da0fe..9a879f0b 100644 --- a/src/mono_mpeg2_picture_asset.cc +++ b/src/mono_mpeg2_picture_asset.cc @@ -36,6 +36,7 @@ #include "mono_mpeg2_picture_asset.h" #include "mono_mpeg2_picture_asset_reader.h" #include "mono_mpeg2_picture_asset_writer.h" +#include "mpeg2_transcode.h" #include <asdcp/AS_DCP.h> @@ -84,3 +85,26 @@ MonoMPEG2PictureAsset::start_write(boost::filesystem::path file, Behaviour behav /* Can't use make_shared here as the MonoJ2KPictureAssetWriter constructor is private */ return shared_ptr<MonoMPEG2PictureAssetWriter>(new MonoMPEG2PictureAssetWriter(this, file, behaviour == Behaviour::OVERWRITE_EXISTING)); } + + +bool +MonoMPEG2PictureAsset::can_be_read() const +{ + if (!MXF::can_be_read()) { + return false; + } + + try { + auto reader = start_read(); + reader->set_check_hmac(false); + dcp::MPEG2Decompressor decompressor; + decompressor.decompress_frame(reader->get_frame(0)); + } catch (dcp::ReadError&) { + return false; + } catch (dcp::MiscError&) { + return false; + } + + return true; +} + |
