X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=src%2Fwx%2Fverify_dcp_dialog.cc;h=3c4e1ef48ddd93ec3fcd833fe7595468e336b435;hb=5e74e417e8b3d4e9773d0fad97cf11a5c4eeeccf;hp=604327ebd1cb3374fc1b86c29359e8d11489ce94;hpb=28111007e2e6fd62f5810be780706ae1618bd33f;p=dcpomatic.git diff --git a/src/wx/verify_dcp_dialog.cc b/src/wx/verify_dcp_dialog.cc index 604327ebd..3c4e1ef48 100644 --- a/src/wx/verify_dcp_dialog.cc +++ b/src/wx/verify_dcp_dialog.cc @@ -18,21 +18,26 @@ */ + #include "verify_dcp_dialog.h" #include "wx_util.h" #include "lib/verify_dcp_job.h" #include "lib/warnings.h" #include #include +#include DCPOMATIC_DISABLE_WARNINGS #include #include DCPOMATIC_ENABLE_WARNINGS + using std::list; using std::map; using std::shared_ptr; using std::string; +using std::vector; + VerifyDCPDialog::VerifyDCPDialog (wxWindow* parent, shared_ptr job) : wxDialog (parent, wxID_ANY, _("DCP verification"), wxDefaultPosition, {600, 400}) @@ -158,6 +163,9 @@ VerifyDCPDialog::VerifyDCPDialog (wxWindow* parent, shared_ptr job 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; @@ -296,6 +304,73 @@ VerifyDCPDialog::VerifyDCPDialog (wxWindow* parent, shared_ptr job 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 2K 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 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; + } + case dcp::VerificationNote::Code::MISSED_CHECK_OF_ENCRYPTED: + add(i, _("Part of the DCP could not be checked because no KDM was available.")); + break; + case dcp::VerificationNote::Code::EMPTY_TEXT: + add(i, _("At least one node in a subtitle or closed caption is empty.")); + break; + case dcp::VerificationNote::Code::MISMATCHED_CLOSED_CAPTION_VALIGN: + add(i, _("Some closed or nodes have different vertical alignments within a .")); + break; + case dcp::VerificationNote::Code::INCORRECT_CLOSED_CAPTION_ORDERING: + add(i, _("Some closed captions are not listed in the order of their vertical position.")); + break; } }