X-Git-Url: https://git.carlh.net/gitweb/?a=blobdiff_plain;f=src%2Flib%2Ffilm.cc;h=7dd0ff6f158273fbceca4f204fbdffc04c19d29f;hb=a6696b9a58c14d81f0ae30482051c2cd47a004db;hp=945559a49a05dd8610a4fef1ef1d7eb6983daa01;hpb=a4b7d0af831b8cd9aafca5f2b264be416a7b1148;p=dcpomatic.git 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 +Film::audio_languages () const +{ + vector 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, vector> 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 {