Config option for default standard (SMPTE / Interop).
authorCarl Hetherington <cth@carlh.net>
Wed, 16 Sep 2015 21:52:02 +0000 (22:52 +0100)
committerCarl Hetherington <cth@carlh.net>
Wed, 16 Sep 2015 21:52:02 +0000 (22:52 +0100)
ChangeLog
src/lib/config.cc
src/lib/config.h
src/lib/film.cc
src/wx/config_dialog.cc

index eb40542deee140d1fee4e5f095ad5939a04e8e18..7fa5553f320d12c9d20e75a9d25bf1fb7f5343b3 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2015-09-16  Carl Hetherington  <cth@carlh.net>
+
+       * Add config option for default standard
+       (SMPTE / Interop).
+
 2015-09-16  c.hetherington  <cth@carlh.net>
 
        * Allow imported DCPs to be referenced rather
index 6862cc565550f6af5e8e3cd13b005260cbb12450..a51c775a38132f2fd72502c605cdf26635759703 100644 (file)
@@ -86,6 +86,7 @@ Config::set_defaults ()
        _default_dcp_content_type = DCPContentType::from_isdcf_name ("FTR");
        _default_j2k_bandwidth = 100000000;
        _default_audio_delay = 0;
+       _default_interop = false;
        _mail_server = "";
        _mail_port = 25;
        _mail_user = "";
@@ -205,6 +206,7 @@ Config::read ()
        _default_still_length = f.optional_number_child<int>("DefaultStillLength").get_value_or (10);
        _default_j2k_bandwidth = f.optional_number_child<int>("DefaultJ2KBandwidth").get_value_or (200000000);
        _default_audio_delay = f.optional_number_child<int>("DefaultAudioDelay").get_value_or (0);
+       _default_interop = f.optional_bool_child("DefaultInterop").get_value_or (false);
 
        list<cxml::NodePtr> cin = f.node_children ("Cinema");
        for (list<cxml::NodePtr>::iterator i = cin.begin(); i != cin.end(); ++i) {
@@ -357,6 +359,7 @@ Config::write () const
        root->add_child("DefaultStillLength")->add_child_text (raw_convert<string> (_default_still_length));
        root->add_child("DefaultJ2KBandwidth")->add_child_text (raw_convert<string> (_default_j2k_bandwidth));
        root->add_child("DefaultAudioDelay")->add_child_text (raw_convert<string> (_default_audio_delay));
+       root->add_child("DefaultInterop")->add_child_text (_default_interop ? "1" : "0");
 
        for (list<shared_ptr<Cinema> >::const_iterator i = _cinemas.begin(); i != _cinemas.end(); ++i) {
                (*i)->as_xml (root->add_child ("Cinema"));
index 2f68ea31cb7b91cc5e085f78fee121400ae87ef8..579527975db2153892302d32232215b974f77da5 100644 (file)
@@ -166,6 +166,10 @@ public:
                return _default_audio_delay;
        }
 
+       bool default_interop () const {
+               return _default_interop;
+       }
+
        std::string mail_server () const {
                return _mail_server;
        }
@@ -349,6 +353,10 @@ public:
                maybe_set (_default_audio_delay, d);
        }
 
+       void set_default_interop (bool i) {
+               maybe_set (_default_interop, i);
+       }
+
        void set_mail_server (std::string s) {
                maybe_set (_mail_server, s);
        }
@@ -492,6 +500,7 @@ private:
        std::string _dcp_creator;
        int _default_j2k_bandwidth;
        int _default_audio_delay;
+       bool _default_interop;
        std::list<boost::shared_ptr<Cinema> > _cinemas;
        std::string _mail_server;
        int _mail_port;
index 6514efde82f3b62cbe4d5bfea1af8abff3f486e4..b112914b340241d7958e95b29af50cbf6bc576a8 100644 (file)
@@ -123,7 +123,7 @@ Film::Film (boost::filesystem::path dir, bool log)
        , _audio_channels (6)
        , _three_d (false)
        , _sequence_video (true)
-       , _interop (false)
+       , _interop (Config::instance()->default_interop ())
        , _audio_processor (0)
        , _state_version (current_state_version)
        , _dirty (false)
index 15d64b902f42eb57951f84c5f1bc658e5546f0c9..5b02d71e358a4f0e016ce6be3ef8efec222381ea 100644 (file)
@@ -425,6 +425,10 @@ private:
                        table->Add (s, 1);
                }
 
+               add_label_to_sizer (table, _panel, _("Default standard"), true);
+               _standard = new wxChoice (_panel, wxID_ANY);
+               table->Add (_standard);
+
                _still_length->SetRange (1, 3600);
                _still_length->Bind (wxEVT_COMMAND_SPINCTRL_UPDATED, boost::bind (&DefaultsPage::still_length_changed, this));
 
@@ -451,6 +455,10 @@ private:
 
                _audio_delay->SetRange (-1000, 1000);
                _audio_delay->Bind (wxEVT_COMMAND_SPINCTRL_UPDATED, boost::bind (&DefaultsPage::audio_delay_changed, this));
+
+               _standard->Append (_("SMPTE"));
+               _standard->Append (_("Interop"));
+               _standard->Bind (wxEVT_COMMAND_CHOICE_SELECTED, boost::bind (&DefaultsPage::standard_changed, this));
        }
 
        void config_changed ()
@@ -476,6 +484,7 @@ private:
                checked_set (_j2k_bandwidth, config->default_j2k_bandwidth() / 1000000);
                _j2k_bandwidth->SetRange (50, config->maximum_j2k_bandwidth() / 1000000);
                checked_set (_audio_delay, config->default_audio_delay ());
+               checked_set (_standard, config->default_interop() ? 1 : 0);
        }
 
        void j2k_bandwidth_changed ()
@@ -518,6 +527,11 @@ private:
                Config::instance()->set_default_dcp_content_type (ct[_dcp_content_type->GetSelection()]);
        }
 
+       void standard_changed ()
+       {
+               Config::instance()->set_default_interop (_standard->GetSelection() == 1);
+       }
+
        wxSpinCtrl* _j2k_bandwidth;
        wxSpinCtrl* _audio_delay;
        wxButton* _isdcf_metadata_button;
@@ -529,6 +543,7 @@ private:
 #endif
        wxChoice* _container;
        wxChoice* _dcp_content_type;
+       wxChoice* _standard;
 };
 
 class EncodingServersPage : public StandardPage