}
-/** Construct a SMPTESubtitleAsset by reading an XML or MXF file.
+/** Construct a SMPTESubtitleAsset by reading an MXF file.
* @param file Filename.
- * @param mxf true if file is an MXF, false if it is XML.
*/
-SMPTESubtitleAsset::SMPTESubtitleAsset (boost::filesystem::path file, bool mxf)
+SMPTESubtitleAsset::SMPTESubtitleAsset (boost::filesystem::path file)
: SubtitleAsset (file)
{
shared_ptr<cxml::Document> xml (new cxml::Document ("SubtitleReel"));
- if (mxf) {
- ASDCP::TimedText::MXFReader reader;
- Kumu::Result_t r = reader.OpenRead (file.string().c_str ());
- if (ASDCP_FAILURE (r)) {
- boost::throw_exception (MXFFileError ("could not open MXF file for reading", file, r));
- }
-
- string s;
- reader.ReadTimedTextResource (s, 0, 0);
- stringstream t;
- t << s;
- xml->read_stream (t);
-
- ASDCP::WriterInfo info;
- reader.FillWriterInfo (info);
- _id = read_writer_info (info);
- } else {
- xml->read_file (file);
- _id = xml->string_child("Id").substr (9);
+ ASDCP::TimedText::MXFReader reader;
+ Kumu::Result_t r = reader.OpenRead (file.string().c_str ());
+ if (ASDCP_FAILURE (r)) {
+ boost::throw_exception (MXFFileError ("could not open MXF file for reading", file, r));
}
+ string s;
+ reader.ReadTimedTextResource (s, 0, 0);
+ stringstream t;
+ t << s;
+ xml->read_stream (t);
+
+ ASDCP::WriterInfo info;
+ reader.FillWriterInfo (info);
+ _id = read_writer_info (info);
+
_load_font_nodes = type_children<dcp::SMPTELoadFontNode> (xml, "LoadFont");
_content_title_text = xml->string_child ("ContentTitleText");
/** Check reading of a SMPTE subtitle file */
BOOST_AUTO_TEST_CASE (read_smpte_subtitle_test)
{
- dcp::SMPTESubtitleAsset sc (private_test / "8dfafe11-2bd1-4206-818b-afc109cfe7f6_reel1.xml", false);
+ dcp::SMPTESubtitleAsset sc (
+ private_test /
+ "data" /
+ "JourneyToJah_TLR-1_F_EN-DE-FR_CH_51_2K_LOK_20140225_DGL_SMPTE_OV" /
+ "8b48f6ae-c74b-4b80-b994-a8236bbbad74_sub.mxf"
+ );
- BOOST_CHECK_EQUAL (sc.id(), "8dfafe11-2bd1-4206-818b-afc109cfe7f6");
- BOOST_CHECK_EQUAL (sc.content_title_text(), "Violet");
+ BOOST_CHECK_EQUAL (sc.id(), "8b48f6ae-c74b-4b80-b994-a8236bbbad74");
+ BOOST_CHECK_EQUAL (sc.content_title_text(), "Journey to Jah");
BOOST_REQUIRE (sc.annotation_text());
- BOOST_CHECK_EQUAL (sc.annotation_text().get(), "Violet");
- BOOST_CHECK_EQUAL (sc.issue_date(), dcp::LocalTime ("2014-12-23T22:30:07.000-00:00"));
+ BOOST_CHECK_EQUAL (sc.annotation_text().get(), "Journey to Jah");
+ BOOST_CHECK_EQUAL (sc.issue_date(), dcp::LocalTime ("2014-02-25T11:22:48.000-00:00"));
BOOST_REQUIRE (sc.reel_number());
BOOST_CHECK_EQUAL (sc.reel_number().get(), 1);
BOOST_REQUIRE (sc.language ());
- BOOST_CHECK_EQUAL (sc.language().get (), "Dutch");
- BOOST_CHECK_EQUAL (sc.edit_rate(), dcp::Fraction (24, 1));
- BOOST_CHECK_EQUAL (sc.time_code_rate(), 24);
- BOOST_CHECK_EQUAL (sc.start_time(), dcp::Time (0, 0, 0, 23, 24));
+ BOOST_CHECK_EQUAL (sc.language().get (), "de");
+ BOOST_CHECK_EQUAL (sc.edit_rate(), dcp::Fraction (25, 1));
+ BOOST_CHECK_EQUAL (sc.time_code_rate(), 25);
+ BOOST_CHECK_EQUAL (sc.start_time(), dcp::Time (0, 0, 0, 0, 25));
list<shared_ptr<dcp::LoadFontNode> > lfn = sc.load_font_nodes ();
BOOST_REQUIRE_EQUAL (lfn.size(), 1);
shared_ptr<dcp::SMPTELoadFontNode> smpte_lfn = dynamic_pointer_cast<dcp::SMPTELoadFontNode> (lfn.front ());
BOOST_REQUIRE (smpte_lfn);
BOOST_CHECK_EQUAL (smpte_lfn->id, "theFontId");
- BOOST_CHECK_EQUAL (smpte_lfn->urn, "3dec6dc0-39d0-498d-97d0-928d2eb78391");
- BOOST_REQUIRE_EQUAL (sc.subtitles().size(), 159);
- BOOST_CHECK_EQUAL (sc.subtitles().front().text(), "Jonas ?");
- BOOST_CHECK_EQUAL (sc.subtitles().front().in(), dcp::Time (0, 7, 6, 20, 24));
- BOOST_CHECK_EQUAL (sc.subtitles().front().out(), dcp::Time (0, 7, 7, 20, 24));
- BOOST_CHECK_EQUAL (sc.subtitles().back().text(), "Come on.");
- BOOST_CHECK_EQUAL (sc.subtitles().back().in(), dcp::Time (1, 13, 37, 11, 24));
- BOOST_CHECK_EQUAL (sc.subtitles().back().out(), dcp::Time (1, 13, 38, 11, 24));
+ BOOST_CHECK_EQUAL (smpte_lfn->urn, "9118bbce-4105-4a05-b37c-a5a6f75e1fea");
+ BOOST_REQUIRE_EQUAL (sc.subtitles().size(), 63);
+ BOOST_CHECK_EQUAL (sc.subtitles().front().text(), "Noch mal.");
+ BOOST_CHECK_EQUAL (sc.subtitles().front().in(), dcp::Time (0, 0, 25, 12, 25));
+ BOOST_CHECK_EQUAL (sc.subtitles().front().out(), dcp::Time (0, 0, 26, 4, 25));
+ BOOST_CHECK_EQUAL (sc.subtitles().back().text(), "Prochainement");
+ BOOST_CHECK_EQUAL (sc.subtitles().back().in(), dcp::Time (0, 1, 57, 17, 25));
+ BOOST_CHECK_EQUAL (sc.subtitles().back().out(), dcp::Time (0, 1, 58, 12, 25));
}