Add only-servers-encode option for debugging / optimisation / testing of servers.
authorCarl Hetherington <cth@carlh.net>
Tue, 18 Aug 2015 23:21:43 +0000 (00:21 +0100)
committerCarl Hetherington <cth@carlh.net>
Tue, 18 Aug 2015 23:21:43 +0000 (00:21 +0100)
src/lib/config.cc
src/lib/config.h
src/lib/encoder.cc
src/lib/film.cc
src/wx/config_dialog.cc

index 5f59d8e6ca4d0d7d219570c41b14d34f5e596eaf..211637ede2069360704db2a882df2c2eddd43d08 100644 (file)
@@ -69,6 +69,7 @@ Config::set_defaults ()
        _server_port_base = 6192;
        _use_any_servers = true;
        _servers.clear ();
+       _only_servers_encode = false;
        _tms_protocol = PROTOCOL_SCP;
        _tms_ip = "";
        _tms_path = ".";
@@ -155,6 +156,7 @@ Config::read ()
                }
        }
 
+       _only_servers_encode = f.optional_bool_child ("OnlyServersEncode").get_value_or (false);
        _tms_protocol = static_cast<Protocol> (f.optional_number_child<int> ("TMSProtocol").get_value_or (static_cast<int> (PROTOCOL_SCP)));
        _tms_ip = f.string_child ("TMSIP");
        _tms_path = f.string_child ("TMSPath");
@@ -322,6 +324,7 @@ Config::write () const
                root->add_child("Server")->add_child_text (*i);
        }
 
+       root->add_child("OnlyServersEncode")->add_child_text (_only_servers_encode ? "1" : "0");
        root->add_child("TMSProtocol")->add_child_text (raw_convert<string> (_tms_protocol));
        root->add_child("TMSIP")->add_child_text (_tms_ip);
        root->add_child("TMSPath")->add_child_text (_tms_path);
index 40b65534211439c5a29b19a22a2d417292e57856..0839ea994d1dc0a8449d6e3e0ffdd5d3e71bacf7 100644 (file)
@@ -90,6 +90,10 @@ public:
                return _servers;
        }
 
+       bool only_servers_encode () const {
+               return _only_servers_encode;
+       }
+
        Protocol tms_protocol () const {
                return _tms_protocol;
        }
@@ -251,6 +255,10 @@ public:
                maybe_set (_server_port_base, p);
        }
 
+       void set_only_servers_encode (bool o) {
+               maybe_set (_only_servers_encode, o);
+       }
+
        void set_tms_protocol (Protocol p) {
                maybe_set (_tms_protocol, p);
        }
@@ -455,6 +463,7 @@ private:
        bool _use_any_servers;
        /** J2K encoding servers that should definitely be used */
        std::vector<std::string> _servers;
+       bool _only_servers_encode;
        Protocol _tms_protocol;
        /** The IP address of a TMS that we can copy DCPs to */
        std::string _tms_ip;
index 09788d3fae2a81f0cb3298e3f98adcd96eb32b01..917f313a2a8be9ed52ce0052276f3fcec68df213 100644 (file)
@@ -89,8 +89,10 @@ Encoder::add_worker_threads (ServerDescription d)
 void
 Encoder::begin ()
 {
-       for (int i = 0; i < Config::instance()->num_local_encoding_threads (); ++i) {
-               _threads.push_back (new boost::thread (boost::bind (&Encoder::encoder_thread, this, optional<ServerDescription> ())));
+       if (!Config::instance()->only_servers_encode ()) {
+               for (int i = 0; i < Config::instance()->num_local_encoding_threads (); ++i) {
+                       _threads.push_back (new boost::thread (boost::bind (&Encoder::encoder_thread, this, optional<ServerDescription> ())));
+               }
        }
 
        _writer->set_encoder_threads (_threads.size ());
index 9066b7c5a7f7b79bca06aa07e365bf7e651aa7a6..8cd9f9548ab646d9ac9dc258013f16b197371a01 100644 (file)
@@ -266,7 +266,11 @@ Film::make_dcp ()
                LOG_GENERAL ("Content: %1", i->technical_summary());
        }
        LOG_GENERAL ("DCP video rate %1 fps", video_frame_rate());
-       LOG_GENERAL ("%1 threads", Config::instance()->num_local_encoding_threads());
+       if (Config::instance()->only_servers_encode ()) {
+               LOG_GENERAL_NC ("0 threads: ONLY SERVERS SET TO ENCODE");
+       } else {
+               LOG_GENERAL ("%1 threads", Config::instance()->num_local_encoding_threads());
+       }
        LOG_GENERAL ("J2K bandwidth %1", j2k_bandwidth());
 
        if (container() == 0) {
index f7053d1c29a4d2e1794dbc12fca4adb34ca3abe4..e1ffd393cca7af1d476aec1c7e272e9a700b6f72 100644 (file)
@@ -1179,6 +1179,7 @@ public:
                : StockPage (Kind_Advanced, panel_size, border)
                , _maximum_j2k_bandwidth (0)
                , _allow_any_dcp_frame_rate (0)
+               , _only_servers_encode (0)
                , _log_general (0)
                , _log_warning (0)
                , _log_error (0)
@@ -1207,6 +1208,10 @@ private:
                table->Add (_allow_any_dcp_frame_rate, 1, wxEXPAND | wxALL);
                table->AddSpacer (0);
 
+               _only_servers_encode = new wxCheckBox (_panel, wxID_ANY, _("Only servers encode"));
+               table->Add (_only_servers_encode, 1, wxEXPAND | wxALL);
+               table->AddSpacer (0);
+
 #ifdef __WXOSX__
                wxStaticText* m = new wxStaticText (_panel, wxID_ANY, _("Log:"));
                table->Add (m, 0, wxALIGN_TOP | wxLEFT | wxRIGHT | wxEXPAND | wxALL | wxALIGN_RIGHT, 6);
@@ -1241,6 +1246,7 @@ private:
                _maximum_j2k_bandwidth->SetRange (1, 1000);
                _maximum_j2k_bandwidth->Bind (wxEVT_COMMAND_SPINCTRL_UPDATED, boost::bind (&AdvancedPage::maximum_j2k_bandwidth_changed, this));
                _allow_any_dcp_frame_rate->Bind (wxEVT_COMMAND_CHECKBOX_CLICKED, boost::bind (&AdvancedPage::allow_any_dcp_frame_rate_changed, this));
+               _only_servers_encode->Bind (wxEVT_COMMAND_CHECKBOX_CLICKED, boost::bind (&AdvancedPage::only_servers_encode_changed, this));
                _log_general->Bind (wxEVT_COMMAND_CHECKBOX_CLICKED, boost::bind (&AdvancedPage::log_changed, this));
                _log_warning->Bind (wxEVT_COMMAND_CHECKBOX_CLICKED, boost::bind (&AdvancedPage::log_changed, this));
                _log_error->Bind (wxEVT_COMMAND_CHECKBOX_CLICKED, boost::bind (&AdvancedPage::log_changed, this));
@@ -1258,6 +1264,7 @@ private:
 
                checked_set (_maximum_j2k_bandwidth, config->maximum_j2k_bandwidth() / 1000000);
                checked_set (_allow_any_dcp_frame_rate, config->allow_any_dcp_frame_rate ());
+               checked_set (_only_servers_encode, config->only_servers_encode ());
                checked_set (_log_general, config->log_types() & Log::TYPE_GENERAL);
                checked_set (_log_warning, config->log_types() & Log::TYPE_WARNING);
                checked_set (_log_error, config->log_types() & Log::TYPE_ERROR);
@@ -1279,6 +1286,11 @@ private:
                Config::instance()->set_allow_any_dcp_frame_rate (_allow_any_dcp_frame_rate->GetValue ());
        }
 
+       void only_servers_encode_changed ()
+       {
+               Config::instance()->set_only_servers_encode (_only_servers_encode->GetValue ());
+       }
+
        void log_changed ()
        {
                int types = 0;
@@ -1312,6 +1324,7 @@ private:
 
        wxSpinCtrl* _maximum_j2k_bandwidth;
        wxCheckBox* _allow_any_dcp_frame_rate;
+       wxCheckBox* _only_servers_encode;
        wxCheckBox* _log_general;
        wxCheckBox* _log_warning;
        wxCheckBox* _log_error;