summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
Diffstat (limited to 'test')
-rw-r--r--test/util_test.cc9
-rw-r--r--test/verify_test.cc1916
2 files changed, 930 insertions, 995 deletions
diff --git a/test/util_test.cc b/test/util_test.cc
index 5780f898..69f4c891 100644
--- a/test/util_test.cc
+++ b/test/util_test.cc
@@ -276,3 +276,12 @@ BOOST_AUTO_TEST_CASE (unique_string_test)
existing.push_back (s);
}
}
+
+
+BOOST_AUTO_TEST_CASE(utf8_strlen_test)
+{
+ BOOST_CHECK_EQUAL(dcp::utf8_strlen("hello world"), 11U);
+ BOOST_CHECK_EQUAL(dcp::utf8_strlen("hëllo world"), 11U);
+ BOOST_CHECK_EQUAL(dcp::utf8_strlen("hëłlo wørld"), 11U);
+}
+
diff --git a/test/verify_test.cc b/test/verify_test.cc
index dc5fa017..88e6681b 100644
--- a/test/verify_test.cc
+++ b/test/verify_test.cc
@@ -245,16 +245,16 @@ to_string(dcp::VerificationNote const& note)
"\n [%1 %2 %3 %4 %5 %6 ",
static_cast<int>(note.type()),
static_cast<int>(note.code()),
- note.note().get_value_or("<none>"),
note.file().get_value_or("<none>"),
note.line().get_value_or(0),
- note.frame().get_value_or(0)
+ note.frame().get_value_or(0),
+ note.reel_index().get_value_or(-1)
);
s += dcp::String::compose(
"%1 %2 %3 %4 %5]\n",
- note.id().get_value_or("<none>"),
- note.other_id().get_value_or("<none>"),
+ note.asset_id().get_value_or("<none>"),
+ note.other_asset_id().get_value_or("<none>"),
note.cpl_id().get_value_or("<none>"),
note.reference_hash().get_value_or("<none>"),
note.calculated_hash().get_value_or("<none>")
@@ -419,14 +419,6 @@ note(dcp::VerificationNote::Code code, shared_ptr<const dcp::CPL> cpl)
static
dcp::VerificationNote
-note(dcp::VerificationNote::Code code, string note, shared_ptr<const dcp::CPL> cpl)
-{
- return dcp::VerificationNote(code, note).set_cpl_id(cpl->id());
-}
-
-
-static
-dcp::VerificationNote
note(dcp::VerificationNote::Code code, boost::filesystem::path path, shared_ptr<const dcp::CPL> cpl)
{
return dcp::VerificationNote(code, path).set_cpl_id(cpl->id());
@@ -529,21 +521,19 @@ BOOST_AUTO_TEST_CASE (verify_incorrect_picture_sound_hash)
note(VC::MATCHING_CPL_HASHES, cpl),
note(VC::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl),
note(VC::NONE_ENCRYPTED, cpl),
- dcp::VerificationNote(
- VC::VALID_MAIN_PICTURE_ACTIVE_AREA,
- string{"1998x1080"},
- canonical(cpl->file().get())
- ).set_cpl_id(dcp_test1_cpl_id()),
- note(VC::VALID_CONTENT_KIND, string{"trailer"}, cpl),
- note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl->content_version()->label_text, cpl),
- note(VC::VALID_CPL_ANNOTATION_TEXT, string{"A Test DCP"}, cpl),
- note(VC::VALID_PICTURE_FRAME_SIZES_IN_BYTES, canonical(dir / "video.mxf"), cpl),
+ dcp::VerificationNote(VC::VALID_MAIN_PICTURE_ACTIVE_AREA, canonical(cpl->file().get())).set_cpl_id(dcp_test1_cpl_id()).set_size_in_pixels({1998, 1080}),
+ note(VC::VALID_CONTENT_KIND, cpl).set_content_kind("trailer"),
+ note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text),
+ VN(VC::VALID_CPL_ANNOTATION_TEXT).set_cpl_id(cpl->id()).set_annotation_text("A Test DCP"),
+ note(VC::VALID_PICTURE_FRAME_SIZES_IN_BYTES, canonical(dir / "video.mxf"), cpl).set_reel_index(0).set_asset_id("5407b210-4441-4e97-8b16-8bdc7c12da54"),
VN(
VC::INCORRECT_PICTURE_HASH, canonical(video_path)
- ).set_cpl_id(dcp_test1_cpl_id()).set_reference_hash(video_calc.old_hash()).set_calculated_hash(video_calc.new_hash()),
+ ).set_cpl_id(dcp_test1_cpl_id()).set_reference_hash(video_calc.old_hash()).set_calculated_hash(video_calc.new_hash())
+ .set_reel_index(0).set_asset_id("5407b210-4441-4e97-8b16-8bdc7c12da54"),
VN(
VC::INCORRECT_SOUND_HASH, canonical(audio_path)
- ).set_cpl_id(dcp_test1_cpl_id()).set_reference_hash(audio_calc.old_hash()).set_calculated_hash(audio_calc.new_hash()),
+ ).set_cpl_id(dcp_test1_cpl_id()).set_reference_hash(audio_calc.old_hash()).set_calculated_hash(audio_calc.new_hash())
+ .set_reel_index(0).set_asset_id("97f0f352-5b77-48ee-a558-9df37717f4fa"),
});
}
@@ -571,23 +561,19 @@ BOOST_AUTO_TEST_CASE (verify_mismatched_picture_sound_hashes)
{
note(VC::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl),
note(VC::NONE_ENCRYPTED, cpl),
- VN(
- VC::VALID_MAIN_PICTURE_ACTIVE_AREA,
- string{"1998x1080"},
- canonical(cpl->file().get())
- ).set_cpl_id(cpl->id()),
- note(VC::VALID_CONTENT_KIND, string{"trailer"}, cpl),
- note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl->content_version()->label_text, cpl),
- note(VC::VALID_CPL_ANNOTATION_TEXT, string{"A Test DCP"}, cpl),
- note(VC::VALID_PICTURE_FRAME_SIZES_IN_BYTES, canonical(dir / "video.mxf"), cpl),
+ VN(VC::VALID_MAIN_PICTURE_ACTIVE_AREA, canonical(cpl->file().get())).set_cpl_id(cpl->id()).set_size_in_pixels({1998, 1080}),
+ note(VC::VALID_CONTENT_KIND, cpl).set_content_kind("trailer"),
+ note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text),
+ VN(VC::VALID_CPL_ANNOTATION_TEXT).set_cpl_id(cpl->id()).set_annotation_text("A Test DCP"),
+ note(VC::VALID_PICTURE_FRAME_SIZES_IN_BYTES, canonical(dir / "video.mxf"), cpl).set_reel_index(0).set_asset_id("5407b210-4441-4e97-8b16-8bdc7c12da54"),
VN(
VC::MISMATCHED_CPL_HASHES, canonical(dir / dcp_test1_cpl())
).set_cpl_id(dcp_test1_cpl_id()).set_reference_hash("x" + calc.old_hash()).set_calculated_hash(calc.old_hash()),
- VN(VC::MISMATCHED_PICTURE_HASHES, canonical(dir / "video.mxf")).set_cpl_id(dcp_test1_cpl_id()),
- VN(VC::MISMATCHED_SOUND_HASHES, canonical(dir / "audio.mxf")).set_cpl_id(dcp_test1_cpl_id()),
- { VC::INVALID_XML, "value 'x3M7YTgvFKXXMEGLkIbV4miC90FE=' is invalid Base64-encoded binary", canonical(dir / dcp_test1_pkl()), 28 },
- { VC::INVALID_XML, "value 'xskI+5b/9LA/y6h0mcyxysJYanxI=' is invalid Base64-encoded binary", canonical(dir / dcp_test1_pkl()), 12 },
- { VC::INVALID_XML, "value 'xvsVjRV9vhTBPUWfE/TT1o2vdQsI=' is invalid Base64-encoded binary", canonical(dir / dcp_test1_pkl()), 20 },
+ VN(VC::MISMATCHED_PICTURE_HASHES, canonical(dir / "video.mxf")).set_cpl_id(dcp_test1_cpl_id()).set_reel_index(0).set_asset_id("5407b210-4441-4e97-8b16-8bdc7c12da54"),
+ VN(VC::MISMATCHED_SOUND_HASHES, canonical(dir / "audio.mxf")).set_cpl_id(dcp_test1_cpl_id()).set_reel_index(0).set_asset_id("97f0f352-5b77-48ee-a558-9df37717f4fa"),
+ VN(VC::INVALID_XML, canonical(dir / dcp_test1_pkl()), 28).set_error("value 'x3M7YTgvFKXXMEGLkIbV4miC90FE=' is invalid Base64-encoded binary"),
+ VN(VC::INVALID_XML, canonical(dir / dcp_test1_pkl()), 12).set_error("value 'xskI+5b/9LA/y6h0mcyxysJYanxI=' is invalid Base64-encoded binary"),
+ VN(VC::INVALID_XML, canonical(dir / dcp_test1_pkl()), 20).set_error("value 'xvsVjRV9vhTBPUWfE/TT1o2vdQsI=' is invalid Base64-encoded binary"),
});
}
@@ -612,21 +598,17 @@ BOOST_AUTO_TEST_CASE (verify_failed_read_content_kind)
{ dir },
{},
{
- note(VC::CORRECT_PICTURE_HASH, canonical(dir / "video.mxf"), cpl),
+ note(VC::CORRECT_PICTURE_HASH, canonical(dir / "video.mxf"), cpl).set_reel_index(0).set_asset_id("5407b210-4441-4e97-8b16-8bdc7c12da54"),
note(VC::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl),
note(VC::NONE_ENCRYPTED, cpl),
- VN(
- VC::VALID_MAIN_PICTURE_ACTIVE_AREA,
- string{"1998x1080"},
- canonical(cpl->file().get())
- ).set_cpl_id(cpl->id()),
- note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl->content_version()->label_text, cpl),
- note(VC::VALID_CPL_ANNOTATION_TEXT, string{"A Test DCP"}, cpl),
- note(VC::VALID_PICTURE_FRAME_SIZES_IN_BYTES, canonical(dir / "video.mxf"), cpl),
+ VN(VC::VALID_MAIN_PICTURE_ACTIVE_AREA, canonical(cpl->file().get())).set_cpl_id(cpl->id()).set_size_in_pixels({1998, 1080}),
+ note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text),
+ VN(VC::VALID_CPL_ANNOTATION_TEXT).set_cpl_id(cpl->id()).set_annotation_text("A Test DCP"),
+ note(VC::VALID_PICTURE_FRAME_SIZES_IN_BYTES, canonical(dir / "video.mxf"), cpl).set_reel_index(0).set_asset_id("5407b210-4441-4e97-8b16-8bdc7c12da54"),
VN(
VC::MISMATCHED_CPL_HASHES, canonical(dir / dcp_test1_cpl())
).set_cpl_id(dcp_test1_cpl_id()).set_reference_hash(calc.old_hash()).set_calculated_hash(calc.new_hash()),
- VN(VC::INVALID_CONTENT_KIND, string("xtrailer")).set_cpl_id(dcp_test1_cpl_id())
+ VN(VC::INVALID_CONTENT_KIND).set_cpl_id(dcp_test1_cpl_id()).set_content_kind("xtrailer"),
});
}
@@ -670,22 +652,18 @@ BOOST_AUTO_TEST_CASE (verify_invalid_picture_frame_rate)
std::vector<VN> expected =
{
- note(VC::CORRECT_PICTURE_HASH, canonical(dir / "video.mxf"), cpl),
+ note(VC::CORRECT_PICTURE_HASH, canonical(dir / "video.mxf"), cpl).set_reel_index(0).set_asset_id("5407b210-4441-4e97-8b16-8bdc7c12da54"),
note(VC::NONE_ENCRYPTED, cpl),
- VN(
- VC::VALID_MAIN_PICTURE_ACTIVE_AREA,
- string{"1998x1080"},
- canonical(cpl->file().get())
- ).set_cpl_id(cpl->id()),
+ VN(VC::VALID_MAIN_PICTURE_ACTIVE_AREA, canonical(cpl->file().get())).set_cpl_id(cpl->id()).set_size_in_pixels({1998, 1080}),
note(VC::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl),
- note(VC::VALID_CONTENT_KIND, string{"trailer"}, cpl),
- note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl->content_version()->label_text, cpl),
- note(VC::VALID_CPL_ANNOTATION_TEXT, string{"A Test DCP"}, cpl),
- note(VC::VALID_PICTURE_FRAME_SIZES_IN_BYTES, canonical(dir / "video.mxf"), cpl),
+ note(VC::VALID_CONTENT_KIND, cpl).set_content_kind("trailer"),
+ note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text),
+ VN(VC::VALID_CPL_ANNOTATION_TEXT).set_cpl_id(cpl->id()).set_annotation_text("A Test DCP"),
+ note(VC::VALID_PICTURE_FRAME_SIZES_IN_BYTES, canonical(dir / "video.mxf"), cpl).set_reel_index(0).set_asset_id("5407b210-4441-4e97-8b16-8bdc7c12da54"),
VN(
VC::MISMATCHED_CPL_HASHES, canonical(cpl_path)
).set_cpl_id(cpl->id()).set_calculated_hash("7n7GQ2TbxQbmHYuAR8ml7XDOep8=").set_reference_hash("skI+5b/9LA/y6h0mcyxysJYanxI="),
- VN(VC::INVALID_PICTURE_FRAME_RATE, string{"99/1"}).set_cpl_id(cpl->id())
+ VN(VC::INVALID_PICTURE_FRAME_RATE).set_cpl_id(cpl->id()).set_reel_index(0).set_frame_rate({99, 1}),
};
check_verify_result(dcp::verify({dir}, {}, &stage, &progress, {}, xsd_test).notes, expected);
@@ -709,14 +687,10 @@ BOOST_AUTO_TEST_CASE (verify_missing_asset)
note(VC::MATCHING_CPL_HASHES, cpl),
note(VC::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl),
note(VC::NONE_ENCRYPTED, cpl),
- VN(
- VC::VALID_MAIN_PICTURE_ACTIVE_AREA,
- string{"1998x1080"},
- canonical(cpl->file().get())
- ).set_cpl_id(cpl->id()),
- note(VC::VALID_CONTENT_KIND, string{"trailer"}, cpl),
- note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl->content_version()->label_text, cpl),
- note(VC::VALID_CPL_ANNOTATION_TEXT, string{"A Test DCP"}, cpl),
+ VN(VC::VALID_MAIN_PICTURE_ACTIVE_AREA, canonical(cpl->file().get())).set_cpl_id(cpl->id()).set_size_in_pixels({1998, 1080}),
+ note(VC::VALID_CONTENT_KIND, cpl).set_content_kind("trailer"),
+ note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text),
+ VN(VC::VALID_CPL_ANNOTATION_TEXT).set_cpl_id(cpl->id()).set_annotation_text("A Test DCP"),
{ VC::MISSING_ASSET, canonical(dir) / "video.mxf" }
});
}
@@ -738,15 +712,11 @@ BOOST_AUTO_TEST_CASE (verify_empty_asset_path)
std::vector<VN> expected = {
note(VC::NONE_ENCRYPTED, cpl),
note(VC::MATCHING_CPL_HASHES, cpl),
- VN(
- VC::VALID_MAIN_PICTURE_ACTIVE_AREA,
- string{"1998x1080"},
- canonical(cpl->file().get())
- ).set_cpl_id(cpl->id()),
+ VN(VC::VALID_MAIN_PICTURE_ACTIVE_AREA, canonical(cpl->file().get())).set_cpl_id(cpl->id()).set_size_in_pixels({1998, 1080}),
note(VC::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl),
- note(VC::VALID_CONTENT_KIND, string{"trailer"}, cpl),
- note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl->content_version()->label_text, cpl),
- note(VC::VALID_CPL_ANNOTATION_TEXT, string{"A Test DCP"}, cpl),
+ note(VC::VALID_CONTENT_KIND, cpl).set_content_kind("trailer"),
+ note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text),
+ VN(VC::VALID_CPL_ANNOTATION_TEXT).set_cpl_id(cpl->id()).set_annotation_text("A Test DCP"),
{ VC::EMPTY_ASSET_PATH }
};
@@ -768,31 +738,25 @@ BOOST_AUTO_TEST_CASE (verify_mismatched_standard)
using VC = VN::Code;
std::vector<VN> expected = {
- note(VC::CORRECT_PICTURE_HASH, canonical(dir / "video.mxf"), cpl),
- note(VC::VALID_PICTURE_FRAME_SIZES_IN_BYTES, canonical(dir / "video.mxf"), cpl),
+ note(VC::CORRECT_PICTURE_HASH, canonical(dir / "video.mxf"), cpl).set_reel_index(0).set_asset_id("5407b210-4441-4e97-8b16-8bdc7c12da54"),
+ note(VC::VALID_PICTURE_FRAME_SIZES_IN_BYTES, canonical(dir / "video.mxf"), cpl).set_reel_index(0).set_asset_id("5407b210-4441-4e97-8b16-8bdc7c12da54"),
note(VC::NONE_ENCRYPTED, cpl),
- VN(
- VC::VALID_MAIN_PICTURE_ACTIVE_AREA,
- string{"1998x1080"},
- canonical(cpl->file().get())
- ).set_cpl_id(cpl->id()),
+ VN(VC::VALID_MAIN_PICTURE_ACTIVE_AREA, canonical(cpl->file().get())).set_cpl_id(cpl->id()).set_size_in_pixels({1998, 1080}),
note(VC::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl),
- note(VC::VALID_CONTENT_KIND, string{"trailer"}, cpl),
- note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl->content_version()->label_text, cpl),
- note(VC::VALID_CPL_ANNOTATION_TEXT, string{"A Test DCP"}, cpl),
+ note(VC::VALID_CONTENT_KIND, cpl).set_content_kind("trailer"),
+ note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text),
+ VN(VC::VALID_CPL_ANNOTATION_TEXT).set_cpl_id(cpl->id()).set_annotation_text("A Test DCP"),
{ VC::MISMATCHED_STANDARD },
- VN(VC::INVALID_XML, "invalid character encountered", canonical(cpl_path), 42).set_cpl_id(cpl->id()),
- VN(VC::INVALID_XML, "no declaration found for element 'Id'", canonical(cpl_path), 53).set_cpl_id(cpl->id()),
- VN(VC::INVALID_XML, "no declaration found for element 'EditRate'", canonical(cpl_path), 54).set_cpl_id(cpl->id()),
- VN(VC::INVALID_XML, "no declaration found for element 'IntrinsicDuration'", canonical(cpl_path), 55).set_cpl_id(cpl->id()),
- VN(
- VC::INVALID_XML,
+ VN(VC::INVALID_XML, canonical(cpl_path), 42).set_cpl_id(cpl->id()).set_error("invalid character encountered"),
+ VN(VC::INVALID_XML, canonical(cpl_path), 53).set_cpl_id(cpl->id()).set_error("no declaration found for element 'Id'"),
+ VN(VC::INVALID_XML, canonical(cpl_path), 54).set_cpl_id(cpl->id()).set_error("no declaration found for element 'EditRate'"),
+ VN(VC::INVALID_XML, canonical(cpl_path), 55).set_cpl_id(cpl->id()).set_error("no declaration found for element 'IntrinsicDuration'"),
+ VN(VC::INVALID_XML, canonical(cpl_path), 149).set_cpl_id(cpl->id()).set_error(
"element 'Id' is not allowed for content model '(Id,AnnotationText?,EditRate,IntrinsicDuration,"
"EntryPoint?,Duration?,FullContentTitleText,ReleaseTerritory?,VersionNumber?,Chain?,Distributor?,"
"Facility?,AlternateContentVersionList?,Luminance?,MainSoundConfiguration,MainSoundSampleRate,"
- "MainPictureStoredArea,MainPictureActiveArea,MainSubtitleLanguageList?,ExtensionMetadataList?,)'",
- canonical(cpl_path), 149
- ).set_cpl_id(cpl->id()),
+ "MainPictureStoredArea,MainPictureActiveArea,MainSubtitleLanguageList?,ExtensionMetadataList?,)'"
+ ),
VN(
VC::MISMATCHED_CPL_HASHES, canonical(cpl_path)
).set_cpl_id(cpl->id()).set_reference_hash("skI+5b/9LA/y6h0mcyxysJYanxI=").set_calculated_hash("FZ9E7L/pOuJ6aZfbiaANTv8BFOo=")
@@ -817,24 +781,19 @@ BOOST_AUTO_TEST_CASE (verify_invalid_xml_cpl_id)
using VC = VN::Code;
std::vector<VN> expected = {
- note(VC::CORRECT_PICTURE_HASH, canonical(dir / "video.mxf"), cpl),
- note(VC::VALID_PICTURE_FRAME_SIZES_IN_BYTES, canonical(dir / "video.mxf"), cpl),
+ note(VC::CORRECT_PICTURE_HASH, canonical(dir / "video.mxf"), cpl).set_reel_index(0).set_asset_id("5407b210-4441-4e97-8b16-8bdc7c12da54"),
+ note(VC::VALID_PICTURE_FRAME_SIZES_IN_BYTES, canonical(dir / "video.mxf"), cpl).set_reel_index(0).set_asset_id("5407b210-4441-4e97-8b16-8bdc7c12da54"),
note(VC::NONE_ENCRYPTED, cpl),
- VN(
- VC::VALID_MAIN_PICTURE_ACTIVE_AREA,
- string{"1998x1080"},
- canonical(cpl->file().get())
- ).set_cpl_id(cpl->id()),
+ VN(VC::VALID_MAIN_PICTURE_ACTIVE_AREA, canonical(cpl->file().get())).set_cpl_id(cpl->id()).set_size_in_pixels({1998, 1080}),
note(VC::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl),
- note(VC::VALID_CONTENT_KIND, string{"trailer"}, cpl),
- note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl->content_version()->label_text, cpl),
- note(VC::VALID_CPL_ANNOTATION_TEXT, string{"A Test DCP"}, cpl),
+ note(VC::VALID_CONTENT_KIND, cpl).set_content_kind("trailer"),
+ note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text),
+ VN(VC::VALID_CPL_ANNOTATION_TEXT).set_cpl_id(cpl->id()).set_annotation_text("A Test DCP"),
note(VC::MATCHING_CPL_HASHES, cpl),
- VN(
- VC::INVALID_XML,
+ VN(VC::INVALID_XML, canonical(cpl_path), 3).set_cpl_id(cpl->id()).set_error(
"value 'urn:uuid:6affb8ee-0020-4dff-a53c-17652f6358a' does not match regular expression "
- "facet 'urn:uuid:[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}'", canonical(cpl_path), 3
- ).set_cpl_id(cpl->id())
+ "facet 'urn:uuid:[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}'"
+ ),
};
check_verify_result(dcp::verify({dir}, {}, &stage, &progress, {}, xsd_test).notes, expected);
@@ -849,28 +808,27 @@ BOOST_AUTO_TEST_CASE (verify_invalid_xml_issue_date)
auto const dir = dcp::String::compose("build/test/verify_test%1", suffix);
auto const cpl_path = find_cpl(dir);
- auto cpl = std::make_shared<dcp::CPL>(cpl_path);
+ auto dcp = dcp::DCP(dir);
+ dcp.read();
+ auto const cpl = dcp.cpls()[0];
+ auto const picture_id = cpl->reels()[0]->main_picture()->asset()->id();
using VN = dcp::VerificationNote;
using VC = VN::Code;
std::vector<VN> expected = {
- note(VC::CORRECT_PICTURE_HASH, canonical(dir / "video.mxf"), cpl),
- note(VC::VALID_PICTURE_FRAME_SIZES_IN_BYTES, canonical(dir / "video.mxf"), cpl),
+ note(VC::CORRECT_PICTURE_HASH, canonical(dir / "video.mxf"), cpl).set_reel_index(0).set_asset_id(picture_id),
+ note(VC::VALID_PICTURE_FRAME_SIZES_IN_BYTES, canonical(dir / "video.mxf"), cpl).set_reel_index(0).set_asset_id(picture_id),
note(VC::NONE_ENCRYPTED, cpl),
- VN(
- VC::VALID_MAIN_PICTURE_ACTIVE_AREA,
- string{"1998x1080"},
- canonical(cpl->file().get())
- ).set_cpl_id(cpl->id()),
+ VN(VC::VALID_MAIN_PICTURE_ACTIVE_AREA, canonical(cpl->file().get())).set_cpl_id(cpl->id()).set_size_in_pixels({1998, 1080}),
note(VC::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl),
- note(VC::VALID_CONTENT_KIND, string{"trailer"}, cpl),
- note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl->content_version()->label_text, cpl),
- note(VC::VALID_CPL_ANNOTATION_TEXT, string{"A Test DCP"}, cpl),
+ note(VC::VALID_CONTENT_KIND, cpl).set_content_kind("trailer"),
+ note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text),
+ VN(VC::VALID_CPL_ANNOTATION_TEXT).set_cpl_id(cpl->id()).set_annotation_text("A Test DCP"),
VN(
VC::MISMATCHED_CPL_HASHES, canonical(cpl_path)
).set_cpl_id(cpl->id()).set_reference_hash("skI+5b/9LA/y6h0mcyxysJYanxI=").set_calculated_hash("sz3BeIugJ567q3HMnA62JeRw4TE="),
- VN(VC::INVALID_XML, "invalid character encountered", canonical(cpl_path), 5).set_cpl_id(cpl->id()),
+ VN(VC::INVALID_XML, canonical(cpl_path), 5).set_cpl_id(cpl->id()).set_error("invalid character encountered"),
};
check_verify_result(dcp::verify({dir}, {}, &stage, &progress, {}, xsd_test).notes, expected);
@@ -886,31 +844,28 @@ BOOST_AUTO_TEST_CASE (verify_invalid_xml_pkl_id)
auto const dir = dcp::String::compose("build/test/verify_test%1", suffix);
auto const pkl_path = find_pkl(dir);
auto const cpl_path = find_cpl(dir);
- auto cpl = std::make_shared<dcp::CPL>(cpl_path);
+ auto dcp = dcp::DCP(dir);
+ dcp.read();
+ auto const cpl = dcp.cpls()[0];
+ auto const picture_id = cpl->reels()[0]->main_picture()->asset()->id();
using VN = dcp::VerificationNote;
using VC = VN::Code;
std::vector<VN> expected = {
- note(VC::CORRECT_PICTURE_HASH, canonical(dir / "video.mxf"), cpl),
- note(VC::VALID_PICTURE_FRAME_SIZES_IN_BYTES, canonical(dir / "video.mxf"), cpl),
+ note(VC::CORRECT_PICTURE_HASH, canonical(dir / "video.mxf"), cpl).set_reel_index(0).set_asset_id(picture_id),
+ note(VC::VALID_PICTURE_FRAME_SIZES_IN_BYTES, canonical(dir / "video.mxf"), cpl).set_reel_index(0).set_asset_id(picture_id),
note(VC::NONE_ENCRYPTED, cpl),
- VN(
- VC::VALID_MAIN_PICTURE_ACTIVE_AREA,
- string{"1998x1080"},
- canonical(cpl->file().get())
- ).set_cpl_id(cpl->id()),
+ VN(VC::VALID_MAIN_PICTURE_ACTIVE_AREA, canonical(cpl->file().get())).set_cpl_id(cpl->id()).set_size_in_pixels({1998, 1080}),
note(VC::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl),
- note(VC::VALID_CONTENT_KIND, string{"trailer"}, cpl),
- note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl->content_version()->label_text, cpl),
- note(VC::VALID_CPL_ANNOTATION_TEXT, string{"A Test DCP"}, cpl),
+ note(VC::VALID_CONTENT_KIND, cpl).set_content_kind("trailer"),
+ note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text),
+ VN(VC::VALID_CPL_ANNOTATION_TEXT).set_cpl_id(cpl->id()).set_annotation_text("A Test DCP"),
note(VC::MATCHING_CPL_HASHES, cpl),
- VN(
- VC::INVALID_XML,
+ VN(VC::INVALID_XML, canonical(pkl_path), 3).set_error(
"value 'urn:uuid:x199d58b-5ef8-4d49-b270-07e590ccb280' does not match regular "
- "expression facet 'urn:uuid:[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}'",
- canonical(pkl_path), 3
- ),
+ "expression facet 'urn:uuid:[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}'"
+ ),
};
check_verify_result(dcp::verify({dir}, {}, &stage, &progress, {}, xsd_test).notes, expected);
@@ -926,31 +881,28 @@ BOOST_AUTO_TEST_CASE (verify_invalid_xml_asset_map_id)
auto const dir = dcp::String::compose("build/test/verify_test%1", suffix);
auto const cpl_path = find_cpl(dir);
auto const asset_map_path = find_asset_map(dir);
- auto cpl = std::make_shared<dcp::CPL>(cpl_path);
+ auto dcp = dcp::DCP(dir);
+ dcp.read();
+ auto const cpl = dcp.cpls()[0];
+ auto const picture_id = cpl->reels()[0]->main_picture()->asset()->id();
using VN = dcp::VerificationNote;
using VC = VN::Code;
std::vector<VN> expected = {
- note(VC::CORRECT_PICTURE_HASH, canonical(dir / "video.mxf"), cpl),
- note(VC::VALID_PICTURE_FRAME_SIZES_IN_BYTES, canonical(dir / "video.mxf"), cpl),
+ note(VC::CORRECT_PICTURE_HASH, canonical(dir / "video.mxf"), cpl).set_reel_index(0).set_asset_id(picture_id),
+ note(VC::VALID_PICTURE_FRAME_SIZES_IN_BYTES, canonical(dir / "video.mxf"), cpl).set_reel_index(0).set_asset_id(picture_id),
note(VC::NONE_ENCRYPTED, cpl),
- VN(
- VC::VALID_MAIN_PICTURE_ACTIVE_AREA,
- string{"1998x1080"},
- canonical(cpl->file().get())
- ).set_cpl_id(cpl->id()),
+ VN(VC::VALID_MAIN_PICTURE_ACTIVE_AREA, canonical(cpl->file().get())).set_cpl_id(cpl->id()).set_size_in_pixels({1998, 1080}),
note(VC::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl),
- note(VC::VALID_CONTENT_KIND, string{"trailer"}, cpl),
- note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl->content_version()->label_text, cpl),
- note(VC::VALID_CPL_ANNOTATION_TEXT, string{"A Test DCP"}, cpl),
+ note(VC::VALID_CONTENT_KIND, cpl).set_content_kind("trailer"),
+ note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text),
+ VN(VC::VALID_CPL_ANNOTATION_TEXT).set_cpl_id(cpl->id()).set_annotation_text("A Test DCP"),
note(VC::MATCHING_CPL_HASHES, cpl),
- VN(
- VC::INVALID_XML,
+ VN(VC::INVALID_XML, canonical(asset_map_path), 3).set_error(
"value 'urn:uuid:x17b3de4-6dda-408d-b19b-6711354b0bc3' does not match regular "
- "expression facet 'urn:uuid:[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}'",
- canonical(asset_map_path), 3
- ),
+ "expression facet 'urn:uuid:[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}'"
+ ),
};
check_verify_result(dcp::verify({dir}, {}, &stage, &progress, {}, xsd_test).notes, expected);
@@ -1012,16 +964,18 @@ BOOST_AUTO_TEST_CASE (verify_invalid_standard)
vector<VN> expected = {
note(VC::NONE_ENCRYPTED, cpl),
{ VC::INVALID_STANDARD },
- note(VC::VALID_CONTENT_KIND, string{"feature"}, cpl),
- note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl->content_version()->label_text, cpl),
+ note(VC::VALID_CONTENT_KIND, cpl).set_content_kind("feature"),
+ note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text),
note(VC::MATCHING_CPL_HASHES, cpl),
note(VC::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl),
- note(VC::CORRECT_PICTURE_HASH, canonical(dir / "j2c_c6035f97-b07d-4e1c-944d-603fc2ddc242.mxf"), cpl),
- note(VC::VALID_PICTURE_FRAME_SIZES_IN_BYTES, canonical(dir / "j2c_c6035f97-b07d-4e1c-944d-603fc2ddc242.mxf"), cpl)
+ note(VC::CORRECT_PICTURE_HASH, canonical(dir / "j2c_c6035f97-b07d-4e1c-944d-603fc2ddc242.mxf"), cpl).set_reel_index(0).set_asset_id("c6035f97-b07d-4e1c-944d-603fc2ddc242"),
+ note(VC::VALID_PICTURE_FRAME_SIZES_IN_BYTES, canonical(dir / "j2c_c6035f97-b07d-4e1c-944d-603fc2ddc242.mxf"), cpl).set_reel_index(0).set_asset_id("c6035f97-b07d-4e1c-944d-603fc2ddc242"),
};
for (int j = 0; j < 24; ++j) {
- expected.push_back(VN(VC::INVALID_JPEG2000_GUARD_BITS_FOR_2K, string("2")).set_cpl_id(cpl->id()));
+ expected.push_back(
+ VN(VC::INVALID_JPEG2000_GUARD_BITS_FOR_2K).set_cpl_id(cpl->id()).set_reel_index(0).set_asset_id("c6035f97-b07d-4e1c-944d-603fc2ddc242").set_guard_bits(2)
+ );
}
check_verify_result(notes, expected);
@@ -1037,6 +991,7 @@ BOOST_AUTO_TEST_CASE (verify_invalid_duration)
BOOST_REQUIRE(dcp.cpls().size() == 1);
auto cpl = dcp.cpls()[0];
+ auto const picture_id = cpl->reels()[0]->main_picture()->asset()->id();
using VN = dcp::VerificationNote;
using VC = VN::Code;
@@ -1044,19 +999,21 @@ BOOST_AUTO_TEST_CASE (verify_invalid_duration)
note(VC::MATCHING_CPL_HASHES, cpl),
note(VC::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl),
note(VC::NONE_ENCRYPTED, cpl),
- note(VC::VALID_CONTENT_KIND, string{"feature"}, cpl),
- note(VC::CORRECT_PICTURE_HASH, canonical(dir / "j2c_d7576dcb-a361-4139-96b8-267f5f8d7f91.mxf"), cpl),
- note(VC::VALID_PICTURE_FRAME_SIZES_IN_BYTES, canonical(dir / "j2c_d7576dcb-a361-4139-96b8-267f5f8d7f91.mxf"), cpl),
+ note(VC::VALID_CONTENT_KIND, cpl).set_content_kind("feature"),
+ note(VC::CORRECT_PICTURE_HASH, canonical(dir / "j2c_d7576dcb-a361-4139-96b8-267f5f8d7f91.mxf"), cpl).set_reel_index(0).set_asset_id(picture_id),
+ note(VC::VALID_PICTURE_FRAME_SIZES_IN_BYTES, canonical(dir / "j2c_d7576dcb-a361-4139-96b8-267f5f8d7f91.mxf"), cpl).set_reel_index(0).set_asset_id(picture_id),
{ VC::INVALID_STANDARD },
- VN(VC::INVALID_DURATION, string("d7576dcb-a361-4139-96b8-267f5f8d7f91")).set_cpl_id(cpl->id()),
- VN(VC::INVALID_INTRINSIC_DURATION, string("d7576dcb-a361-4139-96b8-267f5f8d7f91")).set_cpl_id(cpl->id()),
- VN(VC::INVALID_DURATION, string("a2a87f5d-b749-4a7e-8d0c-9d48a4abf626")).set_cpl_id(cpl->id()),
- VN(VC::INVALID_INTRINSIC_DURATION, string("a2a87f5d-b749-4a7e-8d0c-9d48a4abf626")).set_cpl_id(cpl->id()),
+ VN(VC::INVALID_DURATION).set_cpl_id(cpl->id()).set_reel_index(0).set_asset_id("d7576dcb-a361-4139-96b8-267f5f8d7f91"),
+ VN(VC::INVALID_INTRINSIC_DURATION).set_cpl_id(cpl->id()).set_reel_index(0).set_asset_id("d7576dcb-a361-4139-96b8-267f5f8d7f91"),
+ VN(VC::INVALID_DURATION).set_cpl_id(cpl->id()).set_reel_index(0).set_asset_id("a2a87f5d-b749-4a7e-8d0c-9d48a4abf626"),
+ VN(VC::INVALID_INTRINSIC_DURATION).set_cpl_id(cpl->id()).set_reel_index(0).set_asset_id("a2a87f5d-b749-4a7e-8d0c-9d48a4abf626"),
VN(VC::EMPTY_CONTENT_VERSION_LABEL_TEXT, cpl->file().get()).set_cpl_id(cpl->id())
};
for (int i = 0; i < 23; ++i) {
- expected.push_back(VN(VC::INVALID_JPEG2000_GUARD_BITS_FOR_2K, string("2")).set_cpl_id(cpl->id()));
+ expected.push_back(
+ VN(VC::INVALID_JPEG2000_GUARD_BITS_FOR_2K).set_cpl_id(cpl->id()).set_reel_index(0).set_asset_id("d7576dcb-a361-4139-96b8-267f5f8d7f91").set_guard_bits(2)
+ );
}
check_verify_result({ dir }, {}, expected);
@@ -1098,6 +1055,7 @@ BOOST_AUTO_TEST_CASE (verify_invalid_picture_frame_size_in_bytes)
prepare_directory (dir);
auto cpl = dcp_from_frame (oversized_frame, dir);
+ auto const picture_id = cpl->reels()[0]->main_picture()->asset()->id();
using VN = dcp::VerificationNote;
using VC = VN::Code;
@@ -1105,20 +1063,26 @@ BOOST_AUTO_TEST_CASE (verify_invalid_picture_frame_size_in_bytes)
note(VC::MATCHING_CPL_HASHES, cpl),
note(VC::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl),
note(VC::NONE_ENCRYPTED, cpl),
- note(VC::VALID_CONTENT_KIND, string{"trailer"}, cpl),
- note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl->content_version()->label_text, cpl),
- note(VC::VALID_CPL_ANNOTATION_TEXT, string{"hello"}, cpl),
- note(VC::CORRECT_PICTURE_HASH, canonical(dir / "pic.mxf"), cpl),
+ note(VC::VALID_CONTENT_KIND, cpl).set_content_kind("trailer"),
+ note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text),
+ VN(VC::VALID_CPL_ANNOTATION_TEXT).set_cpl_id(cpl->id()).set_annotation_text("hello"),
+ note(VC::CORRECT_PICTURE_HASH, canonical(dir / "pic.mxf"), cpl).set_reel_index(0).set_asset_id(picture_id),
};
for (auto i = 0; i < 24; ++i) {
expected.push_back(
- VN(VC::INVALID_JPEG2000_CODESTREAM, string("missing marker start byte")).set_frame(i).set_frame_rate(24).set_cpl_id(cpl->id()));
+ VN(VC::INVALID_JPEG2000_CODESTREAM).set_frame(i).set_frame_rate(dcp::Fraction(24, 1))
+ .set_cpl_id(cpl->id()).set_reel_index(0).set_asset_id(picture_id).set_error("missing marker start byte")
+ );
}
for (auto i = 0; i < 24; ++i) {
expected.push_back(
- VN(VC::INVALID_PICTURE_FRAME_SIZE_IN_BYTES, canonical(dir / "pic.mxf")).set_frame(i).set_frame_rate(24).set_cpl_id(cpl->id()));
+ VN(
+ VC::INVALID_PICTURE_FRAME_SIZE_IN_BYTES,
+ canonical(dir / "pic.mxf")
+ ).set_frame(i).set_frame_rate(dcp::Fraction(24, 1)).set_cpl_id(cpl->id()).set_reel_index(0).set_asset_id(picture_id)
+ );
}
expected.push_back(
@@ -1146,28 +1110,33 @@ BOOST_AUTO_TEST_CASE (verify_nearly_invalid_picture_frame_size_in_bytes)
prepare_directory (dir);
auto cpl = dcp_from_frame (oversized_frame, dir);
+ auto const picture_id = cpl->reels()[0]->main_picture()->asset()->id();
using VN = dcp::VerificationNote;
using VC = VN::Code;
vector<VN> expected = {
- note(VC::CORRECT_PICTURE_HASH, canonical(dir / "pic.mxf"), cpl),
+ note(VC::CORRECT_PICTURE_HASH, canonical(dir / "pic.mxf"), cpl).set_reel_index(0).set_asset_id(picture_id),
note(VC::MATCHING_CPL_HASHES, cpl),
note(VC::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl),
note(VC::NONE_ENCRYPTED, cpl),
- note(VC::VALID_CONTENT_KIND, string{"trailer"}, cpl),
- note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl->content_version()->label_text, cpl),
- note(VC::VALID_CPL_ANNOTATION_TEXT, string{"hello"}, cpl),
+ note(VC::VALID_CONTENT_KIND, cpl).set_content_kind("trailer"),
+ note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text),
+ VN(VC::VALID_CPL_ANNOTATION_TEXT).set_cpl_id(cpl->id()).set_annotation_text("hello"),
};
for (auto i = 0; i < 24; ++i) {
expected.push_back(
- VN(VC::INVALID_JPEG2000_CODESTREAM, string("missing marker start byte")).set_frame(i).set_frame_rate(24).set_cpl_id(cpl->id())
+ VN(VC::INVALID_JPEG2000_CODESTREAM).set_frame(i).set_frame_rate(dcp::Fraction(24, 1))
+ .set_cpl_id(cpl->id()).set_reel_index(0).set_asset_id(picture_id).set_error("missing marker start byte")
);
}
for (auto i = 0; i < 24; ++i) {
expected.push_back(
- VN(VC::NEARLY_INVALID_PICTURE_FRAME_SIZE_IN_BYTES, canonical(dir / "pic.mxf")).set_frame(i).set_frame_rate(24).set_cpl_id(cpl->id())
+ VN(
+ VC::NEARLY_INVALID_PICTURE_FRAME_SIZE_IN_BYTES,
+ canonical(dir / "pic.mxf")
+ ).set_frame(i).set_frame_rate(dcp::Fraction(24, 1)).set_cpl_id(cpl->id()).set_reel_index(0).set_asset_id(picture_id)
);
}
@@ -1188,6 +1157,7 @@ BOOST_AUTO_TEST_CASE (verify_valid_picture_frame_size_in_bytes)
prepare_directory (dir);
auto cpl = dcp_from_frame (frame, dir);
+ auto const picture_id = cpl->reels()[0]->main_picture()->asset()->id();
using VN = dcp::VerificationNote;
using VC = VN::Code;
@@ -1195,14 +1165,14 @@ BOOST_AUTO_TEST_CASE (verify_valid_picture_frame_size_in_bytes)
{ dir },
{},
{
- note(VC::CORRECT_PICTURE_HASH, canonical(dir / "pic.mxf"), cpl),
+ note(VC::CORRECT_PICTURE_HASH, canonical(dir / "pic.mxf"), cpl).set_reel_index(0).set_asset_id(picture_id),
note(VC::MATCHING_CPL_HASHES, cpl),
note(VC::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl),
note(VC::NONE_ENCRYPTED, cpl),
- note(VC::VALID_CONTENT_KIND, string{"trailer"}, cpl),
- note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl->content_version()->label_text, cpl),
- note(VC::VALID_CPL_ANNOTATION_TEXT, string{"hello"}, cpl),
- note(VC::VALID_PICTURE_FRAME_SIZES_IN_BYTES, canonical(dir / "pic.mxf"), cpl),
+ note(VC::VALID_CONTENT_KIND, cpl).set_content_kind("trailer"),
+ note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text),
+ VN(VC::VALID_CPL_ANNOTATION_TEXT).set_cpl_id(cpl->id()).set_annotation_text("hello"),
+ note(VC::VALID_PICTURE_FRAME_SIZES_IN_BYTES, canonical(dir / "pic.mxf"), cpl).set_reel_index(0).set_asset_id(picture_id),
VN(VC::MISSING_CPL_METADATA, cpl->file().get()).set_cpl_id(cpl->id())
});
}
@@ -1227,10 +1197,10 @@ BOOST_AUTO_TEST_CASE (verify_valid_interop_subtitles)
note(VC::MATCHING_CPL_HASHES, cpl),
note(VC::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl),
note(VC::NONE_ENCRYPTED, cpl),
- note(VC::VALID_CONTENT_KIND, string{"trailer"}, cpl),
- note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl->content_version()->label_text, cpl),
+ note(VC::VALID_CONTENT_KIND, cpl).set_content_kind("trailer"),
+ note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text),
{ VC::INVALID_STANDARD },
- VN(VC::MISSING_FONT, string{"theFontId"}).set_cpl_id(cpl->id())
+ VN(VC::MISSING_FONT).set_cpl_id(cpl->id()).set_reel_index(0).set_asset_id(asset->id()).set_load_font_id("theFontId"),
});
}
@@ -1254,10 +1224,10 @@ BOOST_AUTO_TEST_CASE(verify_catch_missing_font_file_with_interop_ccap)
note(VC::MATCHING_CPL_HASHES, cpl),
note(VC::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl),
note(VC::NONE_ENCRYPTED, cpl),
- note(VC::VALID_CONTENT_KIND, string{"trailer"}, cpl),
- note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl->content_version()->label_text, cpl),
+ note(VC::VALID_CONTENT_KIND, cpl).set_content_kind("trailer"),
+ note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text),
{ VC::INVALID_STANDARD },
- VN(VC::MISSING_FONT, string{"theFontId"}).set_cpl_id(cpl->id())
+ VN(VC::MISSING_FONT).set_cpl_id(cpl->id()).set_reel_index(0).set_asset_id(asset->id()).set_load_font_id("theFontId"),
});
}
@@ -1288,17 +1258,14 @@ BOOST_AUTO_TEST_CASE (verify_invalid_interop_subtitles)
note(VC::MATCHING_CPL_HASHES, cpl),
note(VC::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl),
note(VC::NONE_ENCRYPTED, cpl),
- note(VC::VALID_CONTENT_KIND, string{"trailer"}, cpl),
- note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl->content_version()->label_text, cpl),
+ note(VC::VALID_CONTENT_KIND, cpl).set_content_kind("trailer"),
+ note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text),
{ VC::INVALID_STANDARD },
- VN(VC::INVALID_XML, string("no declaration found for element 'Foo'"), path(), 5).set_cpl_id(cpl->id()),
- VN(
- VC::INVALID_XML,
- string("element 'Foo' is not allowed for content model '(SubtitleID,MovieTitle,ReelNumber,Language,LoadFont*,Font*,Subtitle*)'"),
- path(),
- 29
- ).set_cpl_id(cpl->id()),
- VN(VC::MISSING_FONT, string{"theFontId"}).set_cpl_id(cpl->id())
+ VN(VC::INVALID_XML, path(), 5).set_cpl_id(cpl->id()).set_reel_index(0).set_asset_id(asset->id()).set_error("no declaration found for element 'Foo'"),
+ VN(VC::INVALID_XML, path(), 29).set_cpl_id(cpl->id()).set_reel_index(0).set_asset_id(asset->id()).set_error(
+ "element 'Foo' is not allowed for content model '(SubtitleID,MovieTitle,ReelNumber,Language,LoadFont*,Font*,Subtitle*)'"
+ ),
+ VN(VC::MISSING_FONT).set_cpl_id(cpl->id()).set_reel_index(0).set_asset_id(asset->id()).set_load_font_id("theFontId"),
});
}
@@ -1322,11 +1289,11 @@ BOOST_AUTO_TEST_CASE(verify_interop_subtitle_asset_with_no_subtitles)
note(VC::MATCHING_CPL_HASHES, cpl),
note(VC::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl),
note(VC::NONE_ENCRYPTED, cpl),
- note(VC::VALID_CONTENT_KIND, string{"trailer"}, cpl),
- note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl->content_version()->label_text, cpl),
+ note(VC::VALID_CONTENT_KIND, cpl).set_content_kind("trailer"),
+ note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text),
{ VC::INVALID_STANDARD },
- VN(VC::MISSING_SUBTITLE, asset->id(), boost::filesystem::canonical(asset->file().get())).set_cpl_id(cpl->id()),
- VN(VC::MISSING_FONT, string{"theFontId"}).set_cpl_id(cpl->id())
+ VN(VC::MISSING_SUBTITLE, boost::filesystem::canonical(asset->file().get())).set_cpl_id(cpl->id()).set_reel_index(0).set_asset_id(asset->id()),
+ VN(VC::MISSING_FONT).set_cpl_id(cpl->id()).set_reel_index(0).set_asset_id(asset->id()).set_load_font_id("theFontId"),
});
}
@@ -1340,6 +1307,8 @@ BOOST_AUTO_TEST_CASE(verify_interop_subtitle_asset_with_single_space_subtitle)
auto reel_asset = make_shared<dcp::ReelInteropTextAsset>(dcp::TextType::OPEN_SUBTITLE, asset, dcp::Fraction(24, 1), 16 * 24, 0);
auto cpl = write_dcp_with_single_asset(dir, reel_asset, dcp::Standard::INTEROP);
+ auto const subs_id = cpl->reels()[0]->main_subtitle()->id();
+
using VN = dcp::VerificationNote;
using VC = VN::Code;
@@ -1350,10 +1319,10 @@ BOOST_AUTO_TEST_CASE(verify_interop_subtitle_asset_with_single_space_subtitle)
note(VC::MATCHING_CPL_HASHES, cpl),
note(VC::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl),
note(VC::NONE_ENCRYPTED, cpl),
- note(VC::VALID_CONTENT_KIND, string{"trailer"}, cpl),
- note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl->content_version()->label_text, cpl),
+ note(VC::VALID_CONTENT_KIND, cpl).set_content_kind("trailer"),
+ note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text),
{ VC::INVALID_STANDARD },
- VN(VC::MISSING_FONT, string{"Arial"}).set_cpl_id(cpl->id())
+ VN(VC::MISSING_FONT).set_cpl_id(cpl->id()).set_reel_index(0).set_asset_id(asset->id()).set_load_font_id("Arial"),
});
}
@@ -1377,12 +1346,12 @@ BOOST_AUTO_TEST_CASE (verify_valid_smpte_subtitles)
note(VC::MATCHING_CPL_HASHES, cpl),
note(VC::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl),
note(VC::NONE_ENCRYPTED, cpl),
- note(VC::VALID_CONTENT_KIND, string{"trailer"}, cpl),
- note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl->content_version()->label_text, cpl),
- note(VC::VALID_CPL_ANNOTATION_TEXT, string{"hello"}, cpl),
+ note(VC::VALID_CONTENT_KIND, cpl).set_content_kind("trailer"),
+ note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text),
+ VN(VC::VALID_CPL_ANNOTATION_TEXT).set_cpl_id(cpl->id()).set_annotation_text("hello"),
VN(VC::MISSING_CPL_METADATA, cpl->file().get()).set_cpl_id(cpl->id()),
- VN(VC::INVALID_SUBTITLE_ISSUE_DATE, string{"2021-04-14T13:19:14.000+02:00"}).set_cpl_id(cpl->id()),
- VN(VC::INCORRECT_SUBTITLE_NAMESPACE_COUNT, asset->id()).set_cpl_id(cpl->id()),
+ VN(VC::INVALID_SUBTITLE_ISSUE_DATE).set_cpl_id(cpl->id()).set_reel_index(0).set_asset_id(asset->id()).set_issue_date("2021-04-14T13:19:14.000+02:00"),
+ VN(VC::INCORRECT_SUBTITLE_NAMESPACE_COUNT).set_cpl_id(cpl->id()).set_reel_index(0).set_asset_id(asset->id()),
});
}
@@ -1409,20 +1378,18 @@ BOOST_AUTO_TEST_CASE (verify_invalid_smpte_subtitles)
note(VC::MATCHING_CPL_HASHES, cpl),
note(VC::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl),
note(VC::NONE_ENCRYPTED, cpl),
- note(VC::VALID_CONTENT_KIND, string{"trailer"}, cpl),
- note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl->content_version()->label_text, cpl),
- note(VC::VALID_CPL_ANNOTATION_TEXT, string{"hello"}, cpl),
- VN(VC::INVALID_XML, string("no declaration found for element 'Foo'"), path(), 2).set_cpl_id(cpl->id()),
- VN(
- VC::INVALID_XML,
- string("element 'Foo' is not allowed for content model '(Id,ContentTitleText,AnnotationText?,IssueDate,ReelNumber?,Language?,EditRate,TimeCodeRate,StartTime?,DisplayType?,LoadFont*,SubtitleList)'"),
- path(),
- 2
- ).set_cpl_id(cpl->id()),
- VN(VC::MISSING_SUBTITLE_START_TIME, canonical(dir / "subs.mxf")).set_cpl_id(cpl->id()),
+ note(VC::VALID_CONTENT_KIND, cpl).set_content_kind("trailer"),
+ note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text),
+ VN(VC::VALID_CPL_ANNOTATION_TEXT).set_cpl_id(cpl->id()).set_annotation_text("hello"),
+ VN(VC::INVALID_XML, path(), 2).set_cpl_id(cpl->id()).set_reel_index(0).set_asset_id(asset->id()).set_error("no declaration found for element 'Foo'"),
+ VN(VC::INVALID_XML, path(), 2).set_cpl_id(cpl->id()).set_reel_index(0).set_asset_id(asset->id()).set_error(
+ "element 'Foo' is not allowed for content model "
+ "'(Id,ContentTitleText,AnnotationText?,IssueDate,ReelNumber?,Language?,EditRate,TimeCodeRate,StartTime?,DisplayType?,LoadFont*,SubtitleList)'"
+ ),
+ VN(VC::MISSING_SUBTITLE_START_TIME, canonical(dir / "subs.mxf")).set_cpl_id(cpl->id()).set_reel_index(0).set_asset_id(asset->id()),
VN(VC::MISSING_CPL_METADATA, cpl->file().get()).set_cpl_id(cpl->id()),
- VN(VC::INVALID_SUBTITLE_ISSUE_DATE, string{"2020-05-09T00:29:21.000+02:00"}).set_cpl_id(cpl->id()),
- VN(VC::INCORRECT_SUBTITLE_NAMESPACE_COUNT, asset->id()).set_cpl_id(cpl->id()),
+ VN(VC::INVALID_SUBTITLE_ISSUE_DATE).set_cpl_id(cpl->id()).set_reel_index(0).set_asset_id(asset->id()).set_issue_date("2020-05-09T00:29:21.000+02:00"),
+ VN(VC::INCORRECT_SUBTITLE_NAMESPACE_COUNT).set_cpl_id(cpl->id()).set_reel_index(0).set_asset_id(asset->id()),
});
}
@@ -1446,15 +1413,15 @@ BOOST_AUTO_TEST_CASE (verify_empty_text_node_in_subtitles)
note(VC::MATCHING_CPL_HASHES, cpl),
note(VC::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl),
note(VC::NONE_ENCRYPTED, cpl),
- note(VC::VALID_CONTENT_KIND, string{"trailer"}, cpl),
- note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl->content_version()->label_text, cpl),
- note(VC::VALID_CPL_ANNOTATION_TEXT, string{"hello"}, cpl),
- VN(VC::EMPTY_TEXT).set_cpl_id(cpl->id()),
- VN(VC::INVALID_SUBTITLE_FIRST_TEXT_TIME).set_cpl_id(cpl->id()),
- VN(VC::MISSING_SUBTITLE_LANGUAGE, canonical(dir / "subs.mxf")).set_cpl_id(cpl->id()),
+ note(VC::VALID_CONTENT_KIND, cpl).set_content_kind("trailer"),
+ note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text),
+ VN(VC::VALID_CPL_ANNOTATION_TEXT).set_cpl_id(cpl->id()).set_annotation_text("hello"),
+ VN(VC::EMPTY_TEXT).set_cpl_id(cpl->id()).set_reel_index(0).set_asset_id(asset->id()),
+ VN(VC::INVALID_SUBTITLE_FIRST_TEXT_TIME).set_cpl_id(cpl->id()).set_reel_index(0).set_asset_id(asset->id()),
+ VN(VC::MISSING_SUBTITLE_LANGUAGE, canonical(dir / "subs.mxf")).set_cpl_id(cpl->id()).set_reel_index(0).set_asset_id(asset->id()),
VN(VC::MISSING_CPL_METADATA, cpl->file().get()).set_cpl_id(cpl->id()),
- VN(VC::INVALID_SUBTITLE_ISSUE_DATE, string{"2021-08-09T18:34:46.000+02:00"}).set_cpl_id(cpl->id()),
- VN(VC::INCORRECT_SUBTITLE_NAMESPACE_COUNT, asset->id()).set_cpl_id(cpl->id())
+ VN(VC::INVALID_SUBTITLE_ISSUE_DATE).set_cpl_id(cpl->id()).set_reel_index(0).set_asset_id(asset->id()).set_issue_date("2021-08-09T18:34:46.000+02:00"),
+ VN(VC::INCORRECT_SUBTITLE_NAMESPACE_COUNT).set_cpl_id(cpl->id()).set_reel_index(0).set_asset_id(asset->id()),
});
}
@@ -1479,10 +1446,10 @@ BOOST_AUTO_TEST_CASE (verify_empty_text_node_in_subtitles_with_child_nodes)
note(VC::MATCHING_CPL_HASHES, cpl),
note(VC::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl),
note(VC::NONE_ENCRYPTED, cpl),
- note(VC::VALID_CONTENT_KIND, string{"trailer"}, cpl),
- note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl->content_version()->label_text, cpl),
+ note(VC::VALID_CONTENT_KIND, cpl).set_content_kind("trailer"),
+ note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text),
{ VC::INVALID_STANDARD },
- VN(VC::MISSING_FONT, string{"font0"}).set_cpl_id(cpl->id())
+ VN(VC::MISSING_FONT).set_cpl_id(cpl->id()).set_reel_index(0).set_asset_id(asset->id()).set_load_font_id("font0"),
});
}
@@ -1497,6 +1464,7 @@ BOOST_AUTO_TEST_CASE (verify_empty_text_node_in_subtitles_with_empty_child_nodes
auto reel_asset = make_shared<dcp::ReelInteropTextAsset>(dcp::TextType::OPEN_SUBTITLE, asset, dcp::Fraction(24, 1), 192, 0);
auto cpl = write_dcp_with_single_asset (dir, reel_asset, dcp::Standard::INTEROP);
+ auto const subs_id = asset->id();
using VN = dcp::VerificationNote;
using VC = VN::Code;
@@ -1507,12 +1475,12 @@ BOOST_AUTO_TEST_CASE (verify_empty_text_node_in_subtitles_with_empty_child_nodes
note(VC::MATCHING_CPL_HASHES, cpl),
note(VC::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl),
note(VC::NONE_ENCRYPTED, cpl),
- note(VC::VALID_CONTENT_KIND, string{"trailer"}, cpl),
- note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl->content_version()->label_text, cpl),
- VN(VC::MISSING_SUBTITLE, asset->id(), boost::filesystem::canonical(asset->file().get())).set_cpl_id(cpl->id()),
+ note(VC::VALID_CONTENT_KIND, cpl).set_content_kind("trailer"),
+ note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text),
+ VN(VC::MISSING_SUBTITLE, boost::filesystem::canonical(asset->file().get())).set_cpl_id(cpl->id()).set_reel_index(0).set_asset_id(subs_id),
{ VC::INVALID_STANDARD },
- VN(VC::EMPTY_TEXT).set_cpl_id(cpl->id()),
- VN(VC::MISSING_FONT, string{"font0"}).set_cpl_id(cpl->id())
+ VN(VC::EMPTY_TEXT).set_cpl_id(cpl->id()).set_reel_index(0).set_asset_id(subs_id),
+ VN(VC::MISSING_FONT).set_cpl_id(cpl->id()).set_reel_index(0).set_asset_id(asset->id()).set_load_font_id("font0"),
});
}
@@ -1546,10 +1514,10 @@ BOOST_AUTO_TEST_CASE (verify_external_asset)
note(VC::MATCHING_CPL_HASHES, cpl),
note(VC::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl),
note(VC::NONE_ENCRYPTED, cpl),
- note(VC::VALID_CONTENT_KIND, string{"trailer"}, cpl),
- note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl->content_version()->label_text, cpl),
- note(VC::VALID_CPL_ANNOTATION_TEXT, string{"hello"}, cpl),
- { VC::EXTERNAL_ASSET, picture->asset()->id() },
+ note(VC::VALID_CONTENT_KIND, cpl).set_content_kind("trailer"),
+ note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text),
+ VN(VC::VALID_CPL_ANNOTATION_TEXT).set_cpl_id(cpl->id()).set_annotation_text("hello"),
+ VN(VC::EXTERNAL_ASSET).set_asset_id(picture->asset()->id()),
VN(VC::MISSING_CPL_METADATA, cpl->file().get()).set_cpl_id(cpl->id())
});
}
@@ -1617,6 +1585,7 @@ BOOST_AUTO_TEST_CASE (verify_invalid_cpl_metadata_bad_tag)
e.replace ("MainSound", "MainSoundX");
}
+ auto const picture_id = cpl->reels()[0]->main_picture()->asset()->id();
using VN = dcp::VerificationNote;
using VC = VN::Code;
@@ -1624,34 +1593,24 @@ BOOST_AUTO_TEST_CASE (verify_invalid_cpl_metadata_bad_tag)
{ dir },
{},
{
- note(VC::CORRECT_PICTURE_HASH, canonical(dir / "pic.mxf"), cpl),
+ note(VC::CORRECT_PICTURE_HASH, canonical(dir / "pic.mxf"), cpl).set_reel_index(0).set_asset_id(picture_id),
note(VC::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl),
note(VC::NONE_ENCRYPTED, cpl),
- VN(
- VC::VALID_MAIN_PICTURE_ACTIVE_AREA,
- string{"1440x1080"},
- cpl->file().get()
- ).set_cpl_id(cpl->id()),
- note(VC::VALID_CONTENT_KIND, string{"trailer"}, cpl),
- note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl->content_version()->label_text, cpl),
- note(VC::VALID_CPL_ANNOTATION_TEXT, string{"hello"}, cpl),
- note(VC::VALID_PICTURE_FRAME_SIZES_IN_BYTES, canonical(dir / "pic.mxf"), cpl),
- VN(
- VC::INVALID_XML, string("no declaration found for element 'meta:MainSoundXConfiguration'"), canonical(cpl->file().get()), 50
- ).set_cpl_id(cpl->id()),
- VN(
- VC::INVALID_XML, string("no declaration found for element 'meta:MainSoundXSampleRate'"), canonical(cpl->file().get()), 51
- ).set_cpl_id(cpl->id()),
- VN(
- VC::INVALID_XML,
- string("element 'meta:MainSoundXConfiguration' is not allowed for content model "
- "'(Id,AnnotationText?,EditRate,IntrinsicDuration,EntryPoint?,Duration?,"
- "FullContentTitleText,ReleaseTerritory?,VersionNumber?,Chain?,Distributor?,"
- "Facility?,AlternateContentVersionList?,Luminance?,MainSoundConfiguration,"
- "MainSoundSampleRate,MainPictureStoredArea,MainPictureActiveArea,MainSubtitleLanguageList?,"
- "ExtensionMetadataList?,)'"),
- canonical(cpl->file().get()),
- 71).set_cpl_id(cpl->id()),
+ VN(VC::VALID_MAIN_PICTURE_ACTIVE_AREA, canonical(cpl->file().get())).set_cpl_id(cpl->id()).set_size_in_pixels({1440, 1080}),
+ note(VC::VALID_CONTENT_KIND, cpl).set_content_kind("trailer"),
+ note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text),
+ VN(VC::VALID_CPL_ANNOTATION_TEXT).set_cpl_id(cpl->id()).set_annotation_text("hello"),
+ note(VC::VALID_PICTURE_FRAME_SIZES_IN_BYTES, canonical(dir / "pic.mxf"), cpl).set_reel_index(0).set_asset_id(picture_id),
+ VN(VC::INVALID_XML, canonical(cpl->file().get()), 50).set_cpl_id(cpl->id()).set_error("no declaration found for element 'meta:MainSoundXConfiguration'"),
+ VN(VC::INVALID_XML, canonical(cpl->file().get()), 51).set_cpl_id(cpl->id()).set_error("no declaration found for element 'meta:MainSoundXSampleRate'"),
+ VN(VC::INVALID_XML, canonical(cpl->file().get()), 71).set_cpl_id(cpl->id()).set_error(
+ "element 'meta:MainSoundXConfiguration' is not allowed for content model "
+ "'(Id,AnnotationText?,EditRate,IntrinsicDuration,EntryPoint?,Duration?,"
+ "FullContentTitleText,ReleaseTerritory?,VersionNumber?,Chain?,Distributor?,"
+ "Facility?,AlternateContentVersionList?,Luminance?,MainSoundConfiguration,"
+ "MainSoundSampleRate,MainPictureStoredArea,MainPictureActiveArea,MainSubtitleLanguageList?,"
+ "ExtensionMetadataList?,)'"
+ ),
VN(
VC::MISMATCHED_CPL_HASHES, canonical(cpl->file().get())
).set_cpl_id(cpl->id()).set_reference_hash(calc.old_hash()).set_calculated_hash(calc.new_hash())
@@ -1687,7 +1646,7 @@ BOOST_AUTO_TEST_CASE (verify_invalid_cpl_metadata_missing_tag)
check_verify_result (
{ dir },
{},
- {{ dcp::VerificationNote::Code::FAILED_READ, string("missing XML tag Width in MainPictureStoredArea") }}
+ { dcp::VerificationNote(dcp::VerificationNote::Code::FAILED_READ).set_error("missing XML tag Width in MainPictureStoredArea") }
);
}
@@ -1714,11 +1673,11 @@ BOOST_AUTO_TEST_CASE (verify_invalid_language1)
note(VC::MATCHING_CPL_HASHES, cpl),
note(VC::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl),
note(VC::NONE_ENCRYPTED, cpl),
- note(VC::VALID_CONTENT_KIND, string{"trailer"}, cpl),
- note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl->content_version()->label_text, cpl),
- note(VC::VALID_CPL_ANNOTATION_TEXT, string{"hello"}, cpl),
- VN(VC::INVALID_LANGUAGE, string("badlang")).set_cpl_id(cpl->id()),
- VN(VC::INVALID_LANGUAGE, string("wrong-andbad")).set_cpl_id(cpl->id()),
+ note(VC::VALID_CONTENT_KIND, cpl).set_content_kind("trailer"),
+ note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text),
+ VN(VC::VALID_CPL_ANNOTATION_TEXT).set_cpl_id(cpl->id()).set_annotation_text("hello"),
+ VN(VC::INVALID_LANGUAGE).set_cpl_id(cpl->id()).set_reel_index(0).set_language("badlang"),
+ VN(VC::INVALID_LANGUAGE).set_cpl_id(cpl->id()).set_reel_index(0).set_asset_id(asset->id()).set_language("wrong-andbad"),
VN(VC::MISSING_CPL_METADATA, cpl->file().get()).set_cpl_id(cpl->id())
});
}
@@ -1747,11 +1706,11 @@ BOOST_AUTO_TEST_CASE (verify_invalid_language2)
note(VC::MATCHING_CPL_HASHES, cpl),
note(VC::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl),
note(VC::NONE_ENCRYPTED, cpl),
- note(VC::VALID_CONTENT_KIND, string{"trailer"}, cpl),
- note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl->content_version()->label_text, cpl),
- note(VC::VALID_CPL_ANNOTATION_TEXT, string{"hello"}, cpl),
- VN(VC::INVALID_LANGUAGE, string("badlang")).set_cpl_id(cpl->id()),
- VN(VC::INVALID_LANGUAGE, string("wrong-andbad")).set_cpl_id(cpl->id()),
+ note(VC::VALID_CONTENT_KIND, cpl).set_content_kind("trailer"),
+ note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text),
+ VN(VC::VALID_CPL_ANNOTATION_TEXT).set_cpl_id(cpl->id()).set_annotation_text("hello"),
+ VN(VC::INVALID_LANGUAGE).set_cpl_id(cpl->id()).set_reel_index(0).set_language("badlang"),
+ VN(VC::INVALID_LANGUAGE).set_cpl_id(cpl->id()).set_reel_index(0).set_asset_id(asset->id()).set_language("wrong-andbad"),
VN(VC::MISSING_CPL_METADATA, cpl->file().get()).set_cpl_id(cpl->id())
});
}
@@ -1796,23 +1755,19 @@ BOOST_AUTO_TEST_CASE (verify_invalid_language3)
{ dir },
{},
{
- note(VC::CORRECT_PICTURE_HASH, canonical(dir / "videofoo.mxf"), cpl),
+ note(VC::CORRECT_PICTURE_HASH, canonical(dir / "videofoo.mxf"), cpl).set_reel_index(0).set_asset_id(picture->id()),
note(VC::MATCHING_CPL_HASHES, cpl),
note(VC::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl),
note(VC::NONE_ENCRYPTED, cpl),
- VN(
- VC::VALID_MAIN_PICTURE_ACTIVE_AREA,
- string{"1440x1080"},
- cpl->file().get()
- ).set_cpl_id(cpl->id()),
- note(VC::VALID_CONTENT_KIND, string{"trailer"}, cpl),
- note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl->content_version()->label_text, cpl),
- note(VC::VALID_CPL_ANNOTATION_TEXT, string{"hello"}, cpl),
- note(VC::VALID_PICTURE_FRAME_SIZES_IN_BYTES, canonical(dir / "videofoo.mxf"), cpl),
- VN(VC::INVALID_LANGUAGE, string("this-is-wrong")).set_cpl_id(cpl->id()),
- VN(VC::INVALID_LANGUAGE, string("andso-is-this")).set_cpl_id(cpl->id()),
- VN(VC::INVALID_LANGUAGE, string("fred-jim")).set_cpl_id(cpl->id()),
- VN(VC::INVALID_LANGUAGE, string("frobozz")).set_cpl_id(cpl->id()),
+ VN(VC::VALID_MAIN_PICTURE_ACTIVE_AREA, canonical(cpl->file().get())).set_cpl_id(cpl->id()).set_size_in_pixels({1440, 1080}),
+ note(VC::VALID_CONTENT_KIND, cpl).set_content_kind("trailer"),
+ note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text),
+ VN(VC::VALID_CPL_ANNOTATION_TEXT).set_cpl_id(cpl->id()).set_annotation_text("hello"),
+ note(VC::VALID_PICTURE_FRAME_SIZES_IN_BYTES, canonical(dir / "videofoo.mxf"), cpl).set_reel_index(0).set_asset_id(picture->id()),
+ VN(VC::INVALID_LANGUAGE).set_cpl_id(cpl->id()).set_language("this-is-wrong"),
+ VN(VC::INVALID_LANGUAGE).set_cpl_id(cpl->id()).set_language("andso-is-this"),
+ VN(VC::INVALID_LANGUAGE).set_cpl_id(cpl->id()).set_language("fred-jim"),
+ VN(VC::INVALID_LANGUAGE).set_cpl_id(cpl->id()).set_reel_index(0).set_asset_id(sound->id()).set_language("frobozz"),
});
}
@@ -1882,23 +1837,20 @@ check_picture_size_ok (int width, int height, int frame_rate, bool three_d)
boost::filesystem::path dir;
std::tie(notes, cpl, dir) = check_picture_size(width, height, frame_rate, three_d);
+ auto const picture_id = cpl->reels()[0]->main_picture()->asset()->id();
using VN = dcp::VerificationNote;
using VC = VN::Code;
std::vector<VN> expected = {
note(VC::NONE_ENCRYPTED, cpl),
- note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl->content_version()->label_text, cpl),
- note(VC::VALID_CONTENT_KIND, string{"trailer"}, cpl),
- note(VC::VALID_CPL_ANNOTATION_TEXT, string{"A Test DCP"}, cpl),
+ note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text),
+ note(VC::VALID_CONTENT_KIND, cpl).set_content_kind("trailer"),
+ VN(VC::VALID_CPL_ANNOTATION_TEXT).set_cpl_id(cpl->id()).set_annotation_text("A Test DCP"),
note(VC::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl),
note(VC::MATCHING_CPL_HASHES, cpl),
- VN(
- VC::VALID_MAIN_PICTURE_ACTIVE_AREA,
- dcp::String::compose("%1x%2", width, height),
- cpl->file().get()
- ).set_cpl_id(cpl->id()),
- note(VC::CORRECT_PICTURE_HASH, canonical(dir / "video.mxf"), cpl),
- note(VC::VALID_PICTURE_FRAME_SIZES_IN_BYTES, canonical(dir / "video.mxf"), cpl)
+ VN(VC::VALID_MAIN_PICTURE_ACTIVE_AREA, canonical(cpl->file().get())).set_cpl_id(cpl->id()).set_size_in_pixels({width, height}),
+ note(VC::CORRECT_PICTURE_HASH, canonical(dir / "video.mxf"), cpl).set_reel_index(0).set_asset_id(picture_id),
+ note(VC::VALID_PICTURE_FRAME_SIZES_IN_BYTES, canonical(dir / "video.mxf"), cpl).set_reel_index(0).set_asset_id(picture_id)
};
check_verify_result(notes, expected);
}
@@ -1913,24 +1865,23 @@ check_picture_size_bad_frame_size (int width, int height, int frame_rate, bool t
boost::filesystem::path dir;
std::tie(notes, cpl, dir) = check_picture_size(width, height, frame_rate, three_d);
+ auto const picture_id = cpl->reels()[0]->main_picture()->asset()->id();
using VN = dcp::VerificationNote;
using VC = VN::Code;
std::vector<VN> expected = {
note(VC::NONE_ENCRYPTED, cpl),
- note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl->content_version()->label_text, cpl),
- note(VC::VALID_CONTENT_KIND, string{"trailer"}, cpl),
- note(VC::VALID_CPL_ANNOTATION_TEXT, string{"A Test DCP"}, cpl),
+ note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text),
+ note(VC::VALID_CONTENT_KIND, cpl).set_content_kind("trailer"),
+ VN(VC::VALID_CPL_ANNOTATION_TEXT).set_cpl_id(cpl->id()).set_annotation_text("A Test DCP"),
note(VC::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl),
note(VC::MATCHING_CPL_HASHES, cpl),
+ VN(VC::VALID_MAIN_PICTURE_ACTIVE_AREA, canonical(cpl->file().get())).set_cpl_id(cpl->id()).set_size_in_pixels({width, height}),
+ note(VC::CORRECT_PICTURE_HASH, canonical(dir / "video.mxf"), cpl).set_reel_index(0).set_asset_id(picture_id),
+ note(VC::VALID_PICTURE_FRAME_SIZES_IN_BYTES, canonical(dir / "video.mxf"), cpl).set_reel_index(0).set_asset_id(picture_id),
VN(
- VC::VALID_MAIN_PICTURE_ACTIVE_AREA,
- dcp::String::compose("%1x%2", width, height),
- cpl->file().get()
- ).set_cpl_id(cpl->id()),
- note(VC::CORRECT_PICTURE_HASH, canonical(dir / "video.mxf"), cpl),
- note(VC::VALID_PICTURE_FRAME_SIZES_IN_BYTES, canonical(dir / "video.mxf"), cpl),
- VN(VC::INVALID_PICTURE_SIZE_IN_PIXELS, dcp::String::compose("%1x%2", width, height), canonical(dir / "video.mxf")).set_cpl_id(cpl->id())
+ VC::INVALID_PICTURE_SIZE_IN_PIXELS, canonical(dir / "video.mxf")
+ ).set_cpl_id(cpl->id()).set_reel_index(0).set_asset_id(picture_id).set_size_in_pixels({width, height}),
};
check_verify_result(notes, expected);
}
@@ -1945,25 +1896,22 @@ check_picture_size_bad_2k_frame_rate (int width, int height, int frame_rate, boo
boost::filesystem::path dir;
std::tie(notes, cpl, dir) = check_picture_size(width, height, frame_rate, three_d);
+ auto const picture_id = cpl->reels()[0]->main_picture()->asset()->id();
using VN = dcp::VerificationNote;
using VC = VN::Code;
std::vector<VN> expected = {
note(VC::NONE_ENCRYPTED, cpl),
- note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl->content_version()->label_text, cpl),
- note(VC::VALID_CONTENT_KIND, string{"trailer"}, cpl),
- note(VC::VALID_CPL_ANNOTATION_TEXT, string{"A Test DCP"}, cpl),
+ note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text),
+ note(VC::VALID_CONTENT_KIND, cpl).set_content_kind("trailer"),
+ VN(VC::VALID_CPL_ANNOTATION_TEXT).set_cpl_id(cpl->id()).set_annotation_text("A Test DCP"),
note(VC::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl),
note(VC::MATCHING_CPL_HASHES, cpl),
- VN(
- VC::VALID_MAIN_PICTURE_ACTIVE_AREA,
- dcp::String::compose("%1x%2", width, height),
- cpl->file().get()
- ).set_cpl_id(cpl->id()),
- note(VC::CORRECT_PICTURE_HASH, canonical(dir / "video.mxf"), cpl),
- note(VC::VALID_PICTURE_FRAME_SIZES_IN_BYTES, canonical(dir / "video.mxf"), cpl),
- VN(VC::INVALID_PICTURE_FRAME_RATE, dcp::String::compose("%1/1", frame_rate * (three_d ? 2 : 1))).set_cpl_id(cpl->id()),
- VN(VC::INVALID_PICTURE_FRAME_RATE_FOR_2K, dcp::String::compose("%1/1", frame_rate), canonical(dir / "video.mxf")).set_cpl_id(cpl->id())
+ VN(VC::VALID_MAIN_PICTURE_ACTIVE_AREA, canonical(cpl->file().get())).set_cpl_id(cpl->id()).set_size_in_pixels({width, height}),
+ note(VC::CORRECT_PICTURE_HASH, canonical(dir / "video.mxf"), cpl).set_reel_index(0).set_asset_id(picture_id),
+ note(VC::VALID_PICTURE_FRAME_SIZES_IN_BYTES, canonical(dir / "video.mxf"), cpl).set_reel_index(0).set_asset_id(picture_id),
+ VN(VC::INVALID_PICTURE_FRAME_RATE).set_cpl_id(cpl->id()).set_reel_index(0).set_frame_rate({frame_rate * (three_d ? 2 : 1), 1}),
+ VN(VC::INVALID_PICTURE_FRAME_RATE_FOR_2K, canonical(dir / "video.mxf")).set_cpl_id(cpl->id()).set_reel_index(0).set_frame_rate({frame_rate, 1}).set_asset_id(picture_id),
};
check_verify_result(notes, expected);
@@ -1979,24 +1927,21 @@ check_picture_size_bad_4k_frame_rate (int width, int height, int frame_rate, boo
boost::filesystem::path dir;
std::tie(notes, cpl, dir) = check_picture_size(width, height, frame_rate, three_d);
+ auto const picture_id = cpl->reels()[0]->main_picture()->asset()->id();
using VN = dcp::VerificationNote;
using VC = VN::Code;
std::vector<VN> expected = {
note(VC::NONE_ENCRYPTED, cpl),
- note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl->content_version()->label_text, cpl),
- note(VC::VALID_CONTENT_KIND, string{"trailer"}, cpl),
- note(VC::VALID_CPL_ANNOTATION_TEXT, string{"A Test DCP"}, cpl),
+ note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text),
+ note(VC::VALID_CONTENT_KIND, cpl).set_content_kind("trailer"),
+ VN(VC::VALID_CPL_ANNOTATION_TEXT).set_cpl_id(cpl->id()).set_annotation_text("A Test DCP"),
note(VC::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl),
note(VC::MATCHING_CPL_HASHES, cpl),
- VN(
- VC::VALID_MAIN_PICTURE_ACTIVE_AREA,
- dcp::String::compose("%1x%2", width, height),
- cpl->file().get()
- ).set_cpl_id(cpl->id()),
- note(VC::CORRECT_PICTURE_HASH, canonical(dir / "video.mxf"), cpl),
- note(VC::VALID_PICTURE_FRAME_SIZES_IN_BYTES, canonical(dir / "video.mxf"), cpl),
- VN(VC::INVALID_PICTURE_FRAME_RATE_FOR_4K, dcp::String::compose("%1/1", frame_rate), canonical(dir / "video.mxf")).set_cpl_id(cpl->id())
+ VN(VC::VALID_MAIN_PICTURE_ACTIVE_AREA, canonical(cpl->file().get())).set_cpl_id(cpl->id()).set_size_in_pixels({width, height}),
+ note(VC::CORRECT_PICTURE_HASH, canonical(dir / "video.mxf"), cpl).set_reel_index(0).set_asset_id(picture_id),
+ note(VC::VALID_PICTURE_FRAME_SIZES_IN_BYTES, canonical(dir / "video.mxf"), cpl).set_reel_index(0).set_asset_id(picture_id),
+ VN(VC::INVALID_PICTURE_FRAME_RATE_FOR_4K, canonical(dir / "video.mxf")).set_cpl_id(cpl->id()).set_reel_index(0).set_frame_rate({frame_rate, 1}).set_asset_id(picture_id),
};
check_verify_result(notes, expected);
@@ -2049,26 +1994,6 @@ BOOST_AUTO_TEST_CASE (verify_picture_size)
shared_ptr<dcp::CPL> cpl;
boost::filesystem::path dir;
std::tie(notes, cpl, dir) = check_picture_size(3996, 2160, 24, true);
-
- using VN = dcp::VerificationNote;
- using VC = VN::Code;
-
- std::vector<VN> expected = {
- note(VC::NONE_ENCRYPTED, cpl),
- note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl->content_version()->label_text, cpl),
- note(VC::VALID_CONTENT_KIND, string{"trailer"}, cpl),
- note(VC::VALID_CPL_ANNOTATION_TEXT, string{"A Test DCP"}, cpl),
- note(VC::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl),
- note(VC::MATCHING_CPL_HASHES, cpl),
- VN(
- VC::VALID_MAIN_PICTURE_ACTIVE_AREA,
- string{"3996x2160"},
- cpl->file().get()
- ).set_cpl_id(cpl->id()),
- note(VC::CORRECT_PICTURE_HASH, canonical(dir / "video.mxf"), cpl),
- note(VC::VALID_PICTURE_FRAME_SIZES_IN_BYTES, canonical(dir / "video.mxf"), cpl),
- { VC::INVALID_PICTURE_ASSET_RESOLUTION_FOR_3D },
- };
}
@@ -2130,12 +2055,14 @@ BOOST_AUTO_TEST_CASE (verify_invalid_closed_caption_xml_size_in_bytes)
note(VC::MATCHING_CPL_HASHES, cpl),
note(VC::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl),
note(VC::NONE_ENCRYPTED, cpl),
- note(VC::VALID_CONTENT_KIND, string{"trailer"}, cpl),
- note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl->content_version()->label_text, cpl),
- note(VC::VALID_CPL_ANNOTATION_TEXT, string{"hello"}, cpl),
- VN(VC::MISSING_SUBTITLE_START_TIME, canonical(dir / "subs.mxf")).set_cpl_id(cpl->id()),
- VN(VC::INVALID_CLOSED_CAPTION_XML_SIZE_IN_BYTES, string("419371"), canonical(dir / "subs.mxf")).set_cpl_id(cpl->id()),
- VN(VC::INVALID_SUBTITLE_FIRST_TEXT_TIME).set_cpl_id(cpl->id()),
+ note(VC::VALID_CONTENT_KIND, cpl).set_content_kind("trailer"),
+ note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text),
+ VN(VC::VALID_CPL_ANNOTATION_TEXT).set_cpl_id(cpl->id()).set_annotation_text("hello"),
+ VN(VC::MISSING_SUBTITLE_START_TIME, canonical(dir / "subs.mxf")).set_cpl_id(cpl->id()).set_reel_index(0).set_asset_id(asset->id()),
+ VN(
+ VC::INVALID_CLOSED_CAPTION_XML_SIZE_IN_BYTES, canonical(dir / "subs.mxf")
+ ).set_cpl_id(cpl->id()).set_reel_index(0).set_asset_id(asset->id()).set_size_in_bytes(419371),
+ VN(VC::INVALID_SUBTITLE_FIRST_TEXT_TIME).set_cpl_id(cpl->id()).set_reel_index(0).set_asset_id(asset->id()),
VN(VC::MISSING_CPL_METADATA, cpl->file().get()).set_cpl_id(cpl->id())
});
}
@@ -2179,19 +2106,18 @@ verify_timed_text_asset_too_large (string name)
note(dcp::VerificationNote::Code::MATCHING_CPL_HASHES, cpl),
note(VC::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl),
note(VC::NONE_ENCRYPTED, cpl),
- note(VC::VALID_CONTENT_KIND, string{"trailer"}, cpl),
- note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl->content_version()->label_text, cpl),
- note(VC::VALID_CPL_ANNOTATION_TEXT, string{"hello"}, cpl),
+ note(VC::VALID_CONTENT_KIND, cpl).set_content_kind("trailer"),
+ note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text),
+ VN(VC::VALID_CPL_ANNOTATION_TEXT).set_cpl_id(cpl->id()).set_annotation_text("hello"),
VN(
- VC::INVALID_TIMED_TEXT_SIZE_IN_BYTES, string("121698284"), canonical(dir / "subs.mxf")
- ).set_cpl_id(cpl->id()),
+ VC::INVALID_TIMED_TEXT_SIZE_IN_BYTES, canonical(dir / "subs.mxf")
+ ).set_cpl_id(cpl->id()).set_reel_index(0).set_asset_id(asset->id()).set_size_in_bytes(121698284),
VN(
VC::INVALID_TIMED_TEXT_FONT_SIZE_IN_BYTES,
- "121634816",
canonical(dir / "subs.mxf")
- ).set_cpl_id(cpl->id()),
- VN(VC::MISSING_SUBTITLE_START_TIME, canonical(dir / "subs.mxf")).set_cpl_id(cpl->id()),
- VN(VC::INVALID_SUBTITLE_FIRST_TEXT_TIME).set_cpl_id(cpl->id()),
+ ).set_cpl_id(cpl->id()).set_reel_index(0).set_asset_id(asset->id()).set_size_in_bytes(121634816),
+ VN(VC::MISSING_SUBTITLE_START_TIME, canonical(dir / "subs.mxf")).set_cpl_id(cpl->id()).set_reel_index(0).set_asset_id(asset->id()),
+ VN(VC::INVALID_SUBTITLE_FIRST_TEXT_TIME).set_cpl_id(cpl->id()).set_reel_index(0).set_asset_id(asset->id()),
VN(VC::MISSING_CPL_METADATA, cpl->file().get()).set_cpl_id(cpl->id())
});
}
@@ -2243,6 +2169,8 @@ BOOST_AUTO_TEST_CASE (verify_missing_subtitle_language)
cpl->reels()[0]->add(reel_subs);
dcp->write_xml();
+ auto const picture_id = cpl->reels()[0]->main_picture()->id();
+ auto const subs_id = cpl->reels()[0]->main_subtitle()->id();
using VN = dcp::VerificationNote;
using VC = VN::Code;
@@ -2253,18 +2181,14 @@ BOOST_AUTO_TEST_CASE (verify_missing_subtitle_language)
note(VC::MATCHING_CPL_HASHES, cpl),
note(VC::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl),
note(VC::NONE_ENCRYPTED, cpl),
- VN(
- VC::VALID_MAIN_PICTURE_ACTIVE_AREA,
- string{"1998x1080"},
- cpl->file().get()
- ).set_cpl_id(cpl->id()),
- note(VC::VALID_CONTENT_KIND, string{"trailer"}, cpl),
- note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl->content_version()->label_text, cpl),
- note(VC::VALID_CPL_ANNOTATION_TEXT, string{"A Test DCP"}, cpl),
- note(VC::CORRECT_PICTURE_HASH, canonical(dir / "video.mxf"), cpl),
- note(VC::VALID_PICTURE_FRAME_SIZES_IN_BYTES, canonical(dir / "video.mxf"), cpl),
- VN(VC::MISSING_SUBTITLE_LANGUAGE, canonical(dir / "subs.mxf")).set_cpl_id(cpl->id()),
- VN(VC::INVALID_SUBTITLE_FIRST_TEXT_TIME).set_cpl_id(cpl->id())
+ VN(VC::VALID_MAIN_PICTURE_ACTIVE_AREA, canonical(cpl->file().get())).set_cpl_id(cpl->id()).set_size_in_pixels({1998, 1080}),
+ note(VC::VALID_CONTENT_KIND, cpl).set_content_kind("trailer"),
+ note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text),
+ VN(VC::VALID_CPL_ANNOTATION_TEXT).set_cpl_id(cpl->id()).set_annotation_text("A Test DCP"),
+ note(VC::CORRECT_PICTURE_HASH, canonical(dir / "video.mxf"), cpl).set_reel_index(0).set_asset_id(picture_id),
+ note(VC::VALID_PICTURE_FRAME_SIZES_IN_BYTES, canonical(dir / "video.mxf"), cpl).set_reel_index(0).set_asset_id(picture_id),
+ VN(VC::MISSING_SUBTITLE_LANGUAGE, canonical(dir / "subs.mxf")).set_cpl_id(cpl->id()).set_reel_index(0).set_asset_id(subs_id),
+ VN(VC::INVALID_SUBTITLE_FIRST_TEXT_TIME).set_cpl_id(cpl->id()).set_reel_index(0).set_asset_id(subs_id)
});
}
@@ -2298,6 +2222,14 @@ BOOST_AUTO_TEST_CASE (verify_mismatched_subtitle_languages)
dcp->write_xml();
+ std::vector<string> const picture_ids = {
+ cpl->reels()[0]->main_picture()->id(),
+ cpl->reels()[1]->main_picture()->id()
+ };
+ std::vector<string> const subs_ids = {
+ cpl->reels()[0]->main_subtitle()->id(),
+ cpl->reels()[1]->main_subtitle()->id()
+ };
using VN = dcp::VerificationNote;
using VC = VN::Code;
@@ -2305,24 +2237,20 @@ BOOST_AUTO_TEST_CASE (verify_mismatched_subtitle_languages)
{ path },
{},
{
- note(VC::CORRECT_PICTURE_HASH, canonical(path / "video0.mxf"), cpl),
- note(VC::CORRECT_PICTURE_HASH, canonical(path / "video1.mxf"), cpl),
+ note(VC::CORRECT_PICTURE_HASH, canonical(path / "video0.mxf"), cpl).set_reel_index(0).set_asset_id(picture_ids[0]),
+ note(VC::CORRECT_PICTURE_HASH, canonical(path / "video1.mxf"), cpl).set_reel_index(1).set_asset_id(picture_ids[1]),
note(VC::MATCHING_CPL_HASHES, cpl),
note(VC::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl),
note(VC::NONE_ENCRYPTED, cpl),
- VN(
- VC::VALID_MAIN_PICTURE_ACTIVE_AREA,
- string{"1998x1080"},
- cpl->file().get()
- ).set_cpl_id(cpl->id()),
- note(VC::VALID_CONTENT_KIND, string{"trailer"}, cpl),
- note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl->content_version()->label_text, cpl),
- note(VC::VALID_CPL_ANNOTATION_TEXT, string{"A Test DCP"}, cpl),
- note(VC::VALID_PICTURE_FRAME_SIZES_IN_BYTES, canonical(path / "video0.mxf"), cpl),
- note(VC::VALID_PICTURE_FRAME_SIZES_IN_BYTES, canonical(path / "video1.mxf"), cpl),
- VN(VC::MISSING_SUBTITLE_START_TIME, canonical(path / "subs1.mxf")).set_cpl_id(cpl->id()),
- VN(VC::MISSING_SUBTITLE_START_TIME, canonical(path / "subs2.mxf")).set_cpl_id(cpl->id()),
- VN(VC::MISMATCHED_SUBTITLE_LANGUAGES).set_cpl_id(cpl->id()),
+ VN(VC::VALID_MAIN_PICTURE_ACTIVE_AREA, canonical(cpl->file().get())).set_cpl_id(cpl->id()).set_size_in_pixels({1998, 1080}),
+ note(VC::VALID_CONTENT_KIND, cpl).set_content_kind("trailer"),
+ note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text),
+ VN(VC::VALID_CPL_ANNOTATION_TEXT).set_cpl_id(cpl->id()).set_annotation_text("A Test DCP"),
+ note(VC::VALID_PICTURE_FRAME_SIZES_IN_BYTES, canonical(path / "video0.mxf"), cpl).set_reel_index(0).set_asset_id(picture_ids[0]),
+ note(VC::VALID_PICTURE_FRAME_SIZES_IN_BYTES, canonical(path / "video1.mxf"), cpl).set_reel_index(1).set_asset_id(picture_ids[1]),
+ VN(VC::MISSING_SUBTITLE_START_TIME, canonical(path / "subs1.mxf")).set_cpl_id(cpl->id()).set_reel_index(0).set_asset_id(subs_ids[0]),
+ VN(VC::MISSING_SUBTITLE_START_TIME, canonical(path / "subs2.mxf")).set_cpl_id(cpl->id()).set_reel_index(1).set_asset_id(subs_ids[1]),
+ VN(VC::MISMATCHED_SUBTITLE_LANGUAGES).set_cpl_id(cpl->id()).set_reel_index(1).set_asset_id(subs_ids[1]),
});
}
@@ -2356,6 +2284,14 @@ BOOST_AUTO_TEST_CASE (verify_multiple_closed_caption_languages_allowed)
dcp->write_xml();
+ std::vector<string> const picture_ids = {
+ cpl->reels()[0]->main_picture()->id(),
+ cpl->reels()[1]->main_picture()->id()
+ };
+ std::vector<string> const subs_ids = {
+ cpl->reels()[0]->closed_captions()[0]->id(),
+ cpl->reels()[1]->closed_captions()[0]->id()
+ };
using VN = dcp::VerificationNote;
using VC = VN::Code;
@@ -2366,20 +2302,16 @@ BOOST_AUTO_TEST_CASE (verify_multiple_closed_caption_languages_allowed)
note(VC::MATCHING_CPL_HASHES, cpl),
note(VC::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl),
note(VC::NONE_ENCRYPTED, cpl),
- VN(
- VC::VALID_MAIN_PICTURE_ACTIVE_AREA,
- string{"1998x1080"},
- cpl->file().get()
- ).set_cpl_id(cpl->id()),
- note(VC::VALID_CONTENT_KIND, string{"trailer"}, cpl),
- note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl->content_version()->label_text, cpl),
- note(VC::VALID_CPL_ANNOTATION_TEXT, string{"A Test DCP"}, cpl),
- note(VC::CORRECT_PICTURE_HASH, canonical(path / "video0.mxf"), cpl),
- note(VC::CORRECT_PICTURE_HASH, canonical(path / "video1.mxf"), cpl),
- note(VC::VALID_PICTURE_FRAME_SIZES_IN_BYTES, canonical(path / "video0.mxf"), cpl),
- note(VC::VALID_PICTURE_FRAME_SIZES_IN_BYTES, canonical(path / "video1.mxf"), cpl),
- VN(VC::MISSING_SUBTITLE_START_TIME, canonical(path / "subs1.mxf")).set_cpl_id(cpl->id()),
- VN(VC::MISSING_SUBTITLE_START_TIME, canonical(path / "subs2.mxf")).set_cpl_id(cpl->id())
+ VN(VC::VALID_MAIN_PICTURE_ACTIVE_AREA, canonical(cpl->file().get())).set_cpl_id(cpl->id()).set_size_in_pixels({1998, 1080}),
+ note(VC::VALID_CONTENT_KIND, cpl).set_content_kind("trailer"),
+ note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text),
+ VN(VC::VALID_CPL_ANNOTATION_TEXT).set_cpl_id(cpl->id()).set_annotation_text("A Test DCP"),
+ note(VC::CORRECT_PICTURE_HASH, canonical(path / "video0.mxf"), cpl).set_reel_index(0).set_asset_id(picture_ids[0]),
+ note(VC::CORRECT_PICTURE_HASH, canonical(path / "video1.mxf"), cpl).set_reel_index(1).set_asset_id(picture_ids[1]),
+ note(VC::VALID_PICTURE_FRAME_SIZES_IN_BYTES, canonical(path / "video0.mxf"), cpl).set_reel_index(0).set_asset_id(picture_ids[0]),
+ note(VC::VALID_PICTURE_FRAME_SIZES_IN_BYTES, canonical(path / "video1.mxf"), cpl).set_reel_index(1).set_asset_id(picture_ids[1]),
+ VN(VC::MISSING_SUBTITLE_START_TIME, canonical(path / "subs1.mxf")).set_cpl_id(cpl->id()).set_reel_index(0).set_asset_id(subs_ids[0]),
+ VN(VC::MISSING_SUBTITLE_START_TIME, canonical(path / "subs2.mxf")).set_cpl_id(cpl->id()).set_reel_index(1).set_asset_id(subs_ids[1])
});
}
@@ -2423,6 +2355,7 @@ BOOST_AUTO_TEST_CASE (verify_missing_subtitle_start_time)
cpl->reels()[0]->add(reel_subs);
dcp->write_xml();
+ auto const picture_id = cpl->reels()[0]->main_picture()->asset()->id();
using VN = dcp::VerificationNote;
using VC = VN::Code;
@@ -2430,21 +2363,17 @@ BOOST_AUTO_TEST_CASE (verify_missing_subtitle_start_time)
{ dir },
{},
{
- note(VC::CORRECT_PICTURE_HASH, canonical(dir / "video.mxf"), cpl),
+ note(VC::CORRECT_PICTURE_HASH, canonical(dir / "video.mxf"), cpl).set_reel_index(0).set_asset_id(picture_id),
note(VC::MATCHING_CPL_HASHES, cpl),
note(VC::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl),
note(VC::NONE_ENCRYPTED, cpl),
- VN(
- VC::VALID_MAIN_PICTURE_ACTIVE_AREA,
- string{"1998x1080"},
- cpl->file().get()
- ).set_cpl_id(cpl->id()),
- note(VC::VALID_CONTENT_KIND, string{"trailer"}, cpl),
- note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl->content_version()->label_text, cpl),
- note(VC::VALID_CPL_ANNOTATION_TEXT, string{"A Test DCP"}, cpl),
- note(VC::VALID_PICTURE_FRAME_SIZES_IN_BYTES, canonical(dir / "video.mxf"), cpl),
- VN(VC::MISSING_SUBTITLE_START_TIME, canonical(dir / "subs.mxf")).set_cpl_id(cpl->id()),
- VN(VC::INVALID_SUBTITLE_FIRST_TEXT_TIME).set_cpl_id(cpl->id())
+ VN(VC::VALID_MAIN_PICTURE_ACTIVE_AREA, canonical(cpl->file().get())).set_cpl_id(cpl->id()).set_size_in_pixels({1998, 1080}),
+ note(VC::VALID_CONTENT_KIND, cpl).set_content_kind("trailer"),
+ note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text),
+ VN(VC::VALID_CPL_ANNOTATION_TEXT).set_cpl_id(cpl->id()).set_annotation_text("A Test DCP"),
+ note(VC::VALID_PICTURE_FRAME_SIZES_IN_BYTES, canonical(dir / "video.mxf"), cpl).set_reel_index(0).set_asset_id(picture_id),
+ VN(VC::MISSING_SUBTITLE_START_TIME, canonical(dir / "subs.mxf")).set_cpl_id(cpl->id()).set_reel_index(0).set_asset_id(subs->id()),
+ VN(VC::INVALID_SUBTITLE_FIRST_TEXT_TIME).set_cpl_id(cpl->id()).set_reel_index(0).set_asset_id(subs->id()),
});
}
@@ -2489,6 +2418,7 @@ BOOST_AUTO_TEST_CASE (verify_invalid_subtitle_start_time)
cpl->reels().front()->add(reel_subs);
dcp->write_xml();
+ auto const picture_id = cpl->reels()[0]->main_picture()->asset()->id();
using VN = dcp::VerificationNote;
using VC = VN::Code;
@@ -2498,19 +2428,15 @@ BOOST_AUTO_TEST_CASE (verify_invalid_subtitle_start_time)
{
note(VC::NONE_ENCRYPTED, cpl),
note(VC::MATCHING_CPL_HASHES, cpl),
- note(VC::VALID_CPL_ANNOTATION_TEXT, string{"A Test DCP"}, cpl),
+ VN(VC::VALID_CPL_ANNOTATION_TEXT).set_cpl_id(cpl->id()).set_annotation_text("A Test DCP"),
note(VC::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl),
- note(VC::VALID_CONTENT_KIND, string{"trailer"}, cpl),
- note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl->content_version()->label_text, cpl),
- note(VC::CORRECT_PICTURE_HASH, canonical(dir / "video.mxf"), cpl),
- VN(
- VC::VALID_MAIN_PICTURE_ACTIVE_AREA,
- string{"1998x1080"},
- cpl->file().get()
- ).set_cpl_id(cpl->id()),
- note(VC::VALID_PICTURE_FRAME_SIZES_IN_BYTES, canonical(dir / "video.mxf"), cpl),
- VN(VC::INVALID_SUBTITLE_START_TIME, canonical(dir / "subs.mxf")).set_cpl_id(cpl->id()),
- VN(VC::INVALID_SUBTITLE_FIRST_TEXT_TIME).set_cpl_id(cpl->id())
+ note(VC::VALID_CONTENT_KIND, cpl).set_content_kind("trailer"),
+ note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text),
+ note(VC::CORRECT_PICTURE_HASH, canonical(dir / "video.mxf"), cpl).set_reel_index(0).set_asset_id(picture_id),
+ VN(VC::VALID_MAIN_PICTURE_ACTIVE_AREA, canonical(cpl->file().get())).set_cpl_id(cpl->id()).set_size_in_pixels({1998, 1080}),
+ note(VC::VALID_PICTURE_FRAME_SIZES_IN_BYTES, canonical(dir / "video.mxf"), cpl).set_reel_index(0).set_asset_id(picture_id),
+ VN(VC::INVALID_SUBTITLE_START_TIME, canonical(dir / "subs.mxf")).set_cpl_id(cpl->id()).set_reel_index(0).set_asset_id(subs->id()),
+ VN(VC::INVALID_SUBTITLE_FIRST_TEXT_TIME).set_cpl_id(cpl->id()).set_reel_index(0).set_asset_id(subs->id()),
});
}
@@ -2602,17 +2528,20 @@ BOOST_AUTO_TEST_CASE (verify_invalid_subtitle_first_text_time)
auto const dir = path("build/test/verify_invalid_subtitle_first_text_time");
/* Just too early */
auto cpl = dcp_with_text<dcp::ReelSMPTETextAsset>(dcp::TextType::OPEN_SUBTITLE, dir, {{ 4 * 24 - 1, 5 * 24 }});
+
+ auto const subs_id = cpl->reels()[0]->main_subtitle()->asset()->id();
+
check_verify_result (
{ dir },
{},
{
note(VC::NONE_ENCRYPTED, cpl),
note(VC::MATCHING_CPL_HASHES, cpl),
- note(VC::VALID_CPL_ANNOTATION_TEXT, string{"hello"}, cpl),
+ VN(VC::VALID_CPL_ANNOTATION_TEXT).set_cpl_id(cpl->id()).set_annotation_text("hello"),
note(VC::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl),
- note(VC::VALID_CONTENT_KIND, string{"trailer"}, cpl),
- note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl->content_version()->label_text, cpl),
- VN(VC::INVALID_SUBTITLE_FIRST_TEXT_TIME).set_cpl_id(cpl->id()),
+ note(VC::VALID_CONTENT_KIND, cpl).set_content_kind("trailer"),
+ note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text),
+ VN(VC::INVALID_SUBTITLE_FIRST_TEXT_TIME).set_cpl_id(cpl->id()).set_reel_index(0).set_asset_id(subs_id),
VN(VC::MISSING_CPL_METADATA, cpl->file().get()).set_cpl_id(cpl->id())
});
@@ -2633,10 +2562,10 @@ BOOST_AUTO_TEST_CASE (verify_valid_subtitle_first_text_time)
{
note(VC::NONE_ENCRYPTED, cpl),
note(VC::MATCHING_CPL_HASHES, cpl),
- note(VC::VALID_CPL_ANNOTATION_TEXT, string{"hello"}, cpl),
+ VN(VC::VALID_CPL_ANNOTATION_TEXT).set_cpl_id(cpl->id()).set_annotation_text("hello"),
note(VC::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl),
- note(VC::VALID_CONTENT_KIND, string{"trailer"}, cpl),
- note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl->content_version()->label_text, cpl),
+ note(VC::VALID_CONTENT_KIND, cpl).set_content_kind("trailer"),
+ note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text),
VN(VC::MISSING_CPL_METADATA, cpl->file().get()).set_cpl_id(cpl->id())
});
}
@@ -2692,10 +2621,10 @@ BOOST_AUTO_TEST_CASE (verify_valid_subtitle_first_text_time_on_second_reel)
{
note(VC::NONE_ENCRYPTED, cpl),
note(VC::MATCHING_CPL_HASHES, cpl),
- note(VC::VALID_CPL_ANNOTATION_TEXT, string{"hello"}, cpl),
+ VN(VC::VALID_CPL_ANNOTATION_TEXT).set_cpl_id(cpl->id()).set_annotation_text("hello"),
note(VC::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl),
- note(VC::VALID_CONTENT_KIND, string{"trailer"}, cpl),
- note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl->content_version()->label_text, cpl),
+ note(VC::VALID_CONTENT_KIND, cpl).set_content_kind("trailer"),
+ note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text),
VN(VC::MISSING_CPL_METADATA, cpl->file().get()).set_cpl_id(cpl->id())
});
}
@@ -2714,17 +2643,20 @@ BOOST_AUTO_TEST_CASE (verify_invalid_subtitle_spacing)
{ 4 * 24, 5 * 24 },
{ 5 * 24 + 1, 6 * 24 },
});
+
+ auto const subs_id = cpl->reels()[0]->main_subtitle()->asset()->id();
+
check_verify_result (
{dir},
{},
{
note(VC::NONE_ENCRYPTED, cpl),
note(VC::MATCHING_CPL_HASHES, cpl),
- note(VC::VALID_CPL_ANNOTATION_TEXT, string{"hello"}, cpl),
+ VN(VC::VALID_CPL_ANNOTATION_TEXT).set_cpl_id(cpl->id()).set_annotation_text("hello"),
note(VC::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl),
- note(VC::VALID_CONTENT_KIND, string{"trailer"}, cpl),
- note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl->content_version()->label_text, cpl),
- VN(VC::INVALID_SUBTITLE_SPACING).set_cpl_id(cpl->id()),
+ note(VC::VALID_CONTENT_KIND, cpl).set_content_kind("trailer"),
+ note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text),
+ VN(VC::INVALID_SUBTITLE_SPACING).set_cpl_id(cpl->id()).set_reel_index(0).set_asset_id(subs_id),
VN(VC::MISSING_CPL_METADATA, cpl->file().get()).set_cpl_id(cpl->id())
});
}
@@ -2750,10 +2682,10 @@ BOOST_AUTO_TEST_CASE (verify_valid_subtitle_spacing)
{
note(VC::NONE_ENCRYPTED, cpl),
note(VC::MATCHING_CPL_HASHES, cpl),
- note(VC::VALID_CPL_ANNOTATION_TEXT, string{"hello"}, cpl),
+ VN(VC::VALID_CPL_ANNOTATION_TEXT).set_cpl_id(cpl->id()).set_annotation_text("hello"),
note(VC::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl),
- note(VC::VALID_CONTENT_KIND, string{"trailer"}, cpl),
- note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl->content_version()->label_text, cpl),
+ note(VC::VALID_CONTENT_KIND, cpl).set_content_kind("trailer"),
+ note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text),
VN(VC::MISSING_CPL_METADATA, cpl->file().get()).set_cpl_id(cpl->id())
});
}
@@ -2766,17 +2698,20 @@ BOOST_AUTO_TEST_CASE(verify_invalid_subtitle_duration)
auto const dir = path("build/test/verify_invalid_subtitle_duration");
auto cpl = dcp_with_text<dcp::ReelSMPTETextAsset>(dcp::TextType::OPEN_SUBTITLE, dir, {{ 4 * 24, 4 * 24 - 1 }});
+
+ auto const subs_id = cpl->reels()[0]->main_subtitle()->asset()->id();
+
check_verify_result (
{dir},
{},
{
note(VC::NONE_ENCRYPTED, cpl),
note(VC::MATCHING_CPL_HASHES, cpl),
- note(VC::VALID_CPL_ANNOTATION_TEXT, string{"hello"}, cpl),
+ VN(VC::VALID_CPL_ANNOTATION_TEXT).set_cpl_id(cpl->id()).set_annotation_text("hello"),
note(VC::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl),
- note(VC::VALID_CONTENT_KIND, string{"trailer"}, cpl),
- note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl->content_version()->label_text, cpl),
- VN(VC::INVALID_SUBTITLE_DURATION).set_cpl_id(cpl->id()),
+ note(VC::VALID_CONTENT_KIND, cpl).set_content_kind("trailer"),
+ note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text),
+ VN(VC::INVALID_SUBTITLE_DURATION).set_cpl_id(cpl->id()).set_reel_index(0).set_asset_id(subs_id),
VN(VC::MISSING_CPL_METADATA, cpl->file().get()).set_cpl_id(cpl->id())
});
}
@@ -2789,17 +2724,20 @@ BOOST_AUTO_TEST_CASE(verify_invalid_subtitle_duration_bv21)
auto const dir = path("build/test/verify_invalid_subtitle_duration_bv21");
auto cpl = dcp_with_text<dcp::ReelSMPTETextAsset>(dcp::TextType::OPEN_SUBTITLE, dir, {{ 4 * 24, 4 * 24 + 1 }});
+
+ auto const subs_id = cpl->reels()[0]->main_subtitle()->asset()->id();
+
check_verify_result (
{dir},
{},
{
note(VC::NONE_ENCRYPTED, cpl),
note(VC::MATCHING_CPL_HASHES, cpl),
- note(VC::VALID_CPL_ANNOTATION_TEXT, string{"hello"}, cpl),
+ VN(VC::VALID_CPL_ANNOTATION_TEXT).set_cpl_id(cpl->id()).set_annotation_text("hello"),
note(VC::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl),
- note(VC::VALID_CONTENT_KIND, string{"trailer"}, cpl),
- note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl->content_version()->label_text, cpl),
- VN(VC::INVALID_SUBTITLE_DURATION_BV21).set_cpl_id(cpl->id()),
+ note(VC::VALID_CONTENT_KIND, cpl).set_content_kind("trailer"),
+ note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text),
+ VN(VC::INVALID_SUBTITLE_DURATION_BV21).set_cpl_id(cpl->id()).set_reel_index(0).set_asset_id(subs_id),
VN(VC::MISSING_CPL_METADATA, cpl->file().get()).set_cpl_id(cpl->id())
});
}
@@ -2819,10 +2757,10 @@ BOOST_AUTO_TEST_CASE (verify_valid_subtitle_duration)
{
note(VC::NONE_ENCRYPTED, cpl),
note(VC::MATCHING_CPL_HASHES, cpl),
- note(VC::VALID_CPL_ANNOTATION_TEXT, string{"hello"}, cpl),
+ VN(VC::VALID_CPL_ANNOTATION_TEXT).set_cpl_id(cpl->id()).set_annotation_text("hello"),
note(VC::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl),
- note(VC::VALID_CONTENT_KIND, string{"trailer"}, cpl),
- note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl->content_version()->label_text, cpl),
+ note(VC::VALID_CONTENT_KIND, cpl).set_content_kind("trailer"),
+ note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text),
VN(VC::MISSING_CPL_METADATA, cpl->file().get()).set_cpl_id(cpl->id())
});
}
@@ -2850,13 +2788,15 @@ BOOST_AUTO_TEST_CASE (verify_subtitle_overlapping_reel_boundary)
{
note(VC::NONE_ENCRYPTED, cpl),
note(VC::MATCHING_CPL_HASHES, cpl),
- note(VC::VALID_CPL_ANNOTATION_TEXT, string{"hello"}, cpl),
+ VN(VC::VALID_CPL_ANNOTATION_TEXT).set_cpl_id(cpl->id()).set_annotation_text("hello"),
note(VC::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl),
- note(VC::VALID_CONTENT_KIND, string{"trailer"}, cpl),
- note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl->content_version()->label_text, cpl),
- VN(VC::MISMATCHED_TIMED_TEXT_DURATION , "72 96", boost::filesystem::canonical(asset->file().get())).set_cpl_id(cpl->id()),
- VN(VC::INVALID_SUBTITLE_FIRST_TEXT_TIME).set_cpl_id(cpl->id()),
- VN(VC::SUBTITLE_OVERLAPS_REEL_BOUNDARY).set_cpl_id(cpl->id()),
+ note(VC::VALID_CONTENT_KIND, cpl).set_content_kind("trailer"),
+ note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text),
+ VN(
+ VC::MISMATCHED_TIMED_TEXT_DURATION, boost::filesystem::canonical(asset->file().get())
+ ).set_cpl_id(cpl->id()).set_reel_index(0).set_asset_id(asset->id()).set_duration(96).set_other_duration(72),
+ VN(VC::INVALID_SUBTITLE_FIRST_TEXT_TIME).set_cpl_id(cpl->id()).set_reel_index(0).set_asset_id(asset->id()),
+ VN(VC::SUBTITLE_OVERLAPS_REEL_BOUNDARY).set_cpl_id(cpl->id()).set_reel_index(0).set_asset_id(asset->id()),
VN(VC::MISSING_CPL_METADATA, cpl->file().get()).set_cpl_id(cpl->id())
});
}
@@ -2884,10 +2824,10 @@ BOOST_AUTO_TEST_CASE (verify_invalid_subtitle_line_count1)
{
note(VC::NONE_ENCRYPTED, cpl),
note(VC::MATCHING_CPL_HASHES, cpl),
- note(VC::VALID_CPL_ANNOTATION_TEXT, string{"hello"}, cpl),
+ VN(VC::VALID_CPL_ANNOTATION_TEXT).set_cpl_id(cpl->id()).set_annotation_text("hello"),
note(VC::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl),
- note(VC::VALID_CONTENT_KIND, string{"trailer"}, cpl),
- note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl->content_version()->label_text, cpl),
+ note(VC::VALID_CONTENT_KIND, cpl).set_content_kind("trailer"),
+ note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text),
VN(VC::INVALID_SUBTITLE_LINE_COUNT).set_cpl_id(cpl->id()),
VN(VC::MISSING_CPL_METADATA, cpl->file().get()).set_cpl_id(cpl->id())
});
@@ -2915,10 +2855,10 @@ BOOST_AUTO_TEST_CASE (verify_valid_subtitle_line_count1)
{
note(VC::NONE_ENCRYPTED, cpl),
note(VC::MATCHING_CPL_HASHES, cpl),
- note(VC::VALID_CPL_ANNOTATION_TEXT, string{"hello"}, cpl),
+ VN(VC::VALID_CPL_ANNOTATION_TEXT).set_cpl_id(cpl->id()).set_annotation_text("hello"),
note(VC::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl),
- note(VC::VALID_CONTENT_KIND, string{"trailer"}, cpl),
- note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl->content_version()->label_text, cpl),
+ note(VC::VALID_CONTENT_KIND, cpl).set_content_kind("trailer"),
+ note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text),
VN(VC::MISSING_CPL_METADATA, cpl->file().get()).set_cpl_id(cpl->id())
});
}
@@ -2946,10 +2886,10 @@ BOOST_AUTO_TEST_CASE (verify_invalid_subtitle_line_count2)
{
note(VC::NONE_ENCRYPTED, cpl),
note(VC::MATCHING_CPL_HASHES, cpl),
- note(VC::VALID_CPL_ANNOTATION_TEXT, string{"hello"}, cpl),
+ VN(VC::VALID_CPL_ANNOTATION_TEXT).set_cpl_id(cpl->id()).set_annotation_text("hello"),
note(VC::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl),
- note(VC::VALID_CONTENT_KIND, string{"trailer"}, cpl),
- note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl->content_version()->label_text, cpl),
+ note(VC::VALID_CONTENT_KIND, cpl).set_content_kind("trailer"),
+ note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text),
VN(VC::INVALID_SUBTITLE_LINE_COUNT).set_cpl_id(cpl->id()),
VN(VC::MISSING_CPL_METADATA, cpl->file().get()).set_cpl_id(cpl->id())
});
@@ -2978,10 +2918,10 @@ BOOST_AUTO_TEST_CASE (verify_valid_subtitle_line_count2)
{
note(VC::NONE_ENCRYPTED, cpl),
note(VC::MATCHING_CPL_HASHES, cpl),
- note(VC::VALID_CPL_ANNOTATION_TEXT, string{"hello"}, cpl),
+ VN(VC::VALID_CPL_ANNOTATION_TEXT).set_cpl_id(cpl->id()).set_annotation_text("hello"),
note(VC::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl),
- note(VC::VALID_CONTENT_KIND, string{"trailer"}, cpl),
- note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl->content_version()->label_text, cpl),
+ note(VC::VALID_CONTENT_KIND, cpl).set_content_kind("trailer"),
+ note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text),
VN(VC::MISSING_CPL_METADATA, cpl->file().get()).set_cpl_id(cpl->id())
});
}
@@ -3006,10 +2946,10 @@ BOOST_AUTO_TEST_CASE (verify_invalid_subtitle_line_length1)
{
note(VC::NONE_ENCRYPTED, cpl),
note(VC::MATCHING_CPL_HASHES, cpl),
- note(VC::VALID_CPL_ANNOTATION_TEXT, string{"hello"}, cpl),
+ VN(VC::VALID_CPL_ANNOTATION_TEXT).set_cpl_id(cpl->id()).set_annotation_text("hello"),
note(VC::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl),
- note(VC::VALID_CONTENT_KIND, string{"trailer"}, cpl),
- note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl->content_version()->label_text, cpl),
+ note(VC::VALID_CONTENT_KIND, cpl).set_content_kind("trailer"),
+ note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text),
VN(VC::NEARLY_INVALID_SUBTITLE_LINE_LENGTH).set_cpl_id(cpl->id()),
VN(VC::MISSING_CPL_METADATA, cpl->file().get()).set_cpl_id(cpl->id())
});
@@ -3035,10 +2975,10 @@ BOOST_AUTO_TEST_CASE (verify_invalid_subtitle_line_length2)
{
note(VC::NONE_ENCRYPTED, cpl),
note(VC::MATCHING_CPL_HASHES, cpl),
- note(VC::VALID_CPL_ANNOTATION_TEXT, string{"hello"}, cpl),
+ VN(VC::VALID_CPL_ANNOTATION_TEXT).set_cpl_id(cpl->id()).set_annotation_text("hello"),
note(VC::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl),
- note(VC::VALID_CONTENT_KIND, string{"trailer"}, cpl),
- note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl->content_version()->label_text, cpl),
+ note(VC::VALID_CONTENT_KIND, cpl).set_content_kind("trailer"),
+ note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text),
VN(VC::INVALID_SUBTITLE_LINE_LENGTH).set_cpl_id(cpl->id()),
VN(VC::MISSING_CPL_METADATA, cpl->file().get()).set_cpl_id(cpl->id())
});
@@ -3067,10 +3007,10 @@ BOOST_AUTO_TEST_CASE (verify_valid_closed_caption_line_count1)
{
note(VC::NONE_ENCRYPTED, cpl),
note(VC::MATCHING_CPL_HASHES, cpl),
- note(VC::VALID_CPL_ANNOTATION_TEXT, string{"hello"}, cpl),
+ VN(VC::VALID_CPL_ANNOTATION_TEXT).set_cpl_id(cpl->id()).set_annotation_text("hello"),
note(VC::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl),
- note(VC::VALID_CONTENT_KIND, string{"trailer"}, cpl),
- note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl->content_version()->label_text, cpl),
+ note(VC::VALID_CONTENT_KIND, cpl).set_content_kind("trailer"),
+ note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text),
VN(VC::INVALID_CLOSED_CAPTION_LINE_COUNT).set_cpl_id(cpl->id()),
VN(VC::MISSING_CPL_METADATA, cpl->file().get()).set_cpl_id(cpl->id())
});
@@ -3098,10 +3038,10 @@ BOOST_AUTO_TEST_CASE (verify_valid_closed_caption_line_count2)
{
note(VC::NONE_ENCRYPTED, cpl),
note(VC::MATCHING_CPL_HASHES, cpl),
- note(VC::VALID_CPL_ANNOTATION_TEXT, string{"hello"}, cpl),
+ VN(VC::VALID_CPL_ANNOTATION_TEXT).set_cpl_id(cpl->id()).set_annotation_text("hello"),
note(VC::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl),
- note(VC::VALID_CONTENT_KIND, string{"trailer"}, cpl),
- note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl->content_version()->label_text, cpl),
+ note(VC::VALID_CONTENT_KIND, cpl).set_content_kind("trailer"),
+ note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text),
VN(VC::MISSING_CPL_METADATA, cpl->file().get()).set_cpl_id(cpl->id())
});
}
@@ -3129,10 +3069,10 @@ BOOST_AUTO_TEST_CASE (verify_invalid_closed_caption_line_count3)
{
note(VC::NONE_ENCRYPTED, cpl),
note(VC::MATCHING_CPL_HASHES, cpl),
- note(VC::VALID_CPL_ANNOTATION_TEXT, string{"hello"}, cpl),
+ VN(VC::VALID_CPL_ANNOTATION_TEXT).set_cpl_id(cpl->id()).set_annotation_text("hello"),
note(VC::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl),
- note(VC::VALID_CONTENT_KIND, string{"trailer"}, cpl),
- note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl->content_version()->label_text, cpl),
+ note(VC::VALID_CONTENT_KIND, cpl).set_content_kind("trailer"),
+ note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text),
VN(VC::INVALID_CLOSED_CAPTION_LINE_COUNT).set_cpl_id(cpl->id()),
VN(VC::MISSING_CPL_METADATA, cpl->file().get()).set_cpl_id(cpl->id())
});
@@ -3161,10 +3101,10 @@ BOOST_AUTO_TEST_CASE (verify_valid_closed_caption_line_count4)
{
note(VC::NONE_ENCRYPTED, cpl),
note(VC::MATCHING_CPL_HASHES, cpl),
- note(VC::VALID_CPL_ANNOTATION_TEXT, string{"hello"}, cpl),
+ VN(VC::VALID_CPL_ANNOTATION_TEXT).set_cpl_id(cpl->id()).set_annotation_text("hello"),
note(VC::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl),
- note(VC::VALID_CONTENT_KIND, string{"trailer"}, cpl),
- note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl->content_version()->label_text, cpl),
+ note(VC::VALID_CONTENT_KIND, cpl).set_content_kind("trailer"),
+ note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text),
VN(VC::MISSING_CPL_METADATA, cpl->file().get()).set_cpl_id(cpl->id())
});
}
@@ -3189,10 +3129,10 @@ BOOST_AUTO_TEST_CASE (verify_valid_closed_caption_line_length)
{
note(VC::NONE_ENCRYPTED, cpl),
note(VC::MATCHING_CPL_HASHES, cpl),
- note(VC::VALID_CPL_ANNOTATION_TEXT, string{"hello"}, cpl),
+ VN(VC::VALID_CPL_ANNOTATION_TEXT).set_cpl_id(cpl->id()).set_annotation_text("hello"),
note(VC::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl),
- note(VC::VALID_CONTENT_KIND, string{"trailer"}, cpl),
- note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl->content_version()->label_text, cpl),
+ note(VC::VALID_CONTENT_KIND, cpl).set_content_kind("trailer"),
+ note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text),
VN(VC::MISSING_CPL_METADATA, cpl->file().get()).set_cpl_id(cpl->id())
});
}
@@ -3217,16 +3157,44 @@ BOOST_AUTO_TEST_CASE (verify_invalid_closed_caption_line_length)
{
note(VC::NONE_ENCRYPTED, cpl),
note(VC::MATCHING_CPL_HASHES, cpl),
- note(VC::VALID_CPL_ANNOTATION_TEXT, string{"hello"}, cpl),
+ VN(VC::VALID_CPL_ANNOTATION_TEXT).set_cpl_id(cpl->id()).set_annotation_text("hello"),
note(VC::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl),
- note(VC::VALID_CONTENT_KIND, string{"trailer"}, cpl),
- note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl->content_version()->label_text, cpl),
+ note(VC::VALID_CONTENT_KIND, cpl).set_content_kind("trailer"),
+ note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text),
VN(VC::INVALID_CLOSED_CAPTION_LINE_LENGTH).set_cpl_id(cpl->id()),
VN(VC::MISSING_CPL_METADATA, cpl->file().get()).set_cpl_id(cpl->id())
});
}
+BOOST_AUTO_TEST_CASE(verify_invalid_closed_caption_line_length_with_utf8)
+{
+ auto const dir = path("build/test/verify_invalid_closed_caption_line_length_with_utf8");
+ auto cpl = dcp_with_text<dcp::ReelSMPTETextAsset> (
+ dcp::TextType::CLOSED_CAPTION,
+ dir,
+ {
+ { 96, 300, 0.0, dcp::VAlign::CENTER, "0123456789012345678901234567890…" }
+ });
+
+ using VN = dcp::VerificationNote;
+ using VC = VN::Code;
+
+ check_verify_result (
+ {dir},
+ {},
+ {
+ note(VC::NONE_ENCRYPTED, cpl),
+ note(VC::MATCHING_CPL_HASHES, cpl),
+ VN(VC::VALID_CPL_ANNOTATION_TEXT).set_cpl_id(cpl->id()).set_annotation_text("hello"),
+ note(VC::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl),
+ note(VC::VALID_CONTENT_KIND, cpl).set_content_kind("trailer"),
+ note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text),
+ VN(VC::MISSING_CPL_METADATA, cpl->file().get()).set_cpl_id(cpl->id())
+ });
+}
+
+
BOOST_AUTO_TEST_CASE (verify_mismatched_closed_caption_valign1)
{
auto const dir = path ("build/test/verify_mismatched_closed_caption_valign1");
@@ -3248,10 +3216,10 @@ BOOST_AUTO_TEST_CASE (verify_mismatched_closed_caption_valign1)
{
note(VC::NONE_ENCRYPTED, cpl),
note(VC::MATCHING_CPL_HASHES, cpl),
- note(VC::VALID_CPL_ANNOTATION_TEXT, string{"hello"}, cpl),
+ VN(VC::VALID_CPL_ANNOTATION_TEXT).set_cpl_id(cpl->id()).set_annotation_text("hello"),
note(VC::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl),
- note(VC::VALID_CONTENT_KIND, string{"trailer"}, cpl),
- note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl->content_version()->label_text, cpl),
+ note(VC::VALID_CONTENT_KIND, cpl).set_content_kind("trailer"),
+ note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text),
VN(VC::MISSING_CPL_METADATA, cpl->file().get()).set_cpl_id(cpl->id())
});
}
@@ -3278,10 +3246,10 @@ BOOST_AUTO_TEST_CASE (verify_mismatched_closed_caption_valign2)
{
note(VC::NONE_ENCRYPTED, cpl),
note(VC::MATCHING_CPL_HASHES, cpl),
- note(VC::VALID_CPL_ANNOTATION_TEXT, string{"hello"}, cpl),
+ VN(VC::VALID_CPL_ANNOTATION_TEXT).set_cpl_id(cpl->id()).set_annotation_text("hello"),
note(VC::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl),
- note(VC::VALID_CONTENT_KIND, string{"trailer"}, cpl),
- note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl->content_version()->label_text, cpl),
+ note(VC::VALID_CONTENT_KIND, cpl).set_content_kind("trailer"),
+ note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text),
VN(VC::MISMATCHED_CLOSED_CAPTION_VALIGN).set_cpl_id(cpl->id()),
VN(VC::MISSING_CPL_METADATA, cpl->file().get()).set_cpl_id(cpl->id())
});
@@ -3309,10 +3277,10 @@ BOOST_AUTO_TEST_CASE (verify_incorrect_closed_caption_ordering1)
{
note(VC::NONE_ENCRYPTED, cpl),
note(VC::MATCHING_CPL_HASHES, cpl),
- note(VC::VALID_CPL_ANNOTATION_TEXT, string{"hello"}, cpl),
+ VN(VC::VALID_CPL_ANNOTATION_TEXT).set_cpl_id(cpl->id()).set_annotation_text("hello"),
note(VC::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl),
- note(VC::VALID_CONTENT_KIND, string{"trailer"}, cpl),
- note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl->content_version()->label_text, cpl),
+ note(VC::VALID_CONTENT_KIND, cpl).set_content_kind("trailer"),
+ note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text),
VN(VC::MISSING_CPL_METADATA, cpl->file().get()).set_cpl_id(cpl->id())
});
}
@@ -3339,10 +3307,10 @@ BOOST_AUTO_TEST_CASE (verify_incorrect_closed_caption_ordering2)
{
note(VC::NONE_ENCRYPTED, cpl),
note(VC::MATCHING_CPL_HASHES, cpl),
- note(VC::VALID_CPL_ANNOTATION_TEXT, string{"hello"}, cpl),
+ VN(VC::VALID_CPL_ANNOTATION_TEXT).set_cpl_id(cpl->id()).set_annotation_text("hello"),
note(VC::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl),
- note(VC::VALID_CONTENT_KIND, string{"trailer"}, cpl),
- note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl->content_version()->label_text, cpl),
+ note(VC::VALID_CONTENT_KIND, cpl).set_content_kind("trailer"),
+ note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text),
VN(VC::MISSING_CPL_METADATA, cpl->file().get()).set_cpl_id(cpl->id())
});
}
@@ -3361,10 +3329,10 @@ BOOST_AUTO_TEST_CASE (verify_incorrect_closed_caption_ordering3)
{
note(VC::NONE_ENCRYPTED, cpl),
note(VC::MATCHING_CPL_HASHES, cpl),
- note(VC::VALID_CPL_ANNOTATION_TEXT, string{"hello"}, cpl),
+ VN(VC::VALID_CPL_ANNOTATION_TEXT).set_cpl_id(cpl->id()).set_annotation_text("hello"),
note(VC::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl),
- note(VC::VALID_CONTENT_KIND, string{"trailer"}, cpl),
- note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl->content_version()->label_text, cpl),
+ note(VC::VALID_CONTENT_KIND, cpl).set_content_kind("trailer"),
+ note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text),
VN(VC::INCORRECT_CLOSED_CAPTION_ORDERING).set_cpl_id(cpl->id()),
VN(VC::MISSING_CPL_METADATA, cpl->file().get()).set_cpl_id(cpl->id())
});
@@ -3385,10 +3353,10 @@ BOOST_AUTO_TEST_CASE (verify_incorrect_closed_caption_ordering4)
{
note(VC::NONE_ENCRYPTED, cpl),
note(VC::MATCHING_CPL_HASHES, cpl),
- note(VC::VALID_CPL_ANNOTATION_TEXT, string{"hello"}, cpl),
+ VN(VC::VALID_CPL_ANNOTATION_TEXT).set_cpl_id(cpl->id()).set_annotation_text("hello"),
note(VC::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl),
- note(VC::VALID_CONTENT_KIND, string{"trailer"}, cpl),
- note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl->content_version()->label_text, cpl),
+ note(VC::VALID_CONTENT_KIND, cpl).set_content_kind("trailer"),
+ note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text),
VN(VC::MISSING_CPL_METADATA, cpl->file().get()).set_cpl_id(cpl->id())
});
}
@@ -3424,13 +3392,13 @@ BOOST_AUTO_TEST_CASE (verify_invalid_sound_frame_rate)
{
note(VC::NONE_ENCRYPTED, cpl),
note(VC::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl),
- note(VC::VALID_CPL_ANNOTATION_TEXT, string{"hello"}, cpl),
- note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl->content_version()->label_text, cpl),
- note(VC::VALID_CONTENT_KIND, string{"trailer"}, cpl),
- note(VC::VALID_PICTURE_FRAME_SIZES_IN_BYTES, canonical(dir / "videofoo.mxf"), cpl),
+ VN(VC::VALID_CPL_ANNOTATION_TEXT).set_cpl_id(cpl->id()).set_annotation_text("hello"),
+ note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text),
+ note(VC::VALID_CONTENT_KIND, cpl).set_content_kind("trailer"),
+ note(VC::VALID_PICTURE_FRAME_SIZES_IN_BYTES, canonical(dir / "videofoo.mxf"), cpl).set_reel_index(0).set_asset_id(picture->id()),
note(VC::MATCHING_CPL_HASHES, cpl),
- note(VC::CORRECT_PICTURE_HASH, canonical(dir / "videofoo.mxf"), cpl),
- VN(VC::INVALID_SOUND_FRAME_RATE, string("96000"), canonical(dir / "audiofoo.mxf")).set_cpl_id(cpl->id()),
+ note(VC::CORRECT_PICTURE_HASH, canonical(dir / "videofoo.mxf"), cpl).set_reel_index(0).set_asset_id(picture->id()).set_asset_id(picture->id()),
+ VN(VC::INVALID_SOUND_FRAME_RATE, canonical(dir / "audiofoo.mxf")).set_cpl_id(cpl->id()).set_reel_index(0).set_frame_rate({96000, 1}).set_asset_id(sound->id()),
VN(VC::MISSING_CPL_METADATA, cpl->file().get()).set_cpl_id(cpl->id())
});
}
@@ -3454,6 +3422,7 @@ BOOST_AUTO_TEST_CASE (verify_missing_cpl_annotation_text)
e.replace("<AnnotationText>A Test DCP</AnnotationText>", "");
}
+ auto const picture_id = cpl->reels()[0]->main_picture()->asset()->id();
using VN = dcp::VerificationNote;
using VC = VN::Code;
@@ -3462,15 +3431,11 @@ BOOST_AUTO_TEST_CASE (verify_missing_cpl_annotation_text)
{},
{
note(VC::NONE_ENCRYPTED, cpl),
- note(VC::VALID_PICTURE_FRAME_SIZES_IN_BYTES, canonical(dir / "video.mxf"), cpl),
- VN(
- VC::VALID_MAIN_PICTURE_ACTIVE_AREA,
- string{"1998x1080"},
- cpl->file().get()
- ).set_cpl_id(cpl->id()),
- note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl->content_version()->label_text, cpl),
- note(VC::VALID_CONTENT_KIND, string{"trailer"}, cpl),
- note(VC::CORRECT_PICTURE_HASH, canonical(dir / "video.mxf"), cpl),
+ note(VC::VALID_PICTURE_FRAME_SIZES_IN_BYTES, canonical(dir / "video.mxf"), cpl).set_reel_index(0).set_asset_id(picture_id),
+ VN(VC::VALID_MAIN_PICTURE_ACTIVE_AREA, canonical(cpl->file().get())).set_cpl_id(cpl->id()).set_size_in_pixels({1998, 1080}),
+ note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text),
+ note(VC::VALID_CONTENT_KIND, cpl).set_content_kind("trailer"),
+ note(VC::CORRECT_PICTURE_HASH, canonical(dir / "video.mxf"), cpl).set_reel_index(0).set_asset_id(picture_id),
note(VC::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl),
VN(VC::MISSING_CPL_ANNOTATION_TEXT, canonical(cpl->file().get())).set_cpl_id(cpl->id()),
VN(
@@ -3497,6 +3462,7 @@ BOOST_AUTO_TEST_CASE (verify_mismatched_cpl_annotation_text)
e.replace("<AnnotationText>A Test DCP</AnnotationText>", "<AnnotationText>A Test DCP 1</AnnotationText>");
}
+ auto const picture_id = cpl->reels()[0]->main_picture()->asset()->id();
using VN = dcp::VerificationNote;
using VC = VN::Code;
@@ -3506,15 +3472,11 @@ BOOST_AUTO_TEST_CASE (verify_mismatched_cpl_annotation_text)
{
note(VC::NONE_ENCRYPTED, cpl),
note(VC::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl),
- note(VC::VALID_CONTENT_KIND, string{"trailer"}, cpl),
- note(VC::CORRECT_PICTURE_HASH, canonical(dir / "video.mxf"), cpl),
- note(VC::VALID_PICTURE_FRAME_SIZES_IN_BYTES, canonical(dir / "video.mxf"), cpl),
- VN(
- VC::VALID_MAIN_PICTURE_ACTIVE_AREA,
- string{"1998x1080"},
- cpl->file().get()
- ).set_cpl_id(cpl->id()),
- note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl->content_version()->label_text, cpl),
+ note(VC::VALID_CONTENT_KIND, cpl).set_content_kind("trailer"),
+ note(VC::CORRECT_PICTURE_HASH, canonical(dir / "video.mxf"), cpl).set_reel_index(0).set_asset_id(picture_id),
+ note(VC::VALID_PICTURE_FRAME_SIZES_IN_BYTES, canonical(dir / "video.mxf"), cpl).set_reel_index(0).set_asset_id(picture_id),
+ VN(VC::VALID_MAIN_PICTURE_ACTIVE_AREA, canonical(cpl->file().get())).set_cpl_id(cpl->id()).set_size_in_pixels({1998, 1080}),
+ note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text),
VN(VC::MISMATCHED_CPL_ANNOTATION_TEXT, canonical(cpl->file().get())).set_cpl_id(cpl->id()),
VN(
VC::MISMATCHED_CPL_HASHES, canonical(cpl->file().get())
@@ -3553,14 +3515,14 @@ BOOST_AUTO_TEST_CASE (verify_mismatched_asset_duration)
{},
{
note(VC::NONE_ENCRYPTED, cpl),
- note(VC::VALID_CPL_ANNOTATION_TEXT, string{"A Test DCP"}, cpl),
+ VN(VC::VALID_CPL_ANNOTATION_TEXT).set_cpl_id(cpl->id()).set_annotation_text("A Test DCP"),
note(VC::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl),
- note(VC::VALID_CONTENT_KIND, string{"trailer"}, cpl),
- note(VC::VALID_PICTURE_FRAME_SIZES_IN_BYTES, canonical(dir / "video.mxf"), cpl),
- note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl->content_version()->label_text, cpl),
+ note(VC::VALID_CONTENT_KIND, cpl).set_content_kind("trailer"),
+ note(VC::VALID_PICTURE_FRAME_SIZES_IN_BYTES, canonical(dir / "video.mxf"), cpl).set_reel_index(0).set_asset_id(mp->id()),
+ note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text),
note(VC::MATCHING_CPL_HASHES, cpl),
- note(VC::CORRECT_PICTURE_HASH, canonical(dir / "video.mxf"), cpl),
- VN(VC::MISMATCHED_ASSET_DURATION).set_cpl_id(cpl->id()),
+ note(VC::CORRECT_PICTURE_HASH, canonical(dir / "video.mxf"), cpl).set_reel_index(0).set_asset_id(mp->id()),
+ VN(VC::MISMATCHED_ASSET_DURATION).set_cpl_id(cpl->id()).set_reel_index(0),
VN(VC::MISSING_CPL_METADATA, canonical(cpl->file().get())).set_cpl_id(cpl->id())
});
}
@@ -3631,20 +3593,24 @@ BOOST_AUTO_TEST_CASE (verify_missing_main_subtitle_from_some_reels)
{
path dir ("build/test/missing_main_subtitle_from_some_reels");
auto cpl = verify_subtitles_must_be_in_all_reels_check (dir, true, false);
+ std::vector<string> const picture_ids = {
+ cpl->reels()[0]->main_picture()->asset()->id(),
+ cpl->reels()[1]->main_picture()->asset()->id()
+ };
check_verify_result (
{ dir },
{},
{
note(VC::NONE_ENCRYPTED, cpl),
- note(VC::VALID_CPL_ANNOTATION_TEXT, string{"A Test DCP"}, cpl),
+ VN(VC::VALID_CPL_ANNOTATION_TEXT).set_cpl_id(cpl->id()).set_annotation_text("A Test DCP"),
note(VC::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl),
- note(VC::VALID_CONTENT_KIND, string{"trailer"}, cpl),
- note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl->content_version()->label_text, cpl),
- note(VC::VALID_PICTURE_FRAME_SIZES_IN_BYTES, canonical(dir / "video1.mxf"), cpl),
- note(VC::VALID_PICTURE_FRAME_SIZES_IN_BYTES, canonical(dir / "video2.mxf"), cpl),
+ note(VC::VALID_CONTENT_KIND, cpl).set_content_kind("trailer"),
+ note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text),
+ note(VC::VALID_PICTURE_FRAME_SIZES_IN_BYTES, canonical(dir / "video1.mxf"), cpl).set_reel_index(0).set_asset_id(picture_ids[0]),
+ note(VC::VALID_PICTURE_FRAME_SIZES_IN_BYTES, canonical(dir / "video2.mxf"), cpl).set_reel_index(1).set_asset_id(picture_ids[1]),
note(VC::MATCHING_CPL_HASHES, cpl),
- note(VC::CORRECT_PICTURE_HASH, canonical(dir / "video1.mxf"), cpl),
- note(VC::CORRECT_PICTURE_HASH, canonical(dir / "video2.mxf"), cpl),
+ note(VC::CORRECT_PICTURE_HASH, canonical(dir / "video1.mxf"), cpl).set_reel_index(0).set_asset_id(picture_ids[0]),
+ note(VC::CORRECT_PICTURE_HASH, canonical(dir / "video2.mxf"), cpl).set_reel_index(1).set_asset_id(picture_ids[1]),
VN(VC::MISSING_MAIN_SUBTITLE_FROM_SOME_REELS).set_cpl_id(cpl->id()),
VN(VC::MISSING_CPL_METADATA, cpl->file().get()).set_cpl_id(cpl->id())
});
@@ -3654,20 +3620,24 @@ BOOST_AUTO_TEST_CASE (verify_missing_main_subtitle_from_some_reels)
{
path dir ("build/test/verify_subtitles_must_be_in_all_reels2");
auto cpl = verify_subtitles_must_be_in_all_reels_check (dir, true, true);
+ std::vector<string> const picture_ids = {
+ cpl->reels()[0]->main_picture()->asset()->id(),
+ cpl->reels()[1]->main_picture()->asset()->id()
+ };
check_verify_result(
{dir},
{},
{
note(VC::NONE_ENCRYPTED, cpl),
- note(VC::VALID_CPL_ANNOTATION_TEXT, string{"A Test DCP"}, cpl),
+ VN(VC::VALID_CPL_ANNOTATION_TEXT).set_cpl_id(cpl->id()).set_annotation_text("A Test DCP"),
note(VC::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl),
- note(VC::VALID_CONTENT_KIND, string{"trailer"}, cpl),
- note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl->content_version()->label_text, cpl),
- note(VC::VALID_PICTURE_FRAME_SIZES_IN_BYTES, canonical(dir / "video1.mxf"), cpl),
- note(VC::VALID_PICTURE_FRAME_SIZES_IN_BYTES, canonical(dir / "video2.mxf"), cpl),
+ note(VC::VALID_CONTENT_KIND, cpl).set_content_kind("trailer"),
+ note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text),
+ note(VC::VALID_PICTURE_FRAME_SIZES_IN_BYTES, canonical(dir / "video1.mxf"), cpl).set_reel_index(0).set_asset_id(picture_ids[0]),
+ note(VC::VALID_PICTURE_FRAME_SIZES_IN_BYTES, canonical(dir / "video2.mxf"), cpl).set_reel_index(1).set_asset_id(picture_ids[1]),
note(VC::MATCHING_CPL_HASHES, cpl),
- note(VC::CORRECT_PICTURE_HASH, canonical(dir / "video1.mxf"), cpl),
- note(VC::CORRECT_PICTURE_HASH, canonical(dir / "video2.mxf"), cpl),
+ note(VC::CORRECT_PICTURE_HASH, canonical(dir / "video1.mxf"), cpl).set_reel_index(0).set_asset_id(picture_ids[0]),
+ note(VC::CORRECT_PICTURE_HASH, canonical(dir / "video2.mxf"), cpl).set_reel_index(1).set_asset_id(picture_ids[1]),
VN(VC::MISSING_CPL_METADATA, cpl->file().get()).set_cpl_id(cpl->id())
});
}
@@ -3675,20 +3645,24 @@ BOOST_AUTO_TEST_CASE (verify_missing_main_subtitle_from_some_reels)
{
path dir ("build/test/verify_subtitles_must_be_in_all_reels1");
auto cpl = verify_subtitles_must_be_in_all_reels_check (dir, false, false);
+ std::vector<string> const picture_ids = {
+ cpl->reels()[0]->main_picture()->asset()->id(),
+ cpl->reels()[1]->main_picture()->asset()->id()
+ };
check_verify_result(
{dir},
{},
{
note(VC::NONE_ENCRYPTED, cpl),
- note(VC::VALID_CPL_ANNOTATION_TEXT, string{"A Test DCP"}, cpl),
+ VN(VC::VALID_CPL_ANNOTATION_TEXT).set_cpl_id(cpl->id()).set_annotation_text("A Test DCP"),
note(VC::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl),
- note(VC::VALID_CONTENT_KIND, string{"trailer"}, cpl),
- note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl->content_version()->label_text, cpl),
- note(VC::VALID_PICTURE_FRAME_SIZES_IN_BYTES, canonical(dir / "video1.mxf"), cpl),
- note(VC::VALID_PICTURE_FRAME_SIZES_IN_BYTES, canonical(dir / "video2.mxf"), cpl),
+ note(VC::VALID_CONTENT_KIND, cpl).set_content_kind("trailer"),
+ note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text),
+ note(VC::VALID_PICTURE_FRAME_SIZES_IN_BYTES, canonical(dir / "video1.mxf"), cpl).set_reel_index(0).set_asset_id(picture_ids[0]),
+ note(VC::VALID_PICTURE_FRAME_SIZES_IN_BYTES, canonical(dir / "video2.mxf"), cpl).set_reel_index(1).set_asset_id(picture_ids[1]),
note(VC::MATCHING_CPL_HASHES, cpl),
- note(VC::CORRECT_PICTURE_HASH, canonical(dir / "video1.mxf"), cpl),
- note(VC::CORRECT_PICTURE_HASH, canonical(dir / "video2.mxf"), cpl),
+ note(VC::CORRECT_PICTURE_HASH, canonical(dir / "video1.mxf"), cpl).set_reel_index(0).set_asset_id(picture_ids[0]),
+ note(VC::CORRECT_PICTURE_HASH, canonical(dir / "video2.mxf"), cpl).set_reel_index(1).set_asset_id(picture_ids[1]),
VN(VC::MISSING_CPL_METADATA, cpl->file().get()).set_cpl_id(cpl->id())
});
}
@@ -3758,19 +3732,23 @@ BOOST_AUTO_TEST_CASE (verify_mismatched_closed_caption_asset_counts)
{
path dir ("build/test/mismatched_closed_caption_asset_counts");
auto cpl = verify_closed_captions_must_be_in_all_reels_check (dir, 3, 4);
+ std::vector<string> const picture_ids = {
+ cpl->reels()[0]->main_picture()->asset()->id(),
+ cpl->reels()[1]->main_picture()->asset()->id()
+ };
check_verify_result (
{dir},
{},
{
note(VC::NONE_ENCRYPTED, cpl),
- note(VC::VALID_PICTURE_FRAME_SIZES_IN_BYTES, canonical(dir / "video1.mxf"), cpl),
- note(VC::VALID_PICTURE_FRAME_SIZES_IN_BYTES, canonical(dir / "video2.mxf"), cpl),
- note(VC::VALID_CONTENT_KIND, string{"trailer"}, cpl),
+ note(VC::VALID_PICTURE_FRAME_SIZES_IN_BYTES, canonical(dir / "video1.mxf"), cpl).set_reel_index(0).set_asset_id(picture_ids[0]),
+ note(VC::VALID_PICTURE_FRAME_SIZES_IN_BYTES, canonical(dir / "video2.mxf"), cpl).set_reel_index(1).set_asset_id(picture_ids[1]),
+ note(VC::VALID_CONTENT_KIND, cpl).set_content_kind("trailer"),
note(VC::MATCHING_CPL_HASHES, cpl),
- note(VC::CORRECT_PICTURE_HASH, canonical(dir / "video1.mxf"), cpl),
- note(VC::CORRECT_PICTURE_HASH, canonical(dir / "video2.mxf"), cpl),
- note(VC::VALID_CPL_ANNOTATION_TEXT, string{"A Test DCP"}, cpl),
- note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl->content_version()->label_text, cpl),
+ note(VC::CORRECT_PICTURE_HASH, canonical(dir / "video1.mxf"), cpl).set_reel_index(0).set_asset_id(picture_ids[0]),
+ note(VC::CORRECT_PICTURE_HASH, canonical(dir / "video2.mxf"), cpl).set_reel_index(1).set_asset_id(picture_ids[1]),
+ VN(VC::VALID_CPL_ANNOTATION_TEXT).set_cpl_id(cpl->id()).set_annotation_text("A Test DCP"),
+ note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text),
note(VC::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl),
VN(VC::MISMATCHED_CLOSED_CAPTION_ASSET_COUNTS).set_cpl_id(cpl->id()),
VN(VC::MISSING_CPL_METADATA, cpl->file().get()).set_cpl_id(cpl->id())
@@ -3780,19 +3758,23 @@ BOOST_AUTO_TEST_CASE (verify_mismatched_closed_caption_asset_counts)
{
path dir ("build/test/verify_closed_captions_must_be_in_all_reels2");
auto cpl = verify_closed_captions_must_be_in_all_reels_check (dir, 4, 4);
+ std::vector<string> const picture_ids = {
+ cpl->reels()[0]->main_picture()->asset()->id(),
+ cpl->reels()[1]->main_picture()->asset()->id()
+ };
check_verify_result(
{dir},
{},
{
note(VC::NONE_ENCRYPTED, cpl),
- note(VC::VALID_PICTURE_FRAME_SIZES_IN_BYTES, canonical(dir / "video1.mxf"), cpl),
- note(VC::VALID_PICTURE_FRAME_SIZES_IN_BYTES, canonical(dir / "video2.mxf"), cpl),
- note(VC::VALID_CONTENT_KIND, string{"trailer"}, cpl),
+ note(VC::VALID_PICTURE_FRAME_SIZES_IN_BYTES, canonical(dir / "video1.mxf"), cpl).set_reel_index(0).set_asset_id(picture_ids[0]),
+ note(VC::VALID_PICTURE_FRAME_SIZES_IN_BYTES, canonical(dir / "video2.mxf"), cpl).set_reel_index(1).set_asset_id(picture_ids[1]),
+ note(VC::VALID_CONTENT_KIND, cpl).set_content_kind("trailer"),
note(VC::MATCHING_CPL_HASHES, cpl),
- note(VC::VALID_CPL_ANNOTATION_TEXT, string{"A Test DCP"}, cpl),
- note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl->content_version()->label_text, cpl),
- note(VC::CORRECT_PICTURE_HASH, canonical(dir / "video1.mxf"), cpl),
- note(VC::CORRECT_PICTURE_HASH, canonical(dir / "video2.mxf"), cpl),
+ VN(VC::VALID_CPL_ANNOTATION_TEXT).set_cpl_id(cpl->id()).set_annotation_text("A Test DCP"),
+ note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text),
+ note(VC::CORRECT_PICTURE_HASH, canonical(dir / "video1.mxf"), cpl).set_reel_index(0).set_asset_id(picture_ids[0]),
+ note(VC::CORRECT_PICTURE_HASH, canonical(dir / "video2.mxf"), cpl).set_reel_index(1).set_asset_id(picture_ids[1]),
note(VC::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl),
VN(VC::MISSING_CPL_METADATA, cpl->file().get()).set_cpl_id(cpl->id())
});
@@ -3801,19 +3783,23 @@ BOOST_AUTO_TEST_CASE (verify_mismatched_closed_caption_asset_counts)
{
path dir ("build/test/verify_closed_captions_must_be_in_all_reels3");
auto cpl = verify_closed_captions_must_be_in_all_reels_check (dir, 0, 0);
+ std::vector<string> const picture_ids = {
+ cpl->reels()[0]->main_picture()->asset()->id(),
+ cpl->reels()[1]->main_picture()->asset()->id()
+ };
check_verify_result(
{dir},
{},
{
note(VC::NONE_ENCRYPTED, cpl),
- note(VC::VALID_PICTURE_FRAME_SIZES_IN_BYTES, canonical(dir / "video1.mxf"), cpl),
- note(VC::VALID_PICTURE_FRAME_SIZES_IN_BYTES, canonical(dir / "video2.mxf"), cpl),
- note(VC::VALID_CONTENT_KIND, string{"trailer"}, cpl),
+ note(VC::VALID_PICTURE_FRAME_SIZES_IN_BYTES, canonical(dir / "video1.mxf"), cpl).set_reel_index(0).set_asset_id(picture_ids[0]),
+ note(VC::VALID_PICTURE_FRAME_SIZES_IN_BYTES, canonical(dir / "video2.mxf"), cpl).set_reel_index(1).set_asset_id(picture_ids[1]),
+ note(VC::VALID_CONTENT_KIND, cpl).set_content_kind("trailer"),
note(VC::MATCHING_CPL_HASHES, cpl),
- note(VC::VALID_CPL_ANNOTATION_TEXT, string{"A Test DCP"}, cpl),
- note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl->content_version()->label_text, cpl),
- note(VC::CORRECT_PICTURE_HASH, canonical(dir / "video1.mxf"), cpl),
- note(VC::CORRECT_PICTURE_HASH, canonical(dir / "video2.mxf"), cpl),
+ VN(VC::VALID_CPL_ANNOTATION_TEXT).set_cpl_id(cpl->id()).set_annotation_text("A Test DCP"),
+ note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text),
+ note(VC::CORRECT_PICTURE_HASH, canonical(dir / "video1.mxf"), cpl).set_reel_index(0).set_asset_id(picture_ids[0]),
+ note(VC::CORRECT_PICTURE_HASH, canonical(dir / "video2.mxf"), cpl).set_reel_index(1).set_asset_id(picture_ids[1]),
note(VC::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl),
VN(VC::MISSING_CPL_METADATA, cpl->file().get()).set_cpl_id(cpl->id())
});
@@ -3855,6 +3841,7 @@ verify_text_entry_point_check(dcp::TextType type, path dir, dcp::VerificationNot
dcp->set_annotation_text("A Test DCP");
dcp->write_xml();
+ auto const picture_id = cpl->reels()[0]->main_picture()->asset()->id();
using VN = dcp::VerificationNote;
using VC = VN::Code;
@@ -3863,14 +3850,14 @@ verify_text_entry_point_check(dcp::TextType type, path dir, dcp::VerificationNot
{},
{
note(VC::NONE_ENCRYPTED, cpl),
- note(VC::VALID_CPL_ANNOTATION_TEXT, string{"A Test DCP"}, cpl),
- note(VC::VALID_PICTURE_FRAME_SIZES_IN_BYTES, canonical(dir / "video.mxf"), cpl),
- note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl->content_version()->label_text, cpl),
+ VN(VC::VALID_CPL_ANNOTATION_TEXT).set_cpl_id(cpl->id()).set_annotation_text("A Test DCP"),
+ note(VC::VALID_PICTURE_FRAME_SIZES_IN_BYTES, canonical(dir / "video.mxf"), cpl).set_reel_index(0).set_asset_id(picture_id),
+ note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text),
note(VC::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl),
- note(VC::CORRECT_PICTURE_HASH, canonical(dir / "video.mxf"), cpl),
+ note(VC::CORRECT_PICTURE_HASH, canonical(dir / "video.mxf"), cpl).set_reel_index(0).set_asset_id(picture_id),
note(VC::MATCHING_CPL_HASHES, cpl),
- note(VC::VALID_CONTENT_KIND, string{"trailer"}, cpl),
- VN(code, subs->id()).set_cpl_id(cpl->id()),
+ note(VC::VALID_CONTENT_KIND, cpl).set_content_kind("trailer"),
+ VN(code).set_cpl_id(cpl->id()).set_reel_index(0).set_asset_id(subs->id()),
VN(VC::MISSING_CPL_METADATA, cpl->file().get()).set_cpl_id(cpl->id())
});
}
@@ -3941,6 +3928,7 @@ BOOST_AUTO_TEST_CASE (verify_missing_hash)
e.delete_first_line_containing("<Hash>");
}
+ auto const picture_id = cpl->reels()[0]->main_picture()->asset()->id();
using VN = dcp::VerificationNote;
using VC = VN::Code;
@@ -3949,21 +3937,17 @@ BOOST_AUTO_TEST_CASE (verify_missing_hash)
{},
{
note(VC::NONE_ENCRYPTED, cpl),
- VN(
- VC::VALID_MAIN_PICTURE_ACTIVE_AREA,
- string{"1998x1080"},
- cpl->file().get()
- ).set_cpl_id(cpl->id()),
- note(VC::VALID_CPL_ANNOTATION_TEXT, string{"A Test DCP"}, cpl),
- note(VC::VALID_CONTENT_KIND, string{"trailer"}, cpl),
- note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl->content_version()->label_text, cpl),
- note(VC::CORRECT_PICTURE_HASH, canonical(dir / "video.mxf"), cpl),
- note(VC::VALID_PICTURE_FRAME_SIZES_IN_BYTES, canonical(dir / "video.mxf"), cpl),
+ VN(VC::VALID_MAIN_PICTURE_ACTIVE_AREA, canonical(cpl->file().get())).set_cpl_id(cpl->id()).set_size_in_pixels({1998, 1080}),
+ VN(VC::VALID_CPL_ANNOTATION_TEXT).set_cpl_id(cpl->id()).set_annotation_text("A Test DCP"),
+ note(VC::VALID_CONTENT_KIND, cpl).set_content_kind("trailer"),
+ note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text),
+ note(VC::CORRECT_PICTURE_HASH, canonical(dir / "video.mxf"), cpl).set_reel_index(0).set_asset_id(picture_id),
+ note(VC::VALID_PICTURE_FRAME_SIZES_IN_BYTES, canonical(dir / "video.mxf"), cpl).set_reel_index(0).set_asset_id(picture_id),
note(VC::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl),
VN(
VC::MISMATCHED_CPL_HASHES, cpl->file().get()
).set_cpl_id(cpl->id()).set_reference_hash(calc.old_hash()).set_calculated_hash(calc.new_hash()),
- VN(VC::MISSING_HASH, asset_id).set_cpl_id(cpl->id())
+ VN(VC::MISSING_HASH).set_cpl_id(cpl->id()).set_reel_index(0).set_asset_id(asset_id),
});
}
@@ -3990,24 +3974,19 @@ verify_markers_test (
note.set_cpl_id(cpl->id());
}
+ auto const picture_id = cpl->reels()[0]->main_picture()->asset()->id();
using VN = dcp::VerificationNote;
using VC = VN::Code;
- test_notes.push_back(note(VC::CORRECT_PICTURE_HASH, canonical(dir / "video.mxf"), cpl));
+ test_notes.push_back(note(VC::CORRECT_PICTURE_HASH, canonical(dir / "video.mxf"), cpl).set_reel_index(0).set_asset_id(picture_id));
test_notes.push_back(note(VC::MATCHING_CPL_HASHES, cpl));
test_notes.push_back(note(VC::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl));
test_notes.push_back(note(VC::NONE_ENCRYPTED, cpl));
- test_notes.push_back(
- VN(
- VC::VALID_MAIN_PICTURE_ACTIVE_AREA,
- string{"1998x1080"},
- cpl->file().get()
- ).set_cpl_id(cpl->id())
- );
- test_notes.push_back(note(VC::VALID_CONTENT_KIND, string{"feature"}, cpl));
- test_notes.push_back(note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl->content_version()->label_text, cpl));
- test_notes.push_back(note(VC::VALID_CPL_ANNOTATION_TEXT, string{"A Test DCP"}, cpl));
- test_notes.push_back(note(VC::VALID_PICTURE_FRAME_SIZES_IN_BYTES, canonical(dir / "video.mxf"), cpl));
+ test_notes.push_back(VN(VC::VALID_MAIN_PICTURE_ACTIVE_AREA, canonical(cpl->file().get())).set_cpl_id(cpl->id()).set_size_in_pixels({1998, 1080}));
+ test_notes.push_back(note(VC::VALID_CONTENT_KIND, cpl).set_content_kind("feature"));
+ test_notes.push_back(note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text));
+ test_notes.push_back(VN(VC::VALID_CPL_ANNOTATION_TEXT).set_cpl_id(cpl->id()).set_annotation_text("A Test DCP"));
+ test_notes.push_back(note(VC::VALID_PICTURE_FRAME_SIZES_IN_BYTES, canonical(dir / "video.mxf"), cpl).set_reel_index(0).set_asset_id(picture_id));
check_verify_result({dir}, {}, test_notes);
}
@@ -4082,7 +4061,7 @@ BOOST_AUTO_TEST_CASE (verify_markers)
{ dcp::Marker::LFOC, dcp::Time(23, 24, 24) }
},
{
- { VC::INCORRECT_FFOC, string("3") }
+ { VN(VC::INCORRECT_FFOC).set_time(dcp::Time(3, 24, 24)) }
});
verify_markers_test (
@@ -4094,7 +4073,7 @@ BOOST_AUTO_TEST_CASE (verify_markers)
{ dcp::Marker::LFOC, dcp::Time(18, 24, 24) }
},
{
- { VC::INCORRECT_LFOC, string("18") }
+ { VN(VC::INCORRECT_LFOC).set_time(dcp::Time(18, 24, 24)) }
});
}
@@ -4108,6 +4087,7 @@ BOOST_AUTO_TEST_CASE (verify_missing_cpl_metadata_version_number)
cpl->unset_version_number();
dcp->write_xml();
+ auto const picture_id = cpl->reels()[0]->main_picture()->asset()->id();
using VN = dcp::VerificationNote;
using VC = VN::Code;
@@ -4115,19 +4095,15 @@ BOOST_AUTO_TEST_CASE (verify_missing_cpl_metadata_version_number)
{dir},
{},
{
- note(VC::CORRECT_PICTURE_HASH, canonical(dir / "video.mxf"), cpl),
+ note(VC::CORRECT_PICTURE_HASH, canonical(dir / "video.mxf"), cpl).set_reel_index(0).set_asset_id(picture_id),
note(VC::MATCHING_CPL_HASHES, cpl),
note(VC::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl),
note(VC::NONE_ENCRYPTED, cpl),
- VN(
- VC::VALID_MAIN_PICTURE_ACTIVE_AREA,
- string{"1998x1080"},
- cpl->file().get()
- ).set_cpl_id(cpl->id()),
- note(VC::VALID_CONTENT_KIND, string{"trailer"}, cpl),
- note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl->content_version()->label_text, cpl),
- note(VC::VALID_CPL_ANNOTATION_TEXT, string{"A Test DCP"}, cpl),
- note(VC::VALID_PICTURE_FRAME_SIZES_IN_BYTES, canonical(dir / "video.mxf"), cpl),
+ VN(VC::VALID_MAIN_PICTURE_ACTIVE_AREA, canonical(cpl->file().get())).set_cpl_id(cpl->id()).set_size_in_pixels({1998, 1080}),
+ note(VC::VALID_CONTENT_KIND, cpl).set_content_kind("trailer"),
+ note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text),
+ VN(VC::VALID_CPL_ANNOTATION_TEXT).set_cpl_id(cpl->id()).set_annotation_text("A Test DCP"),
+ note(VC::VALID_PICTURE_FRAME_SIZES_IN_BYTES, canonical(dir / "video.mxf"), cpl).set_reel_index(0).set_asset_id(picture_id),
VN(VC::MISSING_CPL_METADATA_VERSION_NUMBER, cpl->file().get()).set_cpl_id(cpl->id())
});
}
@@ -4149,6 +4125,7 @@ BOOST_AUTO_TEST_CASE (verify_missing_extension_metadata1)
e.delete_lines ("<meta:ExtensionMetadataList>", "</meta:ExtensionMetadataList>");
}
+ auto const picture_id = cpl->reels()[0]->main_picture()->asset()->id();
using VN = dcp::VerificationNote;
using VC = VN::Code;
@@ -4157,17 +4134,13 @@ BOOST_AUTO_TEST_CASE (verify_missing_extension_metadata1)
{},
{
note(VC::NONE_ENCRYPTED, cpl),
- note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl->content_version()->label_text, cpl),
+ note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text),
note(VC::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl),
- note(VC::VALID_CPL_ANNOTATION_TEXT, string{"A Test DCP"}, cpl),
- note(VC::VALID_PICTURE_FRAME_SIZES_IN_BYTES, canonical(dir / "video.mxf"), cpl),
- note(VC::CORRECT_PICTURE_HASH, canonical(dir / "video.mxf"), cpl),
- VN(
- VC::VALID_MAIN_PICTURE_ACTIVE_AREA,
- string{"1998x1080"},
- cpl->file().get()
- ).set_cpl_id(cpl->id()),
- note(VC::VALID_CONTENT_KIND, string{"trailer"}, cpl),
+ VN(VC::VALID_CPL_ANNOTATION_TEXT).set_cpl_id(cpl->id()).set_annotation_text("A Test DCP"),
+ note(VC::VALID_PICTURE_FRAME_SIZES_IN_BYTES, canonical(dir / "video.mxf"), cpl).set_reel_index(0).set_asset_id(picture_id),
+ note(VC::CORRECT_PICTURE_HASH, canonical(dir / "video.mxf"), cpl).set_reel_index(0).set_asset_id(picture_id),
+ VN(VC::VALID_MAIN_PICTURE_ACTIVE_AREA, canonical(cpl->file().get())).set_cpl_id(cpl->id()).set_size_in_pixels({1998, 1080}),
+ note(VC::VALID_CONTENT_KIND, cpl).set_content_kind("trailer"),
VN(
VC::MISMATCHED_CPL_HASHES, cpl->file().get()
).set_cpl_id(cpl->id()).set_reference_hash(calc.old_hash()).set_calculated_hash(calc.new_hash()),
@@ -4191,6 +4164,7 @@ BOOST_AUTO_TEST_CASE (verify_missing_extension_metadata2)
e.delete_lines ("<meta:ExtensionMetadata scope=\"http://isdcf.com/ns/cplmd/app\">", "</meta:ExtensionMetadata>");
}
+ auto const picture_id = cpl->reels()[0]->main_picture()->asset()->id();
using VN = dcp::VerificationNote;
using VC = VN::Code;
@@ -4199,17 +4173,13 @@ BOOST_AUTO_TEST_CASE (verify_missing_extension_metadata2)
{},
{
note(VC::NONE_ENCRYPTED, cpl),
- note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl->content_version()->label_text, cpl),
+ note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text),
note(VC::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl),
- note(VC::VALID_CPL_ANNOTATION_TEXT, string{"A Test DCP"}, cpl),
- note(VC::VALID_PICTURE_FRAME_SIZES_IN_BYTES, canonical(dir / "video.mxf"), cpl),
- note(VC::CORRECT_PICTURE_HASH, canonical(dir / "video.mxf"), cpl),
- VN(
- VC::VALID_MAIN_PICTURE_ACTIVE_AREA,
- string{"1998x1080"},
- cpl->file().get()
- ).set_cpl_id(cpl->id()),
- note(VC::VALID_CONTENT_KIND, string{"trailer"}, cpl),
+ VN(VC::VALID_CPL_ANNOTATION_TEXT).set_cpl_id(cpl->id()).set_annotation_text("A Test DCP"),
+ note(VC::VALID_PICTURE_FRAME_SIZES_IN_BYTES, canonical(dir / "video.mxf"), cpl).set_reel_index(0).set_asset_id(picture_id),
+ note(VC::CORRECT_PICTURE_HASH, canonical(dir / "video.mxf"), cpl).set_reel_index(0).set_asset_id(picture_id),
+ VN(VC::VALID_MAIN_PICTURE_ACTIVE_AREA, canonical(cpl->file().get())).set_cpl_id(cpl->id()).set_size_in_pixels({1998, 1080}),
+ note(VC::VALID_CONTENT_KIND, cpl).set_content_kind("trailer"),
VN(
VC::MISMATCHED_CPL_HASHES, cpl->file().get()
).set_cpl_id(cpl->id()).set_reference_hash(calc.old_hash()).set_calculated_hash(calc.new_hash()),
@@ -4234,6 +4204,7 @@ BOOST_AUTO_TEST_CASE (verify_invalid_xml_cpl_extension_metadata3)
e.replace ("n</meta:Name>", "n</meta:NameX>");
}
+ auto const picture_id = cpl->reels()[0]->main_picture()->asset()->id();
using VN = dcp::VerificationNote;
using VC = VN::Code;
@@ -4242,22 +4213,15 @@ BOOST_AUTO_TEST_CASE (verify_invalid_xml_cpl_extension_metadata3)
{},
{
note(VC::NONE_ENCRYPTED, cpl),
- note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl->content_version()->label_text, cpl),
+ note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text),
note(VC::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl),
- note(VC::VALID_CPL_ANNOTATION_TEXT, string{"A Test DCP"}, cpl),
- note(VC::VALID_PICTURE_FRAME_SIZES_IN_BYTES, canonical(dir / "video.mxf"), cpl),
- note(VC::CORRECT_PICTURE_HASH, canonical(dir / "video.mxf"), cpl),
- VN(
- VC::VALID_MAIN_PICTURE_ACTIVE_AREA,
- string{"1998x1080"},
- cpl->file().get()
- ).set_cpl_id(cpl->id()),
- note(VC::VALID_CONTENT_KIND, string{"trailer"}, cpl),
- VN(
- VC::INVALID_XML, string("no declaration found for element 'meta:NameX'"), cpl->file().get(), 70
- ).set_cpl_id(cpl->id()),
- VN(
- VC::INVALID_XML, string("element 'meta:NameX' is not allowed for content model '(Name,PropertyList?,)'"), cpl->file().get(), 77).set_cpl_id(cpl->id()),
+ VN(VC::VALID_CPL_ANNOTATION_TEXT).set_cpl_id(cpl->id()).set_annotation_text("A Test DCP"),
+ note(VC::VALID_PICTURE_FRAME_SIZES_IN_BYTES, canonical(dir / "video.mxf"), cpl).set_reel_index(0).set_asset_id(picture_id),
+ note(VC::CORRECT_PICTURE_HASH, canonical(dir / "video.mxf"), cpl).set_reel_index(0).set_asset_id(picture_id),
+ VN(VC::VALID_MAIN_PICTURE_ACTIVE_AREA, canonical(cpl->file().get())).set_cpl_id(cpl->id()).set_size_in_pixels({1998, 1080}),
+ note(VC::VALID_CONTENT_KIND, cpl).set_content_kind("trailer"),
+ VN(VC::INVALID_XML, cpl->file().get(), 70).set_cpl_id(cpl->id()).set_error("no declaration found for element 'meta:NameX'"),
+ VN(VC::INVALID_XML, cpl->file().get(), 77).set_cpl_id(cpl->id()).set_error("element 'meta:NameX' is not allowed for content model '(Name,PropertyList?,)'"),
VN(
VC::MISMATCHED_CPL_HASHES, cpl->file().get()
).set_cpl_id(cpl->id()).set_reference_hash(calc.old_hash()).set_calculated_hash(calc.new_hash()),
@@ -4280,6 +4244,8 @@ BOOST_AUTO_TEST_CASE (verify_invalid_extension_metadata1)
e.replace ("Application", "Fred");
}
+ auto const picture_id = cpl->reels()[0]->main_picture()->asset()->id();
+
using VN = dcp::VerificationNote;
using VC = VN::Code;
@@ -4288,21 +4254,17 @@ BOOST_AUTO_TEST_CASE (verify_invalid_extension_metadata1)
{},
{
note(VC::NONE_ENCRYPTED, cpl),
- note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl->content_version()->label_text, cpl),
+ note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text),
note(VC::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl),
- note(VC::VALID_CPL_ANNOTATION_TEXT, string{"A Test DCP"}, cpl),
- note(VC::VALID_PICTURE_FRAME_SIZES_IN_BYTES, canonical(dir / "video.mxf"), cpl),
- note(VC::CORRECT_PICTURE_HASH, canonical(dir / "video.mxf"), cpl),
- VN(
- VC::VALID_MAIN_PICTURE_ACTIVE_AREA,
- string{"1998x1080"},
- cpl->file().get()
- ).set_cpl_id(cpl->id()),
- note(VC::VALID_CONTENT_KIND, string{"trailer"}, cpl),
+ VN(VC::VALID_CPL_ANNOTATION_TEXT).set_cpl_id(cpl->id()).set_annotation_text("A Test DCP"),
+ note(VC::VALID_PICTURE_FRAME_SIZES_IN_BYTES, canonical(dir / "video.mxf"), cpl).set_reel_index(0).set_asset_id(picture_id),
+ note(VC::CORRECT_PICTURE_HASH, canonical(dir / "video.mxf"), cpl).set_reel_index(0).set_asset_id(picture_id),
+ VN(VC::VALID_MAIN_PICTURE_ACTIVE_AREA, cpl->file().get()).set_cpl_id(cpl->id()).set_size_in_pixels({1998, 1080}),
+ note(VC::VALID_CONTENT_KIND, cpl).set_content_kind("trailer"),
VN(
VC::MISMATCHED_CPL_HASHES, cpl->file().get()
).set_cpl_id(cpl->id()).set_reference_hash(calc.old_hash()).set_calculated_hash(calc.new_hash()),
- VN(VC::INVALID_EXTENSION_METADATA, string("<Name> should be 'Application'"), cpl->file().get()).set_cpl_id(cpl->id())
+ VN(VC::INVALID_EXTENSION_METADATA, cpl->file().get()).set_cpl_id(cpl->id()).set_error("<Name> should be 'Application'"),
});
}
@@ -4322,6 +4284,8 @@ BOOST_AUTO_TEST_CASE (verify_invalid_extension_metadata2)
e.replace ("DCP Constraints Profile", "Fred");
}
+ auto const picture_id = cpl->reels()[0]->main_picture()->asset()->id();
+
using VN = dcp::VerificationNote;
using VC = VN::Code;
@@ -4330,23 +4294,17 @@ BOOST_AUTO_TEST_CASE (verify_invalid_extension_metadata2)
{},
{
note(VC::NONE_ENCRYPTED, cpl),
- note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl->content_version()->label_text, cpl),
+ note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text),
note(VC::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl),
- note(VC::VALID_CPL_ANNOTATION_TEXT, string{"A Test DCP"}, cpl),
- note(VC::VALID_PICTURE_FRAME_SIZES_IN_BYTES, canonical(dir / "video.mxf"), cpl),
- note(VC::CORRECT_PICTURE_HASH, canonical(dir / "video.mxf"), cpl),
- VN(
- VC::VALID_MAIN_PICTURE_ACTIVE_AREA,
- string{"1998x1080"},
- cpl->file().get()
- ).set_cpl_id(cpl->id()),
- note(VC::VALID_CONTENT_KIND, string{"trailer"}, cpl),
+ VN(VC::VALID_CPL_ANNOTATION_TEXT).set_cpl_id(cpl->id()).set_annotation_text("A Test DCP"),
+ note(VC::VALID_PICTURE_FRAME_SIZES_IN_BYTES, canonical(dir / "video.mxf"), cpl).set_reel_index(0).set_asset_id(picture_id),
+ note(VC::CORRECT_PICTURE_HASH, canonical(dir / "video.mxf"), cpl).set_reel_index(0).set_asset_id(picture_id),
+ VN(VC::VALID_MAIN_PICTURE_ACTIVE_AREA, canonical(cpl->file().get())).set_cpl_id(cpl->id()).set_size_in_pixels({1998, 1080}),
+ note(VC::VALID_CONTENT_KIND, cpl).set_content_kind("trailer"),
VN(
VC::MISMATCHED_CPL_HASHES, cpl->file().get()
).set_cpl_id(cpl->id()).set_reference_hash(calc.old_hash()).set_calculated_hash(calc.new_hash()),
- VN(
- VC::INVALID_EXTENSION_METADATA, string("No correctly-formed DCP Constraints Profile found"), cpl->file().get()
- ).set_cpl_id(cpl->id())
+ VN(VC::INVALID_EXTENSION_METADATA, cpl->file().get()).set_cpl_id(cpl->id()).set_error("No correctly-formed DCP Constraints Profile found"),
});
}
@@ -4367,6 +4325,8 @@ BOOST_AUTO_TEST_CASE (verify_invalid_xml_cpl_extension_metadata6)
e.replace ("</meta:Value>", "</meta:ValueX>");
}
+ auto const picture_id = cpl->reels()[0]->main_picture()->asset()->id();
+
using VN = dcp::VerificationNote;
using VC = VN::Code;
@@ -4375,29 +4335,19 @@ BOOST_AUTO_TEST_CASE (verify_invalid_xml_cpl_extension_metadata6)
{},
{
note(VC::NONE_ENCRYPTED, cpl),
- note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl->content_version()->label_text, cpl),
+ note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text),
note(VC::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl),
- note(VC::VALID_CPL_ANNOTATION_TEXT, string{"A Test DCP"}, cpl),
- note(VC::VALID_PICTURE_FRAME_SIZES_IN_BYTES, canonical(dir / "video.mxf"), cpl),
- note(VC::CORRECT_PICTURE_HASH, canonical(dir / "video.mxf"), cpl),
- VN(
- VC::VALID_MAIN_PICTURE_ACTIVE_AREA,
- string{"1998x1080"},
- cpl->file().get()
- ).set_cpl_id(cpl->id()),
- note(VC::VALID_CONTENT_KIND, string{"trailer"}, cpl),
- VN(
- VC::INVALID_XML, string("no declaration found for element 'meta:ValueX'"), cpl->file().get(), 74
- ).set_cpl_id(cpl->id()),
- VN(
- VC::INVALID_XML, string("element 'meta:ValueX' is not allowed for content model '(Name,Value)'"), cpl->file().get(), 75
- ).set_cpl_id(cpl->id()),
+ VN(VC::VALID_CPL_ANNOTATION_TEXT).set_cpl_id(cpl->id()).set_annotation_text("A Test DCP"),
+ note(VC::VALID_PICTURE_FRAME_SIZES_IN_BYTES, canonical(dir / "video.mxf"), cpl).set_reel_index(0).set_asset_id(picture_id),
+ note(VC::CORRECT_PICTURE_HASH, canonical(dir / "video.mxf"), cpl).set_reel_index(0).set_asset_id(picture_id),
+ VN(VC::VALID_MAIN_PICTURE_ACTIVE_AREA, canonical(cpl->file().get())).set_cpl_id(cpl->id()).set_size_in_pixels({1998, 1080}),
+ note(VC::VALID_CONTENT_KIND, cpl).set_content_kind("trailer"),
+ VN(VC::INVALID_XML, cpl->file().get(), 74).set_cpl_id(cpl->id()).set_error("no declaration found for element 'meta:ValueX'"),
+ VN(VC::INVALID_XML, cpl->file().get(), 75).set_cpl_id(cpl->id()).set_error("element 'meta:ValueX' is not allowed for content model '(Name,Value)'"),
VN(
VC::MISMATCHED_CPL_HASHES, cpl->file().get()
).set_cpl_id(cpl->id()).set_reference_hash(calc.old_hash()).set_calculated_hash(calc.new_hash()),
- VN(
- VC::INVALID_EXTENSION_METADATA, string("No correctly-formed DCP Constraints Profile found"), cpl->file().get()
- ).set_cpl_id(cpl->id())
+ VN(VC::INVALID_EXTENSION_METADATA, cpl->file().get()).set_cpl_id(cpl->id()).set_error("No correctly-formed DCP Constraints Profile found"),
});
}
@@ -4417,6 +4367,8 @@ BOOST_AUTO_TEST_CASE (verify_invalid_xml_cpl_extension_metadata7)
e.replace ("SMPTE-RDD-52:2020-Bv2.1", "Fred");
}
+ auto const picture_id = cpl->reels()[0]->main_picture()->asset()->id();
+
using VN = dcp::VerificationNote;
using VC = VN::Code;
@@ -4425,23 +4377,17 @@ BOOST_AUTO_TEST_CASE (verify_invalid_xml_cpl_extension_metadata7)
{},
{
note(VC::NONE_ENCRYPTED, cpl),
- note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl->content_version()->label_text, cpl),
+ note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text),
note(VC::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl),
- note(VC::VALID_CPL_ANNOTATION_TEXT, string{"A Test DCP"}, cpl),
- note(VC::VALID_PICTURE_FRAME_SIZES_IN_BYTES, canonical(dir / "video.mxf"), cpl),
- note(VC::CORRECT_PICTURE_HASH, canonical(dir / "video.mxf"), cpl),
- VN(
- VC::VALID_MAIN_PICTURE_ACTIVE_AREA,
- string{"1998x1080"},
- cpl->file().get()
- ).set_cpl_id(cpl->id()),
- note(VC::VALID_CONTENT_KIND, string{"trailer"}, cpl),
+ VN(VC::VALID_CPL_ANNOTATION_TEXT).set_cpl_id(cpl->id()).set_annotation_text("A Test DCP"),
+ note(VC::VALID_PICTURE_FRAME_SIZES_IN_BYTES, canonical(dir / "video.mxf"), cpl).set_reel_index(0).set_asset_id(picture_id),
+ note(VC::CORRECT_PICTURE_HASH, canonical(dir / "video.mxf"), cpl).set_reel_index(0).set_asset_id(picture_id),
+ VN(VC::VALID_MAIN_PICTURE_ACTIVE_AREA, canonical(cpl->file().get())).set_cpl_id(cpl->id()).set_size_in_pixels({1998, 1080}),
+ note(VC::VALID_CONTENT_KIND, cpl).set_content_kind("trailer"),
VN(
VC::MISMATCHED_CPL_HASHES, cpl->file().get()
).set_cpl_id(cpl->id()).set_reference_hash(calc.old_hash()).set_calculated_hash(calc.new_hash()),
- VN(
- VC::INVALID_EXTENSION_METADATA, string("No correctly-formed DCP Constraints Profile found"), cpl->file().get()
- ).set_cpl_id(cpl->id())
+ VN(VC::INVALID_EXTENSION_METADATA, cpl->file().get()).set_cpl_id(cpl->id()).set_error("No correctly-formed DCP Constraints Profile found"),
});
}
@@ -4462,6 +4408,8 @@ BOOST_AUTO_TEST_CASE (verify_invalid_xml_cpl_extension_metadata8)
e.replace ("</meta:Property>", "</meta:PropertyX>");
}
+ auto const picture_id = cpl->reels()[0]->main_picture()->asset()->id();
+
using VN = dcp::VerificationNote;
using VC = VN::Code;
@@ -4470,22 +4418,19 @@ BOOST_AUTO_TEST_CASE (verify_invalid_xml_cpl_extension_metadata8)
{},
{
note(VC::NONE_ENCRYPTED, cpl),
- note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl->content_version()->label_text, cpl),
+ note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text),
note(VC::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl),
- note(VC::VALID_CPL_ANNOTATION_TEXT, string{"A Test DCP"}, cpl),
- note(VC::VALID_PICTURE_FRAME_SIZES_IN_BYTES, canonical(dir / "video.mxf"), cpl),
- note(VC::CORRECT_PICTURE_HASH, canonical(dir / "video.mxf"), cpl),
- VN(VC::VALID_MAIN_PICTURE_ACTIVE_AREA, string{"1998x1080"}, cpl->file().get()).set_cpl_id(cpl->id()),
- note(VC::VALID_CONTENT_KIND, string{"trailer"}, cpl),
- VN(VC::INVALID_XML, string("no declaration found for element 'meta:PropertyX'"), cpl->file().get(), 72).set_cpl_id(cpl->id()),
- VN(
- VC::INVALID_XML, string("element 'meta:PropertyX' is not allowed for content model '(Property+)'"), cpl->file().get(), 76).set_cpl_id(cpl->id()),
+ VN(VC::VALID_CPL_ANNOTATION_TEXT).set_cpl_id(cpl->id()).set_annotation_text("A Test DCP"),
+ note(VC::VALID_PICTURE_FRAME_SIZES_IN_BYTES, canonical(dir / "video.mxf"), cpl).set_reel_index(0).set_asset_id(picture_id),
+ note(VC::CORRECT_PICTURE_HASH, canonical(dir / "video.mxf"), cpl).set_reel_index(0).set_asset_id(picture_id),
+ VN(VC::VALID_MAIN_PICTURE_ACTIVE_AREA, cpl->file().get()).set_cpl_id(cpl->id()).set_size_in_pixels({1998, 1080}),
+ note(VC::VALID_CONTENT_KIND, cpl).set_content_kind("trailer"),
+ VN(VC::INVALID_XML, cpl->file().get(), 72).set_cpl_id(cpl->id()).set_error("no declaration found for element 'meta:PropertyX'"),
+ VN(VC::INVALID_XML, cpl->file().get(), 76).set_cpl_id(cpl->id()).set_error("element 'meta:PropertyX' is not allowed for content model '(Property+)'"),
VN(
VC::MISMATCHED_CPL_HASHES, cpl->file().get()
).set_cpl_id(cpl->id()).set_reference_hash(calc.old_hash()).set_calculated_hash(calc.new_hash()),
- VN(
- VC::INVALID_EXTENSION_METADATA, string("No correctly-formed DCP Constraints Profile found"), cpl->file().get()
- ).set_cpl_id(cpl->id())
+ VN(VC::INVALID_EXTENSION_METADATA, cpl->file().get()).set_cpl_id(cpl->id()).set_error("No correctly-formed DCP Constraints Profile found"),
});
}
@@ -4506,6 +4451,8 @@ BOOST_AUTO_TEST_CASE (verify_invalid_xml_cpl_extension_metadata9)
e.replace ("</meta:PropertyList>", "</meta:PropertyListX>");
}
+ auto const picture_id = cpl->reels()[0]->main_picture()->asset()->id();
+
using VN = dcp::VerificationNote;
using VC = VN::Code;
@@ -4514,23 +4461,17 @@ BOOST_AUTO_TEST_CASE (verify_invalid_xml_cpl_extension_metadata9)
{},
{
note(VC::NONE_ENCRYPTED, cpl),
- note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl->content_version()->label_text, cpl),
+ note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text),
note(VC::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl),
- note(VC::VALID_CPL_ANNOTATION_TEXT, string{"A Test DCP"}, cpl),
- note(VC::VALID_PICTURE_FRAME_SIZES_IN_BYTES, canonical(dir / "video.mxf"), cpl),
- note(VC::CORRECT_PICTURE_HASH, canonical(dir / "video.mxf"), cpl),
- VN(
- VC::VALID_MAIN_PICTURE_ACTIVE_AREA,
- string{"1998x1080"},
- cpl->file().get()
- ).set_cpl_id(cpl->id()),
- note(VC::VALID_CONTENT_KIND, string{"trailer"}, cpl),
- VN(
- VC::INVALID_XML, string("no declaration found for element 'meta:PropertyListX'"), cpl->file().get(), 71
- ).set_cpl_id(cpl->id()),
- VN(
- VC::INVALID_XML, string("element 'meta:PropertyListX' is not allowed for content model '(Name,PropertyList?,)'"), cpl->file().get(), 77
- ).set_cpl_id(cpl->id()),
+ VN(VC::VALID_CPL_ANNOTATION_TEXT).set_cpl_id(cpl->id()).set_annotation_text("A Test DCP"),
+ note(VC::VALID_PICTURE_FRAME_SIZES_IN_BYTES, canonical(dir / "video.mxf"), cpl).set_reel_index(0).set_asset_id(picture_id),
+ note(VC::CORRECT_PICTURE_HASH, canonical(dir / "video.mxf"), cpl).set_reel_index(0).set_asset_id(picture_id),
+ VN(VC::VALID_MAIN_PICTURE_ACTIVE_AREA, cpl->file().get()).set_cpl_id(cpl->id()).set_size_in_pixels({1998, 1080}),
+ note(VC::VALID_CONTENT_KIND, cpl).set_content_kind("trailer"),
+ VN(VC::INVALID_XML, cpl->file().get(), 71).set_cpl_id(cpl->id()).set_error("no declaration found for element 'meta:PropertyListX'"),
+ VN(VC::INVALID_XML, cpl->file().get(), 77).set_cpl_id(cpl->id()).set_error(
+ "element 'meta:PropertyListX' is not allowed for content model '(Name,PropertyList?,)'"
+ ),
VN(
VC::MISMATCHED_CPL_HASHES, cpl->file().get()
).set_cpl_id(cpl->id()).set_reference_hash(calc.old_hash()).set_calculated_hash(calc.new_hash()),
@@ -4557,7 +4498,10 @@ BOOST_AUTO_TEST_CASE (verify_unsigned_cpl_with_encrypted_content)
e.delete_lines ("<dsig:Signature", "</dsig:Signature>");
}
- auto cpl = std::make_shared<dcp::CPL>(cpl_path);
+ auto dcp = dcp::DCP(dir);
+ dcp.read();
+ auto const cpl = dcp.cpls()[0];
+ auto const picture_id = cpl->reels()[0]->main_picture()->asset()->id();
using VN = dcp::VerificationNote;
using VC = VN::Code;
@@ -4567,15 +4511,15 @@ BOOST_AUTO_TEST_CASE (verify_unsigned_cpl_with_encrypted_content)
{},
{
note(VC::ALL_ENCRYPTED, cpl),
- note(VC::CORRECT_PICTURE_HASH, canonical(dir / "video.mxf"), cpl),
- note(VC::VALID_CPL_ANNOTATION_TEXT, string{"A Test DCP"}, cpl),
- note(VC::VALID_CONTENT_KIND, string{"feature"}, cpl),
- note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl->content_version()->label_text, cpl),
- note(VC::VALID_PICTURE_FRAME_SIZES_IN_BYTES, canonical(dir / "video.mxf"), cpl),
+ note(VC::CORRECT_PICTURE_HASH, canonical(dir / "video.mxf"), cpl).set_reel_index(0).set_asset_id(picture_id),
+ VN(VC::VALID_CPL_ANNOTATION_TEXT).set_cpl_id(cpl->id()).set_annotation_text("A Test DCP"),
+ note(VC::VALID_CONTENT_KIND, cpl).set_content_kind("feature"),
+ note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text),
+ note(VC::VALID_PICTURE_FRAME_SIZES_IN_BYTES, canonical(dir / "video.mxf"), cpl).set_reel_index(0).set_asset_id(picture_id),
VN(
VC::MISMATCHED_CPL_HASHES, canonical(cpl_path)
).set_cpl_id(cpl->id()).set_reference_hash(calc.old_hash()).set_calculated_hash(calc.new_hash()),
- VN(VC::MISMATCHED_PKL_ANNOTATION_TEXT_WITH_CPL, encryption_test_pkl_id(), canonical(pkl)).set_cpl_id(cpl->id()),
+ VN(VC::MISMATCHED_PKL_ANNOTATION_TEXT_WITH_CPL, canonical(pkl)).set_cpl_id(cpl->id()).set_pkl_id(encryption_test_pkl_id()),
VN(VC::MISSING_FFEC_IN_FEATURE).set_cpl_id(cpl->id()),
VN(VC::MISSING_FFMC_IN_FEATURE).set_cpl_id(cpl->id()),
VN(VC::MISSING_FFOC).set_cpl_id(cpl->id()),
@@ -4601,7 +4545,10 @@ BOOST_AUTO_TEST_CASE (verify_unsigned_pkl_with_encrypted_content)
e.delete_lines ("<dsig:Signature", "</dsig:Signature>");
}
- auto cpl = std::make_shared<dcp::CPL>(cpl_path);
+ auto dcp = dcp::DCP(dir);
+ dcp.read();
+ auto const cpl = dcp.cpls()[0];
+ auto const picture_id = cpl->reels()[0]->main_picture()->asset()->id();
using VN = dcp::VerificationNote;
using VC = VN::Code;
@@ -4611,19 +4558,19 @@ BOOST_AUTO_TEST_CASE (verify_unsigned_pkl_with_encrypted_content)
{},
{
note(VC::ALL_ENCRYPTED, cpl),
- note(VC::CORRECT_PICTURE_HASH, canonical(dir / "video.mxf"), cpl),
- note(VC::VALID_CPL_ANNOTATION_TEXT, string{"A Test DCP"}, cpl),
- note(VC::VALID_CONTENT_KIND, string{"feature"}, cpl),
- note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl->content_version()->label_text, cpl),
- note(VC::VALID_PICTURE_FRAME_SIZES_IN_BYTES, canonical(dir / "video.mxf"), cpl),
+ note(VC::CORRECT_PICTURE_HASH, canonical(dir / "video.mxf"), cpl).set_reel_index(0).set_asset_id(picture_id),
+ VN(VC::VALID_CPL_ANNOTATION_TEXT).set_cpl_id(cpl->id()).set_annotation_text("A Test DCP"),
+ note(VC::VALID_CONTENT_KIND, cpl).set_content_kind("feature"),
+ note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text),
+ note(VC::VALID_PICTURE_FRAME_SIZES_IN_BYTES, canonical(dir / "video.mxf"), cpl).set_reel_index(0).set_asset_id(picture_id),
note(VC::MATCHING_CPL_HASHES, cpl),
- VN(VC::MISMATCHED_PKL_ANNOTATION_TEXT_WITH_CPL, encryption_test_pkl_id(), canonical(pkl)).set_cpl_id(cpl->id()),
+ VN(VC::MISMATCHED_PKL_ANNOTATION_TEXT_WITH_CPL, canonical(pkl)).set_cpl_id(cpl->id()).set_pkl_id(encryption_test_pkl_id()),
VN(VC::MISSING_FFEC_IN_FEATURE).set_cpl_id(cpl->id()),
VN(VC::MISSING_FFMC_IN_FEATURE).set_cpl_id(cpl->id()),
VN(VC::MISSING_FFOC).set_cpl_id(cpl->id()),
VN(VC::MISSING_LFOC).set_cpl_id(cpl->id()),
VN(VC::MISSING_CPL_METADATA, canonical(cpl_path)).set_cpl_id(cpl->id()),
- VN(VC::UNSIGNED_PKL_WITH_ENCRYPTED_CONTENT, encryption_test_pkl_id(), canonical(pkl))
+ VN(VC::UNSIGNED_PKL_WITH_ENCRYPTED_CONTENT, canonical(pkl)).set_pkl_id(encryption_test_pkl_id()),
});
}
@@ -4641,7 +4588,10 @@ BOOST_AUTO_TEST_CASE (verify_unsigned_pkl_with_unencrypted_content)
e.delete_lines ("<dsig:Signature", "</dsig:Signature>");
}
- auto cpl = make_shared<dcp::CPL>(find_cpl(dir));
+ auto dcp = dcp::DCP(dir);
+ dcp.read();
+ auto const cpl = dcp.cpls()[0];
+ auto const picture_id = cpl->reels()[0]->main_picture()->asset()->id();
using VN = dcp::VerificationNote;
using VC = VN::Code;
@@ -4650,19 +4600,15 @@ BOOST_AUTO_TEST_CASE (verify_unsigned_pkl_with_unencrypted_content)
{dir},
{},
{
- note(VC::CORRECT_PICTURE_HASH, canonical(dir / "video.mxf"), cpl),
+ note(VC::CORRECT_PICTURE_HASH, canonical(dir / "video.mxf"), cpl).set_reel_index(0).set_asset_id(picture_id),
note(VC::MATCHING_CPL_HASHES, cpl),
note(VC::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl),
note(VC::NONE_ENCRYPTED, cpl),
- VN(
- VC::VALID_MAIN_PICTURE_ACTIVE_AREA,
- string{"1998x1080"},
- canonical(cpl->file().get())
- ).set_cpl_id(cpl->id()),
- note(VC::VALID_CONTENT_KIND, string{"trailer"}, cpl),
- note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl->content_version()->label_text, cpl),
- note(VC::VALID_CPL_ANNOTATION_TEXT, string{"A Test DCP"}, cpl),
- note(VC::VALID_PICTURE_FRAME_SIZES_IN_BYTES, canonical(dir / "video.mxf"), cpl),
+ VN(VC::VALID_MAIN_PICTURE_ACTIVE_AREA, cpl->file().get()).set_cpl_id(cpl->id()).set_size_in_pixels({1998, 1080}),
+ note(VC::VALID_CONTENT_KIND, cpl).set_content_kind("trailer"),
+ note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text),
+ VN(VC::VALID_CPL_ANNOTATION_TEXT).set_cpl_id(cpl->id()).set_annotation_text("A Test DCP"),
+ note(VC::VALID_PICTURE_FRAME_SIZES_IN_BYTES, canonical(dir / "video.mxf"), cpl).set_reel_index(0).set_asset_id(picture_id),
});
}
@@ -4733,18 +4679,14 @@ BOOST_AUTO_TEST_CASE (verify_partially_encrypted)
{dir},
{},
{
- VN(
- VC::VALID_MAIN_PICTURE_ACTIVE_AREA,
- string{"1440x1080"},
- cpl->file().get()
- ).set_cpl_id(cpl->id()),
+ VN(VC::VALID_MAIN_PICTURE_ACTIVE_AREA, cpl->file().get()).set_cpl_id(cpl->id()).set_size_in_pixels({1440, 1080}),
note(VC::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl),
- note(VC::VALID_CPL_ANNOTATION_TEXT, string{"A Test DCP"}, cpl),
- note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl->content_version()->label_text, cpl),
+ VN(VC::VALID_CPL_ANNOTATION_TEXT).set_cpl_id(cpl->id()).set_annotation_text("A Test DCP"),
+ note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text),
note(VC::MATCHING_CPL_HASHES, cpl),
- note(VC::VALID_CONTENT_KIND, string{"trailer"}, cpl),
- note(VC::CORRECT_PICTURE_HASH, canonical(dir / "video.mxf"), cpl),
- note(VC::VALID_PICTURE_FRAME_SIZES_IN_BYTES, canonical(dir / "video.mxf"), cpl),
+ note(VC::VALID_CONTENT_KIND, cpl).set_content_kind("trailer"),
+ note(VC::CORRECT_PICTURE_HASH, canonical(dir / "video.mxf"), cpl).set_reel_index(0).set_asset_id(mp->id()),
+ note(VC::VALID_PICTURE_FRAME_SIZES_IN_BYTES, canonical(dir / "video.mxf"), cpl).set_reel_index(0).set_asset_id(mp->id()),
VN(VC::PARTIALLY_ENCRYPTED).set_cpl_id(cpl->id())
});
}
@@ -4849,14 +4791,16 @@ BOOST_AUTO_TEST_CASE (verify_mismatched_subtitle_resource_id)
{},
{
note(VC::NONE_ENCRYPTED, cpl),
- note(VC::VALID_CPL_ANNOTATION_TEXT, string{"hello"}, cpl),
+ VN(VC::VALID_CPL_ANNOTATION_TEXT).set_cpl_id(cpl->id()).set_annotation_text("hello"),
note(VC::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl),
- note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl->content_version()->label_text, cpl),
+ note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text),
note(VC::MATCHING_CPL_HASHES, cpl),
- note(VC::VALID_CONTENT_KIND, string{"trailer"}, cpl),
- VN(VC::MISMATCHED_TIMED_TEXT_DURATION , "240 0", boost::filesystem::canonical(subs_mxf)).set_cpl_id(cpl->id()),
- VN(VC::MISMATCHED_TIMED_TEXT_RESOURCE_ID).set_cpl_id(cpl->id()),
- VN(VC::INVALID_SUBTITLE_FIRST_TEXT_TIME).set_cpl_id(cpl->id()),
+ note(VC::VALID_CONTENT_KIND, cpl).set_content_kind("trailer"),
+ VN(
+ VC::MISMATCHED_TIMED_TEXT_DURATION, boost::filesystem::canonical(subs_mxf)
+ ).set_cpl_id(cpl->id()).set_reel_index(0).set_asset_id(subs_asset->id()).set_duration(0).set_other_duration(240),
+ VN(VC::MISMATCHED_TIMED_TEXT_RESOURCE_ID).set_cpl_id(cpl->id()).set_reel_index(0).set_asset_id(subs_asset->id()),
+ VN(VC::INVALID_SUBTITLE_FIRST_TEXT_TIME).set_cpl_id(cpl->id()).set_reel_index(0).set_asset_id(subs_asset->id()),
VN(VC::MISSING_CPL_METADATA, cpl->file().get()).set_cpl_id(cpl->id())
});
}
@@ -4924,16 +4868,18 @@ BOOST_AUTO_TEST_CASE (verify_incorrect_timed_text_id)
{},
{
note(VC::NONE_ENCRYPTED, cpl),
- note(VC::VALID_CPL_ANNOTATION_TEXT, string{"hello"}, cpl),
+ VN(VC::VALID_CPL_ANNOTATION_TEXT).set_cpl_id(cpl->id()).set_annotation_text("hello"),
note(VC::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl),
- note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl->content_version()->label_text, cpl),
+ note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text),
note(VC::MATCHING_CPL_HASHES, cpl),
- note(VC::VALID_CONTENT_KIND, string{"trailer"}, cpl),
- VN(VC::MISMATCHED_TIMED_TEXT_DURATION , "240 0", boost::filesystem::canonical(subs_mxf)).set_cpl_id(cpl->id()),
- VN(VC::INCORRECT_TIMED_TEXT_ASSET_ID).set_cpl_id(cpl->id()),
- VN(VC::INVALID_SUBTITLE_FIRST_TEXT_TIME).set_cpl_id(cpl->id()),
+ note(VC::VALID_CONTENT_KIND, cpl).set_content_kind("trailer"),
+ VN(
+ VC::MISMATCHED_TIMED_TEXT_DURATION, boost::filesystem::canonical(subs_mxf)
+ ).set_cpl_id(cpl->id()).set_reel_index(0).set_asset_id(subs_asset->id()).set_duration(0).set_other_duration(240),
+ VN(VC::INCORRECT_TIMED_TEXT_ASSET_ID).set_cpl_id(cpl->id()).set_reel_index(0).set_asset_id(subs_asset->id()),
+ VN(VC::INVALID_SUBTITLE_FIRST_TEXT_TIME).set_cpl_id(cpl->id()).set_reel_index(0).set_asset_id(subs_asset->id()),
VN(VC::MISSING_CPL_METADATA, cpl->file().get()).set_cpl_id(cpl->id()),
- VN(VC::INVALID_SUBTITLE_ISSUE_DATE, string{"2018-10-02T12:25:14+02:00"}).set_cpl_id(cpl->id())
+ VN(VC::INVALID_SUBTITLE_ISSUE_DATE).set_cpl_id(cpl->id()).set_reel_index(0).set_asset_id(subs_asset->id()).set_issue_date("2018-10-02T12:25:14+02:00"),
});
}
@@ -4954,12 +4900,16 @@ BOOST_AUTO_TEST_CASE (verify_threed_marked_as_twod)
{},
{
note(VC::NONE_ENCRYPTED, cpl),
- note(VC::CORRECT_PICTURE_HASH, canonical(path / "0d6f57e6-adac-4e1d-bfbe-d162bf13e2cd_j2c.mxf"), cpl),
- note(VC::VALID_PICTURE_FRAME_SIZES_IN_BYTES, canonical(path / "0d6f57e6-adac-4e1d-bfbe-d162bf13e2cd_j2c.mxf"), cpl),
+ note(VC::CORRECT_PICTURE_HASH, canonical(path / "0d6f57e6-adac-4e1d-bfbe-d162bf13e2cd_j2c.mxf"), cpl).set_reel_index(0).set_asset_id("0d6f57e6-adac-4e1d-bfbe-d162bf13e2cd"),
+ note(
+ VC::VALID_PICTURE_FRAME_SIZES_IN_BYTES,
+ canonical(path / "0d6f57e6-adac-4e1d-bfbe-d162bf13e2cd_j2c.mxf"),
+ cpl
+ ).set_reel_index(0).set_asset_id("0d6f57e6-adac-4e1d-bfbe-d162bf13e2cd"),
note(VC::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl),
note(VC::MATCHING_CPL_HASHES, cpl),
- note(VC::VALID_CONTENT_KIND, string{"trailer"}, cpl),
- VN(VC::THREED_ASSET_MARKED_AS_TWOD, boost::filesystem::canonical(find_file(path, "j2c"))),
+ note(VC::VALID_CONTENT_KIND, cpl).set_content_kind("trailer"),
+ VN(VC::THREED_ASSET_MARKED_AS_TWOD, boost::filesystem::canonical(find_file(path, "j2c"))).set_asset_id("0d6f57e6-adac-4e1d-bfbe-d162bf13e2cd"),
VN(VC::INVALID_STANDARD)
});
@@ -4983,8 +4933,8 @@ BOOST_AUTO_TEST_CASE (verify_unexpected_things_in_main_markers)
);
}
- auto cpl = make_shared<dcp::CPL>(find_cpl(dir));
-
+ auto const cpl = dcp->cpls()[0];
+ auto const picture_id = cpl->reels()[0]->main_picture()->asset()->id();
using VN = dcp::VerificationNote;
using VC = VN::Code;
@@ -4993,22 +4943,18 @@ BOOST_AUTO_TEST_CASE (verify_unexpected_things_in_main_markers)
{},
{
note(VC::NONE_ENCRYPTED, cpl),
- note(VC::VALID_CONTENT_KIND, string{"trailer"}, cpl),
- note(VC::CORRECT_PICTURE_HASH, canonical(dir / "video.mxf"), cpl),
- note(VC::VALID_PICTURE_FRAME_SIZES_IN_BYTES, canonical(dir / "video.mxf"), cpl),
- VN(
- VC::VALID_MAIN_PICTURE_ACTIVE_AREA,
- string{"1998x1080"},
- canonical(cpl->file().get())
- ).set_cpl_id(cpl->id()),
- note(VC::VALID_CPL_ANNOTATION_TEXT, string{"A Test DCP"}, cpl),
+ note(VC::VALID_CONTENT_KIND, cpl).set_content_kind("trailer"),
+ note(VC::CORRECT_PICTURE_HASH, canonical(dir / "video.mxf"), cpl).set_reel_index(0).set_asset_id(picture_id),
+ note(VC::VALID_PICTURE_FRAME_SIZES_IN_BYTES, canonical(dir / "video.mxf"), cpl).set_reel_index(0).set_asset_id(picture_id),
+ VN(VC::VALID_MAIN_PICTURE_ACTIVE_AREA, cpl->file().get()).set_cpl_id(cpl->id()).set_size_in_pixels({1998, 1080}),
+ VN(VC::VALID_CPL_ANNOTATION_TEXT).set_cpl_id(cpl->id()).set_annotation_text("A Test DCP"),
note(VC::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl),
- note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl->content_version()->label_text, cpl),
+ note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text),
VN(
VC::MISMATCHED_CPL_HASHES, canonical(find_cpl(dir))
).set_cpl_id(cpl->id()).set_reference_hash(calc.old_hash()).set_calculated_hash(calc.new_hash()),
- VN(VC::UNEXPECTED_ENTRY_POINT).set_cpl_id(cpl->id()),
- VN(VC::UNEXPECTED_DURATION).set_cpl_id(cpl->id())
+ VN(VC::UNEXPECTED_ENTRY_POINT).set_cpl_id(cpl->id()).set_reel_index(0),
+ VN(VC::UNEXPECTED_DURATION).set_cpl_id(cpl->id()).set_reel_index(0)
});
}
@@ -5027,7 +4973,8 @@ BOOST_AUTO_TEST_CASE(verify_invalid_content_kind)
e.replace("trailer", "trip");
}
- auto cpl = std::make_shared<dcp::CPL>(find_cpl(dir));
+ auto const cpl = dcp->cpls()[0];
+ auto const picture_id = cpl->reels()[0]->main_picture()->asset()->id();
using VN = dcp::VerificationNote;
using VC = VN::Code;
@@ -5037,21 +4984,16 @@ BOOST_AUTO_TEST_CASE(verify_invalid_content_kind)
{},
{
note(VC::NONE_ENCRYPTED, cpl),
- VN(
- VC::VALID_MAIN_PICTURE_ACTIVE_AREA,
- string{"1998x1080"},
- canonical(cpl->file().get())
- ).set_cpl_id(cpl->id()),
+ VN(VC::VALID_MAIN_PICTURE_ACTIVE_AREA, cpl->file().get()).set_cpl_id(cpl->id()).set_size_in_pixels({1998, 1080}),
note(VC::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl),
- note(VC::VALID_CPL_ANNOTATION_TEXT, string{"A Test DCP"}, cpl),
- note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl->content_version()->label_text, cpl),
- note(VC::CORRECT_PICTURE_HASH, canonical(dir / "video.mxf"), cpl),
- note(VC::VALID_PICTURE_FRAME_SIZES_IN_BYTES, canonical(dir / "video.mxf"), cpl),
+ VN(VC::VALID_CPL_ANNOTATION_TEXT).set_cpl_id(cpl->id()).set_annotation_text("A Test DCP"),
+ note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text),
+ note(VC::CORRECT_PICTURE_HASH, canonical(dir / "video.mxf"), cpl).set_reel_index(0).set_asset_id(picture_id),
+ note(VC::VALID_PICTURE_FRAME_SIZES_IN_BYTES, canonical(dir / "video.mxf"), cpl).set_reel_index(0).set_asset_id(picture_id),
VN(
VC::MISMATCHED_CPL_HASHES, canonical(find_cpl(dir))
).set_cpl_id(cpl->id()).set_reference_hash(calc.old_hash()).set_calculated_hash(calc.new_hash()),
- VN(VC::INVALID_CONTENT_KIND, string("trip")
- ).set_cpl_id(cpl->id()),
+ VN(VC::INVALID_CONTENT_KIND).set_cpl_id(cpl->id()).set_content_kind("trip"),
});
}
@@ -5071,7 +5013,8 @@ BOOST_AUTO_TEST_CASE(verify_valid_content_kind)
e.replace("<ContentKind>trailer</ContentKind>", "<ContentKind scope=\"http://bobs.contents/\">trip</ContentKind>");
}
- auto cpl = std::make_shared<dcp::CPL>(find_cpl(dir));
+ auto const cpl = dcp->cpls()[0];
+ auto const picture_id = cpl->reels()[0]->main_picture()->asset()->id();
using VN = dcp::VerificationNote;
using VC = VN::Code;
@@ -5081,16 +5024,12 @@ BOOST_AUTO_TEST_CASE(verify_valid_content_kind)
{},
{
note(VC::NONE_ENCRYPTED, cpl),
- note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl->content_version()->label_text, cpl),
+ note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text),
note(VC::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl),
- note(VC::VALID_CPL_ANNOTATION_TEXT, string{"A Test DCP"}, cpl),
- note(VC::CORRECT_PICTURE_HASH, canonical(dir / "video.mxf"), cpl),
- note(VC::VALID_PICTURE_FRAME_SIZES_IN_BYTES, canonical(dir / "video.mxf"), cpl),
- VN(
- VC::VALID_MAIN_PICTURE_ACTIVE_AREA,
- string{"1998x1080"},
- canonical(cpl->file().get())
- ).set_cpl_id(cpl->id()),
+ VN(VC::VALID_CPL_ANNOTATION_TEXT).set_cpl_id(cpl->id()).set_annotation_text("A Test DCP"),
+ note(VC::CORRECT_PICTURE_HASH, canonical(dir / "video.mxf"), cpl).set_reel_index(0).set_asset_id(picture_id),
+ note(VC::VALID_PICTURE_FRAME_SIZES_IN_BYTES, canonical(dir / "video.mxf"), cpl).set_reel_index(0).set_asset_id(picture_id),
+ VN(VC::VALID_MAIN_PICTURE_ACTIVE_AREA, cpl->file().get()).set_cpl_id(cpl->id()).set_size_in_pixels({1998, 1080}),
VN(
VC::MISMATCHED_CPL_HASHES, canonical(find_cpl(dir))
).set_cpl_id(cpl->id()).set_reference_hash(calc.old_hash()).set_calculated_hash(calc.new_hash()),
@@ -5117,7 +5056,8 @@ BOOST_AUTO_TEST_CASE(verify_invalid_main_picture_active_area_1)
}
dcp::PKL pkl(find_pkl(dir));
- auto cpl = std::make_shared<dcp::CPL>(find_cpl(dir));
+ auto const cpl = dcp->cpls()[0];
+ auto const picture_id = cpl->reels()[0]->main_picture()->id();
using VN = dcp::VerificationNote;
using VC = VN::Code;
@@ -5127,21 +5067,21 @@ BOOST_AUTO_TEST_CASE(verify_invalid_main_picture_active_area_1)
{},
{
note(VC::NONE_ENCRYPTED, cpl),
- note(VC::VALID_CONTENT_KIND, string{"trailer"}, cpl),
- note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl->content_version()->label_text, cpl),
+ note(VC::VALID_CONTENT_KIND, cpl).set_content_kind("trailer"),
+ note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text),
note(VC::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl),
- note(VC::VALID_CPL_ANNOTATION_TEXT, string{"A Test DCP"}, cpl),
- note(VC::CORRECT_PICTURE_HASH, canonical(dir / "video.mxf"), cpl),
- note(VC::VALID_PICTURE_FRAME_SIZES_IN_BYTES, canonical(dir / "video.mxf"), cpl),
+ VN(VC::VALID_CPL_ANNOTATION_TEXT).set_cpl_id(cpl->id()).set_annotation_text("A Test DCP"),
+ note(VC::CORRECT_PICTURE_HASH, canonical(dir / "video.mxf"), cpl).set_reel_index(0).set_asset_id(picture_id),
+ note(VC::VALID_PICTURE_FRAME_SIZES_IN_BYTES, canonical(dir / "video.mxf"), cpl).set_reel_index(0).set_asset_id(picture_id),
VN(
VC::MISMATCHED_CPL_HASHES, canonical(find_cpl(dir))
).set_cpl_id(cpl->id()).set_reference_hash(calc.old_hash()).set_calculated_hash(calc.new_hash()),
VN(
- VC::INVALID_MAIN_PICTURE_ACTIVE_AREA, "width 1997 is not a multiple of 2", canonical(find_cpl(dir))
- ).set_cpl_id(cpl->id()),
+ VC::INVALID_MAIN_PICTURE_ACTIVE_AREA, canonical(find_cpl(dir))
+ ).set_cpl_id(cpl->id()).set_error("width 1997 is not a multiple of 2"),
VN(
- VC::INVALID_MAIN_PICTURE_ACTIVE_AREA, "height 4080 is bigger than the asset height 1080", canonical(find_cpl(dir))
- ).set_cpl_id(cpl->id()),
+ VC::INVALID_MAIN_PICTURE_ACTIVE_AREA, canonical(find_cpl(dir))
+ ).set_cpl_id(cpl->id()).set_reel_index(0).set_asset_id(picture_id).set_error("height 4080 is bigger than the asset height 1080"),
});
}
@@ -5166,6 +5106,7 @@ BOOST_AUTO_TEST_CASE(verify_invalid_main_picture_active_area_2)
dcp::PKL pkl(find_pkl(dir));
auto cpl = std::make_shared<dcp::CPL>(find_cpl(dir));
+ auto const picture_id = cpl->reels()[0]->main_picture()->id();
using VN = dcp::VerificationNote;
using VC = VN::Code;
@@ -5175,24 +5116,24 @@ BOOST_AUTO_TEST_CASE(verify_invalid_main_picture_active_area_2)
{},
{
note(VC::NONE_ENCRYPTED, cpl),
- note(VC::VALID_CONTENT_KIND, string{"trailer"}, cpl),
- note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl->content_version()->label_text, cpl),
+ note(VC::VALID_CONTENT_KIND, cpl).set_content_kind("trailer"),
+ note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text),
note(VC::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl),
- note(VC::VALID_CPL_ANNOTATION_TEXT, string{"A Test DCP"}, cpl),
- note(VC::CORRECT_PICTURE_HASH, canonical(dir / "video.mxf"), cpl),
- note(VC::VALID_PICTURE_FRAME_SIZES_IN_BYTES, canonical(dir / "video.mxf"), cpl),
+ VN(VC::VALID_CPL_ANNOTATION_TEXT).set_cpl_id(cpl->id()).set_annotation_text("A Test DCP"),
+ note(VC::CORRECT_PICTURE_HASH, canonical(dir / "video.mxf"), cpl).set_reel_index(0).set_asset_id(picture_id),
+ note(VC::VALID_PICTURE_FRAME_SIZES_IN_BYTES, canonical(dir / "video.mxf"), cpl).set_reel_index(0).set_asset_id(picture_id),
VN(
VC::MISMATCHED_CPL_HASHES, canonical(find_cpl(dir))
).set_cpl_id(cpl->id()).set_reference_hash(calc.old_hash()).set_calculated_hash(calc.new_hash()),
VN(
- VC::INVALID_MAIN_PICTURE_ACTIVE_AREA, "height 5125 is not a multiple of 2", canonical(find_cpl(dir))
- ).set_cpl_id(cpl->id()),
+ VC::INVALID_MAIN_PICTURE_ACTIVE_AREA, canonical(find_cpl(dir))
+ ).set_cpl_id(cpl->id()).set_error("height 5125 is not a multiple of 2"),
VN(
- VC::INVALID_MAIN_PICTURE_ACTIVE_AREA, "width 9900 is bigger than the asset width 1998", canonical(find_cpl(dir))
- ).set_cpl_id(cpl->id()),
+ VC::INVALID_MAIN_PICTURE_ACTIVE_AREA, canonical(find_cpl(dir))
+ ).set_cpl_id(cpl->id()).set_reel_index(0).set_asset_id(picture_id).set_error("width 9900 is bigger than the asset width 1998"),
VN(
- VC::INVALID_MAIN_PICTURE_ACTIVE_AREA, "height 5125 is bigger than the asset height 1080", canonical(find_cpl(dir))
- ).set_cpl_id(cpl->id())
+ VC::INVALID_MAIN_PICTURE_ACTIVE_AREA, canonical(find_cpl(dir))
+ ).set_cpl_id(cpl->id()).set_reel_index(0).set_asset_id(picture_id).set_error("height 5125 is bigger than the asset height 1080"),
});
}
@@ -5223,16 +5164,12 @@ BOOST_AUTO_TEST_CASE(verify_duplicate_pkl_asset_ids)
{
note(VC::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl),
note(VC::MATCHING_CPL_HASHES, cpl),
- VN(
- VC::VALID_MAIN_PICTURE_ACTIVE_AREA,
- string{"1998x1080"},
- canonical(cpl->file().get())
- ).set_cpl_id(cpl->id()),
- note(VC::VALID_CONTENT_KIND, string{"trailer"}, cpl),
- note(VC::VALID_CPL_ANNOTATION_TEXT, string{"A Test DCP"}, cpl),
- note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl->content_version()->label_text, cpl),
+ VN(VC::VALID_MAIN_PICTURE_ACTIVE_AREA, canonical(cpl->file().get())).set_cpl_id(cpl->id()).set_size_in_pixels({1998, 1080}),
+ note(VC::VALID_CONTENT_KIND, cpl).set_content_kind("trailer"),
+ VN(VC::VALID_CPL_ANNOTATION_TEXT).set_cpl_id(cpl->id()).set_annotation_text("A Test DCP"),
+ note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text),
note(VC::NONE_ENCRYPTED, cpl),
- { VC::DUPLICATE_ASSET_ID_IN_PKL, pkl.id(), canonical(find_pkl(dir)) },
+ VN(VC::DUPLICATE_ASSET_ID_IN_PKL, canonical(find_pkl(dir))).set_pkl_id(pkl.id()),
});
}
@@ -5264,21 +5201,15 @@ BOOST_AUTO_TEST_CASE(verify_duplicate_assetmap_asset_ids)
{
note(VC::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl),
note(VC::MATCHING_CPL_HASHES, cpl),
- VN(
- VC::VALID_MAIN_PICTURE_ACTIVE_AREA,
- string{"1998x1080"},
- canonical(cpl->file().get())
- ).set_cpl_id(cpl->id()),
- note(VC::VALID_CONTENT_KIND, string{"trailer"}, cpl),
- note(VC::VALID_CPL_ANNOTATION_TEXT, string{"A Test DCP"}, cpl),
- note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl->content_version()->label_text, cpl),
+ VN(VC::VALID_MAIN_PICTURE_ACTIVE_AREA, canonical(cpl->file().get())).set_cpl_id(cpl->id()).set_size_in_pixels({1998, 1080}),
+ note(VC::VALID_CONTENT_KIND, cpl).set_content_kind("trailer"),
+ VN(VC::VALID_CPL_ANNOTATION_TEXT).set_cpl_id(cpl->id()).set_annotation_text("A Test DCP"),
+ note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text),
note(VC::NONE_ENCRYPTED, cpl),
VN(
- VC::DUPLICATE_ASSET_ID_IN_ASSETMAP, asset_map.id(), canonical(find_asset_map(dir))
- ),
- VN(
- VC::EXTERNAL_ASSET, string("5407b210-4441-4e97-8b16-8bdc7c12da54")
- )
+ VC::DUPLICATE_ASSET_ID_IN_ASSETMAP, canonical(find_asset_map(dir))
+ ).set_asset_map_id(asset_map.id()),
+ VN(VC::EXTERNAL_ASSET).set_asset_id("5407b210-4441-4e97-8b16-8bdc7c12da54"),
});
}
@@ -5306,12 +5237,16 @@ BOOST_AUTO_TEST_CASE(verify_mismatched_sound_channel_counts)
cpl->set_main_picture_active_area(dcp::Size(1998, 1080));
cpl->set_version_number(1);
- {
+ std::vector<string> picture_ids;
+ std::vector<string> sound_ids;
+ {
/* Reel with 2 channels of audio */
auto mp = simple_picture(path, "1", frames, {});
+ picture_ids.push_back(mp->id());
auto ms = simple_sound(path, "1", mxf_meta, "en-US", frames, sample_rate, {}, 2);
+ sound_ids.push_back(ms->id());
auto reel = make_shared<dcp::Reel>(
std::make_shared<dcp::ReelMonoPictureAsset>(mp, 0),
@@ -5329,7 +5264,9 @@ BOOST_AUTO_TEST_CASE(verify_mismatched_sound_channel_counts)
/* Reel with 6 channels of audio */
auto mp = simple_picture(path, "2", frames, {});
+ picture_ids.push_back(mp->id());
auto ms = simple_sound(path, "2", mxf_meta, "en-US", frames, sample_rate, {}, 6);
+ sound_ids.push_back(ms->id());
auto reel = make_shared<dcp::Reel>(
std::make_shared<dcp::ReelMonoPictureAsset>(mp, 0),
@@ -5357,21 +5294,17 @@ BOOST_AUTO_TEST_CASE(verify_mismatched_sound_channel_counts)
note(VC::NONE_ENCRYPTED, cpl),
note(VC::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl),
note(VC::MATCHING_CPL_HASHES, cpl),
- VN(
- VC::VALID_MAIN_PICTURE_ACTIVE_AREA,
- string{"1998x1080"},
- cpl->file().get()
- ).set_cpl_id(cpl->id()),
- note(VC::VALID_CONTENT_KIND, string{"trailer"}, cpl),
- note(VC::VALID_CPL_ANNOTATION_TEXT, string{"hello"}, cpl),
- note(VC::CORRECT_PICTURE_HASH, canonical(path / "video1.mxf"), cpl),
- note(VC::VALID_PICTURE_FRAME_SIZES_IN_BYTES, canonical(path / "video1.mxf"), cpl),
- note(VC::CORRECT_PICTURE_HASH, canonical(path / "video2.mxf"), cpl),
- note(VC::VALID_PICTURE_FRAME_SIZES_IN_BYTES, canonical(path / "video2.mxf"), cpl),
- note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl->content_version()->label_text, cpl),
+ VN(VC::VALID_MAIN_PICTURE_ACTIVE_AREA, cpl->file().get()).set_cpl_id(cpl->id()).set_size_in_pixels({1998, 1080}),
+ note(VC::VALID_CONTENT_KIND, cpl).set_content_kind("trailer"),
+ VN(VC::VALID_CPL_ANNOTATION_TEXT).set_cpl_id(cpl->id()).set_annotation_text("hello"),
+ note(VC::CORRECT_PICTURE_HASH, canonical(path / "video1.mxf"), cpl).set_reel_index(0).set_asset_id(picture_ids[0]),
+ note(VC::VALID_PICTURE_FRAME_SIZES_IN_BYTES, canonical(path / "video1.mxf"), cpl).set_reel_index(0).set_asset_id(picture_ids[0]),
+ note(VC::CORRECT_PICTURE_HASH, canonical(path / "video2.mxf"), cpl).set_reel_index(1).set_asset_id(picture_ids[1]),
+ note(VC::VALID_PICTURE_FRAME_SIZES_IN_BYTES, canonical(path / "video2.mxf"), cpl).set_reel_index(1).set_asset_id(picture_ids[1]),
+ note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text),
VN(
VC::MISMATCHED_SOUND_CHANNEL_COUNTS, canonical(find_file(path, "audio2"))
- ).set_cpl_id(cpl->id())
+ ).set_cpl_id(cpl->id()).set_reel_index(1).set_asset_id(sound_ids[1])
});
}
@@ -5428,21 +5361,16 @@ BOOST_AUTO_TEST_CASE(verify_invalid_main_sound_configuration)
note(VC::NONE_ENCRYPTED, cpl),
note(VC::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl),
note(VC::MATCHING_CPL_HASHES, cpl),
- note(VC::VALID_CONTENT_KIND, string{"trailer"}, cpl),
- note(VC::VALID_CPL_ANNOTATION_TEXT, string{"hello"}, cpl),
- note(VC::CORRECT_PICTURE_HASH, canonical(path / "video1.mxf"), cpl),
- note(VC::VALID_PICTURE_FRAME_SIZES_IN_BYTES, canonical(path / "video1.mxf"), cpl),
- VN(
- VC::VALID_MAIN_PICTURE_ACTIVE_AREA,
- string{"1998x1080"},
- cpl->file().get()
- ).set_cpl_id(cpl->id()),
- note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl->content_version()->label_text, cpl),
+ note(VC::VALID_CONTENT_KIND, cpl).set_content_kind("trailer"),
+ VN(VC::VALID_CPL_ANNOTATION_TEXT).set_cpl_id(cpl->id()).set_annotation_text("hello"),
+ note(VC::CORRECT_PICTURE_HASH, canonical(path / "video1.mxf"), cpl).set_reel_index(0).set_asset_id(mp->id()),
+ note(VC::VALID_PICTURE_FRAME_SIZES_IN_BYTES, canonical(path / "video1.mxf"), cpl).set_reel_index(0).set_asset_id(mp->id()),
+ VN(VC::VALID_MAIN_PICTURE_ACTIVE_AREA, cpl->file().get()).set_cpl_id(cpl->id()).set_size_in_pixels({1998, 1080}),
+ note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text),
VN(
VC::INVALID_MAIN_SOUND_CONFIGURATION,
- std::string{"MainSoundConfiguration has 6 channels but sound assets have 2"},
canonical(find_cpl(path))
- ).set_cpl_id(cpl->id())
+ ).set_cpl_id(cpl->id()).set_error("MainSoundConfiguration has 6 channels but sound assets have 2"),
});
}
@@ -5502,16 +5430,12 @@ BOOST_AUTO_TEST_CASE(verify_invalid_tile_part_size)
vector<VN> expected = {
note(VC::NONE_ENCRYPTED, cpl),
- VN(
- VC::VALID_MAIN_PICTURE_ACTIVE_AREA,
- string{"1998x1080"},
- cpl->file().get()
- ).set_cpl_id(cpl->id()),
- note(VC::CORRECT_PICTURE_HASH, canonical(path / "video.mxf"), cpl),
- note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl->content_version()->label_text, cpl),
+ VN(VC::VALID_MAIN_PICTURE_ACTIVE_AREA, cpl->file().get()).set_cpl_id(cpl->id()).set_size_in_pixels({1998, 1080}),
+ note(VC::CORRECT_PICTURE_HASH, canonical(path / "video.mxf"), cpl).set_reel_index(0).set_asset_id(mp->id()),
+ note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text),
note(VC::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl),
- note(VC::VALID_CONTENT_KIND, string{"trailer"}, cpl),
- note(VC::VALID_CPL_ANNOTATION_TEXT, string{"A Test DCP"}, cpl),
+ note(VC::VALID_CONTENT_KIND, cpl).set_content_kind("trailer"),
+ VN(VC::VALID_CPL_ANNOTATION_TEXT).set_cpl_id(cpl->id()).set_annotation_text("A Test DCP"),
note(VC::MATCHING_CPL_HASHES, cpl),
VN(VC::MISSING_FFOC).set_cpl_id(cpl->id()),
VN(VC::MISSING_LFOC).set_cpl_id(cpl->id())
@@ -5520,7 +5444,7 @@ BOOST_AUTO_TEST_CASE(verify_invalid_tile_part_size)
for (auto frame = 0; frame < 24; frame++) {
expected.push_back(
VN(VC::INVALID_PICTURE_FRAME_SIZE_IN_BYTES, canonical(path / "video.mxf")
- ).set_frame(frame).set_frame_rate(24).set_cpl_id(cpl->id())
+ ).set_frame(frame).set_frame_rate(dcp::Fraction(24, 1)).set_cpl_id(cpl->id()).set_reel_index(0).set_asset_id(mp->id())
);
}
@@ -5533,9 +5457,9 @@ BOOST_AUTO_TEST_CASE(verify_invalid_tile_part_size)
for (auto frame = 0; frame < 24; frame++) {
for (auto component = 0; component < 3; component++) {
expected.push_back(
- VN(
- VC::INVALID_JPEG2000_TILE_PART_SIZE
- ).set_frame(frame).set_frame_rate(24).set_component(component).set_size(component_sizes[component]).set_cpl_id(cpl->id())
+ VN(VC::INVALID_JPEG2000_TILE_PART_SIZE)
+ .set_frame(frame).set_frame_rate(dcp::Fraction(24, 1)).set_component(component)
+ .set_size_in_bytes(component_sizes[component]).set_cpl_id(cpl->id()).set_reel_index(0).set_asset_id(mp->id())
);
}
}
@@ -5562,17 +5486,21 @@ BOOST_AUTO_TEST_CASE(verify_too_many_subtitle_namespaces)
note(VC::NONE_ENCRYPTED, cpl),
note(VC::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl),
note(VC::MATCHING_CPL_HASHES, cpl),
- note(VC::VALID_CONTENT_KIND, string{"feature"}, cpl),
- note(VC::VALID_CPL_ANNOTATION_TEXT, string{"Dcp_FTR-1_F_XX-XX_MOS_2K_20230407_SMPTE_OV"}, cpl),
- note(VC::CORRECT_PICTURE_HASH, canonical(dir / "j2c_42b34dcd-caa5-4c7b-aa0f-66a590947ba1.mxf"), cpl),
- note(VC::VALID_PICTURE_FRAME_SIZES_IN_BYTES, canonical(dir / "j2c_42b34dcd-caa5-4c7b-aa0f-66a590947ba1.mxf"), cpl),
- note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl->content_version()->label_text, cpl),
+ note(VC::VALID_CONTENT_KIND, cpl).set_content_kind("feature"),
+ VN(VC::VALID_CPL_ANNOTATION_TEXT).set_cpl_id(cpl->id()).set_annotation_text("Dcp_FTR-1_F_XX-XX_MOS_2K_20230407_SMPTE_OV"),
+ note(VC::CORRECT_PICTURE_HASH, canonical(dir / "j2c_42b34dcd-caa5-4c7b-aa0f-66a590947ba1.mxf"), cpl).set_reel_index(0).set_asset_id("42b34dcd-caa5-4c7b-aa0f-66a590947ba1"),
+ note(
+ VC::VALID_PICTURE_FRAME_SIZES_IN_BYTES,
+ canonical(dir / "j2c_42b34dcd-caa5-4c7b-aa0f-66a590947ba1.mxf"),
+ cpl
+ ).set_reel_index(0).set_asset_id("42b34dcd-caa5-4c7b-aa0f-66a590947ba1"),
+ note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text),
VN(VC::MISSING_FFEC_IN_FEATURE).set_cpl_id(cpl->id()),
VN(VC::MISSING_FFMC_IN_FEATURE).set_cpl_id(cpl->id()),
- VN(VC::INVALID_SUBTITLE_FIRST_TEXT_TIME).set_cpl_id(cpl->id()),
- VN(VC::MISSING_SUBTITLE_LANGUAGE, canonical(find_file(dir, "sub_"))).set_cpl_id(cpl->id()),
+ VN(VC::INVALID_SUBTITLE_FIRST_TEXT_TIME).set_cpl_id(cpl->id()).set_reel_index(0).set_asset_id("315de731-1173-484c-9a35-bdacf5a9d99d"),
+ VN(VC::MISSING_SUBTITLE_LANGUAGE, canonical(find_file(dir, "sub_"))).set_cpl_id(cpl->id()).set_reel_index(0).set_asset_id("315de731-1173-484c-9a35-bdacf5a9d99d"),
VN(VC::MISSING_CPL_METADATA, canonical(find_file(dir, "cpl_"))).set_cpl_id(cpl->id()),
- VN(VC::INCORRECT_SUBTITLE_NAMESPACE_COUNT, std::string{"315de731-1173-484c-9a35-bdacf5a9d99d"}).set_cpl_id(cpl->id()),
+ VN(VC::INCORRECT_SUBTITLE_NAMESPACE_COUNT).set_cpl_id(cpl->id()).set_reel_index(0).set_asset_id("315de731-1173-484c-9a35-bdacf5a9d99d")
});
}
@@ -5600,10 +5528,10 @@ BOOST_AUTO_TEST_CASE(verify_missing_load_font_for_font)
note(VC::NONE_ENCRYPTED, cpl),
note(VC::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl),
note(VC::MATCHING_CPL_HASHES, cpl),
- note(VC::VALID_CONTENT_KIND, string{"trailer"}, cpl),
- note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl->content_version()->label_text, cpl),
+ note(VC::VALID_CONTENT_KIND, cpl).set_content_kind("trailer"),
+ note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text),
{ VC::INVALID_STANDARD },
- VN(VC::MISSING_LOAD_FONT_FOR_FONT).set_id("theFontId").set_cpl_id(cpl->id())
+ VN(VC::MISSING_LOAD_FONT_FOR_FONT).set_load_font_id("theFontId").set_cpl_id(cpl->id()).set_reel_index(0).set_asset_id(asset->id())
});
}
@@ -5648,6 +5576,8 @@ BOOST_AUTO_TEST_CASE(verify_missing_load_font)
cpl->reels()[0]->add(reel_subs);
dcp->write_xml();
+ auto const picture_id = dcp->cpls()[0]->reels()[0]->main_picture()->asset()->id();
+
using VN = dcp::VerificationNote;
using VC = VN::Code;
@@ -5658,17 +5588,13 @@ BOOST_AUTO_TEST_CASE(verify_missing_load_font)
note(VC::NONE_ENCRYPTED, cpl),
note(VC::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl),
note(VC::MATCHING_CPL_HASHES, cpl),
- VN(
- VC::VALID_MAIN_PICTURE_ACTIVE_AREA,
- string{"1998x1080"},
- cpl->file().get()
- ).set_cpl_id(cpl->id()),
- note(VC::VALID_CONTENT_KIND, string{"trailer"}, cpl),
- note(VC::VALID_CPL_ANNOTATION_TEXT, string{"A Test DCP"}, cpl),
- note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl->content_version()->label_text, cpl),
- note(VC::CORRECT_PICTURE_HASH, canonical(dir / "video.mxf"), cpl),
- note(VC::VALID_PICTURE_FRAME_SIZES_IN_BYTES, canonical(dir / "video.mxf"), cpl),
- VN(VC::MISSING_LOAD_FONT).set_id(reel_subs->id()).set_cpl_id(cpl->id())
+ VN(VC::VALID_MAIN_PICTURE_ACTIVE_AREA, cpl->file().get()).set_cpl_id(cpl->id()).set_size_in_pixels({1998, 1080}),
+ note(VC::VALID_CONTENT_KIND, cpl).set_content_kind("trailer"),
+ VN(VC::VALID_CPL_ANNOTATION_TEXT).set_cpl_id(cpl->id()).set_annotation_text("A Test DCP"),
+ note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text),
+ note(VC::CORRECT_PICTURE_HASH, canonical(dir / "video.mxf"), cpl).set_reel_index(0).set_asset_id(picture_id),
+ note(VC::VALID_PICTURE_FRAME_SIZES_IN_BYTES, canonical(dir / "video.mxf"), cpl).set_reel_index(0).set_asset_id(picture_id),
+ VN(VC::MISSING_LOAD_FONT).set_asset_id(reel_subs->id()).set_cpl_id(cpl->id()).set_reel_index(0)
});
}
@@ -5701,15 +5627,11 @@ BOOST_AUTO_TEST_CASE(verify_spots_wrong_asset)
note(VC::NONE_ENCRYPTED, cpl),
note(VC::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl),
note(VC::MATCHING_CPL_HASHES, cpl),
- VN(
- VC::VALID_MAIN_PICTURE_ACTIVE_AREA,
- string{"1998x1080"},
- cpl->file().get()
- ).set_cpl_id(cpl->id()),
- note(VC::VALID_CONTENT_KIND, string{"trailer"}, cpl),
- note(VC::VALID_CPL_ANNOTATION_TEXT, string{"A Test DCP"}, cpl),
- note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl->content_version()->label_text, cpl),
- VN(VC::MISMATCHED_ASSET_MAP_ID).set_id(asset_1).set_other_id(asset_2)
+ VN(VC::VALID_MAIN_PICTURE_ACTIVE_AREA, cpl->file().get()).set_cpl_id(cpl->id()).set_size_in_pixels({1998, 1080}),
+ note(VC::VALID_CONTENT_KIND, cpl).set_content_kind("trailer"),
+ VN(VC::VALID_CPL_ANNOTATION_TEXT).set_cpl_id(cpl->id()).set_annotation_text("A Test DCP"),
+ note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text),
+ VN(VC::MISMATCHED_ASSET_MAP_ID).set_asset_id(asset_1).set_other_asset_id(asset_2)
});
}
@@ -5724,6 +5646,7 @@ BOOST_AUTO_TEST_CASE(verify_cpl_content_version_label_text_empty)
auto cpl = dcp->cpls()[0];
cpl->set_content_version(dcp::ContentVersion(""));
dcp->write_xml();
+ auto picture_id = dcp->cpls()[0]->reels()[0]->main_picture()->asset()->id();
using VN = dcp::VerificationNote;
using VC = VN::Code;
@@ -5732,18 +5655,14 @@ BOOST_AUTO_TEST_CASE(verify_cpl_content_version_label_text_empty)
{dir},
{},
{
- VN(
- VC::VALID_MAIN_PICTURE_ACTIVE_AREA,
- string{"1998x1080"},
- cpl->file().get()
- ).set_cpl_id(cpl->id()),
+ VN(VC::VALID_MAIN_PICTURE_ACTIVE_AREA, cpl->file().get()).set_cpl_id(cpl->id()).set_size_in_pixels({1998, 1080}),
note(VC::NONE_ENCRYPTED, cpl),
note(VC::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl),
note(VC::MATCHING_CPL_HASHES, cpl),
- note(VC::VALID_CONTENT_KIND, string{"trailer"}, cpl),
- note(VC::VALID_CPL_ANNOTATION_TEXT, string{"A Test DCP"}, cpl),
- note(VC::CORRECT_PICTURE_HASH, canonical(dir / "video.mxf"), cpl),
- note(VC::VALID_PICTURE_FRAME_SIZES_IN_BYTES, canonical(dir / "video.mxf"), cpl),
+ note(VC::VALID_CONTENT_KIND, cpl).set_content_kind("trailer"),
+ VN(VC::VALID_CPL_ANNOTATION_TEXT).set_cpl_id(cpl->id()).set_annotation_text("A Test DCP"),
+ note(VC::CORRECT_PICTURE_HASH, canonical(dir / "video.mxf"), cpl).set_reel_index(0).set_asset_id(picture_id),
+ note(VC::VALID_PICTURE_FRAME_SIZES_IN_BYTES, canonical(dir / "video.mxf"), cpl).set_reel_index(0).set_asset_id(picture_id),
VN(VC::EMPTY_CONTENT_VERSION_LABEL_TEXT, cpl->file().get()).set_cpl_id(cpl->id())
});
}
@@ -5772,9 +5691,9 @@ BOOST_AUTO_TEST_CASE(verify_encrypted_smpte_dcp)
{
note(VC::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl),
note(VC::MATCHING_CPL_HASHES, cpl),
- note(VC::VALID_CONTENT_KIND, string{"trailer"}, cpl),
- note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl->content_version()->label_text, cpl),
- note(VC::VALID_CPL_ANNOTATION_TEXT, string{"hello"}, cpl),
+ note(VC::VALID_CONTENT_KIND, cpl).set_content_kind("trailer"),
+ note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text),
+ VN(VC::VALID_CPL_ANNOTATION_TEXT).set_cpl_id(cpl->id()).set_annotation_text("hello"),
note(VC::ALL_ENCRYPTED, cpl),
VN(VC::MISSING_CPL_METADATA, canonical(cpl_file)).set_cpl_id(cpl->id())
});
@@ -5791,6 +5710,7 @@ BOOST_AUTO_TEST_CASE(verify_encrypted_smpte_dcp_without_kdm)
path const pkl_file = find_file(dir, "pkl_");
path const cpl_file = find_file(dir, "cpl_");
+ auto const subtitle_id = cpl->reels()[0]->main_subtitle()->asset()->id();
using VN = dcp::VerificationNote;
using VC = VN::Code;
@@ -5802,12 +5722,12 @@ BOOST_AUTO_TEST_CASE(verify_encrypted_smpte_dcp_without_kdm)
note(VC::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl),
note(VC::MATCHING_CPL_HASHES, cpl),
note(VC::ALL_ENCRYPTED, cpl),
- note(VC::VALID_CONTENT_KIND, string{"trailer"}, cpl),
- note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl->content_version()->label_text, cpl),
- note(VC::VALID_CPL_ANNOTATION_TEXT, string{"hello"}, cpl),
- VN(VC::MISSED_CHECK_OF_ENCRYPTED).set_cpl_id(cpl->id()),
- VN(VC::MISSED_CHECK_OF_ENCRYPTED).set_cpl_id(cpl->id()),
- VN(VC::MISSED_CHECK_OF_ENCRYPTED).set_cpl_id(cpl->id()),
+ note(VC::VALID_CONTENT_KIND, cpl).set_content_kind("trailer"),
+ note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text),
+ VN(VC::VALID_CPL_ANNOTATION_TEXT).set_cpl_id(cpl->id()).set_annotation_text("hello"),
+ VN(VC::MISSED_CHECK_OF_ENCRYPTED).set_cpl_id(cpl->id()).set_reel_index(0).set_asset_id(subtitle_id),
+ VN(VC::MISSED_CHECK_OF_ENCRYPTED).set_cpl_id(cpl->id()).set_reel_index(0).set_asset_id(subtitle_id),
+ VN(VC::MISSED_CHECK_OF_ENCRYPTED).set_cpl_id(cpl->id()).set_reel_index(0).set_asset_id(subtitle_id),
VN(VC::MISSING_CPL_METADATA, canonical(cpl_file)).set_cpl_id(cpl->id()),
});
}
@@ -5825,22 +5745,26 @@ BOOST_AUTO_TEST_CASE(verify_invalid_sound_bit_depth)
vector<VN> notes = {
note(VC::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpl),
note(VC::MATCHING_CPL_HASHES, cpl),
- note(VC::VALID_CONTENT_KIND, string{"Advertisement"}, cpl),
- note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl->content_version()->label_text, cpl),
- note(VC::VALID_CPL_ANNOTATION_TEXT, string{"204794_Kitex_Scoobee_Day_Bags_30_Sec_Malayalam_220524_RADQR"}, cpl),
+ note(VC::VALID_CONTENT_KIND, cpl).set_content_kind("Advertisement"),
+ note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpl).set_content_version(cpl->content_version()->label_text),
+ VN(VC::VALID_CPL_ANNOTATION_TEXT).set_cpl_id(cpl->id()).set_annotation_text("204794_Kitex_Scoobee_Day_Bags_30_Sec_Malayalam_220524_RADQR"),
note(VC::NONE_ENCRYPTED, cpl),
- note(VC::CORRECT_PICTURE_HASH, canonical(dir / "Video.mxf"), cpl),
- note(VC::VALID_PICTURE_FRAME_SIZES_IN_BYTES, canonical(dir / "Video.mxf"), cpl),
- VN(VC::INVALID_SOUND_BIT_DEPTH, "16", canonical(dir / "Audio.mxf")).set_cpl_id(cpl->id()),
- VN(VC::MISSING_HASH, string("fd4796c2-9c84-454c-91f4-13ad127cea8a")).set_cpl_id(cpl->id()),
- VN(VC::MISSING_HASH, string("9d5e8bc4-676b-4306-a86d-03f70c73b457")).set_cpl_id(cpl->id()),
+ note(VC::CORRECT_PICTURE_HASH, canonical(dir / "Video.mxf"), cpl).set_reel_index(0).set_asset_id("fd4796c2-9c84-454c-91f4-13ad127cea8a"),
+ note(VC::VALID_PICTURE_FRAME_SIZES_IN_BYTES, canonical(dir / "Video.mxf"), cpl).set_reel_index(0).set_asset_id("fd4796c2-9c84-454c-91f4-13ad127cea8a"),
+ VN(
+ VC::INVALID_SOUND_BIT_DEPTH, canonical(dir / "Audio.mxf")
+ ).set_cpl_id(cpl->id()).set_reel_index(0).set_asset_id("9d5e8bc4-676b-4306-a86d-03f70c73b457").set_bit_depth(16),
+ VN(VC::MISSING_HASH).set_cpl_id(cpl->id()).set_reel_index(0).set_asset_id("fd4796c2-9c84-454c-91f4-13ad127cea8a"),
+ VN(VC::MISSING_HASH).set_cpl_id(cpl->id()).set_reel_index(0).set_asset_id("9d5e8bc4-676b-4306-a86d-03f70c73b457"),
VN(VC::MISSING_CPL_METADATA, canonical(cpl->file().get())).set_cpl_id(cpl->id()),
VN(VC::MISSING_FFOC).set_cpl_id(cpl->id()),
VN(VC::MISSING_LFOC).set_cpl_id(cpl->id()),
};
for (auto i = 0; i < 792; ++i) {
- notes.push_back(VN(VC::INVALID_JPEG2000_GUARD_BITS_FOR_2K, string("2")).set_cpl_id(cpl->id()));
+ notes.push_back(
+ VN(VC::INVALID_JPEG2000_GUARD_BITS_FOR_2K).set_cpl_id(cpl->id()).set_reel_index(0).set_asset_id("fd4796c2-9c84-454c-91f4-13ad127cea8a").set_guard_bits(2)
+ );
}
check_verify_result({ dir }, {}, notes);
@@ -5940,10 +5864,12 @@ BOOST_AUTO_TEST_CASE(verify_dcp_with_two_cpls)
auto const prefix = string{"build/test/verify_dcp_with_two_cpls"};
vector<shared_ptr<dcp::CPL>> cpls;
+ vector<string> picture_ids;
for (auto i = 0; i < 2; ++i) {
auto dcp_dir = dcp::String::compose("%1_%2", prefix, i);
prepare_directory(dcp_dir);
auto picture = simple_picture(dcp_dir, "foo");
+ picture_ids.push_back(picture->id());
auto sound = simple_sound(dcp_dir, "foo", dcp::MXFMetadata{}, "de-DE", 24, 48000, boost::none, i == 0 ? 6 : 8);
auto cpl = make_shared<dcp::CPL>("hello", dcp::ContentKind::TRAILER, dcp::Standard::SMPTE);
auto reel = make_shared<dcp::Reel>();
@@ -5975,18 +5901,18 @@ BOOST_AUTO_TEST_CASE(verify_dcp_with_two_cpls)
note(VC::MATCHING_CPL_HASHES, cpls[1]),
note(VC::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpls[0]),
note(VC::MATCHING_PKL_ANNOTATION_TEXT_WITH_CPL, cpls[1]),
- note(VC::VALID_CONTENT_KIND, string{"trailer"}, cpls[0]),
- note(VC::VALID_CONTENT_KIND, string{"trailer"}, cpls[1]),
+ note(VC::VALID_CONTENT_KIND, cpls[0]).set_content_kind("trailer"),
+ note(VC::VALID_CONTENT_KIND, cpls[1]).set_content_kind("trailer"),
note(VC::NONE_ENCRYPTED, cpls[0]),
note(VC::NONE_ENCRYPTED, cpls[1]),
- note(VC::VALID_CPL_ANNOTATION_TEXT, string{"hello"}, cpls[0]),
- note(VC::VALID_CPL_ANNOTATION_TEXT, string{"hello"}, cpls[1]),
- note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpls[0]->content_version()->label_text, cpls[0]),
- note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpls[1]->content_version()->label_text, cpls[1]),
- note(VC::VALID_PICTURE_FRAME_SIZES_IN_BYTES, canonical(combined / "videofoo.mxf"), cpls[0]),
- note(VC::VALID_PICTURE_FRAME_SIZES_IN_BYTES, canonical(combined / "videofoo0.mxf"), cpls[1]),
- note(VC::CORRECT_PICTURE_HASH, canonical(combined / "videofoo.mxf"), cpls[0]),
- note(VC::CORRECT_PICTURE_HASH, canonical(combined / "videofoo0.mxf"), cpls[1]),
+ VN(VC::VALID_CPL_ANNOTATION_TEXT).set_cpl_id(cpls[0]->id()).set_annotation_text("hello"),
+ VN(VC::VALID_CPL_ANNOTATION_TEXT).set_cpl_id(cpls[1]->id()).set_annotation_text("hello"),
+ note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpls[0]).set_content_version(cpls[0]->content_version()->label_text),
+ note(VC::VALID_CONTENT_VERSION_LABEL_TEXT, cpls[1]).set_content_version(cpls[1]->content_version()->label_text),
+ note(VC::VALID_PICTURE_FRAME_SIZES_IN_BYTES, canonical(combined / "videofoo.mxf"), cpls[0]).set_reel_index(0).set_asset_id(picture_ids[0]),
+ note(VC::VALID_PICTURE_FRAME_SIZES_IN_BYTES, canonical(combined / "videofoo0.mxf"), cpls[1]).set_reel_index(0).set_asset_id(picture_ids[1]),
+ note(VC::CORRECT_PICTURE_HASH, canonical(combined / "videofoo.mxf"), cpls[0]).set_reel_index(0).set_asset_id(picture_ids[0]),
+ note(VC::CORRECT_PICTURE_HASH, canonical(combined / "videofoo0.mxf"), cpls[1]).set_reel_index(0).set_asset_id(picture_ids[1]),
VN(VC::MISSING_CPL_METADATA, canonical(combined / cpls[0]->file()->filename())).set_cpl_id(cpls[0]->id()),
VN(VC::MISSING_CPL_METADATA, canonical(combined / cpls[1]->file()->filename())).set_cpl_id(cpls[1]->id())
});