X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=src%2Flib%2Fdcp_subtitle_decoder.cc;h=024d62f3424f3138f2f84f190e5f99119d4a8984;hb=18cb0e914922cd76e9c205e88962816970b5c0cb;hp=1b144f20456bec9e3d928851632f70b958e85314;hpb=cb6729aa79b555b219974207fbe2ff0510f9d3ea;p=dcpomatic.git diff --git a/src/lib/dcp_subtitle_decoder.cc b/src/lib/dcp_subtitle_decoder.cc index 1b144f204..024d62f34 100644 --- a/src/lib/dcp_subtitle_decoder.cc +++ b/src/lib/dcp_subtitle_decoder.cc @@ -1,5 +1,5 @@ /* - Copyright (C) 2014-2020 Carl Hetherington + Copyright (C) 2014-2021 Carl Hetherington This file is part of DCP-o-matic. @@ -18,12 +18,14 @@ */ + #include "dcp_subtitle_decoder.h" #include "dcp_subtitle_content.h" #include #include #include + using std::cout; using std::list; using std::map; @@ -31,13 +33,15 @@ using std::string; using std::vector; using std::shared_ptr; using std::dynamic_pointer_cast; +using std::make_shared; using boost::bind; using namespace dcpomatic; + DCPSubtitleDecoder::DCPSubtitleDecoder (shared_ptr film, shared_ptr content) : Decoder (film) { - shared_ptr c (load (content->path (0))); + auto c = load (content->path(0)); c->fix_empty_font_ids (); _subtitles = c->subtitles (); _next = _subtitles.begin (); @@ -46,11 +50,11 @@ DCPSubtitleDecoder::DCPSubtitleDecoder (shared_ptr film, shared_ptr< if (_next != _subtitles.end()) { first = content_time_period(*_next).from; } - text.push_back (shared_ptr (new TextDecoder (this, content->only_text(), first))); + text.push_back (make_shared(this, content->only_text(), first)); - map fm = c->font_data(); - for (map::const_iterator j = fm.begin(); j != fm.end(); ++j) { - _fonts.push_back (FontData(j->first, j->second)); + auto fm = c->font_data(); + for (auto const& i: fm) { + _fonts.push_back (FontData(i.first, i.second)); } /* Add a default font for any LoadFont nodes in our file which we haven't yet found fonts for */ @@ -61,6 +65,7 @@ DCPSubtitleDecoder::DCPSubtitleDecoder (shared_ptr film, shared_ptr< } } + void DCPSubtitleDecoder::seek (ContentTime time, bool accurate) { @@ -73,6 +78,7 @@ DCPSubtitleDecoder::seek (ContentTime time, bool accurate) } } + bool DCPSubtitleDecoder::pass () { @@ -89,7 +95,7 @@ DCPSubtitleDecoder::pass () list s; list i; - ContentTimePeriod const p = content_time_period (*_next); + auto const p = content_time_period (*_next); while (_next != _subtitles.end () && content_time_period (*_next) == p) { auto ns = dynamic_pointer_cast(*_next); @@ -113,6 +119,7 @@ DCPSubtitleDecoder::pass () return false; } + ContentTimePeriod DCPSubtitleDecoder::content_time_period (shared_ptr s) const {