summaryrefslogtreecommitdiff
path: root/src/lib
diff options
context:
space:
mode:
authorCarl Hetherington <cth@carlh.net>2018-09-14 21:22:33 +0100
committerCarl Hetherington <cth@carlh.net>2018-09-14 21:22:33 +0100
commit234bca29f70aeeba4fffd67f987de876ff89b6cc (patch)
tree1096d9356805a79d802e950438aef8267ff6df42 /src/lib
parent53c7f717da44c6ff681bde8946875e4f39764b25 (diff)
Basic and rather clumsy option to respect KDM validity windows.
Diffstat (limited to 'src/lib')
-rw-r--r--src/lib/config.cc5
-rw-r--r--src/lib/config.h9
-rw-r--r--src/lib/dcp_content.cc11
-rw-r--r--src/lib/dcp_content.h2
4 files changed, 27 insertions, 0 deletions
diff --git a/src/lib/config.cc b/src/lib/config.cc
index 30271283b..373b71df6 100644
--- a/src/lib/config.cc
+++ b/src/lib/config.cc
@@ -164,6 +164,7 @@ Config::set_defaults ()
_gdc_password = optional<string>();
_interface_complexity = INTERFACE_SIMPLE;
_player_mode = PLAYER_MODE_WINDOW;
+ _respect_kdm_validity_periods = false;
_allowed_dcp_frame_rates.clear ();
_allowed_dcp_frame_rates.push_back (24);
@@ -491,6 +492,8 @@ try
_player_mode = PLAYER_MODE_DUAL;
}
+ _respect_kdm_validity_periods = f.optional_bool_child("RespectKDMValidityPeriods").get_value_or(false);
+
/* Replace any cinemas from config.xml with those from the configured file */
if (boost::filesystem::exists (_cinemas_file)) {
cxml::Document f ("Cinemas");
@@ -876,6 +879,8 @@ Config::write_config () const
break;
}
+ root->add_child("RespectKDMValidityPeriods")->add_child_text(_respect_kdm_validity_periods ? "1" : "0");
+
try {
doc.write_to_file_formatted(config_file().string());
} catch (xmlpp::exception& e) {
diff --git a/src/lib/config.h b/src/lib/config.h
index d2829af08..c8ae32efd 100644
--- a/src/lib/config.h
+++ b/src/lib/config.h
@@ -469,6 +469,10 @@ public:
return _player_mode;
}
+ bool respect_kdm_validity_periods () const {
+ return _respect_kdm_validity_periods;
+ }
+
/* SET (mostly) */
void set_master_encoding_threads (int n) {
@@ -871,6 +875,10 @@ public:
maybe_set (_player_mode, m);
}
+ void set_respect_kdm_validity_periods (bool r) {
+ maybe_set (_respect_kdm_validity_periods, r);
+ }
+
void changed (Property p = OTHER);
boost::signals2::signal<void (Property)> Changed;
/** Emitted if read() failed on an existing Config file. There is nothing
@@ -1054,6 +1062,7 @@ private:
boost::optional<std::string> _gdc_password;
Interface _interface_complexity;
PlayerMode _player_mode;
+ bool _respect_kdm_validity_periods;
static int const _current_version;
diff --git a/src/lib/dcp_content.cc b/src/lib/dcp_content.cc
index a2874a604..3498cc961 100644
--- a/src/lib/dcp_content.cc
+++ b/src/lib/dcp_content.cc
@@ -657,3 +657,14 @@ DCPContent::set_cpl (string id)
_cpl = id;
}
}
+
+bool
+DCPContent::kdm_timing_window_valid () const
+{
+ if (!_kdm) {
+ return true;
+ }
+
+ dcp::LocalTime now;
+ return _kdm->not_valid_before() < now && now < _kdm->not_valid_after();
+}
diff --git a/src/lib/dcp_content.h b/src/lib/dcp_content.h
index 43476e729..db617afa2 100644
--- a/src/lib/dcp_content.h
+++ b/src/lib/dcp_content.h
@@ -138,6 +138,8 @@ public:
return _three_d;
}
+ bool kdm_timing_window_valid () const;
+
private:
friend class reels_test5;