summaryrefslogtreecommitdiff
path: root/src/lib/film.cc
diff options
context:
space:
mode:
authorCarl Hetherington <cth@carlh.net>2021-04-02 10:47:35 +0200
committerCarl Hetherington <cth@carlh.net>2021-04-02 10:47:35 +0200
commita6696b9a58c14d81f0ae30482051c2cd47a004db (patch)
tree0fb2983324b891f7dd3ecde04eb92dae00cb0a85 /src/lib/film.cc
parenta4b7d0af831b8cd9aafca5f2b264be416a7b1148 (diff)
Add language to audio content and use it instead of the general metadata.
Diffstat (limited to 'src/lib/film.cc')
-rw-r--r--src/lib/film.cc27
1 files changed, 23 insertions, 4 deletions
diff --git a/src/lib/film.cc b/src/lib/film.cc
index 945559a49..7dd0ff6f1 100644
--- a/src/lib/film.cc
+++ b/src/lib/film.cc
@@ -752,6 +752,23 @@ Film::mapped_audio_channels () const
}
+vector<dcp::LanguageTag>
+Film::audio_languages () const
+{
+ vector<dcp::LanguageTag> result;
+ for (auto i: content()) {
+ if (i->audio && !i->audio->mapping().mapped_output_channels().empty() && i->audio->language()) {
+ result.push_back (i->audio->language().get());
+ }
+ }
+
+ std::sort (result.begin(), result.end());
+ auto last = std::unique (result.begin(), result.end());
+ result.erase (last, result.end());
+ return result;
+}
+
+
pair<optional<dcp::LanguageTag>, vector<dcp::LanguageTag>>
Film::subtitle_languages () const
{
@@ -889,7 +906,9 @@ Film::isdcf_name (bool if_created_now) const
}
}
- auto const audio_language = dm.audio_language.empty() ? "XX" : dm.audio_language;
+ auto audio_langs = audio_languages();
+ auto audio_language = (audio_langs.empty() || !audio_langs.front().language()) ? "XX" : audio_langs.front().language()->subtag();
+ transform (audio_language.begin(), audio_language.end(), audio_language.begin(), ::toupper);
d += "_" + audio_language;
@@ -909,9 +928,9 @@ Film::isdcf_name (bool if_created_now) const
}
}
- auto sublangs = subtitle_languages();
- if (sublangs.first && sublangs.first->language()) {
- auto lang = sublangs.first->language()->subtag();
+ auto sub_langs = subtitle_languages();
+ if (sub_langs.first && sub_langs.first->language()) {
+ auto lang = sub_langs.first->language()->subtag();
if (burnt_in) {
transform (lang.begin(), lang.end(), lang.begin(), ::tolower);
} else {