+ case dcp::VerificationNote::Code::MISSING_ASSETMAP:
+ add(i, _("No ASSETMAP or ASSETMAP.xml file was found."));
+ break;
+ case dcp::VerificationNote::Code::INVALID_INTRINSIC_DURATION:
+ add(i, _("The asset %n has an intrinsic duration of less than 1 second, which is invalid."));
+ break;
+ case dcp::VerificationNote::Code::INVALID_DURATION:
+ add(i, _("The asset %n has a duration of less than 1 second, which is invalid."));
+ break;
+ case dcp::VerificationNote::Code::INVALID_PICTURE_FRAME_SIZE_IN_BYTES:
+ add(i, _("At least one frame of the video asset %f is over the limit of 250Mbit/s."));
+ break;
+ case dcp::VerificationNote::Code::NEARLY_INVALID_PICTURE_FRAME_SIZE_IN_BYTES:
+ add(i, _("At least one frame of the video asset %f is close to the limit of 250MBit/s."));
+ break;
+ case dcp::VerificationNote::Code::EXTERNAL_ASSET:
+ add(i, _("This DCP refers to at the asset %n in another DCP (and perhaps others), so it is a \"version file\" (VF)"));
+ break;
+ case dcp::VerificationNote::Code::THREED_ASSET_MARKED_AS_TWOD:
+ add(i, _("The asset %f is 3D but its MXF is marked as 2D."));
+ break;
+ case dcp::VerificationNote::Code::INVALID_STANDARD:
+ add(i, _("This DCP uses the Interop standard, but it should be made with SMPTE."));
+ break;
+ case dcp::VerificationNote::Code::INVALID_LANGUAGE:
+ add(i, _("The invalid language tag %n is used."));
+ break;
+ case dcp::VerificationNote::Code::INVALID_PICTURE_SIZE_IN_PIXELS:
+ add(i, _("The video asset %f uses the invalid image size %n."));
+ break;
+ case dcp::VerificationNote::Code::INVALID_PICTURE_FRAME_RATE_FOR_2K:
+ add(i, _("The video asset %f uses the invalid frame rate %n."));
+ break;
+ case dcp::VerificationNote::Code::INVALID_PICTURE_FRAME_RATE_FOR_4K:
+ add(i, _("The video asset %f uses the frame rate %n which is invalid for 4K video."));
+ break;
+ case dcp::VerificationNote::Code::INVALID_PICTURE_ASSET_RESOLUTION_FOR_3D:
+ add(i, _("The video asset %f uses the frame rate %n which is invalid for 3D video."));
+ break;
+ case dcp::VerificationNote::Code::INVALID_CLOSED_CAPTION_XML_SIZE_IN_BYTES:
+ add(i, _("The XML in the closed caption asset %f takes up %n bytes which is over the 256KB limit."));
+ break;
+ case dcp::VerificationNote::Code::INVALID_TIMED_TEXT_SIZE_IN_BYTES:
+ add(i, _("The timed text asset %f takes up %n bytes which is over the 115MB limit."));
+ break;
+ case dcp::VerificationNote::Code::INVALID_TIMED_TEXT_FONT_SIZE_IN_BYTES:
+ add(i, _("The fonts in the timed text asset %f take up %n bytes which is over the 10MB limit."));
+ break;
+ case dcp::VerificationNote::Code::MISSING_SUBTITLE_LANGUAGE:
+ add(i, _("The subtitle asset %f contains no <Language> tag."));
+ break;
+ case dcp::VerificationNote::Code::MISMATCHED_SUBTITLE_LANGUAGES:
+ add(i, _("Not all subtitle assets specify the same <Language> tag."));
+ break;
+ case dcp::VerificationNote::Code::MISSING_SUBTITLE_START_TIME:
+ add(i, _("The subtitle asset %f contains no <StartTime> tag."));
+ break;
+ case dcp::VerificationNote::Code::INVALID_SUBTITLE_START_TIME:
+ add(i, _("The subtitle asset %f has a <StartTime> which is not zero."));
+ break;
+ case dcp::VerificationNote::Code::INVALID_SUBTITLE_FIRST_TEXT_TIME:
+ add(i, _("The first subtitle or closed caption happens before 4s into the first reel."));
+ break;
+ case dcp::VerificationNote::Code::INVALID_SUBTITLE_DURATION:
+ add(i, _("At least one subtitle lasts less than 15 frames."));
+ break;
+ case dcp::VerificationNote::Code::INVALID_SUBTITLE_SPACING:
+ add(i, _("At least one pair of subtitles is separated by less than 2 frames."));
+ break;
+ case dcp::VerificationNote::Code::INVALID_SUBTITLE_LINE_COUNT:
+ add(i, _("There are more than 3 subtitle lines in at least one place."));
+ break;
+ case dcp::VerificationNote::Code::NEARLY_INVALID_SUBTITLE_LINE_LENGTH:
+ add(i, _("There are more than 52 characters in at least one subtitle line."));
+ break;
+ case dcp::VerificationNote::Code::INVALID_SUBTITLE_LINE_LENGTH:
+ add(i, _("There are more than 79 characters in at least one subtitle line."));
+ break;
+ case dcp::VerificationNote::Code::INVALID_CLOSED_CAPTION_LINE_COUNT:
+ add(i, _("There are more than 3 closed caption lines in at least one place."));
+ break;
+ case dcp::VerificationNote::Code::INVALID_CLOSED_CAPTION_LINE_LENGTH:
+ add(i, _("There are more than 32 characters in at least one closed caption line."));
+ break;
+ case dcp::VerificationNote::Code::INVALID_SOUND_FRAME_RATE:
+ add(i, _("The sound asset %f has an invalid frame rate of %n."));
+ break;
+ case dcp::VerificationNote::Code::MISSING_CPL_ANNOTATION_TEXT:
+ add(i, _("The CPL %n has no <AnnotationText> tag."));
+ break;
+ case dcp::VerificationNote::Code::MISMATCHED_CPL_ANNOTATION_TEXT:
+ add(i, _("The CPL %n has an <AnnotationText> which is not the same as its <ContentTitleText>."));
+ break;
+ case dcp::VerificationNote::Code::MISMATCHED_ASSET_DURATION:
+ add(i, _("At least one asset in a reel does not have the same duration as the others."));
+ break;
+ case dcp::VerificationNote::Code::MISSING_MAIN_SUBTITLE_FROM_SOME_REELS:
+ add(i, _("The DCP has subtitles but at least one reel has no subtitle asset."));
+ break;
+ case dcp::VerificationNote::Code::MISMATCHED_CLOSED_CAPTION_ASSET_COUNTS:
+ add(i, _("The DCP has closed captions but not every reel has the same number of closed caption assets."));
+ break;
+ case dcp::VerificationNote::Code::MISSING_SUBTITLE_ENTRY_POINT:
+ add(i, _("The subtitle asset %n has no <EntryPoint> tag."));
+ break;
+ case dcp::VerificationNote::Code::INCORRECT_SUBTITLE_ENTRY_POINT:
+ add(i, _("Subtitle asset %n has a non-zero <EntryPoint>."));
+ break;
+ case dcp::VerificationNote::Code::MISSING_CLOSED_CAPTION_ENTRY_POINT:
+ add(i, _("The closed caption asset %n has no <EntryPoint> tag."));
+ break;
+ case dcp::VerificationNote::Code::INCORRECT_CLOSED_CAPTION_ENTRY_POINT:
+ add(i, _("Closed caption asset %n has a non-zero <EntryPoint>."));
+ break;
+ case dcp::VerificationNote::Code::MISSING_HASH:
+ add(i, _("The asset %n has no <Hash> in the CPL."));
+ break;
+ case dcp::VerificationNote::Code::MISSING_FFEC_IN_FEATURE:
+ add(i, _("The DCP is a feature but has no FFEC (first frame of end credits) marker."));
+ break;
+ case dcp::VerificationNote::Code::MISSING_FFMC_IN_FEATURE:
+ add(i, _("The DCP is a feature but has no FFMC (first frame of moving credits) marker."));
+ break;
+ case dcp::VerificationNote::Code::MISSING_FFOC:
+ add(i, _("The DCP has no FFOC (first frame of content) marker."));
+ break;
+ case dcp::VerificationNote::Code::MISSING_LFOC:
+ add(i, _("The DCP has no LFOC (last frame of content) marker."));
+ break;
+ case dcp::VerificationNote::Code::INCORRECT_FFOC:
+ add(i, _("The DCP has a FFOC of %n instead of 1."));
+ break;
+ case dcp::VerificationNote::Code::INCORRECT_LFOC:
+ add(i, _("The DCP has a LFOC of %n instead of the reel duration minus one."));
+ break;
+ case dcp::VerificationNote::Code::MISSING_CPL_METADATA:
+ add(i, _("The CPL %n has no CPL metadata tag."));
+ break;
+ case dcp::VerificationNote::Code::MISSING_CPL_METADATA_VERSION_NUMBER:
+ add(i, _("The CPL %n has no CPL metadata version number tag."));
+ break;
+ case dcp::VerificationNote::Code::MISSING_EXTENSION_METADATA:
+ add(i, _("The CPL %n has no CPL extension metadata tag."));
+ break;
+ case dcp::VerificationNote::Code::INVALID_EXTENSION_METADATA:
+ add(i, _("The CPL %f has an invalid CPL extension metadata tag (%n)"));
+ break;
+ case dcp::VerificationNote::Code::UNSIGNED_CPL_WITH_ENCRYPTED_CONTENT:
+ add(i, _("The CPL %n has encrypted content but is not signed."));
+ break;
+ case dcp::VerificationNote::Code::UNSIGNED_PKL_WITH_ENCRYPTED_CONTENT:
+ add(i, _("The PKL %n has encrypted content but is not signed."));
+ break;
+ case dcp::VerificationNote::Code::MISMATCHED_PKL_ANNOTATION_TEXT_WITH_CPL:
+ add(i, _("The PKL %n has an <AnnotationText> which does not match its CPL's <ContentTitleText>."));
+ break;
+ case dcp::VerificationNote::Code::PARTIALLY_ENCRYPTED:
+ add(i, _("The DCP has encrypted content, but not all its assets are encrypted."));
+ break;
+ case dcp::VerificationNote::Code::INVALID_JPEG2000_CODESTREAM:
+ add(i, _("A picture frame has an invalid JPEG2000 codestream (%n)"));
+ break;
+ case dcp::VerificationNote::Code::INVALID_JPEG2000_GUARD_BITS_FOR_2K:
+ add(i, _("A 2K JPEG2000 frame has %n guard bits instead of 1."));
+ break;
+ case dcp::VerificationNote::Code::INVALID_JPEG2000_GUARD_BITS_FOR_4K:
+ add(i, _("A 4K JPEG2000 frame has %n guard bits instead of 2."));
+ break;
+ case dcp::VerificationNote::Code::INVALID_JPEG2000_TILE_SIZE:
+ add(i, _("A JPEG2000 tile size does not match the image size."));
+ break;
+ case dcp::VerificationNote::Code::INVALID_JPEG2000_CODE_BLOCK_WIDTH:
+ add(i, _("A JPEG2000 frame has a code-block width of %n instead of 32."));
+ break;
+ case dcp::VerificationNote::Code::INVALID_JPEG2000_CODE_BLOCK_HEIGHT:
+ add(i, _("A JPEG2000 frame has a code-block height of %n instead of 32."));
+ break;
+ case dcp::VerificationNote::Code::INCORRECT_JPEG2000_POC_MARKER_COUNT_FOR_2K:
+ add(i, _("A 2K JPEG2000 frame has %n POC marker(s) instead of 0."));
+ break;
+ case dcp::VerificationNote::Code::INCORRECT_JPEG2000_POC_MARKER_COUNT_FOR_4K:
+ add(i, _("A 4K JPEG2000 frame has %n POC marker(s) instead of 1."));
+ break;
+ case dcp::VerificationNote::Code::INCORRECT_JPEG2000_POC_MARKER:
+ add(i, _("A JPEG2000 frame contains an invalid POC marker (%n)."));
+ break;
+ case dcp::VerificationNote::Code::INVALID_JPEG2000_POC_MARKER_LOCATION:
+ add(i, _("A JPEG2000 frame contains POC marker in an invalid location."));
+ break;
+ case dcp::VerificationNote::Code::INVALID_JPEG2000_TILE_PARTS_FOR_2K:
+ add(i, _("A 2K JPEG2000 frame contains %n tile parts instead of 3."));
+ break;
+ case dcp::VerificationNote::Code::INVALID_JPEG2000_TILE_PARTS_FOR_4K:
+ add(i, _("A 4K JPEG2000 frame contains %n tile parts instead of 6."));
+ break;
+ case dcp::VerificationNote::Code::MISSING_JPEG200_TLM_MARKER:
+ add(i, _("A JPEG2000 frame has no TLM marker."));
+ break;
+ case dcp::VerificationNote::Code::SUBTITLE_OVERLAPS_REEL_BOUNDARY:
+ add(i, _("A subtitle lasts longer than the reel it is in."));
+ break;
+ case dcp::VerificationNote::Code::MISMATCHED_TIMED_TEXT_RESOURCE_ID:
+ add(i, _("The Resource ID in a timed text MXF did not match the ID of the contained XML."));
+ break;
+ case dcp::VerificationNote::Code::INCORRECT_TIMED_TEXT_ASSET_ID:
+ add(i, _("The Asset ID in a timed text MXF is the same as the Resource ID or that of the contained XML."));
+ break;
+ case dcp::VerificationNote::Code::MISMATCHED_TIMED_TEXT_DURATION:
+ {
+ vector<string> parts;
+ boost::split (parts, i.note().get(), boost::is_any_of(" "));
+ add(i, wxString::Format(_("The reel duration (%s) of some timed text is not the same as the ContainerDuration (%s) of its MXF."), std_to_wx(parts[0]), std_to_wx(parts[1])));
+ break;