Tolerate missing FullContentTitleText (DoM bug #2295). 2295-tolerate-missing-full-content-title v1.8.25
authorCarl Hetherington <cth@carlh.net>
Mon, 15 Aug 2022 15:34:29 +0000 (17:34 +0200)
committerCarl Hetherington <cth@carlh.net>
Mon, 15 Aug 2022 15:34:29 +0000 (17:34 +0200)
src/cpl.cc
test/cpl_metadata_test.cc
test/ref/cpl_metadata_test3.xml [new file with mode: 0644]

index 79726f7f8e73293c5ac0070802f27892a249a670..1c449f8fc5a3eb3e4e08ba7c3f49fbb91864011f 100644 (file)
@@ -243,9 +243,13 @@ CPL::read_composition_metadata_asset (cxml::ConstNodePtr node)
 {
        _cpl_metadata_id = remove_urn_uuid(node->string_child("Id"));
 
-       auto fctt = node->node_child("FullContentTitleText");
-       _full_content_title_text = fctt->content();
-       _full_content_title_text_language = fctt->optional_string_attribute("language");
+       /* FullContentTitleText is compulsory but in DoM #2295 we saw a commercial tool which
+        * apparently didn't include it, so as usual we have to be defensive.
+        */
+       if (auto fctt = node->optional_node_child("FullContentTitleText")) {
+               _full_content_title_text = fctt->content();
+               _full_content_title_text_language = fctt->optional_string_attribute("language");
+       }
 
        _release_territory = node->optional_string_child("ReleaseTerritory");
        if (_release_territory) {
index b141d271d4a85483a625f2ca6c7aea584bce09fd..e0abb81c0c27a01d45efa0445fb2662b7957d06c 100644 (file)
@@ -422,3 +422,9 @@ BOOST_AUTO_TEST_CASE (cpl_metadata_roundtrip_test_2)
                );
 }
 
+
+BOOST_AUTO_TEST_CASE(check_that_missing_full_content_title_text_is_tolerated)
+{
+       dcp::CPL cpl("test/ref/cpl_metadata_test3.xml");
+}
+
diff --git a/test/ref/cpl_metadata_test3.xml b/test/ref/cpl_metadata_test3.xml
new file mode 100644 (file)
index 0000000..38d732a
--- /dev/null
@@ -0,0 +1,58 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<CompositionPlaylist xmlns="http://www.smpte-ra.org/schemas/429-7/2006/CPL">
+  <Id>urn:uuid:81fb54df-e1bf-4647-8788-ea7ba154375b</Id>
+  <AnnotationText></AnnotationText>
+  <IssueDate>2020-08-28T13:35:06+02:00</IssueDate>
+  <Issuer>libdcp1.6.4devel</Issuer>
+  <Creator>libdcp1.6.4devel</Creator>
+  <ContentTitleText></ContentTitleText>
+  <ContentKind>feature</ContentKind>
+  <ContentVersion>
+    <Id>id</Id>
+    <LabelText>version</LabelText>
+  </ContentVersion>
+  <RatingList/>
+  <ReelList>
+    <Reel>
+      <Id>urn:uuid:46c3eb45-15e5-47d6-8684-d8641e4dc516</Id>
+      <AssetList>
+        <MainPicture>
+          <Id>urn:uuid:e98d059d-645f-4343-a30f-edc61d58b8e0</Id>
+          <EditRate>24 1</EditRate>
+          <IntrinsicDuration>24</IntrinsicDuration>
+          <EntryPoint>0</EntryPoint>
+          <Duration>24</Duration>
+          <Hash>JtPL3uT3jyKMLysaqgdBWQb/n2E=</Hash>
+          <FrameRate>24 1</FrameRate>
+          <ScreenAspectRatio>1998 1080</ScreenAspectRatio>
+        </MainPicture>
+        <meta:CompositionMetadataAsset xmlns:meta="http://www.smpte-ra.org/schemas/429-16/2014/CPL-Metadata">
+          <Id>urn:uuid:d36f4bb3-c4fa-4a95-9915-6fec3110cd71</Id>
+          <EditRate>24 1</EditRate>
+          <IntrinsicDuration>24</IntrinsicDuration>
+          <meta:MainSoundConfiguration>71/L,R,C,LFE,-,-,-,-,-,-,-,-,-,FSKSync,-,-</meta:MainSoundConfiguration>
+          <meta:MainSoundSampleRate>48000 1</meta:MainSoundSampleRate>
+          <meta:MainPictureStoredArea>
+            <meta:Width>1998</meta:Width>
+            <meta:Height>1080</meta:Height>
+          </meta:MainPictureStoredArea>
+          <meta:MainPictureActiveArea>
+            <meta:Width>1440</meta:Width>
+            <meta:Height>1080</meta:Height>
+          </meta:MainPictureActiveArea>
+          <meta:ExtensionMetadataList>
+            <meta:ExtensionMetadata scope="http://isdcf.com/ns/cplmd/app">
+              <meta:Name>Application</meta:Name>
+              <meta:PropertyList>
+                <meta:Property>
+                  <meta:Name>DCP Constraints Profile</meta:Name>
+                  <meta:Value>SMPTE-RDD-52:2020-Bv2.1</meta:Value>
+                </meta:Property>
+              </meta:PropertyList>
+            </meta:ExtensionMetadata>
+          </meta:ExtensionMetadataList>
+        </meta:CompositionMetadataAsset>
+      </AssetList>
+    </Reel>
+  </ReelList>
+</CompositionPlaylist>