summaryrefslogtreecommitdiff
path: root/src/lib
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib')
-rw-r--r--src/lib/film.cc23
-rw-r--r--src/lib/film.h9
-rw-r--r--src/lib/writer.cc3
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 = (