diff options
| author | Carl Hetherington <cth@carlh.net> | 2022-11-23 01:05:41 +0100 |
|---|---|---|
| committer | Carl Hetherington <cth@carlh.net> | 2022-11-29 00:15:02 +0100 |
| commit | 4d879e836147720bed8208f92d8d39bcbd661221 (patch) | |
| tree | 8a61c5ca3b39c1cdb60aa81128942ca32d1b2784 /src/lib | |
| parent | da822af56c5e4acab361b8531fb75a1dcb4b110e (diff) | |
Add default audio language configuration (#2375).
Diffstat (limited to 'src/lib')
| -rw-r--r-- | src/lib/config.cc | 10 | ||||
| -rw-r--r-- | src/lib/config.h | 13 | ||||
| -rw-r--r-- | src/lib/film.cc | 1 |
3 files changed, 24 insertions, 0 deletions
diff --git a/src/lib/config.cc b/src/lib/config.cc index 235bace7b..d44abdfbf 100644 --- a/src/lib/config.cc +++ b/src/lib/config.cc @@ -357,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(); @@ -755,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); diff --git a/src/lib/config.h b/src/lib/config.h index c86622427..c6bf5986b 100644 --- a/src/lib/config.h +++ b/src/lib/config.h @@ -238,6 +238,10 @@ public: return _default_interop; } + boost::optional<dcp::LanguageTag> default_audio_language() const { + return _default_audio_language; + } + std::map<std::string, std::string> default_metadata () const { return _default_metadata; } @@ -762,6 +766,14 @@ public: maybe_set (_default_interop, i); } + void set_default_audio_language(dcp::LanguageTag tag) { + maybe_set(_default_audio_language, tag); + } + + void unset_default_audio_language() { + maybe_set(_default_audio_language, boost::optional<dcp::LanguageTag>()); + } + void set_default_metadata (std::map<std::string, std::string> const& metadata) { maybe_set (_default_metadata, metadata); } @@ -1292,6 +1304,7 @@ private: int _default_j2k_bandwidth; int _default_audio_delay; bool _default_interop; + boost::optional<dcp::LanguageTag> _default_audio_language; std::map<std::string, std::string> _default_metadata; /** Default directory to offer to write KDMs to; if it's not set, the home directory will be offered. diff --git a/src/lib/film.cc b/src/lib/film.cc index 7d713c041..e021c0aa9 100644 --- a/src/lib/film.cc +++ b/src/lib/film.cc @@ -176,6 +176,7 @@ Film::Film (optional<boost::filesystem::path> dir) , _name_language (dcp::LanguageTag("en-US")) , _version_number (1) , _status (dcp::Status::FINAL) + , _audio_language(Config::instance()->default_audio_language()) , _state_version (current_state_version) , _dirty (false) , _tolerant (false) |
