X-Git-Url: https://git.carlh.net/gitweb/?a=blobdiff_plain;f=src%2Flib%2Fsubtitle_encoder.cc;h=2daa5086dda6c2a529c4420f4fb8c5f0525be99e;hb=6eba051dcbb8c56e3e2efea946ce0380d17a7b33;hp=43c68bc2218e6e34b642aabff6d87543a78c6ae4;hpb=2cdf3d9f461b12d0925cc54368105bbd177bbbb3;p=dcpomatic.git diff --git a/src/lib/subtitle_encoder.cc b/src/lib/subtitle_encoder.cc index 43c68bc22..2daa5086d 100644 --- a/src/lib/subtitle_encoder.cc +++ b/src/lib/subtitle_encoder.cc @@ -63,7 +63,7 @@ SubtitleEncoder::SubtitleEncoder (shared_ptr film, shared_ptr j filename = filename.string() + String::compose(_("_reel%1"), i + 1); } - _assets.push_back (make_pair(shared_ptr(), filename)); + _assets.push_back (make_pair(shared_ptr(), boost::filesystem::change_extension(filename, ".xml"))); } BOOST_FOREACH (dcpomatic::DCPTimePeriod i, film->reels()) { @@ -84,10 +84,25 @@ SubtitleEncoder::go () while (!_player->pass()) {} + int reel = 0; for (vector, boost::filesystem::path> >::iterator i = _assets.begin(); i != _assets.end(); ++i) { - if (i->first) { - i->first->write (i->second); + if (!i->first) { + /* No subtitles arrived for this asset; make an empty one so we write something to the output */ + if (_film->interop()) { + shared_ptr s (new dcp::InteropSubtitleAsset()); + s->set_movie_title (_film->name()); + s->set_reel_number (raw_convert(reel + 1)); + i->first = s; + } else { + shared_ptr s (new dcp::SMPTESubtitleAsset()); + s->set_content_title_text (_film->name()); + s->set_reel_number (reel + 1); + i->first = s; + } } + + i->first->write (i->second); + ++reel; } }