Untested use of Frame for video/audio content lengths.
[dcpomatic.git] / src / tools / dcpomatic_create.cc
index 1a4ea0717049c98ee4e4c80ed9bb60e253eb12f4..a826a10710f32a489bdd1be19c435dd59b94a08f 100644 (file)
@@ -28,7 +28,7 @@
 #include "lib/util.h"
 #include "lib/content_factory.h"
 #include "lib/job_manager.h"
-#include "lib/ui_signaller.h"
+#include "lib/signal_manager.h"
 #include "lib/job.h"
 #include "lib/dcp_content_type.h"
 #include "lib/ratio.h"
@@ -59,11 +59,11 @@ help (string n)
             << "  -o, --output <dir>            output directory\n";
 }
 
-class SimpleUISignaller : public UISignaller
+class SimpleSignalManager : public SignalManager
 {
 public:
        /* Do nothing in this method so that UI events happen in our thread
-          when we call UISignaller::ui_idle().
+          when we call SignalManager::ui_idle().
        */
        void wake_ui () {}
 };
@@ -74,14 +74,14 @@ main (int argc, char* argv[])
        dcpomatic_setup ();
 
        string name;
-       DCPContentType const * dcp_content_type = DCPContentType::from_dci_name ("TST");
+       DCPContentType const * dcp_content_type = DCPContentType::from_isdcf_name ("TST");
        Ratio const * container_ratio = 0;
        Ratio const * content_ratio = 0;
        int still_length = 10;
        boost::filesystem::path output;
        
        int option_index = 0;
-       while (1) {
+       while (true) {
                static struct option long_options[] = {
                        { "version", no_argument, 0, 'v'},
                        { "help", no_argument, 0, 'h'},
@@ -110,7 +110,7 @@ main (int argc, char* argv[])
                        name = optarg;
                        break;
                case 'c':
-                       dcp_content_type = DCPContentType::from_dci_name (optarg);
+                       dcp_content_type = DCPContentType::from_isdcf_name (optarg);
                        if (dcp_content_type == 0) {
                                cerr << "Bad DCP content type.\n";
                                help (argv[0]);
@@ -148,8 +148,7 @@ main (int argc, char* argv[])
        }
 
        if (!content_ratio) {
-               cerr << "Missing required option --content-ratio.\n";
-               help (argv[0]);
+               cerr << argv[0] << ": missing required option --content-ratio.\n";
                exit (EXIT_FAILURE);
        }
 
@@ -157,7 +156,12 @@ main (int argc, char* argv[])
                container_ratio = content_ratio;
        }
 
-       ui_signaller = new SimpleUISignaller ();
+       if (optind == argc) {
+               cerr << argv[0] << ": no content specified.\n";
+               exit (EXIT_FAILURE);
+       }
+
+       signal_manager = new SimpleSignalManager ();
 
        try {
                shared_ptr<Film> film (new Film (output, false));
@@ -178,9 +182,9 @@ main (int argc, char* argv[])
                }
                
                JobManager* jm = JobManager::instance ();
-               while (jm->work_to_do ()) {
-                       ui_signaller->ui_idle ();
-               }
+
+               while (jm->work_to_do ()) {}
+               while (signal_manager->ui_idle() > 0) {}
 
                ContentList content = film->content ();
                for (ContentList::iterator i = content.begin(); i != content.end(); ++i) {