summaryrefslogtreecommitdiff
path: root/src/lib/reel_writer.cc
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib/reel_writer.cc')
-rw-r--r--src/lib/reel_writer.cc25
1 files changed, 17 insertions, 8 deletions
diff --git a/src/lib/reel_writer.cc b/src/lib/reel_writer.cc
index 01a798676..8750653d8 100644
--- a/src/lib/reel_writer.cc
+++ b/src/lib/reel_writer.cc
@@ -103,7 +103,7 @@ mxf_metadata()
* subtitle / closed caption files.
*/
ReelWriter::ReelWriter(
- weak_ptr<const Film> weak_film, DCPTimePeriod period, shared_ptr<Job> job, int reel_index, int reel_count, bool text_only, boost::filesystem::path output_dir
+ weak_ptr<const Film> weak_film, DCPTimePeriod period, shared_ptr<Job> job, int reel_index, int reel_count, bool text_only, bool dcp_only, boost::filesystem::path output_dir
)
: WeakConstFilm(weak_film)
, _output_dir(std::move(output_dir))
@@ -113,10 +113,11 @@ ReelWriter::ReelWriter(
, _content_summary(film()->content_summary(period))
, _job(job)
, _text_only(text_only)
+ , _dcp_only(dcp_only)
, _info_file(film()->info_file(period), dcp::filesystem::exists(film()->info_file(period)) ? "r+b" : "wb")
, _font_metrics(film()->frame_size().height)
{
- if (!_info_file) {
+ if (!_info_file && !_dcp_only) {
auto const info_file_path = film()->info_file(period);
throw OpenFileError(info_file_path, _info_file.open_error(), dcp::filesystem::exists(info_file_path) ? OpenFileError::READ_WRITE : OpenFileError::WRITE);
}
@@ -174,7 +175,9 @@ ReelWriter::ReelWriter(
dcp::filesystem::rename(*existing_asset_filename, new_asset_filename);
}
remembered_assets.push_back(RememberedAsset(new_asset_filename.filename(), period, film()->video_identifier()));
- film()->write_remembered_assets(remembered_assets);
+ if (!_dcp_only) {
+ film()->write_remembered_assets(remembered_assets);
+ }
picture_asset->set_file(new_asset_filename);
dcp::Behaviour const behaviour = _first_nonexistent_frame > 0 ? dcp::Behaviour::OVERWRITE_EXISTING : dcp::Behaviour::MAKE_NEW;
@@ -193,7 +196,9 @@ ReelWriter::ReelWriter(
dcp::filesystem::copy(*existing_asset_filename, new_asset_filename);
remembered_assets.push_back(RememberedAsset(new_asset_filename, period, film()->video_identifier()));
}
- film()->write_remembered_assets(remembered_assets);
+ if (!_dcp_only) {
+ film()->write_remembered_assets(remembered_assets);
+ }
if (film()->video_encoding() == VideoEncoding::JPEG2000) {
if (film()->three_d()) {
@@ -299,8 +304,10 @@ ReelWriter::write(shared_ptr<const Data> encoded, Frame frame, Eyes eyes)
return;
}
- auto fin = J2KFrameInfo(_j2k_picture_asset_writer->write(encoded->data(), encoded->size()));
- fin.write(_info_file, frame, eyes);
+ if (!_dcp_only) {
+ auto fin = J2KFrameInfo(_j2k_picture_asset_writer->write(encoded->data(), encoded->size()));
+ fin.write(_info_file, frame, eyes);
+ }
_last_written[eyes] = encoded;
}
@@ -348,8 +355,10 @@ ReelWriter::repeat_write(Frame frame, Eyes eyes)
return;
}
- auto fin = J2KFrameInfo(_j2k_picture_asset_writer->write(_last_written[eyes]->data(), _last_written[eyes]->size()));
- fin.write(_info_file, frame, eyes);
+ if (!_dcp_only) {
+ auto fin = J2KFrameInfo(_j2k_picture_asset_writer->write(_last_written[eyes]->data(), _last_written[eyes]->size()));
+ fin.write(_info_file, frame, eyes);
+ }
}