Use ratings from Interop/SMPTE metadata instead of ISDCF metadata dialogue.
authorCarl Hetherington <cth@carlh.net>
Fri, 2 Apr 2021 21:05:05 +0000 (23:05 +0200)
committerCarl Hetherington <cth@carlh.net>
Sun, 4 Apr 2021 18:48:35 +0000 (20:48 +0200)
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 9051c5a1528d9696cdc7cb2e7480d8ab7aa963c2..b34c852952bf9c12e22e3b7059d9435192058072 100644 (file)
@@ -961,10 +961,10 @@ Film::isdcf_name (bool if_created_now) const
                auto territory = _release_territory->subtag();
                transform (territory.begin(), territory.end(), territory.begin(), ::toupper);
                d += "_" + territory;
-               if (dm.rating.empty ()) {
+               if (_ratings.empty ()) {
                        d += "-NR";
                } else {
-                       d += "-" + dm.rating;
+                       d += "-" + _ratings[0].label;
                }
        }
 
index daf3a4c4fb6158a92d5522deee297e3eb9c59d6e..c190ba3dcc1cbddc733a9ea6bb701955195bc2c4 100644 (file)
@@ -34,8 +34,7 @@ using std::shared_ptr;
 using dcp::raw_convert;
 
 ISDCFMetadata::ISDCFMetadata (cxml::ConstNodePtr node)
-       : rating (node->string_child ("Rating"))
-       , studio (node->string_child ("Studio"))
+       : studio (node->string_child ("Studio"))
        , facility (node->string_child ("Facility"))
        /* This stuff was added later */
        , temp_version (node->optional_bool_child ("TempVersion").get_value_or (false))
@@ -51,7 +50,6 @@ ISDCFMetadata::ISDCFMetadata (cxml::ConstNodePtr node)
 void
 ISDCFMetadata::as_xml (xmlpp::Node* root) const
 {
-       root->add_child("Rating")->add_child_text (rating);
        root->add_child("Studio")->add_child_text (studio);
        root->add_child("Facility")->add_child_text (facility);
        root->add_child("TempVersion")->add_child_text (temp_version ? "1" : "0");
@@ -65,8 +63,7 @@ ISDCFMetadata::as_xml (xmlpp::Node* root) const
 bool
 operator== (ISDCFMetadata const & a, ISDCFMetadata const & b)
 {
-        return a.rating == b.rating &&
-               a.studio == b.studio &&
+        return a.studio == b.studio &&
                a.facility == b.facility &&
                a.temp_version == b.temp_version &&
                a.pre_release == b.pre_release &&
index 3dc2c2d354dee453a9ec9a050fbf65a3a5923520..1c80e7b5ddef19260ec66c41a7b69492164df381 100644 (file)
@@ -43,7 +43,6 @@ public:
        void as_xml (xmlpp::Node *) const;
        void read_old_metadata (std::string, std::string);
 
-       std::string rating;
        std::string studio;
        std::string facility;
        /** true if this is a temporary version (without final picture or sound) */
index ecedec66fc096cf269f1794985c0f714705117d9..6d0e6496519e885d4608f71c0ef29f28903b4f8e 100644 (file)
@@ -449,6 +449,7 @@ DCPPanel::film_changed (Film::Property p)
        case Film::Property::CONTENT_VERSIONS:
        case Film::Property::VERSION_NUMBER:
        case Film::Property::RELEASE_TERRITORY:
+       case Film::Property::RATINGS:
                setup_dcp_name ();
                break;
        default:
index cb12d6a292d29e828ead50c8f7ee9c1d6edadc33..f7cb8df8c6471fc95978aa6bf948689611c1e2c2 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 (_("Rating (e.g. 15)"), true);
-       _rating = add (new wxTextCtrl (this, wxID_ANY));
-
        add (_("Studio (e.g. TCF)"), true);
        _studio = add (new wxTextCtrl (this, wxID_ANY));
 
@@ -66,7 +63,6 @@ ISDCFMetadataDialog::ISDCFMetadataDialog (wxWindow* parent, ISDCFMetadata dm, bo
        add (_("Mastered luminance (e.g. 14fl)"), true);
        _mastered_luminance = add (new wxTextCtrl (this, wxID_ANY));
 
-       _rating->SetValue (std_to_wx (dm.rating));
        _studio->SetValue (std_to_wx (dm.studio));
        _facility->SetValue (std_to_wx (dm.facility));
        _temp_version->SetValue (dm.temp_version);
@@ -85,7 +81,6 @@ ISDCFMetadataDialog::isdcf_metadata () const
 {
        ISDCFMetadata dm;
 
-       dm.rating = wx_to_std (_rating->GetValue ());
        dm.studio = wx_to_std (_studio->GetValue ());
        dm.facility = wx_to_std (_facility->GetValue ());
        dm.temp_version = _temp_version->GetValue ();
index 8980bd11a438abda5cabe286903df1421600a482..2fc8ca8c30639b1fba6ba8c66b1105358c049824 100644 (file)
@@ -33,7 +33,6 @@ public:
        ISDCFMetadata isdcf_metadata () const;
 
 private:
-       wxTextCtrl* _rating;
        wxTextCtrl* _studio;
        wxTextCtrl* _facility;
        wxCheckBox* _temp_version;
index 51a8c500943b74dd51555c772d8b7fe8b466b5c4..4ddf57e7044deb9ea5b64f539a66147ed1f043dc 100644 (file)
@@ -62,8 +62,8 @@ BOOST_AUTO_TEST_CASE (isdcf_name_test)
        audio->audio->set_language(dcp::LanguageTag("en-US"));
        film->set_content_versions({"1"});
        film->set_release_territory(dcp::LanguageTag::RegionSubtag("GB"));
+       film->set_ratings({dcp::Rating("BBFC", "PG")});
        ISDCFMetadata m;
-       m.rating = "PG";
        m.studio = "ST";
        m.facility = "FA";
        film->set_isdcf_metadata (m);
@@ -90,13 +90,13 @@ BOOST_AUTO_TEST_CASE (isdcf_name_test)
        film->examine_and_add_content (text);
        film->set_version_number(2);
        film->set_release_territory(dcp::LanguageTag::RegionSubtag("US"));
+       film->set_ratings({dcp::Rating("MPA", "R")});
        BOOST_REQUIRE (!wait_for_jobs());
        audio = content_factory("test/data/sine_440.wav").front();
        film->examine_and_add_content (audio);
        BOOST_REQUIRE (!wait_for_jobs());
        BOOST_REQUIRE (audio->audio);
        audio->audio->set_language (dcp::LanguageTag("de-DE"));
-       m.rating = "R";
        m.studio = "DI";
        m.facility = "PP";
        film->set_isdcf_metadata (m);
@@ -104,11 +104,9 @@ BOOST_AUTO_TEST_CASE (isdcf_name_test)
        BOOST_CHECK_EQUAL (film->isdcf_name(false), "MyNiceFilmWith_TLR-2_S_DE-fr_US-R_MOS_4K_DI_20140704_PP_SMPTE_OV");
 
        /* Test to see that RU ratings like 6+ survive */
-       m.rating = "6+";
-       film->set_isdcf_metadata (m);
+       film->set_ratings({dcp::Rating("RARS", "6+")});
        BOOST_CHECK_EQUAL (film->dcp_name(false), "MyNiceFilmWith_TLR-2_S_DE-fr_US-6+_MOS_4K_DI_20140704_PP_SMPTE_OV");
-       m.rating = "R";
-       film->set_isdcf_metadata (m);
+       film->set_ratings({dcp::Rating("MPA", "R")});
 
        /* Test interior aspect ratio: shouldn't be shown with trailers */