summaryrefslogtreecommitdiff
path: root/src/lib/reel_writer.cc
diff options
context:
space:
mode:
authorCarl Hetherington <cth@carlh.net>2016-06-02 10:59:16 +0100
committerCarl Hetherington <cth@carlh.net>2016-06-02 10:59:16 +0100
commitddad6389ba1971603a3dbf975b1e5fae95ce6bd6 (patch)
tree613acd994ef5de594d4ec8a8e15f84a7e7c60f18 /src/lib/reel_writer.cc
parent2ab331e925eda5f2cc0d8bc3862e46bea60989b6 (diff)
Speed up referencing of existing DCPs.
When referring to an existing DCP, assume that the hash in the CPL is correct rather than recalculating it. This can be a big benefit when, for example, referring to an existing picture MXF.
Diffstat (limited to 'src/lib/reel_writer.cc')
-rw-r--r--src/lib/reel_writer.cc12
1 files changed, 12 insertions, 0 deletions
diff --git a/src/lib/reel_writer.cc b/src/lib/reel_writer.cc
index d707550bb..bc0013ff1 100644
--- a/src/lib/reel_writer.cc
+++ b/src/lib/reel_writer.cc
@@ -329,6 +329,10 @@ ReelWriter::create_reel (list<ReferencedReelAsset> const & refs, list<shared_ptr
}
reel->add (reel_picture_asset);
+ /* If we have a hash for this asset in the CPL, assume that it is correct */
+ if (reel_picture_asset->hash()) {
+ reel_picture_asset->asset_ref()->set_hash (reel_picture_asset->hash().get());
+ }
if (_sound_asset) {
/* We have made a sound asset of our own. Put it into the reel */
@@ -339,6 +343,10 @@ ReelWriter::create_reel (list<ReferencedReelAsset> const & refs, list<shared_ptr
shared_ptr<dcp::ReelSoundAsset> k = dynamic_pointer_cast<dcp::ReelSoundAsset> (j.asset);
if (k && j.period == _period) {
reel->add (k);
+ /* If we have a hash for this asset in the CPL, assume that it is correct */
+ if (k->hash()) {
+ k->asset_ref()->set_hash (k->hash().get());
+ }
}
}
}
@@ -397,6 +405,10 @@ ReelWriter::create_reel (list<ReferencedReelAsset> const & refs, list<shared_ptr
shared_ptr<dcp::ReelSubtitleAsset> k = dynamic_pointer_cast<dcp::ReelSubtitleAsset> (j.asset);
if (k && j.period == _period) {
reel->add (k);
+ /* If we have a hash for this asset in the CPL, assume that it is correct */
+ if (k->hash()) {
+ k->asset_ref()->set_hash (k->hash().get());
+ }
}
}
}