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<string> h = i->hash(cpl->id());
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 <AnnotationText> tag, which is required by Bv2.1";
}
return "";
CLOSED_CAPTION_LINE_TOO_LONG,
/** The audio sampling rate must be 48kHz [Bv2.1_7.3] */
INVALID_SOUND_FRAME_RATE,
+ /** The CPL has no <AnnotationText> tag [Bv2.1_8.1] */
+ MISSING_ANNOTATION_TEXT_IN_CPL,
};
VerificationNote (Type type, Code code)
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("<AnnotationText>A Test DCP</AnnotationText>", "");
+ }
+
+ 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 }
+ });
+}
+