X-Git-Url: https://git.carlh.net/gitweb/?p=dcpomatic.git;a=blobdiff_plain;f=src%2Flib%2Fdcp_content.cc;h=62b74be90cb7765db19ad34a2ad51656da271abf;hp=f8639cef9cc187f7ed2b35bc2821d955329be0e9;hb=203ae58ace6f8ff2acddb15f299d0f6dc82ff7f8;hpb=eeaca1992aa117fe3a2a4a079d8a20a01d88e933 diff --git a/src/lib/dcp_content.cc b/src/lib/dcp_content.cc index f8639cef9..62b74be90 100644 --- a/src/lib/dcp_content.cc +++ b/src/lib/dcp_content.cc @@ -206,6 +206,8 @@ DCPContent::read_sub_directory (boost::filesystem::path p) } else if (boost::filesystem::is_directory(i.path()) && i.path().filename() != ".AppleDouble") { LOG_GENERAL ("Inside there's directory %1", i.path().string()); read_sub_directory (i.path()); + } else { + LOG_GENERAL("Ignoring %1 from inside: status is %2", i.path().string(), static_cast(boost::filesystem::status(i.path()).type())); } } } @@ -268,6 +270,7 @@ DCPContent::examine (shared_ptr film, shared_ptr job) for (int i = 0; i < examiner->text_count(TextType::OPEN_SUBTITLE); ++i) { auto c = make_shared(this, TextType::OPEN_SUBTITLE, TextType::OPEN_SUBTITLE); c->set_language (examiner->open_subtitle_language()); + add_fonts_from_examiner(c, examiner->fonts()); new_text.push_back (c); } @@ -820,3 +823,41 @@ DCPContent::resolution () const return Resolution::TWO_K; } + +void +add_fonts_from_examiner(shared_ptr text, vector>> const & all_fonts) +{ + int reel_number = 0; + for (auto reel_fonts: all_fonts) { + for (auto font: reel_fonts) { + /* Each reel could have its own font with the same ID, so we disambiguate them here + * by prepending the reel number. We do the same disambiguation when emitting the + * subtitles in the DCP decoder. + */ + font->set_id(id_for_font_in_reel(font->id(), reel_number)); + text->add_font(font); + } + ++reel_number; + } + +} + + +string +id_for_font_in_reel(string id, int reel) +{ + return String::compose("%1_%2", reel, id); +} + + +void +DCPContent::check_font_ids() +{ + if (text.empty()) { + return; + } + + DCPExaminer examiner(shared_from_this(), true); + add_fonts_from_examiner(text.front(), examiner.fonts()); +} +