X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;ds=sidebyside;f=src%2Ftools%2Fdcpomatic_create.cc;h=5c6fc3567f2f512953b24e8afa1ff8b893417279;hb=6fb93be0acd130c0639a09c9a709316c441d5a01;hp=7c3ee1308dd02ae6e9a339dd64517978ff55b1a3;hpb=cb845fc94ce2015138ddecb6c5a94e722361642a;p=dcpomatic.git diff --git a/src/tools/dcpomatic_create.cc b/src/tools/dcpomatic_create.cc index 7c3ee1308..5c6fc3567 100644 --- a/src/tools/dcpomatic_create.cc +++ b/src/tools/dcpomatic_create.cc @@ -30,6 +30,7 @@ #include "lib/image_content.h" #include "lib/video_content.h" #include "lib/cross.h" +#include "lib/config.h" #include "lib/dcp_content.h" #include #include @@ -66,6 +67,7 @@ syntax (string n) << " --standard SMPTE or interop (default SMPTE)\n" << " --no-use-isdcf-name do not use an ISDCF name; use the specified name unmodified\n" << " --no-sign do not sign the DCP\n" + << " --config directory containing config.xml and cinemas.xml\n" << " -o, --output output directory\n"; } @@ -105,6 +107,7 @@ main (int argc, char* argv[]) optional output; bool sign = true; bool use_isdcf_name = true; + optional config; int option_index = 0; while (true) { @@ -122,10 +125,11 @@ main (int argc, char* argv[]) { "no-use-isdcf-name", no_argument, 0, 'D'}, { "no-sign", no_argument, 0, 'E'}, { "output", required_argument, 0, 'o'}, + { "config", required_argument, 0, 'F'}, { 0, 0, 0, 0} }; - int c = getopt_long (argc, argv, "vhn:f:c:f:A:B:C:s:o:DE", long_options, &option_index); + int c = getopt_long (argc, argv, "vhn:f:c:f:A:B:C:s:o:DEF:", long_options, &option_index); if (c == -1) { break; } @@ -185,6 +189,9 @@ main (int argc, char* argv[]) case 'E': sign = false; break; + case 'F': + config = optarg; + break; case 's': still_length = atoi (optarg); break; @@ -202,6 +209,10 @@ main (int argc, char* argv[]) exit (EXIT_FAILURE); } + if (config) { + Config::override_path = *config; + } + if (!content_ratio) { cerr << argv[0] << ": missing required option --content-ratio.\n"; exit (EXIT_FAILURE); @@ -238,12 +249,10 @@ main (int argc, char* argv[]) for (int i = optind; i < argc; ++i) { boost::filesystem::path const can = boost::filesystem::canonical (argv[i]); list > content; - try { + + if (boost::filesystem::exists (can / "ASSETMAP") || (boost::filesystem::exists (can / "ASSETMAP.xml"))) { content.push_back (shared_ptr (new DCPContent (film, can))); - } catch (dcp::DCPReadError) { - /* I guess it's not a DCP */ - content = content_factory (film, can); - } catch (boost::filesystem::filesystem_error) { + } else { /* I guess it's not a DCP */ content = content_factory (film, can); } @@ -271,7 +280,7 @@ main (int argc, char* argv[]) ContentList content = film->content (); for (ContentList::iterator i = content.begin(); i != content.end(); ++i) { shared_ptr ic = dynamic_pointer_cast (*i); - if (ic) { + if (ic && ic->still()) { ic->video->set_length (still_length * 24); } }