};
auto add = [&counts, &add_bullet](dcp::VerificationNote note, wxString message) {
+ if (note.reference_hash()) {
+ message.Replace("%reference_hash", std_to_wx(note.reference_hash().get()));
+ }
+ if (note.calculated_hash()) {
+ message.Replace("%calculated_hash", std_to_wx(note.calculated_hash().get()));
+ }
if (note.note()) {
message.Replace("%n", std_to_wx(note.note().get()));
}
if (note.line()) {
message.Replace("%l", std_to_wx(dcp::raw_convert<string>(note.line().get())));
}
+ if (note.frame()) {
+ message.Replace("%frame", std_to_wx(dcp::raw_convert<string>(note.frame().get())));
+ }
+ if (note.component()) {
+ message.Replace("%component", std_to_wx(dcp::raw_convert<string>(note.component().get())));
+ }
+ if (note.size()) {
+ message.Replace("%size", std_to_wx(dcp::raw_convert<string>(note.size().get())));
+ }
+ if (note.id()) {
+ message.Replace("%id", std_to_wx(note.id().get()));
+ }
+ if (note.other_id()) {
+ message.Replace("%other_id", std_to_wx(note.other_id().get()));
+ }
add_bullet (note.type(), message);
counts[note.type()]++;
};
add (i, std_to_wx(*i.note()));
break;
case dcp::VerificationNote::Code::MISMATCHED_CPL_HASHES:
- add(i, _("The hash of the CPL %n in the PKL does not agree with the CPL file. This probably means that the CPL file is corrupt."));
+ add(i, _("The hash (%reference_hash) of the CPL %n in the PKL does not agree with the CPL file (%calculated_hash). This probably means that the CPL file is corrupt."));
break;
case dcp::VerificationNote::Code::INVALID_PICTURE_FRAME_RATE:
add(i, _("The picture in a reel has a frame rate of %n, which is not valid."));
break;
case dcp::VerificationNote::Code::INCORRECT_PICTURE_HASH:
- add(i, _("The hash of the picture asset %f does not agree with the PKL file. This probably means that the asset file is corrupt."));
+ add(i, _("The hash (%calculated_hash) of the picture asset %f does not agree with the PKL file (%reference_hash). This probably means that the asset file is corrupt."));
break;
case dcp::VerificationNote::Code::MISMATCHED_PICTURE_HASHES:
add(i, _("The PKL and CPL hashes disagree for picture asset %f."));
break;
case dcp::VerificationNote::Code::INCORRECT_SOUND_HASH:
- add(i, _("The hash of the sound asset %f does not agree with the PKL file. This probably means that the asset file is corrupt."));
+ add(i, _("The hash (%calculated_hash) of the sound asset %f does not agree with the PKL file (%reference_hash). This probably means that the asset file is corrupt."));
break;
case dcp::VerificationNote::Code::MISMATCHED_SOUND_HASHES:
add(i, _("The PKL and CPL hashes disagree for sound asset %f."));
case dcp::VerificationNote::Code::INVALID_MAIN_SOUND_CONFIGURATION:
add(i, _("<MainSoundConfiguration> describes incorrect number of channels (%n)"));
break;
+ case dcp::VerificationNote::Code::MISSING_FONT:
+ add(i, _("The font file for font ID \"%n\" was not found, or was not referred to in the ASSETMAP."));
+ break;
+ case dcp::VerificationNote::Code::INVALID_JPEG2000_TILE_PART_SIZE:
+ add(i, _("Frame %frame has an image component that is too large (component %component is %size bytes in size)."));
+ break;
+ case dcp::VerificationNote::Code::INCORRECT_SUBTITLE_NAMESPACE_COUNT:
+ add(i, _("The XML in the subtitle asset %n has more than one namespace declaration."));
+ break;
+ case dcp::VerificationNote::Code::MISSING_LOAD_FONT_FOR_FONT:
+ add(i, _("A subtitle or closed caption refers to a font with ID %id that does not have a corresponding <LoadFont> node."));
+ break;
+ case dcp::VerificationNote::Code::MISSING_LOAD_FONT:
+ add(i, _("The SMPTE subtitle asset %id has <Text> nodes but no <LoadFont> node"));
+ break;
+ case dcp::VerificationNote::Code::MISMATCHED_ASSET_MAP_ID:
+ add(i, _("The asset with ID %id in the asset map actually has an id of %other_id"));
+ break;
+ case dcp::VerificationNote::Code::EMPTY_CONTENT_VERSION_LABEL_TEXT:
+ add(i, _("The <LabelText> in a <ContentVersion> in CPL %id is empty"));
+ break;
}
}