Improve error reporting, in particular from dcpomatic_create.
[dcpomatic.git] / src / lib / film.cc
index 27ff07537fd834a3a9e144f46fe425a7c0ea23fe..5e7bab0b7d7ee7af846ed387b37f813a6f078dde 100644 (file)
@@ -45,7 +45,7 @@
 #include "md5_digester.h"
 #include <libcxml/cxml.h>
 #include <dcp/cpl.h>
-#include <dcp/signer.h>
+#include <dcp/certificate_chain.h>
 #include <dcp/util.h>
 #include <dcp/local_time.h>
 #include <dcp/decrypted_kdm.h>
@@ -87,7 +87,7 @@ using boost::starts_with;
 using boost::optional;
 using boost::is_any_of;
 using dcp::Size;
-using dcp::Signer;
+using dcp::CertificateChain;
 
 #define LOG_GENERAL(...) log()->log (String::compose (__VA_ARGS__), Log::TYPE_GENERAL);
 #define LOG_GENERAL_NC(...) log()->log (__VA_ARGS__, Log::TYPE_GENERAL);
@@ -473,7 +473,7 @@ Film::isdcf_name (bool if_created_now) const
 
        /* Split the raw name up into words */
        vector<string> words;
-       split (words, raw_name, is_any_of (" "));
+       split (words, raw_name, is_any_of (" _-"));
 
        string fixed_name;
 
@@ -591,7 +591,9 @@ Film::isdcf_name (bool if_created_now) const
 
        if (!dm.territory.empty ()) {
                d << "_" << dm.territory;
-               if (!dm.rating.empty ()) {
+               if (dm.rating.empty ()) {
+                       d << "-NR";
+               } else {
                        d << "-" << dm.rating;
                }
        }
@@ -779,6 +781,11 @@ Film::set_three_d (bool t)
 {
        _three_d = t;
        signal_changed (THREE_D);
+
+       if (_three_d && _isdcf_metadata.two_d_version_of_three_d) {
+               _isdcf_metadata.two_d_version_of_three_d = false;
+               signal_changed (ISDCF_METADATA);
+       }
 }
 
 void
@@ -919,7 +926,7 @@ Film::examine_content (shared_ptr<Content> c)
 void
 Film::examine_and_add_content (shared_ptr<Content> c)
 {
-       if (dynamic_pointer_cast<FFmpegContent> (c)) {
+       if (dynamic_pointer_cast<FFmpegContent> (c) && !_directory.empty ()) {
                run_ffprobe (c->path(0), file ("ffprobe.log"), _log);
        }
 
@@ -996,6 +1003,8 @@ Film::active_frame_rate_change (DCPTime t) const
 void
 Film::playlist_content_changed (boost::weak_ptr<Content> c, int p, bool frequent)
 {
+       _dirty = true;
+
        if (p == VideoContentProperty::VIDEO_FRAME_RATE) {
                set_video_frame_rate (_playlist->best_dcp_frame_rate ());
        } else if (p == AudioContentProperty::AUDIO_STREAMS) {
@@ -1059,7 +1068,7 @@ Film::make_kdm (
        ) const
 {
        shared_ptr<const dcp::CPL> cpl (new dcp::CPL (cpl_file));
-       shared_ptr<const dcp::Signer> signer = Config::instance()->signer();
+       shared_ptr<const dcp::CertificateChain> signer = Config::instance()->signer_chain ();
        if (!signer->valid ()) {
                throw InvalidSignerError ();
        }