Bump libdcp to 1.8.67.
[dcpomatic.git] / src / wx / verify_dcp_dialog.cc
index c8a3ad321cbca3740238e2f63dc350382d59270a..de8982c8dbec4d07e56576ae91a7a50d3f481faa 100644 (file)
 
 */
 
+
 #include "verify_dcp_dialog.h"
 #include "wx_util.h"
 #include "lib/verify_dcp_job.h"
-#include "lib/warnings.h"
-#include <dcp/verify.h>
 #include <dcp/raw_convert.h>
-DCPOMATIC_DISABLE_WARNINGS
+#include <dcp/verify.h>
+#include <dcp/warnings.h>
+LIBDCP_DISABLE_WARNINGS
 #include <wx/richtext/richtextctrl.h>
 #include <wx/notebook.h>
-DCPOMATIC_ENABLE_WARNINGS
+LIBDCP_ENABLE_WARNINGS
+#include <boost/algorithm/string.hpp>
+
 
 using std::list;
 using std::map;
 using std::shared_ptr;
 using std::string;
+using std::vector;
+
 
 VerifyDCPDialog::VerifyDCPDialog (wxWindow* parent, shared_ptr<VerifyDCPJob> job)
        : wxDialog (parent, wxID_ANY, _("DCP verification"), wxDefaultPosition, {600, 400})
@@ -144,7 +149,7 @@ VerifyDCPDialog::VerifyDCPDialog (wxWindow* parent, shared_ptr<VerifyDCPJob> job
                        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 instrinsic duration of less than 1 second, which is invalid."));
+                       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."));
@@ -158,6 +163,9 @@ VerifyDCPDialog::VerifyDCPDialog (wxWindow* parent, shared_ptr<VerifyDCPJob> 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;
@@ -330,7 +338,7 @@ VerifyDCPDialog::VerifyDCPDialog (wxWindow* parent, shared_ptr<VerifyDCPJob> job
                        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."));
+                       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."));
@@ -338,6 +346,70 @@ VerifyDCPDialog::VerifyDCPDialog (wxWindow* parent, shared_ptr<VerifyDCPJob> job
                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;
+               }
+               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 <Text> node in a subtitle or closed caption is empty."));
+                       break;
+               case dcp::VerificationNote::Code::MISMATCHED_CLOSED_CAPTION_VALIGN:
+                       add(i, _("Some closed <Text> or <Image> nodes have different vertical alignments within a <Subtitle>."));
+                       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;
+               case dcp::VerificationNote::Code::UNEXPECTED_ENTRY_POINT:
+                       add(i, _("There is a <EntryPoint> tag inside a <MainMarkers>."));
+                       break;
+               case dcp::VerificationNote::Code::UNEXPECTED_DURATION:
+                       add(i, _("There is a <Duration> tag inside a <MainMarkers>."));
+                       break;
+               case dcp::VerificationNote::Code::INVALID_CONTENT_KIND:
+                       add(i, _("An invalid <ContentKind> %n has been used."));
+                       break;
+               case dcp::VerificationNote::Code::INVALID_MAIN_PICTURE_ACTIVE_AREA:
+                       add(i, _("The <MainPictureActiveArea> is either not a multiple of 2, or is bigger than an asset."));
+                       break;
+               case dcp::VerificationNote::Code::DUPLICATE_ASSET_ID_IN_PKL:
+                       add(i, _("The PKL %n has more than one asset with the same ID."));
+                       break;
+               case dcp::VerificationNote::Code::DUPLICATE_ASSET_ID_IN_ASSETMAP:
+                       add(i, _("The ASSETMAP %n has more than one asset with the same ID."));
+                       break;
+               case dcp::VerificationNote::Code::MISSING_SUBTITLE:
+                       add(i, _("The subtitle asset %n contains no subtitles."));
+                       break;
+               case dcp::VerificationNote::Code::INVALID_SUBTITLE_ISSUE_DATE:
+                       add(i, _("<IssueDate> has an invalid value %n"));
+                       break;
+               case dcp::VerificationNote::Code::MISMATCHED_SOUND_CHANNEL_COUNTS:
+                       add(i, _("Sound assets do not all have the same channel count."));
+                       break;
+               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;
                }
        }