summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorCarl Hetherington <cth@carlh.net>2021-01-03 00:31:40 +0100
committerCarl Hetherington <cth@carlh.net>2021-01-17 20:13:22 +0100
commitf11ff8d4d961d92e994ef0f9beb456aa8ec7c4cb (patch)
treefa69fd7a044bbf02a7971da6434373eb18c83edb /test
parente182156f75a74457c4452cc3bfe91d778d0d7148 (diff)
Bv2.1 7.2.3: Check that subtitle <StartTime> exists and is 0.
Diffstat (limited to 'test')
-rw-r--r--test/data/822bd341-c751-45b1-94d2-410e4ffcff1b.pngbin44935 -> 44861 bytes
-rw-r--r--test/data/sub.pngbin44935 -> 44861 bytes
-rw-r--r--test/data/subs.mxfbin62859 -> 62954 bytes
-rw-r--r--test/ref/write_interop_subtitle_test3/ASSETMAP2
-rw-r--r--test/ref/write_interop_subtitle_test3/d36f4bb3-c4fa-4a95-9915-6fec3110cd71.pngbin44935 -> 44861 bytes
-rw-r--r--[l---------]test/ref/write_interop_subtitle_test3/pkl.xml31
-rw-r--r--test/ref/write_interop_subtitle_test3/pkl_6a9e31a6-50a4-4ecb-8683-fa667848470a.xml30
-rw-r--r--test/test.cc2
-rw-r--r--test/verify_test.cc123
9 files changed, 148 insertions, 40 deletions
diff --git a/test/data/822bd341-c751-45b1-94d2-410e4ffcff1b.png b/test/data/822bd341-c751-45b1-94d2-410e4ffcff1b.png
index 89b53cf2..9d8f2988 100644
--- a/test/data/822bd341-c751-45b1-94d2-410e4ffcff1b.png
+++ b/test/data/822bd341-c751-45b1-94d2-410e4ffcff1b.png
Binary files differ
diff --git a/test/data/sub.png b/test/data/sub.png
index 89b53cf2..9d8f2988 100644
--- a/test/data/sub.png
+++ b/test/data/sub.png
Binary files differ
diff --git a/test/data/subs.mxf b/test/data/subs.mxf
index ec208dce..d321e5c6 100644
--- a/test/data/subs.mxf
+++ b/test/data/subs.mxf
Binary files differ
diff --git a/test/ref/write_interop_subtitle_test3/ASSETMAP b/test/ref/write_interop_subtitle_test3/ASSETMAP
index dfcc1bc9..0b704a41 100644
--- a/test/ref/write_interop_subtitle_test3/ASSETMAP
+++ b/test/ref/write_interop_subtitle_test3/ASSETMAP
@@ -48,7 +48,7 @@
<Path>d36f4bb3-c4fa-4a95-9915-6fec3110cd71.png</Path>
<VolumeIndex>1</VolumeIndex>
<Offset>0</Offset>
- <Length>44935</Length>
+ <Length>44861</Length>
</Chunk>
</ChunkList>
</Asset>
diff --git a/test/ref/write_interop_subtitle_test3/d36f4bb3-c4fa-4a95-9915-6fec3110cd71.png b/test/ref/write_interop_subtitle_test3/d36f4bb3-c4fa-4a95-9915-6fec3110cd71.png
index 89b53cf2..9d8f2988 100644
--- a/test/ref/write_interop_subtitle_test3/d36f4bb3-c4fa-4a95-9915-6fec3110cd71.png
+++ b/test/ref/write_interop_subtitle_test3/d36f4bb3-c4fa-4a95-9915-6fec3110cd71.png
Binary files differ
diff --git a/test/ref/write_interop_subtitle_test3/pkl.xml b/test/ref/write_interop_subtitle_test3/pkl.xml
index 23d28034..f82e98c4 120000..100644
--- a/test/ref/write_interop_subtitle_test3/pkl.xml
+++ b/test/ref/write_interop_subtitle_test3/pkl.xml
@@ -1 +1,30 @@
-pkl_6a9e31a6-50a4-4ecb-8683-fa667848470a.xml \ No newline at end of file
+<?xml version="1.0" encoding="UTF-8"?>
+<PackingList xmlns="http://www.digicine.com/PROTO-ASDCP-PKL-20040311#">
+ <Id>urn:uuid:6a9e31a6-50a4-4ecb-8683-fa667848470a</Id>
+ <AnnotationText>Created by libdcp</AnnotationText>
+ <IssueDate>2018-09-02T04:45:18+00:00</IssueDate>
+ <Issuer>libdcp</Issuer>
+ <Creator>libdcp</Creator>
+ <AssetList>
+ <Asset>
+ <Id>urn:uuid:46c3eb45-15e5-47d6-8684-d8641e4dc516</Id>
+ <AnnotationText>46c3eb45-15e5-47d6-8684-d8641e4dc516</AnnotationText>
+ <Hash>hu0RaV4ZgrcqQQtgOW4r/YznVo0=</Hash>
+ <Size>1105</Size>
+ <Type>text/xml;asdcpKind=CPL</Type>
+ </Asset>
+ <Asset>
+ <Id>urn:uuid:a6c58cff-3e1e-4b38-acec-a42224475ef6</Id>
+ <AnnotationText>a6c58cff-3e1e-4b38-acec-a42224475ef6</AnnotationText>
+ <Hash>cVnFjMLTQnSIAlIzJpNB/p7B230=</Hash>
+ <Size>414</Size>
+ <Type>text/xml;asdcpKind=Subtitle</Type>
+ </Asset>
+ <Asset>
+ <Id>urn:uuid:d36f4bb3-c4fa-4a95-9915-6fec3110cd71</Id>
+ <Hash>2vTylSKQ5MCQHbKPT4X+rlwfHk4=</Hash>
+ <Size>44861</Size>
+ <Type>image/png</Type>
+ </Asset>
+ </AssetList>
+</PackingList>
diff --git a/test/ref/write_interop_subtitle_test3/pkl_6a9e31a6-50a4-4ecb-8683-fa667848470a.xml b/test/ref/write_interop_subtitle_test3/pkl_6a9e31a6-50a4-4ecb-8683-fa667848470a.xml
deleted file mode 100644
index 5e721188..00000000
--- a/test/ref/write_interop_subtitle_test3/pkl_6a9e31a6-50a4-4ecb-8683-fa667848470a.xml
+++ /dev/null
@@ -1,30 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<PackingList xmlns="http://www.digicine.com/PROTO-ASDCP-PKL-20040311#">
- <Id>urn:uuid:6a9e31a6-50a4-4ecb-8683-fa667848470a</Id>
- <AnnotationText>Created by libdcp</AnnotationText>
- <IssueDate>2018-09-02T04:45:18+00:00</IssueDate>
- <Issuer>libdcp</Issuer>
- <Creator>libdcp</Creator>
- <AssetList>
- <Asset>
- <Id>urn:uuid:46c3eb45-15e5-47d6-8684-d8641e4dc516</Id>
- <AnnotationText>46c3eb45-15e5-47d6-8684-d8641e4dc516</AnnotationText>
- <Hash>hu0RaV4ZgrcqQQtgOW4r/YznVo0=</Hash>
- <Size>1105</Size>
- <Type>text/xml;asdcpKind=CPL</Type>
- </Asset>
- <Asset>
- <Id>urn:uuid:a6c58cff-3e1e-4b38-acec-a42224475ef6</Id>
- <AnnotationText>a6c58cff-3e1e-4b38-acec-a42224475ef6</AnnotationText>
- <Hash>cVnFjMLTQnSIAlIzJpNB/p7B230=</Hash>
- <Size>414</Size>
- <Type>text/xml;asdcpKind=Subtitle</Type>
- </Asset>
- <Asset>
- <Id>urn:uuid:d36f4bb3-c4fa-4a95-9915-6fec3110cd71</Id>
- <Hash>w0Xc4TUYpao08I0yPSDfFkaEwdg=</Hash>
- <Size>44935</Size>
- <Type>image/png</Type>
- </Asset>
- </AssetList>
-</PackingList>
diff --git a/test/test.cc b/test/test.cc
index 7a08cfc3..1d336806 100644
--- a/test/test.cc
+++ b/test/test.cc
@@ -404,6 +404,7 @@ make_simple_with_smpte_subs (boost::filesystem::path path)
shared_ptr<dcp::SMPTESubtitleAsset> subs(new dcp::SMPTESubtitleAsset());
subs->set_language (dcp::LanguageTag("de-DE"));
+ subs->set_start_time (dcp::Time());
subs->add (simple_subtitle());
subs->write (path / "subs.mxf");
@@ -438,6 +439,7 @@ make_simple_with_smpte_ccaps (boost::filesystem::path path)
shared_ptr<dcp::SMPTESubtitleAsset> subs(new dcp::SMPTESubtitleAsset());
subs->set_language (dcp::LanguageTag("de-DE"));
+ subs->set_start_time (dcp::Time());
subs->add (simple_subtitle());
subs->write (path / "ccap.mxf");
diff --git a/test/verify_test.cc b/test/verify_test.cc
index 9bb3859a..4cde3966 100644
--- a/test/verify_test.cc
+++ b/test/verify_test.cc
@@ -729,9 +729,13 @@ BOOST_AUTO_TEST_CASE (verify_test21)
vector<boost::filesystem::path> dirs;
dirs.push_back (dir);
list<dcp::VerificationNote> notes = dcp::verify (dirs, &stage, &progress, xsd_test);
- BOOST_REQUIRE_EQUAL (notes.size(), 2);
- BOOST_CHECK_EQUAL (notes.front().code(), dcp::VerificationNote::XML_VALIDATION_ERROR);
- BOOST_CHECK_EQUAL (notes.back().code(), dcp::VerificationNote::XML_VALIDATION_ERROR);
+ BOOST_REQUIRE_EQUAL (notes.size(), 3);
+ list<dcp::VerificationNote>::const_iterator i = notes.begin();
+ BOOST_CHECK_EQUAL (i->code(), dcp::VerificationNote::XML_VALIDATION_ERROR);
+ ++i;
+ BOOST_CHECK_EQUAL (i->code(), dcp::VerificationNote::XML_VALIDATION_ERROR);
+ ++i;
+ BOOST_CHECK_EQUAL (i->code(), dcp::VerificationNote::MISSING_SUBTITLE_START_TIME);
}
@@ -1206,9 +1210,12 @@ BOOST_AUTO_TEST_CASE (verify_closed_caption_xml_too_large)
vector<boost::filesystem::path> dirs;
dirs.push_back (dir);
list<dcp::VerificationNote> notes = dcp::verify (dirs, &stage, &progress, xsd_test);
- BOOST_REQUIRE_EQUAL (notes.size(), 1U);
- BOOST_CHECK_EQUAL (notes.front().type(), dcp::VerificationNote::VERIFY_BV21_ERROR);
- BOOST_CHECK_EQUAL (notes.front().code(), dcp::VerificationNote::CLOSED_CAPTION_XML_TOO_LARGE_IN_BYTES);
+ BOOST_REQUIRE_EQUAL (notes.size(), 2U);
+ list<dcp::VerificationNote>::const_iterator i = notes.begin();
+ BOOST_CHECK_EQUAL (i->code(), dcp::VerificationNote::MISSING_SUBTITLE_START_TIME);
+ ++i;
+ BOOST_CHECK_EQUAL (i->type(), dcp::VerificationNote::VERIFY_BV21_ERROR);
+ BOOST_CHECK_EQUAL (i->code(), dcp::VerificationNote::CLOSED_CAPTION_XML_TOO_LARGE_IN_BYTES);
}
@@ -1273,13 +1280,15 @@ verify_timed_text_asset_too_large (string name)
vector<boost::filesystem::path> dirs;
dirs.push_back (dir);
list<dcp::VerificationNote> notes = dcp::verify (dirs, &stage, &progress, xsd_test);
- BOOST_REQUIRE_EQUAL (notes.size(), 2U);
+ BOOST_REQUIRE_EQUAL (notes.size(), 3U);
list<dcp::VerificationNote>::const_iterator i = notes.begin();
BOOST_CHECK_EQUAL (i->type(), dcp::VerificationNote::VERIFY_BV21_ERROR);
BOOST_CHECK_EQUAL (i->code(), dcp::VerificationNote::TIMED_TEXT_ASSET_TOO_LARGE_IN_BYTES);
++i;
BOOST_CHECK_EQUAL (i->type(), dcp::VerificationNote::VERIFY_BV21_ERROR);
BOOST_CHECK_EQUAL (i->code(), dcp::VerificationNote::TIMED_TEXT_FONTS_TOO_LARGE_IN_BYTES);
+ ++i;
+ BOOST_CHECK_EQUAL (i->code(), dcp::VerificationNote::MISSING_SUBTITLE_START_TIME);
}
@@ -1366,8 +1375,106 @@ BOOST_AUTO_TEST_CASE (verify_inconsistent_subtitle_languages)
vector<boost::filesystem::path> dirs;
dirs.push_back (path);
list<dcp::VerificationNote> notes = dcp::verify (dirs, &stage, &progress, xsd_test);
+ BOOST_REQUIRE_EQUAL (notes.size(), 3U);
+ list<dcp::VerificationNote>::const_iterator i = notes.begin();
+ BOOST_CHECK_EQUAL (i->code(), dcp::VerificationNote::MISSING_SUBTITLE_START_TIME);
+ ++i;
+ BOOST_CHECK_EQUAL (i->type(), dcp::VerificationNote::VERIFY_BV21_ERROR);
+ ++i;
+ BOOST_CHECK_EQUAL (i->code(), dcp::VerificationNote::MISSING_SUBTITLE_START_TIME);
+}
+
+
+BOOST_AUTO_TEST_CASE (verify_missing_start_time_tag_in_subtitle_xml)
+{
+ boost::filesystem::path dir = "build/test/verify_missing_start_time_tag_in_subtitle_xml";
+ prepare_directory (dir);
+ shared_ptr<dcp::DCP> dcp = make_simple (dir, 1);
+
+ 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\">"
+ "<Id>urn:uuid:e6a8ae03-ebbf-41ed-9def-913a87d1493a</Id>"
+ "<ContentTitleText>Content</ContentTitleText>"
+ "<AnnotationText>Annotation</AnnotationText>"
+ "<IssueDate>2018-10-02T12:25:14+02:00</IssueDate>"
+ "<ReelNumber>1</ReelNumber>"
+ "<Language>de-DE</Language>"
+ "<EditRate>25 1</EditRate>"
+ "<TimeCodeRate>25</TimeCodeRate>"
+ "<LoadFont ID=\"arial\">urn:uuid:e4f0ff0a-9eba-49e0-92ee-d89a88a575f6</LoadFont>"
+ "<SubtitleList>"
+ "<Font ID=\"arial\" Color=\"FFFEFEFE\" Weight=\"normal\" Size=\"42\" Effect=\"border\" EffectColor=\"FF181818\" AspectAdjust=\"1.00\">"
+ "<Subtitle SpotNumber=\"1\" TimeIn=\"00:00:03:00\" TimeOut=\"00:00:04:10\" FadeUpTime=\"00:00:00:00\" FadeDownTime=\"00:00:00:00\">"
+ "<Text Hposition=\"0.0\" Halign=\"center\" Valign=\"bottom\" Vposition=\"13.5\" Direction=\"ltr\">Hello world</Text>"
+ "</Subtitle>"
+ "</Font>"
+ "</SubtitleList>"
+ "</SubtitleReel>";
+
+ FILE* xml_file = dcp::fopen_boost (dir / "subs.xml", "w");
+ BOOST_REQUIRE (xml_file);
+ fwrite (xml.c_str(), xml.size(), 1, xml_file);
+ fclose (xml_file);
+ shared_ptr<dcp::SMPTESubtitleAsset> subs (new dcp::SMPTESubtitleAsset(dir / "subs.xml"));
+ subs->write (dir / "subs.mxf");
+
+ shared_ptr<dcp::ReelSubtitleAsset> reel_subs (new dcp::ReelSubtitleAsset(subs, dcp::Fraction(24, 1), 100, 0));
+ dcp->cpls().front()->reels().front()->add (reel_subs);
+ dcp->write_xml (dcp::SMPTE);
+
+ vector<boost::filesystem::path> dirs;
+ dirs.push_back (dir);
+ list<dcp::VerificationNote> notes = dcp::verify (dirs, &stage, &progress, xsd_test);
BOOST_REQUIRE_EQUAL (notes.size(), 1U);
BOOST_CHECK_EQUAL (notes.front().type(), dcp::VerificationNote::VERIFY_BV21_ERROR);
- BOOST_CHECK_EQUAL (notes.front().code(), dcp::VerificationNote::SUBTITLE_LANGUAGES_DIFFER);
+ BOOST_CHECK_EQUAL (notes.front().code(), dcp::VerificationNote::MISSING_SUBTITLE_START_TIME);
}
+
+BOOST_AUTO_TEST_CASE (verify_non_zero_start_time_tag_in_subtitle_xml)
+{
+ boost::filesystem::path dir = "build/test/verify_non_zero_start_time_tag_in_subtitle_xml";
+ prepare_directory (dir);
+ shared_ptr<dcp::DCP> dcp = make_simple (dir, 1);
+
+ 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\">"
+ "<Id>urn:uuid:e6a8ae03-ebbf-41ed-9def-913a87d1493a</Id>"
+ "<ContentTitleText>Content</ContentTitleText>"
+ "<AnnotationText>Annotation</AnnotationText>"
+ "<IssueDate>2018-10-02T12:25:14+02:00</IssueDate>"
+ "<ReelNumber>1</ReelNumber>"
+ "<Language>de-DE</Language>"
+ "<EditRate>25 1</EditRate>"
+ "<TimeCodeRate>25</TimeCodeRate>"
+ "<StartTime>00:00:02:00</StartTime>"
+ "<LoadFont ID=\"arial\">urn:uuid:e4f0ff0a-9eba-49e0-92ee-d89a88a575f6</LoadFont>"
+ "<SubtitleList>"
+ "<Font ID=\"arial\" Color=\"FFFEFEFE\" Weight=\"normal\" Size=\"42\" Effect=\"border\" EffectColor=\"FF181818\" AspectAdjust=\"1.00\">"
+ "<Subtitle SpotNumber=\"1\" TimeIn=\"00:00:03:00\" TimeOut=\"00:00:04:10\" FadeUpTime=\"00:00:00:00\" FadeDownTime=\"00:00:00:00\">"
+ "<Text Hposition=\"0.0\" Halign=\"center\" Valign=\"bottom\" Vposition=\"13.5\" Direction=\"ltr\">Hello world</Text>"
+ "</Subtitle>"
+ "</Font>"
+ "</SubtitleList>"
+ "</SubtitleReel>";
+
+ FILE* xml_file = dcp::fopen_boost (dir / "subs.xml", "w");
+ BOOST_REQUIRE (xml_file);
+ fwrite (xml.c_str(), xml.size(), 1, xml_file);
+ fclose (xml_file);
+ shared_ptr<dcp::SMPTESubtitleAsset> subs (new dcp::SMPTESubtitleAsset(dir / "subs.xml"));
+ subs->write (dir / "subs.mxf");
+
+ shared_ptr<dcp::ReelSubtitleAsset> reel_subs (new dcp::ReelSubtitleAsset(subs, dcp::Fraction(24, 1), 100, 0));
+ dcp->cpls().front()->reels().front()->add (reel_subs);
+ dcp->write_xml (dcp::SMPTE);
+
+ vector<boost::filesystem::path> dirs;
+ dirs.push_back (dir);
+ list<dcp::VerificationNote> notes = dcp::verify (dirs, &stage, &progress, xsd_test);
+ BOOST_REQUIRE_EQUAL (notes.size(), 1U);
+ BOOST_CHECK_EQUAL (notes.front().type(), dcp::VerificationNote::VERIFY_BV21_ERROR);
+ BOOST_CHECK_EQUAL (notes.front().code(), dcp::VerificationNote::SUBTITLE_START_TIME_NON_ZERO);
+}