X-Git-Url: https://git.carlh.net/gitweb/?a=blobdiff_plain;f=src%2Flib%2Ffilm.cc;h=0bba13e2802c369504e973262b7140f0b306c8d4;hb=9d1d1cea1cdf17b4cc2208800ca22288f979d3ec;hp=5b6b44892427131b024b82d53d10e4efb674c1cb;hpb=43cca4d3a11e077b3e75c713b95942cc3afc9eb1;p=dcpomatic.git diff --git a/src/lib/film.cc b/src/lib/film.cc index 5b6b44892..0bba13e28 100644 --- a/src/lib/film.cc +++ b/src/lib/film.cc @@ -776,16 +776,27 @@ Film::mapped_audio_channels () const pair, vector> -Film::subtitle_languages () const +Film::subtitle_languages(bool* burnt_in) const { + if (burnt_in) { + *burnt_in = true; + } + pair, vector> result; for (auto i: content()) { + auto dcp = dynamic_pointer_cast(i); for (auto const& text: i->text) { - if (text->use() && text->type() == TextType::OPEN_SUBTITLE && text->language()) { - if (text->language_is_additional()) { - result.second.push_back(text->language().get()); - } else { - result.first = text->language().get(); + auto const use = text->use() || (dcp && dcp->reference_text(TextType::OPEN_SUBTITLE)); + if (use && text->type() == TextType::OPEN_SUBTITLE) { + if (!text->burn() && burnt_in) { + *burnt_in = false; + } + if (text->language()) { + if (text->language_is_additional()) { + result.second.push_back(text->language().get()); + } else { + result.first = text->language().get(); + } } } } @@ -955,16 +966,8 @@ Film::isdcf_name (bool if_created_now) const isdcf_name += "_" + to_upper (audio_language); - auto burnt_in = true; - for (auto i: content_list) { - for (auto text: i->text) { - if (text->type() == TextType::OPEN_SUBTITLE && text->use() && !text->burn()) { - burnt_in = false; - } - } - } - - auto sub_langs = subtitle_languages(); + bool burnt_in; + auto sub_langs = subtitle_languages(&burnt_in); auto ccap_langs = closed_caption_languages(); if (sub_langs.first && sub_langs.first->language()) { auto lang = entry_for_language(*sub_langs.first);