Fix failure to parse subrip where there are extra spaces in the time/position line.
[libsub.git] / src / reader_factory.cc
index 31a205b91bfd38a35e9feb12533717ca67ba2617..5d38e4e9ec5a57365eed9c564bb89f59a8e1482e 100644 (file)
 
 */
 
-#include <fstream>
-#include <boost/algorithm/string.hpp>
 #include "reader_factory.h"
-#include "dcp_reader.h"
 #include "stl_binary_reader.h"
 #include "stl_text_reader.h"
+#include "dcp_reader.h"
+#include <libxml++/libxml++.h>
+#include <boost/algorithm/string.hpp>
+#include <fstream>
 
 using std::string;
 using std::ifstream;
@@ -35,10 +36,15 @@ sub::reader_factory (boost::filesystem::path file_name)
 {
        string ext = file_name.extension().string();
        transform (ext.begin(), ext.end(), ext.begin(), ::tolower);
-       
-       if (ext == ".xml" || ext == ".mxf") {
+
+       if (ext == ".xml") {
                return shared_ptr<Reader> (new DCPReader (file_name));
-       }
+        }
+
+        if (ext == ".mxf") {
+                /* Assume this is some MXF-wrapped SMPTE subtitles */
+                return shared_ptr<Reader> (new DCPReader (file_name));
+        }
 
        if (ext == ".stl") {
                /* Check the start of the DFC */