Add language to audio content and use it instead of the general metadata.
[dcpomatic.git] / src / lib / audio_content.h
index 83a5e327e87c02c0da9f98d987269bd858e72f6d..adb5c9556151e0aa02d876374042e8b6cd3f2b8b 100644 (file)
@@ -1,5 +1,5 @@
 /*
-    Copyright (C) 2013-2016 Carl Hetherington <cth@carlh.net>
+    Copyright (C) 2013-2021 Carl Hetherington <cth@carlh.net>
 
     This file is part of DCP-o-matic.
 
 
 */
 
+
 /** @file  src/lib/audio_content.h
  *  @brief AudioContent and AudioContentProperty classes.
  */
 
+
 #ifndef DCPOMATIC_AUDIO_CONTENT_H
 #define DCPOMATIC_AUDIO_CONTENT_H
 
+
 #include "content_part.h"
 #include "audio_stream.h"
 #include "audio_mapping.h"
+#include <dcp/language_tag.h>
+
 
 /** @class AudioContentProperty
  *  @brief Names for properties of AudioContent.
@@ -38,13 +43,16 @@ public:
        static int const STREAMS;
        static int const GAIN;
        static int const DELAY;
+       static int const LANGUAGE;
 };
 
+
 class AudioContent : public ContentPart
 {
 public:
        explicit AudioContent (Content* parent);
-       AudioContent (Content* parent, std::vector<std::shared_ptr<Content> >);
+       AudioContent (Content* parent, std::vector<std::shared_ptr<Content>>);
+       AudioContent (Content* parent, cxml::ConstNodePtr);
 
        void as_xml (xmlpp::Node *) const;
        std::string technical_summary () const;
@@ -57,6 +65,7 @@ public:
 
        void set_gain (double);
        void set_delay (int);
+       void set_language (boost::optional<dcp::LanguageTag> langauge);
 
        double gain () const {
                boost::mutex::scoped_lock lm (_mutex);
@@ -68,6 +77,11 @@ public:
                return _delay;
        }
 
+       boost::optional<dcp::LanguageTag> language () const {
+               boost::mutex::scoped_lock lm (_mutex);
+               return _language;
+       }
+
        std::string processing_description (std::shared_ptr<const Film> film) const;
 
        std::vector<AudioStreamPtr> streams () const {
@@ -89,13 +103,12 @@ public:
 
 private:
 
-       AudioContent (Content* parent, cxml::ConstNodePtr);
-
        /** Gain to apply to audio in dB */
-       double _gain;
+       double _gain = 0;
        /** Delay to apply to audio (positive moves audio later) in milliseconds */
-       int _delay;
+       int _delay = 0;
        std::vector<AudioStreamPtr> _streams;
+       boost::optional<dcp::LanguageTag> _language;
 };
 
 #endif