using namespace boost::placeholders;
#endif
using dcp::Data;
+using dcp::ArrayData;
using namespace dcpomatic;
Writer::Writer (shared_ptr<const Film> film, weak_ptr<Job> j)
* @param eyes Eyes that this frame image is for.
*/
void
-Writer::write (Data encoded, Frame frame, Eyes eyes)
+Writer::write (shared_ptr<const Data> encoded, Frame frame, Eyes eyes)
{
boost::mutex::scoped_lock lock (_state_mutex);
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;
cpl->set_main_picture_stored_area (_film->frame_size());
cpl->set_main_picture_active_area (_film->active_area());
+ vector<dcp::LanguageTag> sl = _film->subtitle_languages();
+ if (sl.size() > 1) {
+ cpl->set_additional_subtitle_languages(std::vector<dcp::LanguageTag>(sl.begin() + 1, sl.end()));
+ }
+
shared_ptr<const dcp::CertificateChain> signer;
signer = Config::instance()->signer_chain ();
/* We did check earlier, but check again here to be on the safe side */
boost::algorithm::replace_all (text, "$CONTAINER", _film->container()->container_nickname());
boost::algorithm::replace_all (text, "$AUDIO_LANGUAGE", _film->isdcf_metadata().audio_language);
- optional<string> subtitle_language;
- BOOST_FOREACH (shared_ptr<Content> i, _film->content()) {
- BOOST_FOREACH (shared_ptr<TextContent> j, i->text) {
- if (j->type() == TEXT_OPEN_SUBTITLE && j->use()) {
- subtitle_language = j->language ();
- }
- }
+ vector<dcp::LanguageTag> 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 (