X-Git-Url: https://git.carlh.net/gitweb/?p=dcpomatic.git;a=blobdiff_plain;f=src%2Flib%2Fwriter.cc;h=0b1d8e06d08d3604ec6848c8ff95e3344c2f577c;hp=8cfd712a0d92cad3c8576caadb47676b408893fa;hb=d97029163865e212dc3d7b3c57c16459933a11f6;hpb=7ab22a7aa171aec36563b8ec0b7c0b69a36094fe diff --git a/src/lib/writer.cc b/src/lib/writer.cc index 8cfd712a0..0b1d8e06d 100644 --- a/src/lib/writer.cc +++ b/src/lib/writer.cc @@ -562,12 +562,14 @@ Writer::finish () pool.join_all (); service.stop (); - /* Add reels to CPL */ + /* Add reels */ BOOST_FOREACH (ReelWriter& i, _reels) { cpl->add (i.create_reel (_reel_assets, _fonts)); } + /* Add metadata */ + string creator = Config::instance()->dcp_creator(); if (creator.empty()) { creator = String::compose("DCP-o-matic %1 %2", dcpomatic_version, dcpomatic_git_commit); @@ -580,11 +582,39 @@ Writer::finish () cpl->set_ratings (_film->ratings()); - dcp::ContentVersion cv = cpl->content_version (); - cv.label_text = _film->content_version(); - cpl->set_content_version (cv); + vector cv; + BOOST_FOREACH (string i, _film->content_versions()) { + cv.push_back (dcp::ContentVersion(i)); + } + cpl->set_content_versions (cv); cpl->set_full_content_title_text (_film->name()); + cpl->set_full_content_title_text_language (_film->name_language()); + cpl->set_release_territory (_film->release_territory()); + cpl->set_version_number (_film->version_number()); + cpl->set_status (_film->status()); + cpl->set_chain (_film->chain()); + cpl->set_distributor (_film->distributor()); + cpl->set_facility (_film->facility()); + cpl->set_luminance (_film->luminance()); + + list ac = _film->mapped_audio_channels (); + dcp::MainSoundConfiguration::Field field = ( + find(ac.begin(), ac.end(), static_cast(dcp::BSL)) != ac.end() || + find(ac.begin(), ac.end(), static_cast(dcp::BSR)) != ac.end() + ) ? dcp::MainSoundConfiguration::SEVEN_POINT_ONE : dcp::MainSoundConfiguration::FIVE_POINT_ONE; + + dcp::MainSoundConfiguration msc (field, _film->audio_channels()); + BOOST_FOREACH (int i, ac) { + if (i < _film->audio_channels()) { + msc.set_mapping (i, static_cast(i)); + } + } + + cpl->set_main_sound_configuration (msc.to_string()); + cpl->set_main_sound_sample_rate (_film->audio_frame_rate()); + cpl->set_main_picture_stored_area (_film->frame_size()); + cpl->set_main_picture_active_area (_film->active_area()); shared_ptr signer; signer = Config::instance()->signer_chain ();