Add default audio language configuration (#2375).
[dcpomatic.git] / src / lib / config.cc
index 6984c406440d46ae4d795eae9319d6b3f1e2c3e1..d44abdfbf7685dc0d2641cc0ad105ef5c8854ab7 100644 (file)
@@ -106,7 +106,6 @@ Config::set_defaults ()
        _show_experimental_audio_processors = false;
        _language = optional<string> ();
        _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 = 150000000;
@@ -334,16 +333,6 @@ try
 
        _language = f.optional_string_child ("Language");
 
-       auto c = f.optional_string_child ("DefaultContainer");
-       if (c) {
-               _default_container = Ratio::from_id (c.get ());
-       }
-
-       if (_default_container && !_default_container->used_for_container()) {
-               Warning (_("Your default container is not valid and has been changed to Flat (1.85:1)"));
-               _default_container = Ratio::from_id ("185");
-       }
-
        _default_dcp_content_type = DCPContentType::from_isdcf_name(f.optional_string_child("DefaultDCPContentType").get_value_or("FTR"));
        _default_dcp_audio_channels = f.optional_number_child<int>("DefaultDCPAudioChannels").get_value_or (6);
 
@@ -368,6 +357,12 @@ try
        _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);
+       try {
+               auto al = f.optional_string_child("DefaultAudioLanguage");
+               if (al) {
+                       _default_audio_language = dcp::LanguageTag(*al);
+               }
+       } catch (std::runtime_error&) {}
 
        for (auto const& i: f.node_children("DefaultMetadata")) {
                _default_metadata[i->string_attribute("key")] = i->content();
@@ -735,13 +730,6 @@ Config::write_config () const
                /* [XML:opt] Language Language to use in the GUI e.g. <code>fr_FR</code>. */
                root->add_child("Language")->add_child_text (_language.get());
        }
-       if (_default_container) {
-               /* [XML:opt] DefaultContainer ID of default container
-                  to use when creating new films (<code>185</code>,<code>239</code> or
-                  <code>190</code>).
-               */
-               root->add_child("DefaultContainer")->add_child_text (_default_container->id ());
-       }
        if (_default_dcp_content_type) {
                /* [XML:opt] DefaultDCPContentType Default content type to use when creating new films (<code>FTR</code>, <code>SHR</code>,
                   <code>TLR</code>, <code>TST</code>, <code>XSN</code>, <code>RTG</code>, <code>TSR</code>, <code>POL</code>,
@@ -773,6 +761,10 @@ Config::write_config () const
        root->add_child("DefaultAudioDelay")->add_child_text (raw_convert<string> (_default_audio_delay));
        /* [XML] DefaultInterop 1 to default new films to Interop, 0 for SMPTE. */
        root->add_child("DefaultInterop")->add_child_text (_default_interop ? "1" : "0");
+       if (_default_audio_language) {
+               /* [XML] DefaultAudioLanguage Default audio language to use for new films */
+               root->add_child("DefaultAudioLanguage")->add_child_text(_default_audio_language->to_string());
+       }
        for (auto const& i: _default_metadata) {
                auto c = root->add_child("DefaultMetadata");
                c->set_attribute("key", i.first);