Cleanup: using ordering.
[dcpomatic.git] / src / tools / dcpomatic_create.cc
index 8ce7d90a2c9062a73c44165a3b449667e0feeddd..caaba6b3808ba90b8a0ab7ad49633828b8e5459e 100644 (file)
@@ -118,6 +118,18 @@ main (int argc, char* argv[])
                        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);
+
                for (auto cli_content: cc.content) {
                        auto const can = boost::filesystem::canonical (cli_content.path);
                        vector<shared_ptr<Content>> film_content_list;
@@ -128,6 +140,9 @@ main (int argc, char* argv[])
                                if (cli_content.kdm) {
                                        dcp->add_kdm (dcp::EncryptedKDM(dcp::file_to_string(*cli_content.kdm)));
                                }
+                               if (cli_content.cpl) {
+                                       dcp->set_cpl(*cli_content.cpl);
+                               }
                        } else {
                                /* I guess it's not a DCP */
                                film_content_list = content_factory (can);
@@ -169,15 +184,17 @@ main (int argc, char* argv[])
                for (auto i: film->content()) {
                        auto ic = dynamic_pointer_cast<ImageContent> (i);
                        if (ic && ic->still()) {
-                               ic->video->set_length (cc.still_length * 24);
+                               ic->video->set_length(cc.still_length.get_value_or(10) * 24);
                        }
                }
 
                if (jm->errors ()) {
                        for (auto i: jm->get()) {
                                if (i->finished_in_error()) {
-                                       cerr << i->error_summary() << "\n"
-                                            << i->error_details() << "\n";
+                                       cerr << i->error_summary() << "\n";
+                                       if (!i->error_details().empty()) {
+                                            cout << i->error_details() << "\n";
+                                       }
                                }
                        }
                        exit (EXIT_FAILURE);