X-Git-Url: https://git.carlh.net/gitweb/?a=blobdiff_plain;f=src%2Flib%2Fhints.cc;h=027510eca8015dafa55c9e38c32b04a261fd7fe4;hb=cf2ed48d21ddbc32bda262064480e88e69dc031a;hp=fe2e5889cf1ae7625232e42769bd8b1882e3a4b3;hpb=1b348977ecc0a8fa31135bf2d554c3d25bafaa2f;p=dcpomatic.git diff --git a/src/lib/hints.cc b/src/lib/hints.cc index fe2e5889c..027510eca 100644 --- a/src/lib/hints.cc +++ b/src/lib/hints.cc @@ -1,5 +1,5 @@ /* - Copyright (C) 2016-2021 Carl Hetherington + Copyright (C) 2016-2022 Carl Hetherington This file is part of DCP-o-matic. @@ -23,6 +23,7 @@ #include "audio_content.h" #include "audio_processor.h" #include "compose.hpp" +#include "config.h" #include "content.h" #include "cross.h" #include "dcp_content_type.h" @@ -30,11 +31,11 @@ #include "font.h" #include "font_data.h" #include "hints.h" +#include "maths_util.h" #include "player.h" #include "ratio.h" #include "text_content.h" #include "types.h" -#include "util.h" #include "video_content.h" #include "writer.h" #include @@ -51,11 +52,8 @@ using std::cout; using std::make_shared; using std::max; -using std::min; -using std::pair; using std::shared_ptr; using std::string; -using std::vector; using std::weak_ptr; using boost::optional; using boost::bind; @@ -384,6 +382,7 @@ try auto content = film->content (); + check_certificates (); check_interop (); check_big_font_files (); check_few_audio_channels (); @@ -400,6 +399,7 @@ try check_ffec_and_ffmc_in_smpte_feature (); check_out_of_range_markers (); check_text_languages (); + check_audio_language (); if (check_loudness_done) { emit (bind(boost::ref(Progress), _("Examining subtitles and closed captions"))); @@ -407,9 +407,9 @@ try emit (bind(boost::ref(Progress), _("Examining audio, subtitles and closed captions"))); } - auto player = make_shared(film); + auto player = make_shared(film, Image::Alignment::COMPACT); player->set_ignore_video (); - if (check_loudness_done) { + if (check_loudness_done || _disable_audio_analysis) { /* We don't need to analyse audio because we already loaded a suitable analysis */ player->set_ignore_audio (); } @@ -637,3 +637,48 @@ Hints::check_text_languages () } } } + + +void +Hints::check_audio_language () +{ + auto content = film()->content(); + auto mapped_audio = + std::find_if(content.begin(), content.end(), [](shared_ptr c) { + return c->audio && !c->audio->mapping().mapped_output_channels().empty(); + }); + + if (mapped_audio != content.end() && !film()->audio_language()) { + hint (_("Some of your content has audio but you have not set the audio language. It is advisable to set the audio language " + "in the \"DCP\" tab unless your audio has no spoken parts.")); + } +} + + +void +Hints::check_certificates () +{ + auto bad = Config::instance()->check_certificates(); + if (!bad) { + return; + } + + switch (*bad) { + case Config::BAD_SIGNER_UTF8_STRINGS: + hint(_("The certificate chain that DCP-o-matic uses for signing DCPs and KDMs contains a small error " + "which will prevent DCPs from being validated correctly on some systems. You are advised to " + "re-create the signing certificate chain by clicking the \"Re-make certificates and key...\" " + "button in the Keys page of Preferences.")); + break; + case Config::BAD_SIGNER_VALIDITY_TOO_LONG: + hint(_("The certificate chain that DCP-o-matic uses for signing DCPs and KDMs has a validity period " + "that is too long. This will cause problems playing back DCPs on some systems. " + "You are advised to re-create the signing certificate chain by clicking the " + "\"Re-make certificates and key...\" button in the Keys page of Preferences.")); + break; + default: + /* Some bad situations can't happen here as DCP-o-matic would have refused to start until they are fixed */ + break; + } +} +