summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCarl Hetherington <cth@carlh.net>2022-01-28 20:36:26 +0100
committerCarl Hetherington <cth@carlh.net>2022-03-09 17:04:02 +0100
commitcc83f20bacf7c012f1d02a83aa06151a2c693062 (patch)
treeb5c852ca0d2db150d53e7bae484ef91615c1cbee
parentfbdc606db9bb59f7c4f4ccab0c82e13552c87abf (diff)
Add --kdm option to dcpomatic_create
-rw-r--r--src/lib/create_cli.cc8
-rw-r--r--src/lib/create_cli.h1
-rw-r--r--src/tools/dcpomatic_create.cc4
3 files changed, 10 insertions, 3 deletions
diff --git a/src/lib/create_cli.cc b/src/lib/create_cli.cc
index 311e93690..2ca17f91b 100644
--- a/src/lib/create_cli.cc
+++ b/src/lib/create_cli.cc
@@ -1,5 +1,5 @@
/*
- Copyright (C) 2019-2021 Carl Hetherington <cth@carlh.net>
+ Copyright (C) 2019-2022 Carl Hetherington <cth@carlh.net>
This file is part of DCP-o-matic.
@@ -56,7 +56,8 @@ string CreateCLI::_help =
" --left-eye next piece of content is for the left eye\n"
" --right-eye next piece of content is for the right eye\n"
" --channel <channel> next piece of content should be mapped to audio channel L, R, C, Lfe, Ls or Rs\n"
- " --gain next piece of content should have the given audio gain (in dB)\n";
+ " --gain next piece of content should have the given audio gain (in dB)\n"
+ " --kdm <file> KDM for next piece of content\n";
template <class T>
@@ -136,6 +137,7 @@ CreateCLI::CreateCLI (int argc, char* argv[])
auto next_frame_type = VideoFrameType::TWO_D;
optional<dcp::Channel> channel;
optional<float> gain;
+ optional<boost::filesystem::path> kdm;
int i = 1;
while (i < argc) {
@@ -207,6 +209,7 @@ CreateCLI::CreateCLI (int argc, char* argv[])
argument_option(i, argc, argv, "", "--channel", &claimed, &error, &channel, convert_channel);
argument_option(i, argc, argv, "", "--gain", &claimed, &error, &gain);
+ argument_option(i, argc, argv, "", "--kdm", &claimed, &error, &kdm, string_to_path);
if (!claimed) {
if (a.length() > 2 && a.substr(0, 2) == "--") {
@@ -218,6 +221,7 @@ CreateCLI::CreateCLI (int argc, char* argv[])
c.frame_type = next_frame_type;
c.channel = channel;
c.gain = gain;
+ c.kdm = kdm;
content.push_back (c);
next_frame_type = VideoFrameType::TWO_D;
channel = {};
diff --git a/src/lib/create_cli.h b/src/lib/create_cli.h
index 177d56f7b..e6fa69378 100644
--- a/src/lib/create_cli.h
+++ b/src/lib/create_cli.h
@@ -40,6 +40,7 @@ public:
VideoFrameType frame_type;
boost::optional<dcp::Channel> channel;
boost::optional<float> gain;
+ boost::optional<boost::filesystem::path> kdm;
};
bool version;
diff --git a/src/tools/dcpomatic_create.cc b/src/tools/dcpomatic_create.cc
index e4452b19a..44c7987bc 100644
--- a/src/tools/dcpomatic_create.cc
+++ b/src/tools/dcpomatic_create.cc
@@ -120,7 +120,9 @@ main (int argc, char* argv[])
list<shared_ptr<Content>> film_content_list;
if (boost::filesystem::exists (can / "ASSETMAP") || (boost::filesystem::exists (can / "ASSETMAP.xml"))) {
- film_content_list.push_back (make_shared<DCPContent>(can));
+ auto dcp = make_shared<DCPContent>(can);
+ film_content_list.push_back (dcp);
+ dcp->add_kdm (dcp::EncryptedKDM(dcp::file_to_string(*cli_content.kdm)));
} else {
/* I guess it's not a DCP */
film_content_list = content_factory (can);