From 13b133de7fb5b953c23c58790c2d1f2a8bf4009c Mon Sep 17 00:00:00 2001 From: Carl Hetherington Date: Fri, 20 Dec 2013 21:26:17 +0000 Subject: [PATCH] Allow configuration of default audio delay (#276). --- ChangeLog | 2 ++ src/lib/audio_content.cc | 5 +++-- src/lib/config.cc | 3 +++ src/lib/config.h | 9 +++++++++ src/wx/config_dialog.cc | 19 +++++++++++++++++++ src/wx/config_dialog.h | 2 ++ 6 files changed, 38 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index 7b384191f..ed6021c98 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,7 @@ 2013-12-20 Carl Hetherington + * Add configuration option for default audio delay (#276). + * Version 1.46 released. 2013-12-19 Carl Hetherington diff --git a/src/lib/audio_content.cc b/src/lib/audio_content.cc index 97372b962..b4c4f34b6 100644 --- a/src/lib/audio_content.cc +++ b/src/lib/audio_content.cc @@ -23,6 +23,7 @@ #include "job_manager.h" #include "film.h" #include "exceptions.h" +#include "config.h" #include "i18n.h" @@ -42,7 +43,7 @@ int const AudioContentProperty::AUDIO_MAPPING = 205; AudioContent::AudioContent (shared_ptr f, Time s) : Content (f, s) , _audio_gain (0) - , _audio_delay (0) + , _audio_delay (Config::instance()->default_audio_delay ()) { } @@ -50,7 +51,7 @@ AudioContent::AudioContent (shared_ptr f, Time s) AudioContent::AudioContent (shared_ptr f, boost::filesystem::path p) : Content (f, p) , _audio_gain (0) - , _audio_delay (0) + , _audio_delay (Config::instance()->default_audio_delay ()) { } diff --git a/src/lib/config.cc b/src/lib/config.cc index ccbcdf7dd..93eec9bc0 100644 --- a/src/lib/config.cc +++ b/src/lib/config.cc @@ -64,6 +64,7 @@ Config::Config () , _default_container (Ratio::from_id ("185")) , _default_dcp_content_type (DCPContentType::from_dci_name ("TST")) , _default_j2k_bandwidth (200000000) + , _default_audio_delay (0) , _kdm_email ( "Dear Projectionist\n\nPlease find attached KDMs for $CPL_NAME.\n\nBest regards,\nDCP-o-matic" ) @@ -145,6 +146,7 @@ Config::read () _default_dci_metadata = DCIMetadata (f.node_child ("DCIMetadata")); _default_still_length = f.optional_number_child("DefaultStillLength").get_value_or (10); _default_j2k_bandwidth = f.optional_number_child("DefaultJ2KBandwidth").get_value_or (200000000); + _default_audio_delay = f.optional_number_child("DefaultAudioDelay").get_value_or (0); list cc = f.node_children ("ColourConversion"); @@ -334,6 +336,7 @@ Config::write () const root->add_child("DefaultStillLength")->add_child_text (lexical_cast (_default_still_length)); root->add_child("DefaultJ2KBandwidth")->add_child_text (lexical_cast (_default_j2k_bandwidth)); + root->add_child("DefaultAudioDelay")->add_child_text (lexical_cast (_default_audio_delay)); for (vector::const_iterator i = _colour_conversions.begin(); i != _colour_conversions.end(); ++i) { i->as_xml (root->add_child ("ColourConversion")); diff --git a/src/lib/config.h b/src/lib/config.h index 1fa54f669..14c707dd2 100644 --- a/src/lib/config.h +++ b/src/lib/config.h @@ -143,6 +143,10 @@ public: return _default_j2k_bandwidth; } + int default_audio_delay () const { + return _default_audio_delay; + } + std::vector colour_conversions () const { return _colour_conversions; } @@ -245,6 +249,10 @@ public: _default_j2k_bandwidth = b; } + void set_default_audio_delay (int d) { + _default_audio_delay = d; + } + void set_colour_conversions (std::vector const & c) { _colour_conversions = c; } @@ -309,6 +317,7 @@ private: DCPContentType const * _default_dcp_content_type; libdcp::XMLMetadata _dcp_metadata; int _default_j2k_bandwidth; + int _default_audio_delay; std::vector _colour_conversions; std::list > _cinemas; std::string _mail_server; diff --git a/src/wx/config_dialog.cc b/src/wx/config_dialog.cc index 71a0f505f..4743000f2 100644 --- a/src/wx/config_dialog.cc +++ b/src/wx/config_dialog.cc @@ -158,6 +158,15 @@ ConfigDialog::make_misc_panel () add_label_to_sizer (s, _misc_panel, _("MBps"), false); table->Add (s, 1); } + + { + add_label_to_sizer (table, _misc_panel, _("Default audio delay"), true); + wxBoxSizer* s = new wxBoxSizer (wxHORIZONTAL); + _default_audio_delay = new wxSpinCtrl (_misc_panel); + s->Add (_default_audio_delay); + add_label_to_sizer (s, _misc_panel, _("ms"), false); + table->Add (s, 1); + } Config* config = Config::instance (); @@ -225,6 +234,10 @@ ConfigDialog::make_misc_panel () _default_j2k_bandwidth->SetRange (50, 250); _default_j2k_bandwidth->SetValue (config->default_j2k_bandwidth() / 1000000); _default_j2k_bandwidth->Bind (wxEVT_COMMAND_SPINCTRL_UPDATED, boost::bind (&ConfigDialog::default_j2k_bandwidth_changed, this)); + + _default_audio_delay->SetRange (-1000, 1000); + _default_audio_delay->SetValue (config->default_audio_delay ()); + _default_audio_delay->Bind (wxEVT_COMMAND_SPINCTRL_UPDATED, boost::bind (&ConfigDialog::default_audio_delay_changed, this)); } void @@ -457,6 +470,12 @@ ConfigDialog::default_j2k_bandwidth_changed () Config::instance()->set_default_j2k_bandwidth (_default_j2k_bandwidth->GetValue() * 1000000); } +void +ConfigDialog::default_audio_delay_changed () +{ + Config::instance()->set_default_audio_delay (_default_audio_delay->GetValue()); +} + static std::string colour_conversion_column (PresetColourConversion c) { diff --git a/src/wx/config_dialog.h b/src/wx/config_dialog.h index 3a196cce3..45739ef92 100644 --- a/src/wx/config_dialog.h +++ b/src/wx/config_dialog.h @@ -58,6 +58,7 @@ private: void issuer_changed (); void creator_changed (); void default_j2k_bandwidth_changed (); + void default_audio_delay_changed (); void mail_server_changed (); void kdm_from_changed (); void kdm_email_changed (); @@ -99,6 +100,7 @@ private: wxTextCtrl* _issuer; wxTextCtrl* _creator; wxSpinCtrl* _default_j2k_bandwidth; + wxSpinCtrl* _default_audio_delay; wxPanel* _kdm_email_panel; wxTextCtrl* _kdm_email; wxCheckBox* _use_any_servers; -- 2.30.2