From 9a5db0824d48bac475abbb9ff4dc1c7b5f28edab Mon Sep 17 00:00:00 2001 From: Carl Hetherington Date: Sun, 13 Dec 2020 22:23:07 +0100 Subject: Bv2.1 7.2.1: Check size of closed caption XML is not larger than 256KB. --- src/verify.cc | 25 +++++++++++++++++++++++-- 1 file changed, 23 insertions(+), 2 deletions(-) (limited to 'src/verify.cc') diff --git a/src/verify.cc b/src/verify.cc index 78c087da..9cfcd4b9 100644 --- a/src/verify.cc +++ b/src/verify.cc @@ -663,6 +663,26 @@ verify_subtitle_asset ( } +static void +verify_closed_caption_asset ( + shared_ptr asset, + function)> stage, + boost::filesystem::path xsd_dtd_directory, + list& notes + ) +{ + verify_subtitle_asset (asset, stage, xsd_dtd_directory, notes); + + if (asset->raw_xml().size() > 256 * 1024) { + notes.push_back ( + VerificationNote( + VerificationNote::VERIFY_BV21_ERROR, VerificationNote::CLOSED_CAPTION_XML_TOO_LARGE_IN_BYTES, *asset->file() + ) + ); + } +} + + list dcp::verify ( vector directories, @@ -763,7 +783,7 @@ dcp::verify ( BOOST_FOREACH (shared_ptr i, reel->closed_captions()) { verify_closed_caption_reel (i, notes); if (i->asset_ref().resolved()) { - verify_subtitle_asset (i->asset(), stage, xsd_dtd_directory, notes); + verify_closed_caption_asset (i->asset(), stage, xsd_dtd_directory, notes); } } } @@ -835,7 +855,8 @@ dcp::note_to_string (dcp::VerificationNote note) return String::compose("A picture asset's frame rate (%1) is not 24fps as required for 4K DCPs by Bv2.1", note.note().get()); case dcp::VerificationNote::PICTURE_ASSET_4K_3D: return "3D 4K DCPs are not allowed by Bv2.1"; - + case dcp::VerificationNote::CLOSED_CAPTION_XML_TOO_LARGE_IN_BYTES: + return String::compose("The XML for the closed caption asset %1 is longer than the 256KB maximum required by Bv2.1", note.file()->filename()); } return ""; -- cgit v1.2.3