summaryrefslogtreecommitdiff
path: root/src/lib
diff options
context:
space:
mode:
authorCarl Hetherington <cth@carlh.net>2021-04-02 23:45:19 +0200
committerCarl Hetherington <cth@carlh.net>2021-04-04 20:48:35 +0200
commitea51ac3483161343b7aefabe54420c6cb431c0fe (patch)
treed795c52c13989af628a28abad11d91c2d14f2405 /src/lib
parent48bfa4b2040d2bacd6befdab6c12b2ee3e9be5a1 (diff)
Use studio and facility from Interop/SMPTE metadata rather than ISDCF.
Diffstat (limited to 'src/lib')
-rw-r--r--src/lib/film.cc20
-rw-r--r--src/lib/film.h7
-rw-r--r--src/lib/isdcf_metadata.cc11
-rw-r--r--src/lib/isdcf_metadata.h2
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) */