summaryrefslogtreecommitdiff
path: root/src/asset_factory.cc
diff options
context:
space:
mode:
authorCarl Hetherington <cth@carlh.net>2021-04-22 21:56:38 +0200
committerCarl Hetherington <cth@carlh.net>2021-04-22 21:56:38 +0200
commit5e1ce36be463bfc48663d4697860340649060d01 (patch)
treeb05b203e023a3ec1932f2a73ff4ea9d5dcfd7ffd /src/asset_factory.cc
parentba27603d5b53231607bc8fe41b201d8811b22b4f (diff)
Don't give an error on verifying Interop DCPs with possibly-incorrectly
marked 3D assets. This also adds a warning into the verification output. I don't know if this is actually a standard violation but they have been seen in the wild made by "reputable" DCP creation software. DoM bug #1976.
Diffstat (limited to 'src/asset_factory.cc')
-rw-r--r--src/asset_factory.cc8
1 files changed, 6 insertions, 2 deletions
diff --git a/src/asset_factory.cc b/src/asset_factory.cc
index e02281d2..bab65678 100644
--- a/src/asset_factory.cc
+++ b/src/asset_factory.cc
@@ -54,7 +54,7 @@ using namespace dcp;
shared_ptr<Asset>
-dcp::asset_factory (boost::filesystem::path path, bool ignore_incorrect_picture_mxf_type)
+dcp::asset_factory (boost::filesystem::path path, bool ignore_incorrect_picture_mxf_type, bool* found_threed_marked_as_twod)
{
/* XXX: asdcplib does not appear to support discovery of read MXFs standard
(Interop / SMPTE)
@@ -74,7 +74,11 @@ dcp::asset_factory (boost::filesystem::path path, bool ignore_incorrect_picture_
} catch (dcp::MXFFileError& e) {
if (ignore_incorrect_picture_mxf_type && e.number() == ASDCP::RESULT_SFORMAT) {
/* Tried to load it as mono but the error says it's stereo; try that instead */
- return make_shared<StereoPictureAsset>(path);
+ auto stereo = make_shared<StereoPictureAsset>(path);
+ if (stereo && found_threed_marked_as_twod) {
+ *found_threed_marked_as_twod = true;
+ }
+ return stereo;
} else {
throw;
}