From: Carl Hetherington Date: Sat, 28 Jan 2023 23:45:43 +0000 (+0100) Subject: Pass make_kdm as a function into kdm_for_screen(). X-Git-Tag: v2.16.43~7 X-Git-Url: https://git.carlh.net/gitweb/?p=dcpomatic.git;a=commitdiff_plain;h=20c7c1a0bc0c9c07d70b5d3dcc536a5cd94e8a2c Pass make_kdm as a function into kdm_for_screen(). --- 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 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 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 film, - boost::filesystem::path cpl, + std::function make_kdm, shared_ptr 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 +#include #include #include #include @@ -75,8 +76,7 @@ public: KDMWithMetadataPtr kdm_for_screen ( - std::shared_ptr film, - boost::filesystem::path cpl, + std::function make_kdm, std::shared_ptr 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 period_checks; + std::function 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); } diff --git a/test/kdm_naming_test.cc b/test/kdm_naming_test.cc index 994217a14..30356afbf 100644 --- a/test/kdm_naming_test.cc +++ b/test/kdm_naming_test.cc @@ -101,9 +101,11 @@ BOOST_AUTO_TEST_CASE (single_kdm_naming_test) std::vector period_checks; auto cpl = cpls.front().cpl_file; + std::function make_kdm = [film, cpl](dcp::LocalTime begin, dcp::LocalTime end) { + return film->make_kdm(cpl, begin, end); + }; auto kdm = kdm_for_screen ( - film, - cpls.front().cpl_file, + make_kdm, cinema_a_screen_1, boost::posix_time::time_from_string(from_string), boost::posix_time::time_from_string(until_string), @@ -167,10 +169,14 @@ BOOST_AUTO_TEST_CASE (directory_kdm_naming_test, * boost::unit_test::depends_on( std::vector period_checks; list kdms; + + std::function make_kdm = [film, cpls](dcp::LocalTime begin, dcp::LocalTime end) { + return film->make_kdm(cpls.front().cpl_file, begin, end); + }; + for (auto i: screens) { auto kdm = kdm_for_screen ( - film, - cpls.front().cpl_file, + make_kdm, i, boost::posix_time::time_from_string(from_string), boost::posix_time::time_from_string(until_string),