summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCarl Hetherington <cth@carlh.net>2021-06-04 22:30:25 +0200
committerCarl Hetherington <cth@carlh.net>2021-06-04 22:30:25 +0200
commita498b8819ab431ecc2aac058b1aadb9e15d396ac (patch)
tree7a551eb65089e5948bd39c6a2973b57e3fe7939b
parent881e5de77401086265c5d901c7bde10d35d50231 (diff)
Ignore HMAC discrepencies when reading DCPs.
-rw-r--r--cscript4
-rw-r--r--src/lib/atmos_mxf_decoder.cc1
-rw-r--r--src/lib/dcp_decoder.cc4
-rw-r--r--src/lib/dcp_examiner.cc16
-rw-r--r--src/lib/video_mxf_decoder.cc2
5 files changed, 21 insertions, 6 deletions
diff --git a/cscript b/cscript
index 0045d80ef..0f38bb829 100644
--- a/cscript
+++ b/cscript
@@ -388,8 +388,8 @@ def dependencies(target, options):
# Use distro-provided FFmpeg on Arch
deps = []
- deps.append(('libdcp', '42feb7f'))
- deps.append(('libsub', 'f3d7335'))
+ deps.append(('libdcp', 'a5bd2e9'))
+ deps.append(('libsub', '44cf236'))
deps.append(('leqm-nrt', '93ae9e6'))
deps.append(('rtaudio', 'f619b76'))
# We get our OpenSSL libraries from the environment, but we
diff --git a/src/lib/atmos_mxf_decoder.cc b/src/lib/atmos_mxf_decoder.cc
index 9fcd9d2a6..19a19a8c4 100644
--- a/src/lib/atmos_mxf_decoder.cc
+++ b/src/lib/atmos_mxf_decoder.cc
@@ -40,6 +40,7 @@ AtmosMXFDecoder::AtmosMXFDecoder (std::shared_ptr<const Film> film, std::shared_
auto asset = make_shared<dcp::AtmosAsset>(_content->path(0));
_reader = asset->start_read ();
+ _reader->set_check_hmac (false);
_metadata = AtmosMetadata (asset);
}
diff --git a/src/lib/dcp_decoder.cc b/src/lib/dcp_decoder.cc
index f9b0d9a57..9de63dc93 100644
--- a/src/lib/dcp_decoder.cc
+++ b/src/lib/dcp_decoder.cc
@@ -363,9 +363,11 @@ DCPDecoder::get_readers ()
DCPOMATIC_ASSERT (mono || stereo);
if (mono) {
_mono_reader = mono->start_read ();
+ _mono_reader->set_check_hmac (false);
_stereo_reader.reset ();
} else {
_stereo_reader = stereo->start_read ();
+ _stereo_reader->set_check_hmac (false);
_mono_reader.reset ();
}
} else {
@@ -375,6 +377,7 @@ DCPDecoder::get_readers ()
if ((*_reel)->main_sound()) {
_sound_reader = (*_reel)->main_sound()->asset()->start_read ();
+ _sound_reader->set_check_hmac (false);
} else {
_sound_reader.reset ();
}
@@ -382,6 +385,7 @@ DCPDecoder::get_readers ()
if ((*_reel)->atmos()) {
shared_ptr<dcp::AtmosAsset> asset = (*_reel)->atmos()->asset();
_atmos_reader = asset->start_read();
+ _atmos_reader->set_check_hmac (false);
_atmos_metadata = AtmosMetadata (asset);
} else {
_atmos_reader.reset ();
diff --git a/src/lib/dcp_examiner.cc b/src/lib/dcp_examiner.cc
index b431cec26..ffdcad1c1 100644
--- a/src/lib/dcp_examiner.cc
+++ b/src/lib/dcp_examiner.cc
@@ -241,9 +241,13 @@ DCPExaminer::DCPExaminer (shared_ptr<const DCPContent> content, bool tolerant)
auto stereo = dynamic_pointer_cast<dcp::StereoPictureAsset>(pic);
if (mono) {
- mono->start_read()->get_frame(0)->xyz_image ();
+ auto reader = mono->start_read();
+ reader->set_check_hmac (false);
+ reader->get_frame(0)->xyz_image();
} else {
- stereo->start_read()->get_frame(0)->xyz_image(dcp::Eye::LEFT);
+ auto reader = stereo->start_read();
+ reader->set_check_hmac (false);
+ reader->get_frame(0)->xyz_image(dcp::Eye::LEFT);
}
if (i->main_sound()) {
@@ -251,7 +255,9 @@ DCPExaminer::DCPExaminer (shared_ptr<const DCPContent> content, bool tolerant)
if (sound->encrypted() && !sound->key()) {
_kdm_valid = false;
}
- i->main_sound()->asset()->start_read()->get_frame(0);
+ auto reader = i->main_sound()->asset()->start_read();
+ reader->set_check_hmac (false);
+ reader->get_frame(0);
}
if (i->main_subtitle()) {
@@ -268,7 +274,9 @@ DCPExaminer::DCPExaminer (shared_ptr<const DCPContent> content, bool tolerant)
if (atmos->encrypted() && !atmos->key()) {
_kdm_valid = false;
}
- atmos->start_read()->get_frame(0);
+ auto reader = atmos->start_read();
+ reader->set_check_hmac (false);
+ reader->get_frame(0);
}
}
} catch (dcp::ReadError& e) {
diff --git a/src/lib/video_mxf_decoder.cc b/src/lib/video_mxf_decoder.cc
index 39c4a37fb..92cab0259 100644
--- a/src/lib/video_mxf_decoder.cc
+++ b/src/lib/video_mxf_decoder.cc
@@ -67,9 +67,11 @@ VideoMXFDecoder::VideoMXFDecoder (shared_ptr<const Film> film, shared_ptr<const
if (mono) {
_mono_reader = mono->start_read ();
+ _mono_reader->set_check_hmac (false);
_size = mono->size ();
} else {
_stereo_reader = stereo->start_read ();
+ _stereo_reader->set_check_hmac (false);
_size = stereo->size ();
}
}