summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorCarl Hetherington <cth@carlh.net>2026-03-26 12:00:54 +0100
committerCarl Hetherington <cth@carlh.net>2026-03-26 12:00:54 +0100
commit01bf601526da5d6eec21e8a54dbd82f646bfedb9 (patch)
treec806a95d2aa2eaaed4e01b46b6d70e993d976eac /src
parentb7ae863ff2985b3a086bd54946428c9055da0d32 (diff)
Add asset ID to lots of notes.
Diffstat (limited to 'src')
-rw-r--r--src/verify.cc23
-rw-r--r--src/verify_internal.h4
2 files changed, 21 insertions, 6 deletions
diff --git a/src/verify.cc b/src/verify.cc
index e9952c30..8dcd6410 100644
--- a/src/verify.cc
+++ b/src/verify.cc
@@ -852,8 +852,7 @@ verify_closed_caption_asset (
/* Note: we must not use TextAsset::xml_as_string() here as that will mean the data on disk
* gets passed through libdcp which may clean up and therefore hide errors.
*/
- auto raw_xml = asset->raw_xml();
- if (raw_xml) {
+ if (auto raw_xml = asset->raw_xml()) {
validate_xml(context, *raw_xml);
if (raw_xml->size() > 256 * 1024) {
context.add_note(VerificationNote::Code::INVALID_CLOSED_CAPTION_XML_SIZE_IN_BYTES, fmt::to_string(raw_xml->size()), *asset->file());
@@ -862,13 +861,11 @@ verify_closed_caption_asset (
context.add_note(VerificationNote::Code::MISSED_CHECK_OF_ENCRYPTED);
}
- auto interop = dynamic_pointer_cast<const InteropTextAsset>(asset);
- if (interop) {
+ if (auto interop = dynamic_pointer_cast<const InteropTextAsset>(asset)) {
verify_interop_text_asset(context, interop);
}
- auto smpte = dynamic_pointer_cast<const SMPTETextAsset>(asset);
- if (smpte) {
+ if (auto smpte = dynamic_pointer_cast<const SMPTETextAsset>(asset)) {
verify_smpte_timed_text_asset(context, smpte, reel_asset_duration);
}
}
@@ -1271,6 +1268,8 @@ verify_text_details(Context& context, vector<shared_ptr<Reel>> reels)
}
if (reels[0]->main_subtitle() && reels[0]->main_subtitle()->asset_ref().resolved()) {
+ context.asset_id = reels[0]->main_subtitle()->asset()->id();
+ dcp::ScopeGuard sg = [&context]() { context.asset_id = boost::none; };
verify_text_details(context, reels, reels[0]->main_subtitle()->edit_rate().numerator,
[](shared_ptr<Reel> reel) {
return static_cast<bool>(reel->main_subtitle());
@@ -1288,6 +1287,8 @@ verify_text_details(Context& context, vector<shared_ptr<Reel>> reels)
}
for (auto i = 0U; i < reels[0]->closed_captions().size(); ++i) {
+ context.asset_id = reels[0]->closed_captions()[i]->asset()->id();
+ dcp::ScopeGuard sg = [&context]() { context.asset_id = boost::none; };
verify_text_details(context, reels, reels[0]->closed_captions()[i]->edit_rate().numerator,
[i](shared_ptr<Reel> reel) {
return i < reel->closed_captions().size();
@@ -1443,6 +1444,8 @@ verify_reel(
}
/* Check asset */
if (reel->main_picture()->asset_ref().resolved()) {
+ context.asset_id = reel->main_picture()->asset()->id();
+ dcp::ScopeGuard sg = [&context]() { context.asset_id = boost::none; };
verify_main_picture_asset(context, reel->main_picture(), start_frame);
auto const asset_size = reel->main_picture()->asset()->size();
if (main_picture_active_area) {
@@ -1466,12 +1469,16 @@ verify_reel(
}
if (reel->main_sound() && reel->main_sound()->asset_ref().resolved()) {
+ context.asset_id = reel->main_sound()->asset()->id();
+ dcp::ScopeGuard sg = [&context]() { context.asset_id = boost::none; };
verify_main_sound_asset(context, reel->main_sound());
}
if (reel->main_subtitle()) {
verify_main_subtitle_reel(context, reel->main_subtitle());
if (reel->main_subtitle()->asset_ref().resolved()) {
+ context.asset_id = reel->main_subtitle()->asset()->id();
+ dcp::ScopeGuard sg = [&context]() { context.asset_id = boost::none; };
verify_subtitle_asset(context, reel->main_subtitle()->asset(), reel->main_subtitle()->duration());
}
*have_main_subtitle = true;
@@ -1482,6 +1489,8 @@ verify_reel(
for (auto i: reel->closed_captions()) {
verify_closed_caption_reel(context, i);
if (i->asset_ref().resolved()) {
+ context.asset_id = i->asset()->id();
+ dcp::ScopeGuard sg = [&context]() { context.asset_id = boost::none; };
verify_closed_caption_asset(context, i->asset(), i->duration());
}
}
@@ -1725,6 +1734,8 @@ verify_cpl(Context& context, shared_ptr<const CPL> cpl)
context.reel_index = reel_index;
dcp::ScopeGuard sg = [&context]() { context.reel_index = boost::none; };
if (reel->main_subtitle() && reel->main_subtitle()->asset_ref().resolved()) {
+ context.asset_id = reel->main_subtitle()->asset()->id();
+ dcp::ScopeGuard sg = [&context]() { context.asset_id = boost::none; };
verify_text_lines_and_characters(reel->main_subtitle()->asset(), 52, 79, &result);
}
++reel_index;
diff --git a/src/verify_internal.h b/src/verify_internal.h
index 34d34751..3399dec1 100644
--- a/src/verify_internal.h
+++ b/src/verify_internal.h
@@ -101,6 +101,9 @@ public:
if (reel_index) {
note.set_reel_index(*reel_index);
}
+ if (asset_id) {
+ note.set_asset_id(*asset_id);
+ }
notes.push_back(std::move(note));
}
@@ -128,6 +131,7 @@ public:
std::shared_ptr<const DCP> dcp;
std::shared_ptr<const CPL> cpl;
boost::optional<int> reel_index;
+ boost::optional<std::string> asset_id;
boost::filesystem::path xsd_dtd_directory;
std::function<void (std::string, boost::optional<boost::filesystem::path>)> stage;
std::function<void (float)> progress;