X-Git-Url: https://git.carlh.net/gitweb/?a=blobdiff_plain;f=src%2Flib%2Freel_writer.cc;h=3697fc7b147472992d1e00470ece76735994f637;hb=54ca5a01f0648d2a5101fab0f50b41d8c90612e4;hp=116761dab857b269528fb1b7f558ec1abc587964;hpb=895b386b6751afd3d068155f4ea71e762297672a;p=dcpomatic.git diff --git a/src/lib/reel_writer.cc b/src/lib/reel_writer.cc index 116761dab..3697fc7b1 100644 --- a/src/lib/reel_writer.cc +++ b/src/lib/reel_writer.cc @@ -1,5 +1,5 @@ /* - Copyright (C) 2012-2019 Carl Hetherington + Copyright (C) 2012-2020 Carl Hetherington This file is part of DCP-o-matic. @@ -27,6 +27,7 @@ #include "digester.h" #include "font.h" #include "compose.hpp" +#include "config.h" #include "audio_buffers.h" #include "image.h" #include @@ -65,14 +66,29 @@ using namespace dcpomatic; int const ReelWriter::_info_size = 48; +static dcp::MXFMetadata +mxf_metadata () +{ + dcp::MXFMetadata meta; + Config* config = Config::instance(); + if (!config->dcp_company_name().empty()) { + meta.company_name = config->dcp_company_name (); + } + if (!config->dcp_product_name().empty()) { + meta.product_name = config->dcp_product_name (); + } + if (!config->dcp_product_version().empty()) { + meta.product_version = config->dcp_product_version (); + } + return meta; +} + /** @param job Related job, or 0 */ ReelWriter::ReelWriter ( shared_ptr film, DCPTimePeriod period, shared_ptr job, int reel_index, int reel_count, optional content_summary ) : _film (film) , _period (period) - , _last_written_video_frame (-1) - , _last_written_eyes (EYES_RIGHT) , _reel_index (reel_index) , _reel_count (reel_count) , _content_summary (content_summary) @@ -115,6 +131,7 @@ ReelWriter::ReelWriter ( } _picture_asset->set_size (_film->frame_size()); + _picture_asset->set_metadata (mxf_metadata()); if (_film->encrypted ()) { _picture_asset->set_key (_film->key()); @@ -138,6 +155,8 @@ ReelWriter::ReelWriter ( new dcp::SoundAsset (dcp::Fraction (_film->video_frame_rate(), 1), _film->audio_frame_rate (), _film->audio_channels (), standard) ); + _sound_asset->set_metadata (mxf_metadata()); + if (_film->encrypted ()) { _sound_asset->set_key (_film->key ()); } @@ -266,12 +285,10 @@ ReelWriter::write (optional encoded, Frame frame, Eyes eyes) dcp::FrameInfo fin = _picture_asset_writer->write (encoded->data().get (), encoded->size()); write_frame_info (frame, eyes, fin); _last_written[eyes] = encoded; - _last_written_video_frame = frame; - _last_written_eyes = eyes; } void -ReelWriter::fake_write (Frame frame, Eyes eyes, int size) +ReelWriter::fake_write (int size) { if (!_picture_asset_writer) { /* We're not writing any data */ @@ -279,8 +296,6 @@ ReelWriter::fake_write (Frame frame, Eyes eyes, int size) } _picture_asset_writer->fake_write (size); - _last_written_video_frame = frame; - _last_written_eyes = eyes; } void @@ -296,8 +311,6 @@ ReelWriter::repeat_write (Frame frame, Eyes eyes) _last_written[eyes]->size() ); write_frame_info (frame, eyes, fin); - _last_written_video_frame = frame; - _last_written_eyes = eyes; } void @@ -462,6 +475,8 @@ maybe_add_text ( shared_ptr ReelWriter::create_reel (list const & refs, list > const & fonts) { + LOG_GENERAL ("create_reel for %1-%2; %3 of %4", _period.from.get(), _period.to.get(), _reel_index, _reel_count); + shared_ptr reel (new dcp::Reel ()); shared_ptr reel_picture_asset; @@ -491,8 +506,6 @@ ReelWriter::create_reel (list const & refs, listvideo_frame_rate()); DCPOMATIC_ASSERT (reel_picture_asset); @@ -515,9 +528,13 @@ ReelWriter::create_reel (list const & refs, list k = dynamic_pointer_cast (j.asset); + if (k) { + LOG_GENERAL ("candidate sound asset period is %1-%2", j.period.from.get(), j.period.to.get()); + } if (k && j.period == _period) { reel_sound_asset = k; /* If we have a hash for this asset in the CPL, assume that it is correct */ @@ -638,6 +655,7 @@ ReelWriter::write (PlayerText subs, TextType type, optional track, } else { shared_ptr s (new dcp::SMPTESubtitleAsset ()); s->set_content_title_text (_film->name ()); + s->set_metadata (mxf_metadata()); if (type == TEXT_OPEN_SUBTITLE && !lang.empty()) { s->set_language (lang); } else {