- xml->read_stream (t);
-
- ASDCP::WriterInfo info;
- reader.FillWriterInfo (info);
- _id = read_writer_info (info);
+
+ shared_ptr<ASDCP::TimedText::MXFReader> reader (new ASDCP::TimedText::MXFReader ());
+ Kumu::Result_t r = reader->OpenRead (file.string().c_str ());
+
+ if (!ASDCP_FAILURE (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 {
+ reader.reset ();
+ try {
+ xml->read_file (file);
+ _id = xml->string_child ("Id").substr (9);
+ } catch (cxml::Error& e) {
+ boost::throw_exception (
+ DCPReadError (
+ String::compose ("could not read subtitles from %1; MXF failed with %2, XML failed with %3", file, static_cast<int> (r), e.what ())
+ )
+ );
+ }
+ }