summaryrefslogtreecommitdiff
path: root/src/mono_mpeg2_picture_asset.cc
diff options
context:
space:
mode:
Diffstat (limited to 'src/mono_mpeg2_picture_asset.cc')
-rw-r--r--src/mono_mpeg2_picture_asset.cc24
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;
+}
+