X-Git-Url: https://git.carlh.net/gitweb/?a=blobdiff_plain;f=src%2Flib%2Fconfig.cc;h=8e1997325593f6845889bfc6096858593ecfb738;hb=5a5324ed3a381a86dfe0a6e3932c1d58fdcd596f;hp=8370be7d1d169fae247a6a75af1ed4857590e925;hpb=b4712f306deb2abb54cd431ef620aacc02085d91;p=dcpomatic.git diff --git a/src/lib/config.cc b/src/lib/config.cc index 8370be7d1..8e1997325 100644 --- a/src/lib/config.cc +++ b/src/lib/config.cc @@ -1,19 +1,20 @@ /* Copyright (C) 2012-2016 Carl Hetherington - This program is free software; you can redistribute it and/or modify + This file is part of DCP-o-matic. + + DCP-o-matic is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. - This program is distributed in the hope that it will be useful, + DCP-o-matic is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + along with DCP-o-matic. If not, see . */ @@ -38,6 +39,7 @@ #include #include #include +#include #include #include #include @@ -54,6 +56,7 @@ using std::remove; using std::exception; using std::cerr; using boost::shared_ptr; +using boost::make_shared; using boost::optional; using boost::algorithm::trim; @@ -84,6 +87,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; @@ -98,6 +102,7 @@ Config::set_defaults () _check_for_test_updates = false; _maximum_j2k_bandwidth = 250000000; _log_types = LogEntry::TYPE_GENERAL | LogEntry::TYPE_WARNING | LogEntry::TYPE_ERROR; + _analyse_ebur128 = true; _automatic_audio_analysis = false; #ifdef DCPOMATIC_WINDOWS _win32_console = false; @@ -141,10 +146,12 @@ void Config::read () { if (!have_existing ("config.xml")) { + cout << "No existing config.xml; creating chains.\n"; /* Make a new set of signing certificates and key */ _signer_chain = create_certificate_chain (); /* And similar for decryption of KDMs */ _decryption_chain = create_certificate_chain (); + cout << "Writing config.\n"; write (); return; } @@ -204,6 +211,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")) { @@ -247,6 +256,7 @@ Config::read () _allow_any_dcp_frame_rate = f.optional_bool_child ("AllowAnyDCPFrameRate").get_value_or (false); _log_types = f.optional_number_child ("LogTypes").get_value_or (LogEntry::TYPE_GENERAL | LogEntry::TYPE_WARNING | LogEntry::TYPE_ERROR); + _analyse_ebur128 = f.optional_bool_child("AnalyseEBUR128").get_value_or (true); _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); @@ -259,7 +269,7 @@ Config::read () cxml::NodePtr signer = f.optional_node_child ("Signer"); if (signer) { - shared_ptr c (new dcp::CertificateChain ()); + shared_ptr c = make_shared (); /* Read the signing certificates and private key in from the config file */ BOOST_FOREACH (cxml::NodePtr i, signer->node_children ("Certificate")) { c->add (dcp::Certificate (i->content ())); @@ -273,7 +283,7 @@ Config::read () cxml::NodePtr decryption = f.optional_node_child ("Decryption"); if (decryption) { - shared_ptr c (new dcp::CertificateChain ()); + shared_ptr c = make_shared (); BOOST_FOREACH (cxml::NodePtr i, decryption->node_children ("Certificate")) { c->add (dcp::Certificate (i->content ())); } @@ -384,6 +394,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); @@ -411,6 +422,7 @@ Config::write_config_xml () const root->add_child("MaximumJ2KBandwidth")->add_child_text (raw_convert (_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 (_log_types)); + root->add_child("AnalyseEBUR128")->add_child_text (_analyse_ebur128 ? "1" : "0"); 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"); @@ -549,7 +561,7 @@ Config::read_cinemas (cxml::Document const & f) /* Slightly grotty two-part construction of Cinema here so that we can use shared_from_this. */ - shared_ptr cinema (new Cinema (*i)); + shared_ptr cinema = make_shared (*i); cinema->read_screens (*i); _cinemas.push_back (cinema); }