*/
#include "reader_factory.h"
-#include "interop_dcp_reader.h"
-#include "smpte_dcp_reader.h"
#include "stl_binary_reader.h"
#include "stl_text_reader.h"
+#include "dcp_reader.h"
+#include "subrip_reader.h"
+#include "sub_assert.h"
#include <libxml++/libxml++.h>
#include <boost/algorithm/string.hpp>
#include <fstream>
using std::string;
using std::ifstream;
using boost::algorithm::ends_with;
-using boost::shared_ptr;
+using std::shared_ptr;
using namespace sub;
shared_ptr<Reader>
transform (ext.begin(), ext.end(), ext.begin(), ::tolower);
if (ext == ".xml") {
- /* XXX: unfortunate API weakness in libcxml; we can't find out what a
- file's root node name is.
- */
- xmlpp::DomParser parser (file_name.string ());
- string const root = parser.get_document()->get_root_node()->get_name();
- if (root == "DCSubtitle") {
- return shared_ptr<Reader> (new InteropDCPReader (file_name));
- } else if (root == "SubtitleReel") {
- return shared_ptr<Reader> (new SMPTEDCPReader (file_name, false));
- }
+ return shared_ptr<Reader> (new DCPReader (file_name));
}
if (ext == ".mxf") {
/* Assume this is some MXF-wrapped SMPTE subtitles */
- return shared_ptr<Reader> (new SMPTEDCPReader (file_name, true));
+ return shared_ptr<Reader> (new DCPReader (file_name));
}
if (ext == ".stl") {
}
}
+ if (ext == ".srt") {
+ FILE* f = fopen (file_name.string().c_str(), "r");
+ SUB_ASSERT (f);
+ shared_ptr<Reader> r (new SubripReader(f));
+ fclose (f);
+ return r;
+ }
+
return shared_ptr<Reader> ();
}