Use content version from Interop (or version number from SMPTE metadata)
authorCarl Hetherington <cth@carlh.net>
Fri, 2 Apr 2021 18:55:40 +0000 (20:55 +0200)
committerCarl Hetherington <cth@carlh.net>
Sun, 4 Apr 2021 18:48:34 +0000 (20:48 +0200)
rather than the content version in the ISDCF metadata dialogue.

src/lib/film.cc
src/lib/isdcf_metadata.cc
src/lib/isdcf_metadata.h
src/wx/dcp_panel.cc
src/wx/isdcf_metadata_dialog.cc
src/wx/isdcf_metadata_dialog.h
test/isdcf_name_test.cc

index 7dd0ff6f158273fbceca4f204fbdffc04c19d29f..5ccc5437a5cafedd6af5d32a950667772856d901 100644 (file)
@@ -846,7 +846,18 @@ Film::isdcf_name (bool if_created_now) const
 
        if (dcp_content_type()) {
                d += "_" + dcp_content_type()->isdcf_name();
-               d += "-" + raw_convert<string>(isdcf_metadata().content_version);
+               string version = "1";
+               if (_interop) {
+                       if (!_content_versions.empty()) {
+                               auto cv = _content_versions[0];
+                               if (!cv.empty() && std::all_of(cv.begin(), cv.end(), isdigit)) {
+                                       version = cv;
+                               }
+                       }
+               } else {
+                       version = dcp::raw_convert<string>(_version_number);
+               }
+               d += "-" + version;
        }
 
        auto const dm = isdcf_metadata ();
index 6adbd0f3c95603e1ca9c28a9277c908ddf525530..4f157ce70b1166f1dc503ae1696d8c7409f5dd48 100644 (file)
@@ -34,8 +34,7 @@ using std::shared_ptr;
 using dcp::raw_convert;
 
 ISDCFMetadata::ISDCFMetadata (cxml::ConstNodePtr node)
-       : content_version (node->number_child<int> ("ContentVersion"))
-       , territory (node->string_child ("Territory"))
+       : territory (node->string_child ("Territory"))
        , rating (node->string_child ("Rating"))
        , studio (node->string_child ("Studio"))
        , facility (node->string_child ("Facility"))
@@ -53,7 +52,6 @@ ISDCFMetadata::ISDCFMetadata (cxml::ConstNodePtr node)
 void
 ISDCFMetadata::as_xml (xmlpp::Node* root) const
 {
-       root->add_child("ContentVersion")->add_child_text (raw_convert<string> (content_version));
        root->add_child("Territory")->add_child_text (territory);
        root->add_child("Rating")->add_child_text (rating);
        root->add_child("Studio")->add_child_text (studio);
@@ -69,8 +67,7 @@ ISDCFMetadata::as_xml (xmlpp::Node* root) const
 bool
 operator== (ISDCFMetadata const & a, ISDCFMetadata const & b)
 {
-       return a.content_version == b.content_version &&
-               a.territory == b.territory &&
+        return a.territory == b.territory &&
                a.rating == b.rating &&
                a.studio == b.studio &&
                a.facility == b.facility &&
index fd021b8dc7818231aed2a2e7a5272c056b546666..22c418c6eaaa4775773838e6f45ff2760fd458f3 100644 (file)
@@ -32,8 +32,7 @@ class ISDCFMetadata
 {
 public:
        ISDCFMetadata ()
-               : content_version (1)
-               , temp_version (false)
+               : temp_version (false)
                , pre_release (false)
                , red_band (false)
                , two_d_version_of_three_d (false)
@@ -44,7 +43,6 @@ public:
        void as_xml (xmlpp::Node *) const;
        void read_old_metadata (std::string, std::string);
 
-       int content_version;
        std::string territory;
        std::string rating;
        std::string studio;
index 8501eae9ce8b62909297f7b0c7a4e61d6e4976df..6a5b27b18dbfea75f12f85b9c22a96905b0b3abf 100644 (file)
@@ -444,6 +444,10 @@ DCPPanel::film_changed (Film::Property p)
                setup_dcp_name ();
                setup_sensitivity ();
                break;
+       case Film::Property::CONTENT_VERSIONS:
+       case Film::Property::VERSION_NUMBER:
+               setup_dcp_name ();
+               break;
        default:
                break;
        }
index 2fde930c6b8fd04e58ceeaa020384dc28fe3a37d..d204258dd3e95fce0e7488d6aa6efbcf4deb6d25 100644 (file)
@@ -35,9 +35,6 @@ using std::shared_ptr;
 ISDCFMetadataDialog::ISDCFMetadataDialog (wxWindow* parent, ISDCFMetadata dm, bool threed)
        : TableDialog (parent, _("ISDCF name"), 2, 1, true)
 {
-       add (_("Content version"), true);
-       _content_version = add (new wxSpinCtrl (this, wxID_ANY));
-
        add (_("Territory (e.g. UK)"), true);
        _territory = add (new wxTextCtrl (this, wxID_ANY));
 
@@ -72,9 +69,6 @@ ISDCFMetadataDialog::ISDCFMetadataDialog (wxWindow* parent, ISDCFMetadata dm, bo
        add (_("Mastered luminance (e.g. 14fl)"), true);
        _mastered_luminance = add (new wxTextCtrl (this, wxID_ANY));
 
-       _content_version->SetRange (1, 1024);
-
-       _content_version->SetValue (dm.content_version);
        _territory->SetValue (std_to_wx (dm.territory));
        _rating->SetValue (std_to_wx (dm.rating));
        _studio->SetValue (std_to_wx (dm.studio));
@@ -87,8 +81,6 @@ ISDCFMetadataDialog::ISDCFMetadataDialog (wxWindow* parent, ISDCFMetadata dm, bo
        _mastered_luminance->SetValue (std_to_wx (dm.mastered_luminance));
 
        layout ();
-
-       _content_version->SetFocus ();
 }
 
 
@@ -97,7 +89,6 @@ ISDCFMetadataDialog::isdcf_metadata () const
 {
        ISDCFMetadata dm;
 
-       dm.content_version = _content_version->GetValue ();
        dm.territory = wx_to_std (_territory->GetValue ());
        dm.rating = wx_to_std (_rating->GetValue ());
        dm.studio = wx_to_std (_studio->GetValue ());
index 7780095514eb77ea744c8a037199d254230fc65a..0df00017a22eb0b6f2a8c4f007493ca496985f96 100644 (file)
@@ -33,7 +33,6 @@ public:
        ISDCFMetadata isdcf_metadata () const;
 
 private:
-       wxSpinCtrl* _content_version;
        wxTextCtrl* _territory;
        wxTextCtrl* _rating;
        wxTextCtrl* _studio;
index dbac64a34c61b07ee2278adfdaef63887e50e908..3d7b69665dd1387c980d2a2b95a4fbacca6d460b 100644 (file)
@@ -60,8 +60,8 @@ BOOST_AUTO_TEST_CASE (isdcf_name_test)
        BOOST_REQUIRE (!wait_for_jobs());
        BOOST_REQUIRE (audio->audio);
        audio->audio->set_language(dcp::LanguageTag("en-US"));
+       film->set_content_versions({"1"});
        ISDCFMetadata m;
-       m.content_version = 1;
        m.territory = "UK";
        m.rating = "PG";
        m.studio = "ST";
@@ -88,8 +88,8 @@ BOOST_AUTO_TEST_CASE (isdcf_name_test)
        text->text.front()->set_burn (true);
        text->text.front()->set_language (dcp::LanguageTag("fr-FR"));
        film->examine_and_add_content (text);
+       film->set_version_number(2);
        BOOST_REQUIRE (!wait_for_jobs());
-       m.content_version = 2;
        audio = content_factory("test/data/sine_440.wav").front();
        film->examine_and_add_content (audio);
        BOOST_REQUIRE (!wait_for_jobs());