diff options
| author | Carl Hetherington <cth@carlh.net> | 2023-04-07 20:59:44 +0200 |
|---|---|---|
| committer | Carl Hetherington <cth@carlh.net> | 2023-04-19 13:00:22 +0200 |
| commit | 31c09e22b74e3a4cf5c16952f8634caea3920625 (patch) | |
| tree | 9029b8c7701bea38566a8cd1a0cf79cc215eaf72 | |
| parent | f73b714742b7233f4cb0d4a497fc610882b0fe00 (diff) | |
Add test for too many subtitle namespaces.
| -rw-r--r-- | src/verify.cc | 20 | ||||
| -rw-r--r-- | src/verify.h | 4 | ||||
| -rw-r--r-- | test/ref/DCP/subtitle_namespace_test/ASSETMAP.xml | 67 | ||||
| -rw-r--r-- | test/ref/DCP/subtitle_namespace_test/VOLINDEX.xml | 4 | ||||
| -rw-r--r-- | test/ref/DCP/subtitle_namespace_test/cpl_fc815694-7977-4a27-a8b3-32b9d4075e4c.xml | 183 | ||||
| -rw-r--r-- | test/ref/DCP/subtitle_namespace_test/j2c_42b34dcd-caa5-4c7b-aa0f-66a590947ba1.mxf | bin | 0 -> 3091552 bytes | |||
| -rw-r--r-- | test/ref/DCP/subtitle_namespace_test/pcm_9611db6b-7566-4d83-a485-7d23948bf219.mxf | bin | 0 -> 14707906 bytes | |||
| -rw-r--r-- | test/ref/DCP/subtitle_namespace_test/pkl_d4a4b6ae-ff66-48ff-b0d0-ee695590b6af.xml | 162 | ||||
| -rw-r--r-- | test/ref/DCP/subtitle_namespace_test/sub_315de731-1173-484c-9a35-bdacf5a9d99d.mxf | bin | 0 -> 158207 bytes | |||
| -rw-r--r-- | test/verify_test.cc | 34 |
10 files changed, 466 insertions, 8 deletions
diff --git a/src/verify.cc b/src/verify.cc index 81ca0bc9..6a1cbd2d 100644 --- a/src/verify.cc +++ b/src/verify.cc @@ -58,6 +58,7 @@ #include "stereo_picture_frame.h" #include "verify.h" #include "verify_j2k.h" +#include <libxml/parserInternals.h> #include <xercesc/dom/DOMAttr.hpp> #include <xercesc/dom/DOMDocument.hpp> #include <xercesc/dom/DOMError.hpp> @@ -786,15 +787,32 @@ verify_subtitle_asset ( notes.push_back ({VerificationNote::Type::WARNING, VerificationNote::Code::MISSED_CHECK_OF_ENCRYPTED}); } + auto namespace_count = [](shared_ptr<const SubtitleAsset> asset, string root_node) { + cxml::Document doc(root_node); + doc.read_string(asset->raw_xml().get()); + auto root = dynamic_cast<xmlpp::Element*>(doc.node())->cobj(); + int count = 0; + for (auto ns = root->nsDef; ns != nullptr; ns = ns->next) { + ++count; + } + return count; + }; + auto interop = dynamic_pointer_cast<const InteropSubtitleAsset>(asset); if (interop) { verify_interop_subtitle_asset(interop, notes); + if (namespace_count(asset, "DCSubtitle") > 1) { + notes.push_back({ VerificationNote::Type::WARNING, VerificationNote::Code::INCORRECT_SUBTITLE_NAMESPACE_COUNT, asset->id() }); + } } auto smpte = dynamic_pointer_cast<const SMPTESubtitleAsset>(asset); if (smpte) { verify_smpte_timed_text_asset (smpte, reel_asset_duration, notes); verify_smpte_subtitle_asset (smpte, notes, state); + if (namespace_count(asset, "SubtitleReel") > 1) { + notes.push_back({ VerificationNote::Type::WARNING, VerificationNote::Code::INCORRECT_SUBTITLE_NAMESPACE_COUNT, asset->id()}); + } } } @@ -2019,6 +2037,8 @@ dcp::note_to_string (VerificationNote note) "Frame %1 has an image component that is too large (component %2 is %3 bytes in size).", note.frame().get(), note.component().get(), note.size().get() ); + case VerificationNote::Code::INCORRECT_SUBTITLE_NAMESPACE_COUNT: + return String::compose("The XML in the subtitle asset %1 has more than one namespace declaration.", note.note().get()); } return ""; diff --git a/src/verify.h b/src/verify.h index 69a10292..48c06577 100644 --- a/src/verify.h +++ b/src/verify.h @@ -444,6 +444,10 @@ public: * size contains the invalid size in bytes. */ INVALID_JPEG2000_TILE_PART_SIZE, + /** A subtitle XML root node has more than one namespace (xmlns) declaration. + * note contains the asset ID + */ + INCORRECT_SUBTITLE_NAMESPACE_COUNT }; VerificationNote (Type type, Code code) diff --git a/test/ref/DCP/subtitle_namespace_test/ASSETMAP.xml b/test/ref/DCP/subtitle_namespace_test/ASSETMAP.xml new file mode 100644 index 00000000..67833e3f --- /dev/null +++ b/test/ref/DCP/subtitle_namespace_test/ASSETMAP.xml @@ -0,0 +1,67 @@ +<?xml version="1.0" encoding="UTF-8"?> +<AssetMap xmlns="http://www.smpte-ra.org/schemas/429-9/2007/AM"> + <Id>urn:uuid:54cd145e-6610-4a60-899d-61bfc4875bc1</Id> + <AnnotationText>Dcp_FTR-1_F_XX-XX_MOS_2K_20230407_SMPTE_OV</AnnotationText> + <Creator>DCP-o-matic 2.16.51devel 08c2f6d808</Creator> + <VolumeCount>1</VolumeCount> + <IssueDate>2023-04-07T21:06:58+02:00</IssueDate> + <Issuer>DCP-o-matic 2.16.51devel 08c2f6d808</Issuer> + <AssetList> + <Asset> + <Id>urn:uuid:d4a4b6ae-ff66-48ff-b0d0-ee695590b6af</Id> + <PackingList>true</PackingList> + <ChunkList> + <Chunk> + <Path>pkl_d4a4b6ae-ff66-48ff-b0d0-ee695590b6af.xml</Path> + <VolumeIndex>1</VolumeIndex> + <Offset>0</Offset> + <Length>9297</Length> + </Chunk> + </ChunkList> + </Asset> + <Asset> + <Id>urn:uuid:fc815694-7977-4a27-a8b3-32b9d4075e4c</Id> + <ChunkList> + <Chunk> + <Path>cpl_fc815694-7977-4a27-a8b3-32b9d4075e4c.xml</Path> + <VolumeIndex>1</VolumeIndex> + <Offset>0</Offset> + <Length>9796</Length> + </Chunk> + </ChunkList> + </Asset> + <Asset> + <Id>urn:uuid:42b34dcd-caa5-4c7b-aa0f-66a590947ba1</Id> + <ChunkList> + <Chunk> + <Path>j2c_42b34dcd-caa5-4c7b-aa0f-66a590947ba1.mxf</Path> + <VolumeIndex>1</VolumeIndex> + <Offset>0</Offset> + <Length>3091552</Length> + </Chunk> + </ChunkList> + </Asset> + <Asset> + <Id>urn:uuid:9611db6b-7566-4d83-a485-7d23948bf219</Id> + <ChunkList> + <Chunk> + <Path>pcm_9611db6b-7566-4d83-a485-7d23948bf219.mxf</Path> + <VolumeIndex>1</VolumeIndex> + <Offset>0</Offset> + <Length>14707906</Length> + </Chunk> + </ChunkList> + </Asset> + <Asset> + <Id>urn:uuid:315de731-1173-484c-9a35-bdacf5a9d99d</Id> + <ChunkList> + <Chunk> + <Path>sub_315de731-1173-484c-9a35-bdacf5a9d99d.mxf</Path> + <VolumeIndex>1</VolumeIndex> + <Offset>0</Offset> + <Length>158207</Length> + </Chunk> + </ChunkList> + </Asset> + </AssetList> +</AssetMap> diff --git a/test/ref/DCP/subtitle_namespace_test/VOLINDEX.xml b/test/ref/DCP/subtitle_namespace_test/VOLINDEX.xml new file mode 100644 index 00000000..f66c004a --- /dev/null +++ b/test/ref/DCP/subtitle_namespace_test/VOLINDEX.xml @@ -0,0 +1,4 @@ +<?xml version="1.0" encoding="UTF-8"?> +<VolumeIndex xmlns="http://www.smpte-ra.org/schemas/429-9/2007/AM"> + <Index>1</Index> +</VolumeIndex> diff --git a/test/ref/DCP/subtitle_namespace_test/cpl_fc815694-7977-4a27-a8b3-32b9d4075e4c.xml b/test/ref/DCP/subtitle_namespace_test/cpl_fc815694-7977-4a27-a8b3-32b9d4075e4c.xml new file mode 100644 index 00000000..237a0923 --- /dev/null +++ b/test/ref/DCP/subtitle_namespace_test/cpl_fc815694-7977-4a27-a8b3-32b9d4075e4c.xml @@ -0,0 +1,183 @@ +<?xml version="1.0" encoding="UTF-8"?> +<CompositionPlaylist xmlns="http://www.smpte-ra.org/schemas/429-7/2006/CPL"> + <Id>urn:uuid:fc815694-7977-4a27-a8b3-32b9d4075e4c</Id> + <AnnotationText>Dcp_FTR-1_F_XX-XX_MOS_2K_20230407_SMPTE_OV</AnnotationText> + <IssueDate>2023-04-07T21:06:58+02:00</IssueDate> + <Issuer>DCP-o-matic 2.16.51devel 08c2f6d808</Issuer> + <Creator>DCP-o-matic 2.16.51devel 08c2f6d808</Creator> + <ContentTitleText>Dcp_FTR-1_F_XX-XX_MOS_2K_20230407_SMPTE_OV</ContentTitleText> + <ContentKind>feature</ContentKind> + <ContentVersion> + <Id>urn:uuid:57a6d4b5-4ad0-4b59-a185-d55c9530d117</Id> + <LabelText>1</LabelText> + </ContentVersion> + <RatingList/> + <ReelList> + <Reel> + <Id>urn:uuid:365165f3-f555-4216-917b-024c1205d6b5</Id> + <AssetList> + <MainMarkers> + <Id>urn:uuid:9d2fe852-5cba-46a7-a721-bbb9aa1d7168</Id> + <EditRate>24 1</EditRate> + <IntrinsicDuration>153</IntrinsicDuration> + <MarkerList> + <Marker> + <Label>FFOC</Label> + <Offset>1</Offset> + </Marker> + <Marker> + <Label>LFOC</Label> + <Offset>152</Offset> + </Marker> + </MarkerList> + </MainMarkers> + <MainPicture> + <Id>urn:uuid:42b34dcd-caa5-4c7b-aa0f-66a590947ba1</Id> + <EditRate>24 1</EditRate> + <IntrinsicDuration>153</IntrinsicDuration> + <EntryPoint>0</EntryPoint> + <Duration>153</Duration> + <Hash>CBPIdIX7A/Pf40Q7ytADU7cMrEM=</Hash> + <FrameRate>24 1</FrameRate> + <ScreenAspectRatio>1998 1080</ScreenAspectRatio> + </MainPicture> + <MainSound> + <Id>urn:uuid:9611db6b-7566-4d83-a485-7d23948bf219</Id> + <EditRate>24 1</EditRate> + <IntrinsicDuration>153</IntrinsicDuration> + <EntryPoint>0</EntryPoint> + <Duration>153</Duration> + <Hash>otUfQdqKbg1Zo+CXNGlZIhPz2hY=</Hash> + </MainSound> + <MainSubtitle> + <Id>urn:uuid:315de731-1173-484c-9a35-bdacf5a9d99d</Id> + <EditRate>24 1</EditRate> + <IntrinsicDuration>153</IntrinsicDuration> + <EntryPoint>0</EntryPoint> + <Duration>153</Duration> + <Hash>1BF80uJUnvuBR7oNJHy+BQjWuMM=</Hash> + </MainSubtitle> + </AssetList> + </Reel> + </ReelList> + <Signer xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"> + <dsig:X509Data> + <dsig:X509IssuerSerial> + <dsig:X509IssuerName>dnQualifier=yowzQ/TiOcCs/IQSwd317sx9Eto=,CN=.dcpomatic.smpte-430-2.INTERMEDIATE,OU=dcpomatic.com,O=dcpomatic.com</dsig:X509IssuerName> + <dsig:X509SerialNumber>7</dsig:X509SerialNumber> + </dsig:X509IssuerSerial> + <dsig:X509SubjectName>dnQualifier=MAIGJPvV7N/ldMMfptkD\+5GyvtQ=,CN=CS.dcpomatic.smpte-430-2.LEAF,OU=dcpomatic.com,O=dcpomatic.com</dsig:X509SubjectName> + </dsig:X509Data> + </Signer> + <dsig:Signature xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"> + <dsig:SignedInfo> + <dsig:CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/> + <dsig:SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#rsa-sha256"/> + <dsig:Reference URI=""> + <dsig:Transforms> + <dsig:Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/> + </dsig:Transforms> + <dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/> + <dsig:DigestValue>zq5twMly0ofsP2ZUyTnKNxSNImU=</dsig:DigestValue> + </dsig:Reference> + </dsig:SignedInfo> + <dsig:SignatureValue>hSF7vEA7HGw9NLzRzoOfKS4Eoudf2QrudzpEJYsFZcfm7efAz+jdPWi2QEVXXjIR +wmKlJRm+fJp7RaVrFkf1LT49i/Ik1nSkB36DkSJb8/F56K3EPACxD9A1ouS1385i +q8kmBaD1XJYWDaIZl3Rwt37oti/cR+avLYQHFFhp8zBCipaSxjmBVy5nMwCzkEDy +oR4gDXV7V+t11vBzWMkBoH0xqQxYuBb692obxQPEznphb0dB0zBjKi1szPjchklV +wLbTT2cHxshmXlVj3CrthJj3V3BWdU39THtFvAbMgqDPz1PNZWD2bDuB1FJk4zYu +Q8NVVMdNAiKX5eQDO8eUlQ==</dsig:SignatureValue> + <dsig:KeyInfo> + <dsig:X509Data> + <dsig:X509IssuerSerial> + <dsig:X509IssuerName>dnQualifier=yowzQ/TiOcCs/IQSwd317sx9Eto=,CN=.dcpomatic.smpte-430-2.INTERMEDIATE,OU=dcpomatic.com,O=dcpomatic.com</dsig:X509IssuerName> + <dsig:X509SerialNumber>7</dsig:X509SerialNumber> + </dsig:X509IssuerSerial> + <dsig:X509Certificate>MIIEaTCCA1GgAwIBAgIBBzANBgkqhkiG9w0BAQsFADCBhTEWMBQGA1UEChMNZGNw +b21hdGljLmNvbTEWMBQGA1UECxMNZGNwb21hdGljLmNvbTEsMCoGA1UEAxMjLmRj +cG9tYXRpYy5zbXB0ZS00MzAtMi5JTlRFUk1FRElBVEUxJTAjBgNVBC4THHlvd3pR +L1RpT2NDcy9JUVN3ZDMxN3N4OUV0bz0wHhcNMjMwMjI1MjEzMDI0WhcNMzMwMjI3 +MjEzMDI0WjB/MRYwFAYDVQQKEw1kY3BvbWF0aWMuY29tMRYwFAYDVQQLEw1kY3Bv +bWF0aWMuY29tMSYwJAYDVQQDEx1DUy5kY3BvbWF0aWMuc21wdGUtNDMwLTIuTEVB +RjElMCMGA1UELhMcTUFJR0pQdlY3Ti9sZE1NZnB0a0QrNUd5dnRRPTCCASIwDQYJ +KoZIhvcNAQEBBQADggEPADCCAQoCggEBAMopNgsr6xdbZCPnbqgkBlMWLNi7GZcr +oRhV3cXAiBUPsEuw32hyi6Y9LzMGDB0pF9/whluFKIDLmRYxfo89MRDgBjAgYJKk +gW5V8HLt0MBpAuMI6MWtXDI1N9hVRI8iejaa6KMo8JRBvvKDeqL0Zhtc8Mpu4ml1 +qiG+ADrE0kRnKm8bCKy7l5gbXMbnR0K6LCxPz198fNew1XPRLLWZFB6L4b//t75T +sDeMntcc+X/SoSb/+QAy34pYVuFO+L8bdXMPUDcJvTzFDZFsIcqwJnW3IJVyS9Zq +OeALYvCnjk3XRkYua7/lpMYKDHUMp9uS9LoU+wgn9Yl4USsL1kg7v4kCAwEAAaOB +6DCB5TAMBgNVHRMBAf8EAjAAMAsGA1UdDwQEAwIFoDAdBgNVHQ4EFgQUMAIGJPvV +7N/ldMMfptkD+5GyvtQwgagGA1UdIwSBoDCBnYAUyowzQ/TiOcCs/IQSwd317sx9 +EtqhgYGkfzB9MRYwFAYDVQQKEw1kY3BvbWF0aWMuY29tMRYwFAYDVQQLEw1kY3Bv +bWF0aWMuY29tMSQwIgYDVQQDExsuZGNwb21hdGljLnNtcHRlLTQzMC0yLlJPT1Qx +JTAjBgNVBC4THGUyekNlRGVlOXU1WEw4YmpwQ1QvaHoxWWNZOD2CAQYwDQYJKoZI +hvcNAQELBQADggEBAHhJR3n9T2+IayMOrR1vCAwbJOUbUffCohKVaiT53dnwzJtb +0b824M8iU7GemPorz9USkBqlGVMR825CL1Hp0uFoi7mIr7JY6pOdNW/d061fpH3w +Z9iEEHoJrMKZ3l1o0z4mjsPD7pONGcT9ljlNxSujuTrWPl9VBAos4yJxIu8aW/u3 +f9pUk94Sc3aTlmuhOma4qGYt8SFEH9mhATDgyaCiua2WZ67q2kfAuYqweEEwZ5DO +jxh6bFfnpYi3t5FfxGD0ZGT+1DaOBIgQSxAlxxTxpGjmC7rXCKnexHqnLdv4M1Xz +jGM4Np8Ag/tGQI7pq0YzFpgfpeEF6q37RE8mYWo=</dsig:X509Certificate> + </dsig:X509Data> + <dsig:X509Data> + <dsig:X509IssuerSerial> + <dsig:X509IssuerName>dnQualifier=e2zCeDee9u5XL8bjpCT/hz1YcY8=,CN=.dcpomatic.smpte-430-2.ROOT,OU=dcpomatic.com,O=dcpomatic.com</dsig:X509IssuerName> + <dsig:X509SerialNumber>6</dsig:X509SerialNumber> + </dsig:X509IssuerSerial> + <dsig:X509Certificate>MIIEbTCCA1WgAwIBAgIBBjANBgkqhkiG9w0BAQsFADB9MRYwFAYDVQQKEw1kY3Bv +bWF0aWMuY29tMRYwFAYDVQQLEw1kY3BvbWF0aWMuY29tMSQwIgYDVQQDExsuZGNw +b21hdGljLnNtcHRlLTQzMC0yLlJPT1QxJTAjBgNVBC4THGUyekNlRGVlOXU1WEw4 +YmpwQ1QvaHoxWWNZOD0wHhcNMjMwMjI1MjEzMDI0WhcNMzMwMjI4MjEzMDI0WjCB +hTEWMBQGA1UEChMNZGNwb21hdGljLmNvbTEWMBQGA1UECxMNZGNwb21hdGljLmNv +bTEsMCoGA1UEAxMjLmRjcG9tYXRpYy5zbXB0ZS00MzAtMi5JTlRFUk1FRElBVEUx +JTAjBgNVBC4THHlvd3pRL1RpT2NDcy9JUVN3ZDMxN3N4OUV0bz0wggEiMA0GCSqG +SIb3DQEBAQUAA4IBDwAwggEKAoIBAQDdAudsxozHhoJdWDHzRykkk9vqHQl8mUGl +cuZyiTU3Bftv/kd5ubF0AwwRqJ3s2KDm7myT3afC4b573LHhxPXOmpBLQn+ZwS73 +9Z+N4M3DxBgY4iHjXSg6bb5H+CORx00q4JarbZaLR+wC4V30Oh6HLUXhdPAf0Tg2 +FJGGOQg65Ma4MzN+krOfp0CHi9Y8029kMb/dxdMjZsi+b8ELH+p9etONwOtd/6lP +Xdilv4K9yPf6Vv/bvgoeCKUuSZHq/Egez69kuIDPHMFpzNxwDm9UV2N2C0IhY2lF +jR9D2RotHRk/kyH39HOg6DcrKXb6mQlqGijpNfPsBRJr9WyE5d23AgMBAAGjge4w +geswEgYDVR0TAQH/BAgwBgEB/wIBAjALBgNVHQ8EBAMCAQYwHQYDVR0OBBYEFMqM +M0P04jnArPyEEsHd9e7MfRLaMIGoBgNVHSMEgaAwgZ2AFHtswng3nvbuVy/G46Qk +/4c9WHGPoYGBpH8wfTEWMBQGA1UEChMNZGNwb21hdGljLmNvbTEWMBQGA1UECxMN +ZGNwb21hdGljLmNvbTEkMCIGA1UEAxMbLmRjcG9tYXRpYy5zbXB0ZS00MzAtMi5S +T09UMSUwIwYDVQQuExxlMnpDZURlZTl1NVhMOGJqcENUL2h6MVljWTg9ggEFMA0G +CSqGSIb3DQEBCwUAA4IBAQA7CQ6YzInjMzj8ZfFrKcuqwp4Leux8VQFqKSUMVrnG +I1V0ztEY/MDcsRGM7GJu5I5/sRXRK5PJB57uPmDEr9CqAfH1D5aNC08onkrntt+3 +TyJyLGK/c7fYSRR4iZv7Sd6hm3J/dgDmaDgRgQX2/Gxn2oErPubcBzMhdP6zM6F5 +kEb6ILe5ix7lgOTvZ+URm7EIO4FR9NB23S3H47CUk1GDJD1PpI6o2TZC9pGToOEe +TowLcBFYxWDybnzAIJraN7COtgcZxcw/ykTftPwwbBoyAIhLrIKO278mwKkv2ddN +9esn25r6U/p4GAH8Bu4Nohrv0qIdNsiF0Rflk94cjQXt</dsig:X509Certificate> + </dsig:X509Data> + <dsig:X509Data> + <dsig:X509IssuerSerial> + <dsig:X509IssuerName>dnQualifier=e2zCeDee9u5XL8bjpCT/hz1YcY8=,CN=.dcpomatic.smpte-430-2.ROOT,OU=dcpomatic.com,O=dcpomatic.com</dsig:X509IssuerName> + <dsig:X509SerialNumber>5</dsig:X509SerialNumber> + </dsig:X509IssuerSerial> + <dsig:X509Certificate>MIIEZDCCA0ygAwIBAgIBBTANBgkqhkiG9w0BAQsFADB9MRYwFAYDVQQKEw1kY3Bv +bWF0aWMuY29tMRYwFAYDVQQLEw1kY3BvbWF0aWMuY29tMSQwIgYDVQQDExsuZGNw +b21hdGljLnNtcHRlLTQzMC0yLlJPT1QxJTAjBgNVBC4THGUyekNlRGVlOXU1WEw4 +YmpwQ1QvaHoxWWNZOD0wHhcNMjMwMjI1MjEzMDI0WhcNMzMwMzAxMjEzMDI0WjB9 +MRYwFAYDVQQKEw1kY3BvbWF0aWMuY29tMRYwFAYDVQQLEw1kY3BvbWF0aWMuY29t +MSQwIgYDVQQDExsuZGNwb21hdGljLnNtcHRlLTQzMC0yLlJPT1QxJTAjBgNVBC4T +HGUyekNlRGVlOXU1WEw4YmpwQ1QvaHoxWWNZOD0wggEiMA0GCSqGSIb3DQEBAQUA +A4IBDwAwggEKAoIBAQCtvPAcGHXdg7EBd/pHgVdFtLJ2KKJynpNvEfqXN2iFRJZ+ +zjonV9EN+BizvHYx8Z3FxGcRR+Ms0OXv8UyOhgOQYraxSqGava3mGjtndH3cuR4W +nk/2HRE0yxxLSL/MUsM8Cf+OvKiZWyf4dBxd7zPEUI0kRgzTlUqjzL3KXWlgvofc +p1FD0rjPDiQjVy75UI77pyyugjplYA5ut7meK5DFmmOApnKX9WPmEQXHghp2uLji +e/opzRqJ6FT9oZmMRJ7qNDhgb2VAdttklgnwQnXDEI50hmNID2YRrP9zePFoycT1 +SoPKfVQWf/Kp88yKtcWli+QW7L0tRWgd0KpC/4rnAgMBAAGjge4wgeswEgYDVR0T +AQH/BAgwBgEB/wIBAzALBgNVHQ8EBAMCAQYwHQYDVR0OBBYEFHtswng3nvbuVy/G +46Qk/4c9WHGPMIGoBgNVHSMEgaAwgZ2AFHtswng3nvbuVy/G46Qk/4c9WHGPoYGB +pH8wfTEWMBQGA1UEChMNZGNwb21hdGljLmNvbTEWMBQGA1UECxMNZGNwb21hdGlj +LmNvbTEkMCIGA1UEAxMbLmRjcG9tYXRpYy5zbXB0ZS00MzAtMi5ST09UMSUwIwYD +VQQuExxlMnpDZURlZTl1NVhMOGJqcENUL2h6MVljWTg9ggEFMA0GCSqGSIb3DQEB +CwUAA4IBAQBtvKfKm17dWhy7XAN/w33uxFraPp9CjbqFL3zLT3lf5ji3yV6JrOn1 +PF6wjDIcC0dXyOwZQMFAVZ0xnfJP6CTekLA3No94hjvHVW7Rdxn92OzC6NYYUXhf +nBzUxtsLVOjQ2TC6vkl1sXRAmyKSc7+l8seDjlau6FZSWugOpMIuJTT0+tqzJZ8a +MndxM0BKZnsHy0D56+SGpnMOxt+9RMfrMx+gyRs9Jt+HVLhIwRySt6filvkn42Bc +469kSAE89he722PhAbOXYpKG3HufuceWCUGVxv281NNfA5YOz0m3RGEKD1CEXmPS +sJW6Oke2RVDxB0qBVgpNFMxtrCy+oHzQ</dsig:X509Certificate> + </dsig:X509Data> + </dsig:KeyInfo> + </dsig:Signature> +</CompositionPlaylist> diff --git a/test/ref/DCP/subtitle_namespace_test/j2c_42b34dcd-caa5-4c7b-aa0f-66a590947ba1.mxf b/test/ref/DCP/subtitle_namespace_test/j2c_42b34dcd-caa5-4c7b-aa0f-66a590947ba1.mxf Binary files differnew file mode 100644 index 00000000..415378ac --- /dev/null +++ b/test/ref/DCP/subtitle_namespace_test/j2c_42b34dcd-caa5-4c7b-aa0f-66a590947ba1.mxf diff --git a/test/ref/DCP/subtitle_namespace_test/pcm_9611db6b-7566-4d83-a485-7d23948bf219.mxf b/test/ref/DCP/subtitle_namespace_test/pcm_9611db6b-7566-4d83-a485-7d23948bf219.mxf Binary files differnew file mode 100644 index 00000000..a1b0b7d2 --- /dev/null +++ b/test/ref/DCP/subtitle_namespace_test/pcm_9611db6b-7566-4d83-a485-7d23948bf219.mxf diff --git a/test/ref/DCP/subtitle_namespace_test/pkl_d4a4b6ae-ff66-48ff-b0d0-ee695590b6af.xml b/test/ref/DCP/subtitle_namespace_test/pkl_d4a4b6ae-ff66-48ff-b0d0-ee695590b6af.xml new file mode 100644 index 00000000..f103244b --- /dev/null +++ b/test/ref/DCP/subtitle_namespace_test/pkl_d4a4b6ae-ff66-48ff-b0d0-ee695590b6af.xml @@ -0,0 +1,162 @@ +<?xml version="1.0" encoding="UTF-8"?> +<PackingList xmlns="http://www.smpte-ra.org/schemas/429-8/2007/PKL"> + <Id>urn:uuid:d4a4b6ae-ff66-48ff-b0d0-ee695590b6af</Id> + <AnnotationText>Dcp_FTR-1_F_XX-XX_MOS_2K_20230407_SMPTE_OV</AnnotationText> + <IssueDate>2023-04-07T21:06:58+02:00</IssueDate> + <Issuer>DCP-o-matic 2.16.51devel 08c2f6d808</Issuer> + <Creator>DCP-o-matic 2.16.51devel 08c2f6d808</Creator> + <AssetList> + <Asset> + <Id>urn:uuid:fc815694-7977-4a27-a8b3-32b9d4075e4c</Id> + <AnnotationText>fc815694-7977-4a27-a8b3-32b9d4075e4c</AnnotationText> + <Hash>48XAdT7UamW6BMwFBSk3j/LwOV8=</Hash> + <Size>9796</Size> + <Type>text/xml</Type> + <OriginalFileName>cpl_fc815694-7977-4a27-a8b3-32b9d4075e4c.xml</OriginalFileName> + </Asset> + <Asset> + <Id>urn:uuid:42b34dcd-caa5-4c7b-aa0f-66a590947ba1</Id> + <AnnotationText>42b34dcd-caa5-4c7b-aa0f-66a590947ba1</AnnotationText> + <Hash>CBPIdIX7A/Pf40Q7ytADU7cMrEM=</Hash> + <Size>3091552</Size> + <Type>application/mxf</Type> + <OriginalFileName>j2c_42b34dcd-caa5-4c7b-aa0f-66a590947ba1.mxf</OriginalFileName> + </Asset> + <Asset> + <Id>urn:uuid:9611db6b-7566-4d83-a485-7d23948bf219</Id> + <AnnotationText>9611db6b-7566-4d83-a485-7d23948bf219</AnnotationText> + <Hash>otUfQdqKbg1Zo+CXNGlZIhPz2hY=</Hash> + <Size>14707906</Size> + <Type>application/mxf</Type> + <OriginalFileName>pcm_9611db6b-7566-4d83-a485-7d23948bf219.mxf</OriginalFileName> + </Asset> + <Asset> + <Id>urn:uuid:315de731-1173-484c-9a35-bdacf5a9d99d</Id> + <AnnotationText>315de731-1173-484c-9a35-bdacf5a9d99d</AnnotationText> + <Hash>1BF80uJUnvuBR7oNJHy+BQjWuMM=</Hash> + <Size>158207</Size> + <Type>application/mxf</Type> + <OriginalFileName>sub_315de731-1173-484c-9a35-bdacf5a9d99d.mxf</OriginalFileName> + </Asset> + </AssetList> + <Signer xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"> + <dsig:X509Data> + <dsig:X509IssuerSerial> + <dsig:X509IssuerName>dnQualifier=yowzQ/TiOcCs/IQSwd317sx9Eto=,CN=.dcpomatic.smpte-430-2.INTERMEDIATE,OU=dcpomatic.com,O=dcpomatic.com</dsig:X509IssuerName> + <dsig:X509SerialNumber>7</dsig:X509SerialNumber> + </dsig:X509IssuerSerial> + <dsig:X509SubjectName>dnQualifier=MAIGJPvV7N/ldMMfptkD\+5GyvtQ=,CN=CS.dcpomatic.smpte-430-2.LEAF,OU=dcpomatic.com,O=dcpomatic.com</dsig:X509SubjectName> + </dsig:X509Data> + </Signer> + <dsig:Signature xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"> + <dsig:SignedInfo> + <dsig:CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/> + <dsig:SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#rsa-sha256"/> + <dsig:Reference URI=""> + <dsig:Transforms> + <dsig:Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/> + </dsig:Transforms> + <dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/> + <dsig:DigestValue>vSt3jZvqCrrw2N4j6/t/Tg59xpo=</dsig:DigestValue> + </dsig:Reference> + </dsig:SignedInfo> + <dsig:SignatureValue>NnBOgSdPKrpkpvSamX344lpwkkiBZKZ3sJcTmLqy0WxNsNeXmw4PNETwzG6/+Hg6 +WghZjpKaqTedfiPjuMRiW0H11m91IkhuZmH4z7JUvez4Nr8fTbSaAH857oDEqX7V +WRTkDi5gSSPEaAk1S7lTAAlAGEwS437ptiIY+kjx0ZE/1wOYoh8MrS+YZ9Ge6Rwx +bRrAaqtBoQiSUepIC5KJszBrwvAiKqsJr4FGvRb1815TGvCpGM5DAUDYsZm8CJcU +jYJdVBtNv+aX8R90F2THaZDsCsA4B67WJe/hhhQd7h1MX1rS8sagYVlEjEVLC4oW +W6gkcXI9sk9SNsRm+zC1Ww==</dsig:SignatureValue> + <dsig:KeyInfo> + <dsig:X509Data> + <dsig:X509IssuerSerial> + <dsig:X509IssuerName>dnQualifier=yowzQ/TiOcCs/IQSwd317sx9Eto=,CN=.dcpomatic.smpte-430-2.INTERMEDIATE,OU=dcpomatic.com,O=dcpomatic.com</dsig:X509IssuerName> + <dsig:X509SerialNumber>7</dsig:X509SerialNumber> + </dsig:X509IssuerSerial> + <dsig:X509Certificate>MIIEaTCCA1GgAwIBAgIBBzANBgkqhkiG9w0BAQsFADCBhTEWMBQGA1UEChMNZGNw +b21hdGljLmNvbTEWMBQGA1UECxMNZGNwb21hdGljLmNvbTEsMCoGA1UEAxMjLmRj +cG9tYXRpYy5zbXB0ZS00MzAtMi5JTlRFUk1FRElBVEUxJTAjBgNVBC4THHlvd3pR +L1RpT2NDcy9JUVN3ZDMxN3N4OUV0bz0wHhcNMjMwMjI1MjEzMDI0WhcNMzMwMjI3 +MjEzMDI0WjB/MRYwFAYDVQQKEw1kY3BvbWF0aWMuY29tMRYwFAYDVQQLEw1kY3Bv +bWF0aWMuY29tMSYwJAYDVQQDEx1DUy5kY3BvbWF0aWMuc21wdGUtNDMwLTIuTEVB +RjElMCMGA1UELhMcTUFJR0pQdlY3Ti9sZE1NZnB0a0QrNUd5dnRRPTCCASIwDQYJ +KoZIhvcNAQEBBQADggEPADCCAQoCggEBAMopNgsr6xdbZCPnbqgkBlMWLNi7GZcr +oRhV3cXAiBUPsEuw32hyi6Y9LzMGDB0pF9/whluFKIDLmRYxfo89MRDgBjAgYJKk +gW5V8HLt0MBpAuMI6MWtXDI1N9hVRI8iejaa6KMo8JRBvvKDeqL0Zhtc8Mpu4ml1 +qiG+ADrE0kRnKm8bCKy7l5gbXMbnR0K6LCxPz198fNew1XPRLLWZFB6L4b//t75T +sDeMntcc+X/SoSb/+QAy34pYVuFO+L8bdXMPUDcJvTzFDZFsIcqwJnW3IJVyS9Zq +OeALYvCnjk3XRkYua7/lpMYKDHUMp9uS9LoU+wgn9Yl4USsL1kg7v4kCAwEAAaOB +6DCB5TAMBgNVHRMBAf8EAjAAMAsGA1UdDwQEAwIFoDAdBgNVHQ4EFgQUMAIGJPvV +7N/ldMMfptkD+5GyvtQwgagGA1UdIwSBoDCBnYAUyowzQ/TiOcCs/IQSwd317sx9 +EtqhgYGkfzB9MRYwFAYDVQQKEw1kY3BvbWF0aWMuY29tMRYwFAYDVQQLEw1kY3Bv +bWF0aWMuY29tMSQwIgYDVQQDExsuZGNwb21hdGljLnNtcHRlLTQzMC0yLlJPT1Qx +JTAjBgNVBC4THGUyekNlRGVlOXU1WEw4YmpwQ1QvaHoxWWNZOD2CAQYwDQYJKoZI +hvcNAQELBQADggEBAHhJR3n9T2+IayMOrR1vCAwbJOUbUffCohKVaiT53dnwzJtb +0b824M8iU7GemPorz9USkBqlGVMR825CL1Hp0uFoi7mIr7JY6pOdNW/d061fpH3w +Z9iEEHoJrMKZ3l1o0z4mjsPD7pONGcT9ljlNxSujuTrWPl9VBAos4yJxIu8aW/u3 +f9pUk94Sc3aTlmuhOma4qGYt8SFEH9mhATDgyaCiua2WZ67q2kfAuYqweEEwZ5DO +jxh6bFfnpYi3t5FfxGD0ZGT+1DaOBIgQSxAlxxTxpGjmC7rXCKnexHqnLdv4M1Xz +jGM4Np8Ag/tGQI7pq0YzFpgfpeEF6q37RE8mYWo=</dsig:X509Certificate> + </dsig:X509Data> + <dsig:X509Data> + <dsig:X509IssuerSerial> + <dsig:X509IssuerName>dnQualifier=e2zCeDee9u5XL8bjpCT/hz1YcY8=,CN=.dcpomatic.smpte-430-2.ROOT,OU=dcpomatic.com,O=dcpomatic.com</dsig:X509IssuerName> + <dsig:X509SerialNumber>6</dsig:X509SerialNumber> + </dsig:X509IssuerSerial> + <dsig:X509Certificate>MIIEbTCCA1WgAwIBAgIBBjANBgkqhkiG9w0BAQsFADB9MRYwFAYDVQQKEw1kY3Bv +bWF0aWMuY29tMRYwFAYDVQQLEw1kY3BvbWF0aWMuY29tMSQwIgYDVQQDExsuZGNw +b21hdGljLnNtcHRlLTQzMC0yLlJPT1QxJTAjBgNVBC4THGUyekNlRGVlOXU1WEw4 +YmpwQ1QvaHoxWWNZOD0wHhcNMjMwMjI1MjEzMDI0WhcNMzMwMjI4MjEzMDI0WjCB +hTEWMBQGA1UEChMNZGNwb21hdGljLmNvbTEWMBQGA1UECxMNZGNwb21hdGljLmNv +bTEsMCoGA1UEAxMjLmRjcG9tYXRpYy5zbXB0ZS00MzAtMi5JTlRFUk1FRElBVEUx +JTAjBgNVBC4THHlvd3pRL1RpT2NDcy9JUVN3ZDMxN3N4OUV0bz0wggEiMA0GCSqG +SIb3DQEBAQUAA4IBDwAwggEKAoIBAQDdAudsxozHhoJdWDHzRykkk9vqHQl8mUGl +cuZyiTU3Bftv/kd5ubF0AwwRqJ3s2KDm7myT3afC4b573LHhxPXOmpBLQn+ZwS73 +9Z+N4M3DxBgY4iHjXSg6bb5H+CORx00q4JarbZaLR+wC4V30Oh6HLUXhdPAf0Tg2 +FJGGOQg65Ma4MzN+krOfp0CHi9Y8029kMb/dxdMjZsi+b8ELH+p9etONwOtd/6lP +Xdilv4K9yPf6Vv/bvgoeCKUuSZHq/Egez69kuIDPHMFpzNxwDm9UV2N2C0IhY2lF +jR9D2RotHRk/kyH39HOg6DcrKXb6mQlqGijpNfPsBRJr9WyE5d23AgMBAAGjge4w +geswEgYDVR0TAQH/BAgwBgEB/wIBAjALBgNVHQ8EBAMCAQYwHQYDVR0OBBYEFMqM +M0P04jnArPyEEsHd9e7MfRLaMIGoBgNVHSMEgaAwgZ2AFHtswng3nvbuVy/G46Qk +/4c9WHGPoYGBpH8wfTEWMBQGA1UEChMNZGNwb21hdGljLmNvbTEWMBQGA1UECxMN +ZGNwb21hdGljLmNvbTEkMCIGA1UEAxMbLmRjcG9tYXRpYy5zbXB0ZS00MzAtMi5S +T09UMSUwIwYDVQQuExxlMnpDZURlZTl1NVhMOGJqcENUL2h6MVljWTg9ggEFMA0G +CSqGSIb3DQEBCwUAA4IBAQA7CQ6YzInjMzj8ZfFrKcuqwp4Leux8VQFqKSUMVrnG +I1V0ztEY/MDcsRGM7GJu5I5/sRXRK5PJB57uPmDEr9CqAfH1D5aNC08onkrntt+3 +TyJyLGK/c7fYSRR4iZv7Sd6hm3J/dgDmaDgRgQX2/Gxn2oErPubcBzMhdP6zM6F5 +kEb6ILe5ix7lgOTvZ+URm7EIO4FR9NB23S3H47CUk1GDJD1PpI6o2TZC9pGToOEe +TowLcBFYxWDybnzAIJraN7COtgcZxcw/ykTftPwwbBoyAIhLrIKO278mwKkv2ddN +9esn25r6U/p4GAH8Bu4Nohrv0qIdNsiF0Rflk94cjQXt</dsig:X509Certificate> + </dsig:X509Data> + <dsig:X509Data> + <dsig:X509IssuerSerial> + <dsig:X509IssuerName>dnQualifier=e2zCeDee9u5XL8bjpCT/hz1YcY8=,CN=.dcpomatic.smpte-430-2.ROOT,OU=dcpomatic.com,O=dcpomatic.com</dsig:X509IssuerName> + <dsig:X509SerialNumber>5</dsig:X509SerialNumber> + </dsig:X509IssuerSerial> + <dsig:X509Certificate>MIIEZDCCA0ygAwIBAgIBBTANBgkqhkiG9w0BAQsFADB9MRYwFAYDVQQKEw1kY3Bv +bWF0aWMuY29tMRYwFAYDVQQLEw1kY3BvbWF0aWMuY29tMSQwIgYDVQQDExsuZGNw +b21hdGljLnNtcHRlLTQzMC0yLlJPT1QxJTAjBgNVBC4THGUyekNlRGVlOXU1WEw4 +YmpwQ1QvaHoxWWNZOD0wHhcNMjMwMjI1MjEzMDI0WhcNMzMwMzAxMjEzMDI0WjB9 +MRYwFAYDVQQKEw1kY3BvbWF0aWMuY29tMRYwFAYDVQQLEw1kY3BvbWF0aWMuY29t +MSQwIgYDVQQDExsuZGNwb21hdGljLnNtcHRlLTQzMC0yLlJPT1QxJTAjBgNVBC4T +HGUyekNlRGVlOXU1WEw4YmpwQ1QvaHoxWWNZOD0wggEiMA0GCSqGSIb3DQEBAQUA +A4IBDwAwggEKAoIBAQCtvPAcGHXdg7EBd/pHgVdFtLJ2KKJynpNvEfqXN2iFRJZ+ +zjonV9EN+BizvHYx8Z3FxGcRR+Ms0OXv8UyOhgOQYraxSqGava3mGjtndH3cuR4W +nk/2HRE0yxxLSL/MUsM8Cf+OvKiZWyf4dBxd7zPEUI0kRgzTlUqjzL3KXWlgvofc +p1FD0rjPDiQjVy75UI77pyyugjplYA5ut7meK5DFmmOApnKX9WPmEQXHghp2uLji +e/opzRqJ6FT9oZmMRJ7qNDhgb2VAdttklgnwQnXDEI50hmNID2YRrP9zePFoycT1 +SoPKfVQWf/Kp88yKtcWli+QW7L0tRWgd0KpC/4rnAgMBAAGjge4wgeswEgYDVR0T +AQH/BAgwBgEB/wIBAzALBgNVHQ8EBAMCAQYwHQYDVR0OBBYEFHtswng3nvbuVy/G +46Qk/4c9WHGPMIGoBgNVHSMEgaAwgZ2AFHtswng3nvbuVy/G46Qk/4c9WHGPoYGB +pH8wfTEWMBQGA1UEChMNZGNwb21hdGljLmNvbTEWMBQGA1UECxMNZGNwb21hdGlj +LmNvbTEkMCIGA1UEAxMbLmRjcG9tYXRpYy5zbXB0ZS00MzAtMi5ST09UMSUwIwYD +VQQuExxlMnpDZURlZTl1NVhMOGJqcENUL2h6MVljWTg9ggEFMA0GCSqGSIb3DQEB +CwUAA4IBAQBtvKfKm17dWhy7XAN/w33uxFraPp9CjbqFL3zLT3lf5ji3yV6JrOn1 +PF6wjDIcC0dXyOwZQMFAVZ0xnfJP6CTekLA3No94hjvHVW7Rdxn92OzC6NYYUXhf +nBzUxtsLVOjQ2TC6vkl1sXRAmyKSc7+l8seDjlau6FZSWugOpMIuJTT0+tqzJZ8a +MndxM0BKZnsHy0D56+SGpnMOxt+9RMfrMx+gyRs9Jt+HVLhIwRySt6filvkn42Bc +469kSAE89he722PhAbOXYpKG3HufuceWCUGVxv281NNfA5YOz0m3RGEKD1CEXmPS +sJW6Oke2RVDxB0qBVgpNFMxtrCy+oHzQ</dsig:X509Certificate> + </dsig:X509Data> + </dsig:KeyInfo> + </dsig:Signature> +</PackingList> diff --git a/test/ref/DCP/subtitle_namespace_test/sub_315de731-1173-484c-9a35-bdacf5a9d99d.mxf b/test/ref/DCP/subtitle_namespace_test/sub_315de731-1173-484c-9a35-bdacf5a9d99d.mxf Binary files differnew file mode 100644 index 00000000..df1fbd03 --- /dev/null +++ b/test/ref/DCP/subtitle_namespace_test/sub_315de731-1173-484c-9a35-bdacf5a9d99d.mxf diff --git a/test/verify_test.cc b/test/verify_test.cc index 1484dfb1..3ac3c83c 100644 --- a/test/verify_test.cc +++ b/test/verify_test.cc @@ -864,7 +864,8 @@ BOOST_AUTO_TEST_CASE (verify_valid_smpte_subtitles) {dir}, { { dcp::VerificationNote::Type::BV21_ERROR, dcp::VerificationNote::Code::MISSING_CPL_METADATA, cpl->id(), cpl->file().get() }, - { dcp::VerificationNote::Type::WARNING, dcp::VerificationNote::Code::INVALID_SUBTITLE_ISSUE_DATE, string{"2021-04-14T13:19:14.000+02:00"} } + { dcp::VerificationNote::Type::WARNING, dcp::VerificationNote::Code::INVALID_SUBTITLE_ISSUE_DATE, string{"2021-04-14T13:19:14.000+02:00"} }, + { dcp::VerificationNote::Type::WARNING, dcp::VerificationNote::Code::INCORRECT_SUBTITLE_NAMESPACE_COUNT, asset->id() } }); } @@ -894,7 +895,8 @@ BOOST_AUTO_TEST_CASE (verify_invalid_smpte_subtitles) }, { dcp::VerificationNote::Type::BV21_ERROR, dcp::VerificationNote::Code::MISSING_SUBTITLE_START_TIME, canonical(dir / "subs.mxf") }, { dcp::VerificationNote::Type::BV21_ERROR, dcp::VerificationNote::Code::MISSING_CPL_METADATA, cpl->id(), cpl->file().get() }, - { dcp::VerificationNote::Type::WARNING, dcp::VerificationNote::Code::INVALID_SUBTITLE_ISSUE_DATE, string{"2020-05-09T00:29:21.000+02:00"} } + { dcp::VerificationNote::Type::WARNING, dcp::VerificationNote::Code::INVALID_SUBTITLE_ISSUE_DATE, string{"2020-05-09T00:29:21.000+02:00"} }, + { dcp::VerificationNote::Type::WARNING, dcp::VerificationNote::Code::INCORRECT_SUBTITLE_NAMESPACE_COUNT, asset->id() } }); } @@ -915,7 +917,8 @@ BOOST_AUTO_TEST_CASE (verify_empty_text_node_in_subtitles) { dcp::VerificationNote::Type::WARNING, dcp::VerificationNote::Code::INVALID_SUBTITLE_FIRST_TEXT_TIME }, { dcp::VerificationNote::Type::BV21_ERROR, dcp::VerificationNote::Code::MISSING_SUBTITLE_LANGUAGE, canonical(dir / "subs.mxf") }, { dcp::VerificationNote::Type::BV21_ERROR, dcp::VerificationNote::Code::MISSING_CPL_METADATA, cpl->id(), cpl->file().get() }, - { dcp::VerificationNote::Type::WARNING, dcp::VerificationNote::Code::INVALID_SUBTITLE_ISSUE_DATE, string{"2021-08-09T18:34:46.000+02:00"} } + { dcp::VerificationNote::Type::WARNING, dcp::VerificationNote::Code::INVALID_SUBTITLE_ISSUE_DATE, string{"2021-08-09T18:34:46.000+02:00"} }, + { dcp::VerificationNote::Type::WARNING, dcp::VerificationNote::Code::INCORRECT_SUBTITLE_NAMESPACE_COUNT, asset->id() } }); } @@ -1485,7 +1488,7 @@ BOOST_AUTO_TEST_CASE (verify_missing_subtitle_language) string const xml = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>" - "<SubtitleReel xmlns=\"http://www.smpte-ra.org/schemas/428-7/2010/DCST\" xmlns:xs=\"http://www.w3.org/2001/schema\">" + "<SubtitleReel xmlns=\"http://www.smpte-ra.org/schemas/428-7/2010/DCST\">" "<Id>urn:uuid:e6a8ae03-ebbf-41ed-9def-913a87d1493a</Id>" "<ContentTitleText>Content</ContentTitleText>" "<AnnotationText>Annotation</AnnotationText>" @@ -1608,7 +1611,7 @@ BOOST_AUTO_TEST_CASE (verify_missing_subtitle_start_time) string const xml = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>" - "<SubtitleReel xmlns=\"http://www.smpte-ra.org/schemas/428-7/2010/DCST\" xmlns:xs=\"http://www.w3.org/2001/schema\">" + "<SubtitleReel xmlns=\"http://www.smpte-ra.org/schemas/428-7/2010/DCST\">" "<Id>urn:uuid:e6a8ae03-ebbf-41ed-9def-913a87d1493a</Id>" "<ContentTitleText>Content</ContentTitleText>" "<AnnotationText>Annotation</AnnotationText>" @@ -1656,7 +1659,7 @@ BOOST_AUTO_TEST_CASE (verify_invalid_subtitle_start_time) string const xml = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>" - "<SubtitleReel xmlns=\"http://www.smpte-ra.org/schemas/428-7/2010/DCST\" xmlns:xs=\"http://www.w3.org/2001/schema\">" + "<SubtitleReel xmlns=\"http://www.smpte-ra.org/schemas/428-7/2010/DCST\">" "<Id>urn:uuid:e6a8ae03-ebbf-41ed-9def-913a87d1493a</Id>" "<ContentTitleText>Content</ContentTitleText>" "<AnnotationText>Annotation</AnnotationText>" @@ -3145,7 +3148,7 @@ BOOST_AUTO_TEST_CASE (verify_mismatched_subtitle_resource_id) BOOST_REQUIRE (ASDCP_SUCCESS(r)); writer.WriteTimedTextResource (dcp::String::compose( "<?xml version=\"1.0\" encoding=\"UTF-8\"?>" - "<SubtitleReel xmlns=\"http://www.smpte-ra.org/schemas/428-7/2010/DCST\" xmlns:xs=\"http://www.w3.org/2001/schema\">" + "<SubtitleReel xmlns=\"http://www.smpte-ra.org/schemas/428-7/2010/DCST\">" "<Id>urn:uuid:%1</Id>" "<ContentTitleText>Content</ContentTitleText>" "<AnnotationText>Annotation</AnnotationText>" @@ -3209,7 +3212,7 @@ BOOST_AUTO_TEST_CASE (verify_incorrect_timed_text_id) BOOST_REQUIRE (ASDCP_SUCCESS(r)); writer.WriteTimedTextResource (dcp::String::compose( "<?xml version=\"1.0\" encoding=\"UTF-8\"?>" - "<SubtitleReel xmlns=\"http://www.smpte-ra.org/schemas/428-7/2010/DCST\" xmlns:xs=\"http://www.w3.org/2001/schema\">" + "<SubtitleReel xmlns=\"http://www.smpte-ra.org/schemas/428-7/2010/DCST\">" "<Id>urn:uuid:%1</Id>" "<ContentTitleText>Content</ContentTitleText>" "<AnnotationText>Annotation</AnnotationText>" @@ -3638,3 +3641,18 @@ BOOST_AUTO_TEST_CASE(verify_invalid_tile_part_size) }); } + +BOOST_AUTO_TEST_CASE(verify_too_many_subtitle_namespaces) +{ + boost::filesystem::path const dir = "test/ref/DCP/subtitle_namespace_test"; + check_verify_result( + { dir }, + { + { dcp::VerificationNote::Type::BV21_ERROR, dcp::VerificationNote::Code::MISSING_FFEC_IN_FEATURE }, + { dcp::VerificationNote::Type::BV21_ERROR, dcp::VerificationNote::Code::MISSING_FFMC_IN_FEATURE }, + { dcp::VerificationNote::Type::WARNING, dcp::VerificationNote::Code::INVALID_SUBTITLE_FIRST_TEXT_TIME }, + { dcp::VerificationNote::Type::BV21_ERROR, dcp::VerificationNote::Code::MISSING_SUBTITLE_LANGUAGE, canonical(find_file(dir, "sub_")) }, + { dcp::VerificationNote::Type::BV21_ERROR, dcp::VerificationNote::Code::MISSING_CPL_METADATA, "fc815694-7977-4a27-a8b3-32b9d4075e4c", canonical(find_file(dir, "cpl_")) }, + { dcp::VerificationNote::Type::WARNING, dcp::VerificationNote::Code::INCORRECT_SUBTITLE_NAMESPACE_COUNT, std::string{"315de731-1173-484c-9a35-bdacf5a9d99d"} } + }); +} |
