From a6696b9a58c14d81f0ae30482051c2cd47a004db Mon Sep 17 00:00:00 2001 From: Carl Hetherington Date: Fri, 2 Apr 2021 10:47:35 +0200 Subject: Add language to audio content and use it instead of the general metadata. --- src/lib/audio_content.cc | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) (limited to 'src/lib/audio_content.cc') diff --git a/src/lib/audio_content.cc b/src/lib/audio_content.cc index 748cbb7d0..3d9f6ac05 100644 --- a/src/lib/audio_content.cc +++ b/src/lib/audio_content.cc @@ -52,6 +52,7 @@ using namespace dcpomatic; int const AudioContentProperty::STREAMS = 200; int const AudioContentProperty::GAIN = 201; int const AudioContentProperty::DELAY = 202; +int const AudioContentProperty::LANGUAGE = 203; AudioContent::AudioContent (Content* parent) @@ -89,6 +90,10 @@ AudioContent::AudioContent (Content* parent, cxml::ConstNodePtr node) { _gain = node->number_child ("AudioGain"); _delay = node->number_child ("AudioDelay"); + auto lang = node->optional_node_child ("Language"); + if (lang) { + _language = dcp::LanguageTag (lang->content()); + } /* Backwards compatibility */ auto r = node->optional_number_child("AudioVideoFrameRate"); @@ -112,11 +117,16 @@ AudioContent::AudioContent (Content* parent, vector > c) if (c[i]->audio->delay() != ref->delay()) { throw JoinError (_("Content to be joined must have the same audio delay.")); } + + if (c[i]->audio->language() != ref->language()) { + throw JoinError (_("Content to be joined must have the same audio language.")); + } } _gain = ref->gain (); _delay = ref->delay (); _streams = ref->streams (); + _language = ref->language (); } @@ -126,6 +136,9 @@ AudioContent::as_xml (xmlpp::Node* node) const boost::mutex::scoped_lock lm (_mutex); node->add_child("AudioGain")->add_child_text(raw_convert(_gain)); node->add_child("AudioDelay")->add_child_text(raw_convert(_delay)); + if (_language) { + node->add_child("Language")->add_child_text(_language->to_string()); + } } @@ -143,6 +156,13 @@ AudioContent::set_delay (int d) } +void +AudioContent::set_language (optional language) +{ + maybe_set (_language, language, AudioContentProperty::LANGUAGE); +} + + string AudioContent::technical_summary () const { -- cgit v1.2.3