diff options
Diffstat (limited to 'src/lib')
| -rw-r--r-- | src/lib/film.cc | 23 | ||||
| -rw-r--r-- | src/lib/film.h | 9 | ||||
| -rw-r--r-- | src/lib/writer.cc | 3 |
3 files changed, 35 insertions, 0 deletions
diff --git a/src/lib/film.cc b/src/lib/film.cc index 44c49220b..acfea9991 100644 --- a/src/lib/film.cc +++ b/src/lib/film.cc @@ -481,6 +481,9 @@ Film::metadata (bool with_content_paths) const if (_release_territory) { root->add_child("ReleaseTerritory")->add_child_text(_release_territory->subtag()); } + if (_sign_language_video_language) { + root->add_child("SignLanguageVideoLanguage")->add_child_text(_sign_language_video_language->to_string()); + } root->add_child("VersionNumber")->add_child_text(raw_convert<string>(_version_number)); root->add_child("Status")->add_child_text(dcp::status_to_string(_status)); if (_chain) { @@ -662,6 +665,11 @@ Film::read_metadata (optional<boost::filesystem::path> path) _release_territory = dcp::LanguageTag::RegionSubtag (*release_territory); } + auto sign_language_video_language = f.optional_string_child("SignLanguageVideoLanguage"); + if (sign_language_video_language) { + _sign_language_video_language = dcp::LanguageTag(*sign_language_video_language); + } + _version_number = f.optional_number_child<int>("VersionNumber").get_value_or(0); auto status = f.optional_string_child("Status"); @@ -2145,3 +2153,18 @@ Film::set_audio_language (optional<dcp::LanguageTag> language) _audio_language = language; } + +bool +Film::has_sign_language_video_channel () const +{ + return _audio_channels >= static_cast<int>(dcp::Channel::SIGN_LANGUAGE); +} + + +void +Film::set_sign_language_video_language (optional<dcp::LanguageTag> lang) +{ + FilmChangeSignaller ch (this, Property::SIGN_LANGUAGE_VIDEO_LANGUAGE); + _sign_language_video_language = lang; +} + diff --git a/src/lib/film.h b/src/lib/film.h index a2e0c8b60..85d06f64d 100644 --- a/src/lib/film.h +++ b/src/lib/film.h @@ -153,6 +153,8 @@ public: uint64_t required_disk_space () const; bool should_be_enough_disk_space (double& required, double& available, bool& can_hard_link) const; + bool has_sign_language_video_channel () const; + /* Proxies for some Playlist methods */ ContentList content () const; @@ -240,6 +242,7 @@ public: NAME_LANGUAGE, AUDIO_LANGUAGE, RELEASE_TERRITORY, + SIGN_LANGUAGE_VIDEO_LANGUAGE, VERSION_NUMBER, STATUS, CHAIN, @@ -356,6 +359,10 @@ public: return _release_territory; } + boost::optional<dcp::LanguageTag> sign_language_video_language () const { + return _sign_language_video_language; + } + int version_number () const { return _version_number; } @@ -434,6 +441,7 @@ public: void set_content_versions (std::vector<std::string> v); void set_name_language (dcp::LanguageTag lang); void set_release_territory (boost::optional<dcp::LanguageTag::RegionSubtag> region = boost::none); + void set_sign_language_video_language (boost::optional<dcp::LanguageTag> tag); void set_version_number (int v); void set_status (dcp::Status s); void set_chain (boost::optional<std::string> c = boost::none); @@ -542,6 +550,7 @@ private: std::vector<std::string> _content_versions; dcp::LanguageTag _name_language; boost::optional<dcp::LanguageTag::RegionSubtag> _release_territory; + boost::optional<dcp::LanguageTag> _sign_language_video_language; int _version_number; dcp::Status _status; boost::optional<std::string> _chain; diff --git a/src/lib/writer.cc b/src/lib/writer.cc index 6b8076875..66239c537 100644 --- a/src/lib/writer.cc +++ b/src/lib/writer.cc @@ -654,6 +654,9 @@ Writer::finish (boost::filesystem::path output_dcp) if (film()->luminance()) { cpl->set_luminance (*film()->luminance()); } + if (film()->sign_language_video_language()) { + cpl->set_sign_language_video_language (*film()->sign_language_video_language()); + } auto ac = film()->mapped_audio_channels(); dcp::MCASoundField field = ( |
