summaryrefslogtreecommitdiff
path: root/src/lib/audio_content.cc
diff options
context:
space:
mode:
authorCarl Hetherington <cth@carlh.net>2021-04-02 10:47:35 +0200
committerCarl Hetherington <cth@carlh.net>2021-04-02 10:47:35 +0200
commita6696b9a58c14d81f0ae30482051c2cd47a004db (patch)
tree0fb2983324b891f7dd3ecde04eb92dae00cb0a85 /src/lib/audio_content.cc
parenta4b7d0af831b8cd9aafca5f2b264be416a7b1148 (diff)
Add language to audio content and use it instead of the general metadata.
Diffstat (limited to 'src/lib/audio_content.cc')
-rw-r--r--src/lib/audio_content.cc20
1 files changed, 20 insertions, 0 deletions
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<double> ("AudioGain");
_delay = node->number_child<int> ("AudioDelay");
+ auto lang = node->optional_node_child ("Language");
+ if (lang) {
+ _language = dcp::LanguageTag (lang->content());
+ }
/* Backwards compatibility */
auto r = node->optional_number_child<double>("AudioVideoFrameRate");
@@ -112,11 +117,16 @@ AudioContent::AudioContent (Content* parent, vector<shared_ptr<Content> > 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<string>(_gain));
node->add_child("AudioDelay")->add_child_text(raw_convert<string>(_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<dcp::LanguageTag> language)
+{
+ maybe_set (_language, language, AudioContentProperty::LANGUAGE);
+}
+
+
string
AudioContent::technical_summary () const
{