Make SSA reader more tolerant of missing styles (DoM #2685).
[libsub.git] / src / reader_factory.cc
index 5d38e4e9ec5a57365eed9c564bb89f59a8e1482e..282f14bdd684b73bc56689bc62218ded38fcefab 100644 (file)
 #include "reader_factory.h"
 #include "stl_binary_reader.h"
 #include "stl_text_reader.h"
-#include "dcp_reader.h"
-#include <libxml++/libxml++.h>
+#include "subrip_reader.h"
+#include "sub_assert.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>
@@ -37,15 +37,6 @@ 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") {
-               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 */
                ifstream f (file_name.string().c_str ());
@@ -59,5 +50,13 @@ sub::reader_factory (boost::filesystem::path file_name)
                }
        }
 
+       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> ();
 }