diff options
| author | Carl Hetherington <cth@carlh.net> | 2018-09-14 21:22:33 +0100 |
|---|---|---|
| committer | Carl Hetherington <cth@carlh.net> | 2018-09-14 21:22:33 +0100 |
| commit | 234bca29f70aeeba4fffd67f987de876ff89b6cc (patch) | |
| tree | 1096d9356805a79d802e950438aef8267ff6df42 /src/lib | |
| parent | 53c7f717da44c6ff681bde8946875e4f39764b25 (diff) | |
Basic and rather clumsy option to respect KDM validity windows.
Diffstat (limited to 'src/lib')
| -rw-r--r-- | src/lib/config.cc | 5 | ||||
| -rw-r--r-- | src/lib/config.h | 9 | ||||
| -rw-r--r-- | src/lib/dcp_content.cc | 11 | ||||
| -rw-r--r-- | src/lib/dcp_content.h | 2 |
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; |
