#include "lib/job_manager.h"
#include "lib/json_server.h"
#include "lib/log.h"
+#include "lib/make_dcp.h"
#include "lib/ratio.h"
#include "lib/signal_manager.h"
#include "lib/transcode_job.h"
using std::dynamic_pointer_cast;
using std::list;
using std::pair;
+using std::runtime_error;
using std::setw;
using std::shared_ptr;
using std::string;
help (string n)
{
cerr << "Syntax: " << n << " [OPTION] [<FILM>]\n"
- << " -v, --version show DCP-o-matic version\n"
- << " -h, --help show this help\n"
- << " -f, --flags show flags passed to C++ compiler on build\n"
- << " -n, --no-progress do not print progress to stdout\n"
- << " -r, --no-remote do not use any remote servers\n"
- << " -t, --threads specify number of local encoding threads (overriding configuration)\n"
- << " -j, --json <port> run a JSON server on the specified port\n"
- << " -k, --keep-going keep running even when the job is complete\n"
- << " -s, --servers <file> specify servers to use in a text file\n"
- << " -l, --list-servers just display a list of encoding servers that DCP-o-matic is configured to use; don't encode\n"
- << " -d, --dcp-path echo DCP's path to stdout on successful completion (implies -n)\n"
- << " -c, --config <dir> directory containing config.xml and cinemas.xml\n"
- << " --dump just dump a summary of the film's settings; don't encode\n"
- << " --no-check don't check project's content files for changes before making the DCP\n"
- << " --export-format <format> export project to a file, rather than making a DCP: specify mov or mp4\n"
- << " --export-filename filename to export to with --export\n"
+ << " -v, --version show DCP-o-matic version\n"
+ << " -h, --help show this help\n"
+ << " -f, --flags show flags passed to C++ compiler on build\n"
+ << " -n, --no-progress do not print progress to stdout\n"
+ << " -r, --no-remote do not use any remote servers\n"
+ << " -t, --threads specify number of local encoding threads (overriding configuration)\n"
+ << " -j, --json <port> run a JSON server on the specified port\n"
+ << " -k, --keep-going keep running even when the job is complete\n"
+ << " -s, --servers <file> specify servers to use in a text file\n"
+ << " -l, --list-servers just display a list of encoding servers that DCP-o-matic is configured to use; don't encode\n"
+ << " -d, --dcp-path echo DCP's path to stdout on successful completion (implies -n)\n"
+ << " -c, --config <dir> directory containing config.xml and cinemas.xml\n"
+ << " --dump just dump a summary of the film's settings; don't encode\n"
+ << " --no-check don't check project's content files for changes before making the DCP\n"
+ << " --export-format <format> export project to a file, rather than making a DCP: specify mov or mp4\n"
+ << " --export-filename <filename> filename to export to with --export-format\n"
<< "\n"
<< "<FILM> is the film directory.\n";
}
}
}
- TranscodeJob::ChangedBehaviour behaviour = check ? TranscodeJob::ChangedBehaviour::STOP : TranscodeJob::ChangedBehaviour::IGNORE;
+ TranscodeJob::ChangedBehaviour const behaviour = check ? TranscodeJob::ChangedBehaviour::STOP : TranscodeJob::ChangedBehaviour::IGNORE;
if (export_format) {
auto job = std::make_shared<TranscodeJob>(film, behaviour);
);
JobManager::instance()->add (job);
} else {
- film->make_dcp (behaviour);
+ try {
+ make_dcp (film, behaviour);
+ } catch (runtime_error& e) {
+ std::cerr << "Could not make DCP: " << e.what() << "\n";
+ exit(EXIT_FAILURE);
+ }
}
+ make_dcp (film, behaviour);
bool const error = show_jobs_on_console (progress);
if (keep_going) {