X-Git-Url: https://main.carlh.net/gitweb/?p=dcpomatic.git;a=blobdiff_plain;f=src%2Flib%2Fwriter.cc;h=a9700f4f5edbbb7272e2ed2735c56f74cd2535b3;hp=d3fdc5128611a2e6c5436ae8c6147be61c07034e;hb=4347d97b703cfddcd322051092ccfcd5b5a6b941;hpb=1a7c50245309bb0b99001940b2203a267de942ca diff --git a/src/lib/writer.cc b/src/lib/writer.cc index d3fdc5128..a9700f4f5 100644 --- a/src/lib/writer.cc +++ b/src/lib/writer.cc @@ -66,6 +66,7 @@ using boost::optional; using namespace boost::placeholders; #endif using dcp::Data; +using dcp::ArrayData; using namespace dcpomatic; Writer::Writer (shared_ptr film, weak_ptr j) @@ -130,7 +131,7 @@ Writer::~Writer () * @param eyes Eyes that this frame image is for. */ void -Writer::write (Data encoded, Frame frame, Eyes eyes) +Writer::write (shared_ptr encoded, Frame frame, Eyes eyes) { boost::mutex::scoped_lock lock (_state_mutex); @@ -426,7 +427,7 @@ try case QueueItem::FULL: LOG_DEBUG_ENCODE (N_("Writer FULL-writes %1 (%2)"), qi.frame, (int) qi.eyes); if (!qi.encoded) { - qi.encoded = Data (_film->j2c_path (qi.reel, qi.frame, qi.eyes, false)); + qi.encoded.reset (new ArrayData(_film->j2c_path(qi.reel, qi.frame, qi.eyes, false))); } reel.write (qi.encoded, qi.frame, qi.eyes); ++_full_written; @@ -619,6 +620,11 @@ Writer::finish () cpl->set_main_picture_stored_area (_film->frame_size()); cpl->set_main_picture_active_area (_film->active_area()); + vector sl = _film->subtitle_languages(); + if (sl.size() > 1) { + cpl->set_additional_subtitle_languages(std::vector(sl.begin() + 1, sl.end())); + } + shared_ptr signer; signer = Config::instance()->signer_chain (); /* We did check earlier, but check again here to be on the safe side */ @@ -659,15 +665,12 @@ Writer::write_cover_sheet () boost::algorithm::replace_all (text, "$CONTAINER", _film->container()->container_nickname()); boost::algorithm::replace_all (text, "$AUDIO_LANGUAGE", _film->isdcf_metadata().audio_language); - optional subtitle_language; - BOOST_FOREACH (shared_ptr i, _film->content()) { - BOOST_FOREACH (shared_ptr j, i->text) { - if (j->type() == TEXT_OPEN_SUBTITLE && j->use()) { - subtitle_language = j->language (); - } - } + vector subtitle_languages = _film->subtitle_languages(); + if (subtitle_languages.empty()) { + boost::algorithm::replace_all (text, "$SUBTITLE_LANGUAGE", "None"); + } else { + boost::algorithm::replace_all (text, "$SUBTITLE_LANGUAGE", subtitle_languages.front().description()); } - boost::algorithm::replace_all (text, "$SUBTITLE_LANGUAGE", subtitle_language.get_value_or("None")); boost::uintmax_t size = 0; for (