2013-12-20 Carl Hetherington <cth@carlh.net>
+ * Add configuration option for default audio delay (#276).
+
* Version 1.46 released.
2013-12-19 Carl Hetherington <cth@carlh.net>
#include "job_manager.h"
#include "film.h"
#include "exceptions.h"
+#include "config.h"
#include "i18n.h"
AudioContent::AudioContent (shared_ptr<const Film> f, Time s)
: Content (f, s)
, _audio_gain (0)
- , _audio_delay (0)
+ , _audio_delay (Config::instance()->default_audio_delay ())
{
}
AudioContent::AudioContent (shared_ptr<const Film> f, boost::filesystem::path p)
: Content (f, p)
, _audio_gain (0)
- , _audio_delay (0)
+ , _audio_delay (Config::instance()->default_audio_delay ())
{
}
, _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"
)
_default_dci_metadata = DCIMetadata (f.node_child ("DCIMetadata"));
_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);
list<cxml::NodePtr> cc = f.node_children ("ColourConversion");
root->add_child("DefaultStillLength")->add_child_text (lexical_cast<string> (_default_still_length));
root->add_child("DefaultJ2KBandwidth")->add_child_text (lexical_cast<string> (_default_j2k_bandwidth));
+ root->add_child("DefaultAudioDelay")->add_child_text (lexical_cast<string> (_default_audio_delay));
for (vector<PresetColourConversion>::const_iterator i = _colour_conversions.begin(); i != _colour_conversions.end(); ++i) {
i->as_xml (root->add_child ("ColourConversion"));
return _default_j2k_bandwidth;
}
+ int default_audio_delay () const {
+ return _default_audio_delay;
+ }
+
std::vector<PresetColourConversion> colour_conversions () const {
return _colour_conversions;
}
_default_j2k_bandwidth = b;
}
+ void set_default_audio_delay (int d) {
+ _default_audio_delay = d;
+ }
+
void set_colour_conversions (std::vector<PresetColourConversion> const & c) {
_colour_conversions = c;
}
DCPContentType const * _default_dcp_content_type;
libdcp::XMLMetadata _dcp_metadata;
int _default_j2k_bandwidth;
+ int _default_audio_delay;
std::vector<PresetColourConversion> _colour_conversions;
std::list<boost::shared_ptr<Cinema> > _cinemas;
std::string _mail_server;
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 ();
_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
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)
{
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 ();
wxTextCtrl* _issuer;
wxTextCtrl* _creator;
wxSpinCtrl* _default_j2k_bandwidth;
+ wxSpinCtrl* _default_audio_delay;
wxPanel* _kdm_email_panel;
wxTextCtrl* _kdm_email;
wxCheckBox* _use_any_servers;