diff options
| -rw-r--r-- | src/cpl.cc | 10 | ||||
| -rw-r--r-- | test/cpl_metadata_test.cc | 6 | ||||
| -rw-r--r-- | test/ref/cpl_metadata_test3.xml | 58 |
3 files changed, 71 insertions, 3 deletions
@@ -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) { diff --git a/test/cpl_metadata_test.cc b/test/cpl_metadata_test.cc index b141d271..e0abb81c 100644 --- a/test/cpl_metadata_test.cc +++ b/test/cpl_metadata_test.cc @@ -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 index 00000000..38d732a6 --- /dev/null +++ b/test/ref/cpl_metadata_test3.xml @@ -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> |
