#include "filter.h"
#include "ratio.h"
#include "types.h"
+#include "log.h"
#include "dcp_content_type.h"
#include "cinema_sound_processor.h"
#include "colour_conversion.h"
#include <dcp/certificate_chain.h>
#include <libcxml/cxml.h>
#include <glib.h>
+#include <libxml++/libxml++.h>
#include <boost/filesystem.hpp>
#include <boost/algorithm/string.hpp>
#include <boost/foreach.hpp>
#include <cstdlib>
#include <fstream>
+#include <iostream>
#include "i18n.h"
_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 = "";
_check_for_test_updates = false;
_maximum_j2k_bandwidth = 250000000;
_log_types = Log::TYPE_GENERAL | Log::TYPE_WARNING | Log::TYPE_ERROR;
+ _automatic_audio_analysis = false;
#ifdef DCPOMATIC_WINDOWS
_win32_console = false;
#endif
_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) {
_check_for_test_updates = f.optional_bool_child("CheckForTestUpdates").get_value_or (false);
_maximum_j2k_bandwidth = f.optional_number_child<int> ("MaximumJ2KBandwidth").get_value_or (250000000);
- _allow_any_dcp_frame_rate = f.optional_bool_child ("AllowAnyDCPFrameRate");
+ _allow_any_dcp_frame_rate = f.optional_bool_child ("AllowAnyDCPFrameRate").get_value_or (false);
_log_types = f.optional_number_child<int> ("LogTypes").get_value_or (Log::TYPE_GENERAL | Log::TYPE_WARNING | Log::TYPE_ERROR);
+ _automatic_audio_analysis = f.optional_bool_child ("AutomaticAudioAnalysis").get_value_or (false);
#ifdef DCPOMATIC_WINDOWS
_win32_console = f.optional_bool_child ("Win32Console").get_value_or (false);
#endif
BOOST_FOREACH (cxml::NodePtr i, decryption->node_children ("Certificate")) {
c->add (dcp::Certificate (i->content ()));
}
- c->set_key (signer->string_child ("PrivateKey"));
+ c->set_key (decryption->string_child ("PrivateKey"));
_decryption_chain = c;
} else {
_decryption_chain.reset (new dcp::CertificateChain (openssl_path ()));
/** @return Filename to write configuration to */
boost::filesystem::path
-Config::file ()
+Config::file (bool create_directories)
{
boost::filesystem::path p;
#ifdef DCPOMATIC_OSX
p /= "dcpomatic2";
#endif
boost::system::error_code ec;
- boost::filesystem::create_directories (p, ec);
+ if (create_directories) {
+ boost::filesystem::create_directories (p, ec);
+ }
p /= "config.xml";
return p;
}
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"));
root->add_child("MaximumJ2KBandwidth")->add_child_text (raw_convert<string> (_maximum_j2k_bandwidth));
root->add_child("AllowAnyDCPFrameRate")->add_child_text (_allow_any_dcp_frame_rate ? "1" : "0");
root->add_child("LogTypes")->add_child_text (raw_convert<string> (_log_types));
+ root->add_child("AutomaticAudioAnalysis")->add_child_text (_automatic_audio_analysis ? "1" : "0");
#ifdef DCPOMATIC_WINDOWS
root->add_child("Win32Console")->add_child_text (_win32_console ? "1" : "0");
#endif
bool
Config::have_existing ()
{
- return boost::filesystem::exists (file ());
+ return boost::filesystem::exists (file (false));
}