diff options
| author | Carl Hetherington <cth@carlh.net> | 2020-11-01 23:51:19 +0100 |
|---|---|---|
| committer | Carl Hetherington <cth@carlh.net> | 2020-11-02 23:10:04 +0100 |
| commit | 2ea3a0d0e4066a166c0700bd1d53daa7f1c50dff (patch) | |
| tree | a730b75be36d74a8aee1ebab60d5a3aa629d8d35 /src/lib/writer.cc | |
| parent | 6fa9748f382302fa88292b4219598bb81edc7bd0 (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/writer.cc')
| -rw-r--r-- | src/lib/writer.cc | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/src/lib/writer.cc b/src/lib/writer.cc index d3fdc5128..346cbb0c2 100644 --- a/src/lib/writer.cc +++ b/src/lib/writer.cc @@ -66,6 +66,7 @@ using boost::optional; using namespace boost::placeholders; #endif using dcp::Data; +using dcp::ArrayData; using namespace dcpomatic; Writer::Writer (shared_ptr<const Film> film, weak_ptr<Job> j) @@ -130,7 +131,7 @@ Writer::~Writer () * @param eyes Eyes that this frame image is for. */ void -Writer::write (Data encoded, Frame frame, Eyes eyes) +Writer::write (shared_ptr<const Data> encoded, Frame frame, Eyes eyes) { boost::mutex::scoped_lock lock (_state_mutex); @@ -426,7 +427,7 @@ try case QueueItem::FULL: LOG_DEBUG_ENCODE (N_("Writer FULL-writes %1 (%2)"), qi.frame, (int) qi.eyes); if (!qi.encoded) { - qi.encoded = Data (_film->j2c_path (qi.reel, qi.frame, qi.eyes, false)); + qi.encoded.reset (new ArrayData(_film->j2c_path(qi.reel, qi.frame, qi.eyes, false))); } reel.write (qi.encoded, qi.frame, qi.eyes); ++_full_written; |
