From a79574aab09f3908d228b715ebbc8a2ebb16f7fb Mon Sep 17 00:00:00 2001 From: Carl Hetherington Date: Thu, 14 Jan 2021 22:38:58 +0100 Subject: [PATCH] Bv2.1 8.1: CPL must have . --- src/verify.cc | 6 ++++++ src/verify.h | 2 ++ test/verify_test.cc | 23 +++++++++++++++++++++++ 3 files changed, 31 insertions(+) diff --git a/src/verify.cc b/src/verify.cc index b6498891..56ef21c9 100644 --- a/src/verify.cc +++ b/src/verify.cc @@ -1026,6 +1026,10 @@ dcp::verify ( verify_language_tag (cpl->release_territory().get(), notes); } + if (dcp->standard() == dcp::SMPTE && !cpl->annotation_text()) { + notes.push_back (VerificationNote(VerificationNote::VERIFY_BV21_ERROR, VerificationNote::MISSING_ANNOTATION_TEXT_IN_CPL)); + } + /* Check that the CPL's hash corresponds to the PKL */ for (auto i: dcp->pkls()) { optional h = i->hash(cpl->id()); @@ -1219,6 +1223,8 @@ dcp::note_to_string (dcp::VerificationNote note) return "There are more than 32 characters in at least one closed caption line, which is disallowed by Bv2.1"; case dcp::VerificationNote::INVALID_SOUND_FRAME_RATE: return "A sound asset has a sampling rate other than 48kHz, which is disallowed by Bv2.1"; + case dcp::VerificationNote::MISSING_ANNOTATION_TEXT_IN_CPL: + return "The CPL has no tag, which is required by Bv2.1"; } return ""; diff --git a/src/verify.h b/src/verify.h index fa16dfa1..8ee7e1ef 100644 --- a/src/verify.h +++ b/src/verify.h @@ -133,6 +133,8 @@ public: CLOSED_CAPTION_LINE_TOO_LONG, /** The audio sampling rate must be 48kHz [Bv2.1_7.3] */ INVALID_SOUND_FRAME_RATE, + /** The CPL has no tag [Bv2.1_8.1] */ + MISSING_ANNOTATION_TEXT_IN_CPL, }; VerificationNote (Type type, Code code) diff --git a/test/verify_test.cc b/test/verify_test.cc index 42e1eefc..98a28cbc 100644 --- a/test/verify_test.cc +++ b/test/verify_test.cc @@ -1628,3 +1628,26 @@ BOOST_AUTO_TEST_CASE (verify_sound_sampling_rate_must_be_48k) check_verify_result ({dir}, {{ dcp::VerificationNote::VERIFY_BV21_ERROR, dcp::VerificationNote::INVALID_SOUND_FRAME_RATE }}); } + + +BOOST_AUTO_TEST_CASE (verify_cpl_must_have_annotation_text) +{ + boost::filesystem::path const dir("build/test/verify_cpl_must_have_annotation_text"); + auto dcp = make_simple (dir); + dcp->write_xml (dcp::SMPTE); + BOOST_REQUIRE_EQUAL (dcp->cpls().size(), 1U); + + { + BOOST_REQUIRE (dcp->cpls()[0]->file()); + Editor e(dcp->cpls()[0]->file().get()); + e.replace("A Test DCP", ""); + } + + check_verify_result ( + {dir}, + { + { dcp::VerificationNote::VERIFY_BV21_ERROR, dcp::VerificationNote::MISSING_ANNOTATION_TEXT_IN_CPL }, + { dcp::VerificationNote::VERIFY_ERROR, dcp::VerificationNote::CPL_HASH_INCORRECT } + }); +} + -- 2.30.2