X-Git-Url: https://git.carlh.net/gitweb/?a=blobdiff_plain;f=src%2Flib%2Fwriter.cc;h=b545848cbcc7d871d7d2b0aaa1e234d20c38cd80;hb=cd4a82d90677cec80e891ac190000cb70767446f;hp=7258826ba1774f5a9fd3e32656bb32a2a761edd3;hpb=e94cd129dcd66a76210880bfdf19d27f7992651b;p=dcpomatic.git diff --git a/src/lib/writer.cc b/src/lib/writer.cc index 7258826ba..b545848cb 100644 --- a/src/lib/writer.cc +++ b/src/lib/writer.cc @@ -23,6 +23,7 @@ #include #include #include +#include #include "writer.h" #include "compose.hpp" #include "film.h" @@ -32,6 +33,7 @@ #include "dcp_content_type.h" #include "player.h" #include "audio_mapping.h" +#include "config.h" #include "i18n.h" @@ -69,8 +71,8 @@ Writer::Writer (shared_ptr f) _picture_asset.reset ( new libdcp::MonoPictureAsset ( - _film->video_mxf_dir (), - _film->video_mxf_filename (), + _film->internal_video_mxf_dir (), + _film->internal_video_mxf_filename (), _film->dcp_frame_rate (), _film->format()->dcp_size () ) @@ -82,7 +84,7 @@ Writer::Writer (shared_ptr f) _sound_asset.reset ( new libdcp::SoundAsset ( _film->dir (_film->dcp_name()), - N_("audio.mxf"), + _film->dcp_audio_mxf_filename (), _film->dcp_frame_rate (), _film->audio_mapping().dcp_channels (), dcp_audio_sample_rate (_film->audio_frame_rate()) @@ -261,20 +263,25 @@ Writer::finish () } int const frames = _last_written_frame + 1; - int const duration = frames - _film->trim_start() - _film->trim_end(); + int duration = 0; + if (_film->trim_type() == Film::CPL) { + duration = frames - _film->trim_start() - _film->trim_end(); + _picture_asset->set_entry_point (_film->trim_start ()); + } else { + duration = frames; + } - _picture_asset->set_entry_point (_film->trim_start ()); _picture_asset->set_duration (duration); /* Hard-link the video MXF into the DCP */ boost::filesystem::path from; - from /= _film->video_mxf_dir(); - from /= _film->video_mxf_filename(); + from /= _film->internal_video_mxf_dir(); + from /= _film->internal_video_mxf_filename(); boost::filesystem::path to; to /= _film->dir (_film->dcp_name()); - to /= N_("video.mxf"); + to /= _film->dcp_video_mxf_filename (); boost::system::error_code ec; boost::filesystem::create_hard_link (from, to, ec); @@ -287,10 +294,12 @@ Writer::finish () /* And update the asset */ _picture_asset->set_directory (_film->dir (_film->dcp_name ())); - _picture_asset->set_file_name (N_("video.mxf")); + _picture_asset->set_file_name (_film->dcp_video_mxf_filename ()); if (_sound_asset) { - _sound_asset->set_entry_point (_film->trim_start ()); + if (_film->trim_type() == Film::CPL) { + _sound_asset->set_entry_point (_film->trim_start ()); + } _sound_asset->set_duration (duration); } @@ -315,7 +324,9 @@ Writer::finish () ) )); - dcp.write_xml (); + libdcp::XMLMetadata meta = Config::instance()->dcp_metadata (); + meta.set_issue_date_now (); + dcp.write_xml (meta); _film->log()->log (String::compose (N_("Wrote %1 FULL, %2 FAKE, %3 REPEAT; %4 pushed to disk"), _full_written, _fake_written, _repeat_written, _pushed_to_disk)); } @@ -341,8 +352,8 @@ Writer::check_existing_picture_mxf () { /* Try to open the existing MXF */ boost::filesystem::path p; - p /= _film->video_mxf_dir (); - p /= _film->video_mxf_filename (); + p /= _film->internal_video_mxf_dir (); + p /= _film->internal_video_mxf_filename (); FILE* mxf = fopen (p.string().c_str(), N_("rb")); if (!mxf) { return;