diff options
| author | Carl Hetherington <cth@carlh.net> | 2021-04-02 10:47:35 +0200 |
|---|---|---|
| committer | Carl Hetherington <cth@carlh.net> | 2021-04-02 10:47:35 +0200 |
| commit | a6696b9a58c14d81f0ae30482051c2cd47a004db (patch) | |
| tree | 0fb2983324b891f7dd3ecde04eb92dae00cb0a85 /src/lib/film.cc | |
| parent | a4b7d0af831b8cd9aafca5f2b264be416a7b1148 (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.cc | 27 |
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 { |
