From 0d9831021c7dc508bc69f7bd759dacd50ccb2766 Mon Sep 17 00:00:00 2001 From: Carl Hetherington Date: Fri, 2 Apr 2021 20:55:40 +0200 Subject: [PATCH] Use content version from Interop (or version number from SMPTE metadata) rather than the content version in the ISDCF metadata dialogue. --- src/lib/film.cc | 13 ++++++++++++- src/lib/isdcf_metadata.cc | 7 ++----- src/lib/isdcf_metadata.h | 4 +--- src/wx/dcp_panel.cc | 4 ++++ src/wx/isdcf_metadata_dialog.cc | 9 --------- src/wx/isdcf_metadata_dialog.h | 1 - test/isdcf_name_test.cc | 4 ++-- 7 files changed, 21 insertions(+), 21 deletions(-) diff --git a/src/lib/film.cc b/src/lib/film.cc index 7dd0ff6f1..5ccc5437a 100644 --- a/src/lib/film.cc +++ b/src/lib/film.cc @@ -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(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(_version_number); + } + d += "-" + version; } auto const dm = isdcf_metadata (); diff --git a/src/lib/isdcf_metadata.cc b/src/lib/isdcf_metadata.cc index 6adbd0f3c..4f157ce70 100644 --- a/src/lib/isdcf_metadata.cc +++ b/src/lib/isdcf_metadata.cc @@ -34,8 +34,7 @@ using std::shared_ptr; using dcp::raw_convert; ISDCFMetadata::ISDCFMetadata (cxml::ConstNodePtr node) - : content_version (node->number_child ("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 (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 && diff --git a/src/lib/isdcf_metadata.h b/src/lib/isdcf_metadata.h index fd021b8dc..22c418c6e 100644 --- a/src/lib/isdcf_metadata.h +++ b/src/lib/isdcf_metadata.h @@ -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; diff --git a/src/wx/dcp_panel.cc b/src/wx/dcp_panel.cc index 8501eae9c..6a5b27b18 100644 --- a/src/wx/dcp_panel.cc +++ b/src/wx/dcp_panel.cc @@ -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; } diff --git a/src/wx/isdcf_metadata_dialog.cc b/src/wx/isdcf_metadata_dialog.cc index 2fde930c6..d204258dd 100644 --- a/src/wx/isdcf_metadata_dialog.cc +++ b/src/wx/isdcf_metadata_dialog.cc @@ -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 ()); diff --git a/src/wx/isdcf_metadata_dialog.h b/src/wx/isdcf_metadata_dialog.h index 778009551..0df00017a 100644 --- a/src/wx/isdcf_metadata_dialog.h +++ b/src/wx/isdcf_metadata_dialog.h @@ -33,7 +33,6 @@ public: ISDCFMetadata isdcf_metadata () const; private: - wxSpinCtrl* _content_version; wxTextCtrl* _territory; wxTextCtrl* _rating; wxTextCtrl* _studio; diff --git a/test/isdcf_name_test.cc b/test/isdcf_name_test.cc index dbac64a34..3d7b69665 100644 --- a/test/isdcf_name_test.cc +++ b/test/isdcf_name_test.cc @@ -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()); -- 2.30.2