summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorCarl Hetherington <cth@carlh.net>2023-09-30 11:29:42 +0200
committerCarl Hetherington <cth@carlh.net>2023-09-30 11:29:42 +0200
commitdd4786cb54373a541c970c00f173f7e1504e5c59 (patch)
tree617df925333d822d7ef9bb4eca067146dedec814 /src
parent8833851ea6061e51a0ce429303524f9668226cec (diff)
Cleanup: extract some stuff to a method in CreateCLI.
Diffstat (limited to 'src')
-rw-r--r--src/lib/create_cli.cc53
-rw-r--r--src/lib/create_cli.h3
-rw-r--r--src/tools/dcpomatic_create.cc39
3 files changed, 56 insertions, 39 deletions
diff --git a/src/lib/create_cli.cc b/src/lib/create_cli.cc
index 81e353893..03a199258 100644
--- a/src/lib/create_cli.cc
+++ b/src/lib/create_cli.cc
@@ -23,14 +23,19 @@
#include "config.h"
#include "create_cli.h"
#include "dcp_content_type.h"
+#include "dcpomatic_log.h"
+#include "film.h"
#include "ratio.h"
#include <dcp/raw_convert.h>
#include <iostream>
#include <string>
-using std::string;
using std::cout;
+using std::make_shared;
+using std::shared_ptr;
+using std::string;
+using std::vector;
using boost::optional;
@@ -307,3 +312,49 @@ CreateCLI::CreateCLI (int argc, char* argv[])
return;
}
}
+
+
+shared_ptr<Film>
+CreateCLI::make_film() const
+{
+ auto film = std::make_shared<Film>(output_dir);
+ dcpomatic_log = film->log();
+ dcpomatic_log->set_types(Config::instance()->log_types());
+ if (template_name) {
+ film->use_template(template_name.get());
+ }
+ film->set_name(name);
+
+ if (container_ratio) {
+ film->set_container(container_ratio);
+ }
+ film->set_dcp_content_type(dcp_content_type);
+ film->set_interop(standard == dcp::Standard::INTEROP);
+ film->set_use_isdcf_name(!no_use_isdcf_name);
+ film->set_encrypted(encrypt);
+ film->set_three_d(threed);
+ if (twok) {
+ film->set_resolution(Resolution::TWO_K);
+ }
+ if (fourk) {
+ film->set_resolution(Resolution::FOUR_K);
+ }
+ if (j2k_bandwidth) {
+ film->set_j2k_bandwidth(*j2k_bandwidth);
+ }
+
+ int channels = 6;
+ for (auto cli_content: content) {
+ if (cli_content.channel) {
+ channels = std::max(channels, static_cast<int>(*cli_content.channel) + 1);
+ }
+ }
+ if (channels % 1) {
+ ++channels;
+ }
+
+ film->set_audio_channels(channels);
+
+ return film;
+}
+
diff --git a/src/lib/create_cli.h b/src/lib/create_cli.h
index 58f7cf20c..f6fe1860b 100644
--- a/src/lib/create_cli.h
+++ b/src/lib/create_cli.h
@@ -27,6 +27,7 @@
class DCPContentType;
+class Film;
class Ratio;
@@ -63,6 +64,8 @@ public:
bool fourk;
boost::optional<int> j2k_bandwidth;
+ std::shared_ptr<Film> make_film() const;
+
private:
static std::string _help;
};
diff --git a/src/tools/dcpomatic_create.cc b/src/tools/dcpomatic_create.cc
index caaba6b38..63889a597 100644
--- a/src/tools/dcpomatic_create.cc
+++ b/src/tools/dcpomatic_create.cc
@@ -25,7 +25,6 @@
#include "lib/cross.h"
#include "lib/dcp_content.h"
#include "lib/dcp_content_type.h"
-#include "lib/dcpomatic_log.h"
#include "lib/film.h"
#include "lib/image_content.h"
#include "lib/job.h"
@@ -92,43 +91,7 @@ main (int argc, char* argv[])
auto jm = JobManager::instance ();
try {
- auto film = std::make_shared<Film>(cc.output_dir);
- dcpomatic_log = film->log ();
- dcpomatic_log->set_types (Config::instance()->log_types());
- if (cc.template_name) {
- film->use_template (cc.template_name.get());
- }
- film->set_name (cc.name);
-
- if (cc.container_ratio) {
- film->set_container (cc.container_ratio);
- }
- film->set_dcp_content_type (cc.dcp_content_type);
- film->set_interop (cc.standard == dcp::Standard::INTEROP);
- film->set_use_isdcf_name (!cc.no_use_isdcf_name);
- film->set_encrypted (cc.encrypt);
- film->set_three_d (cc.threed);
- if (cc.twok) {
- film->set_resolution (Resolution::TWO_K);
- }
- if (cc.fourk) {
- film->set_resolution (Resolution::FOUR_K);
- }
- if (cc.j2k_bandwidth) {
- film->set_j2k_bandwidth (*cc.j2k_bandwidth);
- }
-
- int channels = 6;
- for (auto cli_content: cc.content) {
- if (cli_content.channel) {
- channels = std::max(channels, static_cast<int>(*cli_content.channel) + 1);
- }
- }
- if (channels % 1) {
- ++channels;
- }
-
- film->set_audio_channels(channels);
+ auto film = cc.make_film();
for (auto cli_content: cc.content) {
auto const can = boost::filesystem::canonical (cli_content.path);