Add support for writing CPL metadata about sign language video tracks (DoM #2062).
[libdcp.git] / src / cpl.cc
index e52f8b34477980d393dbb5c87448debfeca0e269..1f20d13e2e77509b01543cc48636efed36e01af2 100644 (file)
@@ -312,6 +312,23 @@ CPL::read_composition_metadata_asset (cxml::ConstNodePtr node)
                        _additional_subtitle_languages.push_back (sll_split[i]);
                }
        }
+
+       auto eml = node->optional_node_child ("ExtensionMetadataList");
+       if (eml) {
+               for (auto i: eml->node_children("ExtensionMetadata")) {
+                       auto name = i->optional_string_child("Name");
+                       if (name && *name == "Sign Language Video") {
+                               auto property_list = i->node_child("PropertyList");
+                               for (auto j: property_list->node_children("Property")) {
+                                       auto name = j->optional_string_child("Name");
+                                       auto value = j->optional_string_child("Value");
+                                       if (name && value && *name == "Language Tag") {
+                                               _sign_language_video_language = *value;
+                                       }
+                               }
+                       }
+               }
+       }
 }
 
 
@@ -433,6 +450,10 @@ CPL::maybe_write_composition_metadata_asset (xmlpp::Element* node) const
        /* SMPTE Bv2.1 8.6.3 */
        add_extension_metadata ("http://isdcf.com/ns/cplmd/app", "Application", "DCP Constraints Profile", "SMPTE-RDD-52:2020-Bv2.1");
 
+       if (_sign_language_video_language) {
+               add_extension_metadata ("http://isdcf.com/2017/10/SignLanguageVideo", "Sign Language Video", "Language Tag", *_sign_language_video_language);
+       }
+
        if (_reels.front()->main_sound()) {
                auto asset = _reels.front()->main_sound()->asset();
                if (asset) {