summaryrefslogtreecommitdiff
path: root/src/lib/reel_writer.cc
diff options
context:
space:
mode:
authorCarl Hetherington <cth@carlh.net>2020-11-01 23:51:19 +0100
committerCarl Hetherington <cth@carlh.net>2020-11-02 23:10:04 +0100
commit2ea3a0d0e4066a166c0700bd1d53daa7f1c50dff (patch)
treea730b75be36d74a8aee1ebab60d5a3aa629d8d35 /src/lib/reel_writer.cc
parent6fa9748f382302fa88292b4219598bb81edc7bd0 (diff)
Pass around JPEG2000 data as a shared_ptr and hence avoid a copy
of 4MB of data for every JPEG2000 frame we decode.
Diffstat (limited to 'src/lib/reel_writer.cc')
-rw-r--r--src/lib/reel_writer.cc7
1 files changed, 4 insertions, 3 deletions
diff --git a/src/lib/reel_writer.cc b/src/lib/reel_writer.cc
index 097b9d84b..7ed79d818 100644
--- a/src/lib/reel_writer.cc
+++ b/src/lib/reel_writer.cc
@@ -67,6 +67,7 @@ using boost::dynamic_pointer_cast;
#if BOOST_VERSION >= 106100
using namespace boost::placeholders;
#endif
+using dcp::ArrayData;
using dcp::Data;
using dcp::raw_convert;
using namespace dcpomatic;
@@ -289,14 +290,14 @@ ReelWriter::check_existing_picture_asset (boost::filesystem::path asset)
}
void
-ReelWriter::write (optional<Data> encoded, Frame frame, Eyes eyes)
+ReelWriter::write (shared_ptr<const Data> encoded, Frame frame, Eyes eyes)
{
if (!_picture_asset_writer) {
/* We're not writing any data */
return;
}
- dcp::FrameInfo fin = _picture_asset_writer->write (encoded->data().get (), encoded->size());
+ dcp::FrameInfo fin = _picture_asset_writer->write (encoded->data(), encoded->size());
write_frame_info (frame, eyes, fin);
_last_written[eyes] = encoded;
}
@@ -338,7 +339,7 @@ ReelWriter::repeat_write (Frame frame, Eyes eyes)
}
dcp::FrameInfo fin = _picture_asset_writer->write (
- _last_written[eyes]->data().get(),
+ _last_written[eyes]->data(),
_last_written[eyes]->size()
);
write_frame_info (frame, eyes, fin);