summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorCarl Hetherington <cth@carlh.net>2023-01-29 00:45:43 +0100
committerCarl Hetherington <cth@carlh.net>2023-02-11 22:26:38 +0100
commit20c7c1a0bc0c9c07d70b5d3dcc536a5cd94e8a2c (patch)
tree7fdb8f0f6c1dbac69d024093323c739d6bbccb11 /src
parente18630852de1ac02c23c74cbe7643845b6f4bd17 (diff)
Pass make_kdm as a function into kdm_for_screen().
Diffstat (limited to 'src')
-rw-r--r--src/lib/kdm_cli.cc5
-rw-r--r--src/lib/screen.cc8
-rw-r--r--src/lib/screen.h4
-rw-r--r--src/wx/kdm_dialog.cc6
4 files changed, 15 insertions, 8 deletions
diff --git a/src/lib/kdm_cli.cc b/src/lib/kdm_cli.cc
index dc74e7161..925626119 100644
--- a/src/lib/kdm_cli.cc
+++ b/src/lib/kdm_cli.cc
@@ -245,7 +245,10 @@ from_film (
try {
list<KDMWithMetadataPtr> kdms;
for (auto i: screens) {
- auto p = kdm_for_screen(film, cpl, i, valid_from, valid_to, formulation, disable_forensic_marking_picture, disable_forensic_marking_audio, period_checks);
+ std::function<dcp::DecryptedKDM (dcp::LocalTime, dcp::LocalTime)> make_kdm = [film, cpl](dcp::LocalTime begin, dcp::LocalTime end) {
+ return film->make_kdm(cpl, begin, end);
+ };
+ auto p = kdm_for_screen(make_kdm, i, valid_from, valid_to, formulation, disable_forensic_marking_picture, disable_forensic_marking_audio, period_checks);
if (p) {
kdms.push_back (p);
}
diff --git a/src/lib/screen.cc b/src/lib/screen.cc
index 5ef007214..dbf013111 100644
--- a/src/lib/screen.cc
+++ b/src/lib/screen.cc
@@ -75,8 +75,7 @@ Screen::trusted_device_thumbprints () const
KDMWithMetadataPtr
kdm_for_screen (
- shared_ptr<const Film> film,
- boost::filesystem::path cpl,
+ std::function<dcp::DecryptedKDM (dcp::LocalTime, dcp::LocalTime)> make_kdm,
shared_ptr<const dcpomatic::Screen> screen,
boost::posix_time::ptime valid_from,
boost::posix_time::ptime valid_to,
@@ -101,8 +100,9 @@ kdm_for_screen (
throw InvalidSignerError();
}
- auto const decrypted_kdm = film->make_kdm(cpl, begin, end);
- auto kdm = decrypted_kdm.encrypt(signer, screen->recipient.get(), screen->trusted_device_thumbprints(), formulation, disable_forensic_marking_picture, disable_forensic_marking_audio);
+ auto kdm = make_kdm(begin, end).encrypt(
+ signer, screen->recipient.get(), screen->trusted_device_thumbprints(), formulation, disable_forensic_marking_picture, disable_forensic_marking_audio
+ );
dcp::NameFormat::Map name_values;
if (cinema) {
diff --git a/src/lib/screen.h b/src/lib/screen.h
index 7cbeb1d15..7f01cdf27 100644
--- a/src/lib/screen.h
+++ b/src/lib/screen.h
@@ -28,6 +28,7 @@
#include "kdm_util.h"
#include "trusted_device.h"
#include <dcp/certificate.h>
+#include <dcp/decrypted_kdm.h>
#include <libcxml/cxml.h>
#include <boost/optional.hpp>
#include <string>
@@ -75,8 +76,7 @@ public:
KDMWithMetadataPtr
kdm_for_screen (
- std::shared_ptr<const Film> film,
- boost::filesystem::path cpl,
+ std::function<dcp::DecryptedKDM (dcp::LocalTime, dcp::LocalTime)> make_kdm,
std::shared_ptr<const dcpomatic::Screen> screen,
boost::posix_time::ptime valid_from,
boost::posix_time::ptime valid_to,
diff --git a/src/wx/kdm_dialog.cc b/src/wx/kdm_dialog.cc
index 2687d1261..f01c47ffb 100644
--- a/src/wx/kdm_dialog.cc
+++ b/src/wx/kdm_dialog.cc
@@ -174,8 +174,12 @@ KDMDialog::make_clicked ()
vector<KDMCertificatePeriod> period_checks;
+ std::function<dcp::DecryptedKDM (dcp::LocalTime, dcp::LocalTime)> make_kdm = [film, this](dcp::LocalTime begin, dcp::LocalTime end) {
+ return film->make_kdm(_cpl->cpl(), begin, end);
+ };
+
for (auto i: _screens->screens()) {
- auto p = kdm_for_screen(film, _cpl->cpl(), i, _timing->from(), _timing->until(), _output->formulation(), !_output->forensic_mark_video(), for_audio, period_checks);
+ auto p = kdm_for_screen(make_kdm, i, _timing->from(), _timing->until(), _output->formulation(), !_output->forensic_mark_video(), for_audio, period_checks);
if (p) {
kdms.push_back (p);
}