From ec18743d91476f4a712644179c2d654d8702349c Mon Sep 17 00:00:00 2001 From: Carl Hetherington Date: Fri, 17 Jun 2016 23:22:06 +0100 Subject: [PATCH] Add preference for the default number of DCP channels (#897). --- ChangeLog | 5 +++++ src/lib/config.cc | 4 ++++ src/lib/config.h | 9 +++++++++ src/lib/film.cc | 2 +- src/wx/config_dialog.cc | 22 ++++++++++++++++++++++ 5 files changed, 41 insertions(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index da87cb96a..784a68674 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2016-06-17 Carl Hetherington + + * Add configurable default for the number of DCP + audio channels (#897). + 2016-06-16 Carl Hetherington * Ignore any hidden files when looking for image files. diff --git a/src/lib/config.cc b/src/lib/config.cc index f8debbb4e..891d832a2 100644 --- a/src/lib/config.cc +++ b/src/lib/config.cc @@ -85,6 +85,7 @@ Config::set_defaults () _default_still_length = 10; _default_container = Ratio::from_id ("185"); _default_dcp_content_type = DCPContentType::from_isdcf_name ("FTR"); + _default_dcp_audio_channels = 6; _default_j2k_bandwidth = 100000000; _default_audio_delay = 0; _default_interop = false; @@ -208,6 +209,8 @@ Config::read () _default_dcp_content_type = DCPContentType::from_isdcf_name (c.get ()); } + _default_dcp_audio_channels = f.optional_number_child("DefaultDCPAudioChannels").get_value_or (6); + if (f.optional_string_child ("DCPMetadataIssuer")) { _dcp_issuer = f.string_child ("DCPMetadataIssuer"); } else if (f.optional_string_child ("DCPIssuer")) { @@ -389,6 +392,7 @@ Config::write_config_xml () const if (_default_dcp_content_type) { root->add_child("DefaultDCPContentType")->add_child_text (_default_dcp_content_type->isdcf_name ()); } + root->add_child("DefaultDCPAudioChannels")->add_child_text (raw_convert (_default_dcp_audio_channels)); root->add_child("DCPIssuer")->add_child_text (_dcp_issuer); root->add_child("DCPCreator")->add_child_text (_dcp_creator); diff --git a/src/lib/config.h b/src/lib/config.h index 6baa434a3..1ffcfdb98 100644 --- a/src/lib/config.h +++ b/src/lib/config.h @@ -152,6 +152,10 @@ public: return _default_dcp_content_type; } + int default_dcp_audio_channels () const { + return _default_dcp_audio_channels; + } + std::string dcp_issuer () const { return _dcp_issuer; } @@ -351,6 +355,10 @@ public: maybe_set (_default_dcp_content_type, t); } + void set_default_dcp_audio_channels (int c) { + maybe_set (_default_dcp_audio_channels, c); + } + void set_dcp_issuer (std::string i) { maybe_set (_dcp_issuer, i); } @@ -529,6 +537,7 @@ private: int _default_still_length; Ratio const * _default_container; DCPContentType const * _default_dcp_content_type; + int _default_dcp_audio_channels; std::string _dcp_issuer; std::string _dcp_creator; int _default_j2k_bandwidth; diff --git a/src/lib/film.cc b/src/lib/film.cc index 64550556b..3cd3f0f21 100644 --- a/src/lib/film.cc +++ b/src/lib/film.cc @@ -133,7 +133,7 @@ Film::Film (boost::filesystem::path dir, bool log) , _j2k_bandwidth (Config::instance()->default_j2k_bandwidth ()) , _isdcf_metadata (Config::instance()->default_isdcf_metadata ()) , _video_frame_rate (24) - , _audio_channels (6) + , _audio_channels (Config::instance()->default_dcp_audio_channels ()) , _three_d (false) , _sequence (true) , _interop (Config::instance()->default_interop ()) diff --git a/src/wx/config_dialog.cc b/src/wx/config_dialog.cc index 1cbad576c..e44ed879b 100644 --- a/src/wx/config_dialog.cc +++ b/src/wx/config_dialog.cc @@ -432,6 +432,10 @@ private: _dcp_content_type = new wxChoice (_panel, wxID_ANY); table->Add (_dcp_content_type); + add_label_to_sizer (table, _panel, _("Default DCP audio channels"), true); + _dcp_audio_channels = new wxChoice (_panel, wxID_ANY); + table->Add (_dcp_audio_channels); + { add_label_to_sizer (table, _panel, _("Default JPEG2000 bandwidth"), true); wxBoxSizer* s = new wxBoxSizer (wxHORIZONTAL); @@ -473,7 +477,15 @@ private: _dcp_content_type->Append (std_to_wx (ct[i]->pretty_name ())); } + vector > items; + for (int i = 0; i <= 16; i += 2) { + items.push_back (make_pair (raw_convert (i), raw_convert (i))); + } + + checked_set (_dcp_audio_channels, items); + _dcp_content_type->Bind (wxEVT_COMMAND_CHOICE_SELECTED, boost::bind (&DefaultsPage::dcp_content_type_changed, this)); + _dcp_audio_channels->Bind (wxEVT_COMMAND_CHOICE_SELECTED, boost::bind (&DefaultsPage::dcp_audio_channels_changed, this)); _j2k_bandwidth->SetRange (50, 250); _j2k_bandwidth->Bind (wxEVT_COMMAND_SPINCTRL_UPDATED, boost::bind (&DefaultsPage::j2k_bandwidth_changed, this)); @@ -508,6 +520,7 @@ private: _directory->SetPath (std_to_wx (config->default_directory_or (wx_to_std (wxStandardPaths::Get().GetDocumentsDir())).string ())); checked_set (_j2k_bandwidth, config->default_j2k_bandwidth() / 1000000); _j2k_bandwidth->SetRange (50, config->maximum_j2k_bandwidth() / 1000000); + checked_set (_dcp_audio_channels, raw_convert (config->default_dcp_audio_channels())); checked_set (_audio_delay, config->default_audio_delay ()); checked_set (_standard, config->default_interop() ? 1 : 0); } @@ -522,6 +535,14 @@ private: Config::instance()->set_default_audio_delay (_audio_delay->GetValue()); } + void dcp_audio_channels_changed () + { + int const s = _dcp_audio_channels->GetSelection (); + if (s != wxNOT_FOUND) { + Config::instance()->set_default_dcp_audio_channels (s * 2); + } + } + void directory_changed () { Config::instance()->set_default_directory (wx_to_std (_directory->GetPath ())); @@ -568,6 +589,7 @@ private: #endif wxChoice* _container; wxChoice* _dcp_content_type; + wxChoice* _dcp_audio_channels; wxChoice* _standard; }; -- 2.30.2