X-Git-Url: https://git.carlh.net/gitweb/?p=dcpomatic.git;a=blobdiff_plain;f=src%2Ftools%2Fdcpomatic_create.cc;h=d78aef3df117ac346552c0e10386b92f314aac25;hp=14eae6b3ed643b547d8ee7f3c18754ca3db91e6f;hb=5f206d32ff60148ab72b35d5823f56bdbb7f50bf;hpb=8fedaaa75c4586a4cc7ffb393bd71d1fdb091dc8 diff --git a/src/tools/dcpomatic_create.cc b/src/tools/dcpomatic_create.cc index 14eae6b3e..d78aef3df 100644 --- a/src/tools/dcpomatic_create.cc +++ b/src/tools/dcpomatic_create.cc @@ -18,39 +18,41 @@ */ -#include "lib/version.h" -#include "lib/film.h" -#include "lib/util.h" +#include "lib/audio_content.h" +#include "lib/config.h" #include "lib/content_factory.h" -#include "lib/job_manager.h" -#include "lib/signal_manager.h" -#include "lib/job.h" -#include "lib/dcp_content_type.h" -#include "lib/ratio.h" -#include "lib/image_content.h" -#include "lib/video_content.h" +#include "lib/create_cli.h" #include "lib/cross.h" -#include "lib/config.h" #include "lib/dcp_content.h" -#include "lib/create_cli.h" -#include "lib/version.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" +#include "lib/job_manager.h" +#include "lib/ratio.h" +#include "lib/signal_manager.h" +#include "lib/util.h" +#include "lib/version.h" +#include "lib/version.h" +#include "lib/video_content.h" #include #include #include #include -#include -#include #include +#include #include +#include -using std::string; -using std::cout; using std::cerr; -using std::list; +using std::cout; +using std::dynamic_pointer_cast; using std::exception; +using std::list; +using std::make_shared; using std::shared_ptr; -using std::dynamic_pointer_cast; +using std::string; using boost::optional; class SimpleSignalManager : public SignalManager @@ -84,10 +86,10 @@ main (int argc, char* argv[]) } signal_manager = new SimpleSignalManager (); - JobManager* jm = JobManager::instance (); + auto jm = JobManager::instance (); try { - shared_ptr film (new Film(cc.output_dir)); + auto film = std::make_shared(cc.output_dir); dcpomatic_log = film->log (); dcpomatic_log->set_types (Config::instance()->log_types()); if (cc.template_name) { @@ -115,7 +117,7 @@ main (int argc, char* argv[]) list > content; if (boost::filesystem::exists (can / "ASSETMAP") || (boost::filesystem::exists (can / "ASSETMAP.xml"))) { - content.push_back (shared_ptr(new DCPContent(can))); + content.push_back (make_shared(can)); } else { /* I guess it's not a DCP */ content = content_factory (can); @@ -135,6 +137,15 @@ main (int argc, char* argv[]) if (j->video) { j->video->set_frame_type (i.frame_type); } + if (j->audio && i.channel) { + for (auto stream: j->audio->streams()) { + AudioMapping mapping(stream->channels(), film->audio_channels()); + for (int channel = 0; channel < stream->channels(); ++channel) { + mapping.set(channel, *i.channel, 1.0f); + } + stream->set_mapping (mapping); + } + } } } @@ -143,7 +154,7 @@ main (int argc, char* argv[]) } for (auto i: film->content()) { - shared_ptr ic = dynamic_pointer_cast (i); + auto ic = dynamic_pointer_cast (i); if (ic && ic->still()) { ic->video->set_length (cc.still_length * 24); }