Re-read MXF descriptor after adding a key to a SMPTE subtitle asset (DoM #2660). v1.8.88
authorCarl Hetherington <cth@carlh.net>
Mon, 20 Nov 2023 20:05:41 +0000 (21:05 +0100)
committerCarl Hetherington <cth@carlh.net>
Mon, 20 Nov 2023 20:05:41 +0000 (21:05 +0100)
src/smpte_subtitle_asset.cc
test/smpte_subtitle_test.cc

index c1138f23c04e83a51cff52bb195ad0a51c2e458d..0ff1d7ef5048996e7861e2bd7c02e453e68d66de 100644 (file)
@@ -337,6 +337,7 @@ SMPTESubtitleAsset::set_key (Key key)
        auto xml = make_shared<cxml::Document>("SubtitleReel");
        xml->read_string (xml_string);
        parse_xml (xml);
+       read_mxf_descriptor(reader);
        read_mxf_resources (reader, dec);
 }
 
index eca5cd1f033602d41556a7b4322cad23f50eab03..3bf9dc5207a2cec205ca71ab1170fd055529d38b 100644 (file)
@@ -762,3 +762,23 @@ BOOST_AUTO_TEST_CASE(smpte_subtitle_standard_read_correctly)
        BOOST_CHECK(test_2014.subtitle_standard() == dcp::SubtitleStandard::SMPTE_2014);
 }
 
+
+BOOST_AUTO_TEST_CASE(smpte_subtitle_intrinsic_duration_read_correctly)
+{
+       dcp::SMPTESubtitleAsset ref("test/data/verify_incorrect_closed_caption_ordering3.xml");
+
+       dcp::Key key;
+       ref.set_key(key);
+
+       auto constexpr duration = 480U;
+
+       ref.set_intrinsic_duration(duration);
+
+       auto const path = boost::filesystem::path("build/test/smpte_subtitle_instrinsic_duration_read_correctly.mxf");
+       ref.write(path);
+
+       auto check = dcp::SMPTESubtitleAsset(path);
+       check.set_key(key);
+       BOOST_CHECK_EQUAL(check.intrinsic_duration(), duration);
+}
+