Add basic quality option for x264 export.
[dcpomatic.git] / src / tools / dcpomatic.cc
index b6aa2188a3b1230d3b68c8019217ecf73e378096..3d4e5121d6fbca1abc61276c008a0e007844a727 100644 (file)
@@ -71,7 +71,8 @@
 #include "lib/transcode_job.h"
 #include "lib/dkdm_wrapper.h"
 #include "lib/audio_content.h"
-#include "lib/caption_content.h"
+#include "lib/check_content_change_job.h"
+#include "lib/text_content.h"
 #include <dcp/exceptions.h>
 #include <dcp/raw_convert.h>
 #include <wx/generic/aboutdlgg.h>
@@ -414,6 +415,8 @@ public:
                }
 
                set_film (film);
+
+               JobManager::instance()->add(shared_ptr<Job>(new CheckContentChangeJob(film)));
        }
        catch (std::exception& e) {
                wxString p = std_to_wx (file.string ());
@@ -434,7 +437,7 @@ public:
                if (_film->directory()) {
                        Config::instance()->add_to_history (_film->directory().get());
                }
-               _film->Changed.connect (boost::bind (&DOMFrame::set_menu_sensitivity, this));
+               _film->Change.connect (boost::bind (&DOMFrame::film_change, this, _1));
        }
 
        shared_ptr<Film> film () const {
@@ -443,6 +446,13 @@ public:
 
 private:
 
+       void film_change (ChangeType type)
+       {
+               if (type == CHANGE_TYPE_DONE) {
+                       set_menu_sensitivity ();
+               }
+       }
+
        void file_changed (boost::filesystem::path f)
        {
                string s = wx_to_std (_("DCP-o-matic"));
@@ -567,7 +577,7 @@ private:
        {
                DCPOMATIC_ASSERT (_clipboard);
 
-               PasteDialog* d = new PasteDialog (this, static_cast<bool>(_clipboard->video), static_cast<bool>(_clipboard->audio), !_clipboard->caption.empty());
+               PasteDialog* d = new PasteDialog (this, static_cast<bool>(_clipboard->video), static_cast<bool>(_clipboard->audio), !_clipboard->text.empty());
                if (d->ShowModal() == wxID_OK) {
                        BOOST_FOREACH (shared_ptr<Content> i, _film_editor->content_panel()->selected()) {
                                if (d->video() && i->video) {
@@ -579,10 +589,10 @@ private:
                                        i->audio->take_settings_from (_clipboard->audio);
                                }
 
-                               if (d->caption()) {
-                                       list<shared_ptr<CaptionContent> >::iterator j = i->caption.begin ();
-                                       list<shared_ptr<CaptionContent> >::const_iterator k = _clipboard->caption.begin ();
-                                       while (j != i->caption.end() && k != _clipboard->caption.end()) {
+                               if (d->text()) {
+                                       list<shared_ptr<TextContent> >::iterator j = i->text.begin ();
+                                       list<shared_ptr<TextContent> >::const_iterator k = _clipboard->text.begin ();
+                                       while (j != i->text.end() && k != _clipboard->text.end()) {
                                                (*j)->take_settings_from (*k);
                                                ++j;
                                                ++k;
@@ -636,7 +646,7 @@ private:
                        }
                }
 
-               if (!get_hints(_film).empty() && Config::instance()->show_hints_before_make_dcp()) {
+               if (Config::instance()->show_hints_before_make_dcp()) {
                        HintsDialog* hints = new HintsDialog (this, _film, false);
                        int const r = hints->ShowModal();
                        hints->Destroy ();
@@ -735,7 +745,7 @@ private:
                        return;
                }
 
-               if (!get_hints(_film).empty() && Config::instance()->show_hints_before_make_dcp()) {
+               if (Config::instance()->show_hints_before_make_dcp()) {
                        HintsDialog* hints = new HintsDialog (this, _film, false);
                        int const r = hints->ShowModal();
                        hints->Destroy ();
@@ -824,7 +834,7 @@ private:
                ExportDialog* d = new ExportDialog (this);
                if (d->ShowModal() == wxID_OK) {
                        shared_ptr<TranscodeJob> job (new TranscodeJob (_film));
-                       job->set_encoder (shared_ptr<FFmpegEncoder> (new FFmpegEncoder (_film, job, d->path(), d->format(), d->mixdown_to_stereo())));
+                       job->set_encoder (shared_ptr<FFmpegEncoder> (new FFmpegEncoder (_film, job, d->path(), d->format(), d->mixdown_to_stereo(), d->x264_crf())));
                        JobManager::instance()->add (job);
                }
                d->Destroy ();