diff options
| author | Carl Hetherington <cth@carlh.net> | 2021-01-03 00:31:40 +0100 |
|---|---|---|
| committer | Carl Hetherington <cth@carlh.net> | 2021-01-17 20:13:22 +0100 |
| commit | f11ff8d4d961d92e994ef0f9beb456aa8ec7c4cb (patch) | |
| tree | fa69fd7a044bbf02a7971da6434373eb18c83edb /test | |
| parent | e182156f75a74457c4452cc3bfe91d778d0d7148 (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.png | bin | 44935 -> 44861 bytes | |||
| -rw-r--r-- | test/data/sub.png | bin | 44935 -> 44861 bytes | |||
| -rw-r--r-- | test/data/subs.mxf | bin | 62859 -> 62954 bytes | |||
| -rw-r--r-- | test/ref/write_interop_subtitle_test3/ASSETMAP | 2 | ||||
| -rw-r--r-- | test/ref/write_interop_subtitle_test3/d36f4bb3-c4fa-4a95-9915-6fec3110cd71.png | bin | 44935 -> 44861 bytes | |||
| -rw-r--r--[l---------] | test/ref/write_interop_subtitle_test3/pkl.xml | 31 | ||||
| -rw-r--r-- | test/ref/write_interop_subtitle_test3/pkl_6a9e31a6-50a4-4ecb-8683-fa667848470a.xml | 30 | ||||
| -rw-r--r-- | test/test.cc | 2 | ||||
| -rw-r--r-- | test/verify_test.cc | 123 |
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 Binary files differindex 89b53cf2..9d8f2988 100644 --- a/test/data/822bd341-c751-45b1-94d2-410e4ffcff1b.png +++ b/test/data/822bd341-c751-45b1-94d2-410e4ffcff1b.png diff --git a/test/data/sub.png b/test/data/sub.png Binary files differindex 89b53cf2..9d8f2988 100644 --- a/test/data/sub.png +++ b/test/data/sub.png diff --git a/test/data/subs.mxf b/test/data/subs.mxf Binary files differindex ec208dce..d321e5c6 100644 --- a/test/data/subs.mxf +++ b/test/data/subs.mxf 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 Binary files differindex 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 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); +} |
