summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCarl Hetherington <cth@carlh.net>2023-08-24 23:19:44 +0200
committerCarl Hetherington <cth@carlh.net>2023-08-24 23:19:44 +0200
commit8305f28ea22a834cc4a9e4b324110b5ff4ba1bd1 (patch)
treea624646b4e077369e8867db120cc3523a8700cac
parent6a1a6e5462172fad159b39f0f73b1e81dc1848aa (diff)
Check for missing font files referred from Interop closed captions (as well as subs).
-rw-r--r--src/verify.cc11
-rw-r--r--test/verify_test.cc17
2 files changed, 25 insertions, 3 deletions
diff --git a/src/verify.cc b/src/verify.cc
index 42ee1921..620ee31d 100644
--- a/src/verify.cc
+++ b/src/verify.cc
@@ -715,9 +715,9 @@ verify_smpte_timed_text_asset (
}
-/** Verify Interop subtitle-only stuff */
+/** Verify Interop subtitle / CCAP stuff */
void
-verify_interop_subtitle_asset(shared_ptr<const InteropSubtitleAsset> asset, vector<VerificationNote>& notes)
+verify_interop_text_asset(shared_ptr<const InteropSubtitleAsset> asset, vector<VerificationNote>& notes)
{
if (asset->subtitles().empty()) {
notes.push_back({VerificationNote::Type::ERROR, VerificationNote::Code::MISSING_SUBTITLE, asset->id(), asset->file().get() });
@@ -806,7 +806,7 @@ verify_subtitle_asset (
auto interop = dynamic_pointer_cast<const InteropSubtitleAsset>(asset);
if (interop) {
- verify_interop_subtitle_asset(interop, notes);
+ verify_interop_text_asset(interop, notes);
if (namespace_count(asset, "DCSubtitle") > 1) {
notes.push_back({ VerificationNote::Type::WARNING, VerificationNote::Code::INCORRECT_SUBTITLE_NAMESPACE_COUNT, asset->id() });
}
@@ -848,6 +848,11 @@ verify_closed_caption_asset (
notes.push_back ({VerificationNote::Type::WARNING, VerificationNote::Code::MISSED_CHECK_OF_ENCRYPTED});
}
+ auto interop = dynamic_pointer_cast<const InteropSubtitleAsset>(asset);
+ if (interop) {
+ verify_interop_text_asset(interop, notes);
+ }
+
auto smpte = dynamic_pointer_cast<const SMPTESubtitleAsset>(asset);
if (smpte) {
verify_smpte_timed_text_asset (smpte, reel_asset_duration, notes);
diff --git a/test/verify_test.cc b/test/verify_test.cc
index 4138138f..8b33db1a 100644
--- a/test/verify_test.cc
+++ b/test/verify_test.cc
@@ -670,6 +670,23 @@ BOOST_AUTO_TEST_CASE (verify_valid_interop_subtitles)
}
+BOOST_AUTO_TEST_CASE(verify_catch_missing_font_file_with_interop_ccap)
+{
+ path const dir("build/test/verify_catch_missing_font_file_with_interop_ccap");
+ prepare_directory(dir);
+ copy_file("test/data/subs1.xml", dir / "ccap.xml");
+ auto asset = make_shared<dcp::InteropSubtitleAsset>(dir / "ccap.xml");
+ auto reel_asset = make_shared<dcp::ReelInteropClosedCaptionAsset>(asset, dcp::Fraction(24, 1), 16 * 24, 0);
+ write_dcp_with_single_asset(dir, reel_asset, dcp::Standard::INTEROP);
+
+ check_verify_result (
+ {dir}, {
+ { dcp::VerificationNote::Type::BV21_ERROR, dcp::VerificationNote::Code::INVALID_STANDARD },
+ { dcp::VerificationNote::Type::ERROR, dcp::VerificationNote::Code::MISSING_FONT, string{"theFontId"} }
+ });
+}
+
+
BOOST_AUTO_TEST_CASE (verify_invalid_interop_subtitles)
{
using namespace boost::filesystem;