diff options
| author | Carl Hetherington <cth@carlh.net> | 2021-04-02 23:45:19 +0200 |
|---|---|---|
| committer | Carl Hetherington <cth@carlh.net> | 2021-04-04 20:48:35 +0200 |
| commit | ea51ac3483161343b7aefabe54420c6cb431c0fe (patch) | |
| tree | d795c52c13989af628a28abad11d91c2d14f2405 /src/lib | |
| parent | 48bfa4b2040d2bacd6befdab6c12b2ee3e9be5a1 (diff) | |
Use studio and facility from Interop/SMPTE metadata rather than ISDCF.
Diffstat (limited to 'src/lib')
| -rw-r--r-- | src/lib/film.cc | 20 | ||||
| -rw-r--r-- | src/lib/film.h | 7 | ||||
| -rw-r--r-- | src/lib/isdcf_metadata.cc | 11 | ||||
| -rw-r--r-- | src/lib/isdcf_metadata.h | 2 |
4 files changed, 25 insertions, 15 deletions
diff --git a/src/lib/film.cc b/src/lib/film.cc index 1f188021b..1275c571b 100644 --- a/src/lib/film.cc +++ b/src/lib/film.cc @@ -490,6 +490,9 @@ Film::metadata (bool with_content_paths) const if (_facility) { root->add_child("Facility")->add_child_text(*_facility); } + if (_studio) { + root->add_child("Studio")->add_child_text(*_studio); + } if (_luminance) { root->add_child("LuminanceValue")->add_child_text(raw_convert<string>(_luminance->value())); root->add_child("LuminanceUnit")->add_child_text(dcp::Luminance::unit_to_string(_luminance->unit())); @@ -666,6 +669,7 @@ Film::read_metadata (optional<boost::filesystem::path> path) _chain = f.optional_string_child("Chain"); _distributor = f.optional_string_child("Distributor"); _facility = f.optional_string_child("Facility"); + _studio = f.optional_string_child("Studio"); auto value = f.optional_number_child<float>("LuminanceValue"); auto unit = f.optional_string_child("LuminanceUnit"); @@ -986,8 +990,8 @@ Film::isdcf_name (bool if_created_now) const d += "_" + resolution_to_string (_resolution); - if (!dm.studio.empty ()) { - d += "_" + dm.studio; + if (_studio && _studio->length() >= 2) { + d += "_" + to_upper (_studio->substr(0, 4)); } if (if_created_now) { @@ -996,8 +1000,8 @@ Film::isdcf_name (bool if_created_now) const d += "_" + boost::gregorian::to_iso_string (_isdcf_date); } - if (!dm.facility.empty ()) { - d += "_" + dm.facility; + if (_facility && _facility->length() >= 3) { + d += "_" + to_upper(_facility->substr(0, 3)); } if (_interop) { @@ -2061,6 +2065,14 @@ Film::set_facility (optional<string> f) } +void +Film::set_studio (optional<string> s) +{ + FilmChangeSignaller ch (this, Property::STUDIO); + _studio = s; +} + + optional<DCPTime> Film::marker (dcp::Marker type) const { diff --git a/src/lib/film.h b/src/lib/film.h index 6b50bba5e..fa87c6c35 100644 --- a/src/lib/film.h +++ b/src/lib/film.h @@ -239,6 +239,7 @@ public: CHAIN, DISTRIBUTOR, FACILITY, + STUDIO, LUMINANCE, }; @@ -373,6 +374,10 @@ public: return _facility; } + boost::optional<std::string> studio () const { + return _studio; + } + boost::optional<dcp::Luminance> luminance () const { return _luminance; } @@ -416,6 +421,7 @@ public: void set_status (dcp::Status s); void set_chain (boost::optional<std::string> c = boost::none); void set_facility (boost::optional<std::string> f = boost::none); + void set_studio (boost::optional<std::string> s = boost::none); void set_distributor (boost::optional<std::string> d = boost::none); void set_luminance (boost::optional<dcp::Luminance> l = boost::none); @@ -522,6 +528,7 @@ private: boost::optional<std::string> _chain; boost::optional<std::string> _distributor; boost::optional<std::string> _facility; + boost::optional<std::string> _studio; boost::optional<dcp::Luminance> _luminance; int _state_version; diff --git a/src/lib/isdcf_metadata.cc b/src/lib/isdcf_metadata.cc index c190ba3dc..eb8bcb1a5 100644 --- a/src/lib/isdcf_metadata.cc +++ b/src/lib/isdcf_metadata.cc @@ -34,10 +34,7 @@ using std::shared_ptr; using dcp::raw_convert; ISDCFMetadata::ISDCFMetadata (cxml::ConstNodePtr node) - : 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)) + : temp_version (node->optional_bool_child ("TempVersion").get_value_or (false)) , pre_release (node->optional_bool_child ("PreRelease").get_value_or (false)) , red_band (node->optional_bool_child ("RedBand").get_value_or (false)) , chain (node->optional_string_child ("Chain").get_value_or ("")) @@ -50,8 +47,6 @@ ISDCFMetadata::ISDCFMetadata (cxml::ConstNodePtr node) void ISDCFMetadata::as_xml (xmlpp::Node* root) const { - 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"); root->add_child("PreRelease")->add_child_text (pre_release ? "1" : "0"); root->add_child("RedBand")->add_child_text (red_band ? "1" : "0"); @@ -63,9 +58,7 @@ ISDCFMetadata::as_xml (xmlpp::Node* root) const bool operator== (ISDCFMetadata const & a, ISDCFMetadata const & b) { - return a.studio == b.studio && - a.facility == b.facility && - a.temp_version == b.temp_version && + return a.temp_version == b.temp_version && a.pre_release == b.pre_release && a.red_band == b.red_band && a.chain == b.chain && diff --git a/src/lib/isdcf_metadata.h b/src/lib/isdcf_metadata.h index 1c80e7b5d..b578dc997 100644 --- a/src/lib/isdcf_metadata.h +++ b/src/lib/isdcf_metadata.h @@ -43,8 +43,6 @@ public: void as_xml (xmlpp::Node *) const; void read_old_metadata (std::string, std::string); - std::string studio; - std::string facility; /** true if this is a temporary version (without final picture or sound) */ bool temp_version; /** true if this is a pre-release version (final picture and sound, but without accessibility features) */ |
