*/
#include <fstream>
+#include <cerrno>
#include <libdcp/picture_asset.h>
#include <libdcp/sound_asset.h>
#include <libdcp/picture_frame.h>
#include <libdcp/reel.h>
+#include <libdcp/cpl.h>
#include "writer.h"
#include "compose.hpp"
#include "film.h"
#include "format.h"
#include "log.h"
#include "dcp_video_frame.h"
+#include "config.h"
#include "i18n.h"
_picture_asset_writer = _picture_asset->start_write (_first_nonexistant_frame > 0);
- AudioMapping m (_film->audio_channels ());
+ AudioMapping m (_film);
if (m.dcp_channels() > 0) {
_sound_asset.reset (
}
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 */
_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);
}
)
));
- 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));
}
boost::filesystem::path p;
p /= _film->internal_video_mxf_dir ();
p /= _film->internal_video_mxf_filename ();
- FILE* mxf = fopen (p.string().c_str(), N_("rb"));
+ FILE* mxf = fopen (p.string().c_str(), "rb");
if (!mxf) {
+ _film->log()->log (String::compose ("Could not open existing MXF at %1 (errno=%2)", p.string(), errno));
return;
}