X-Git-Url: https://git.carlh.net/gitweb/?a=blobdiff_plain;f=src%2Flib%2Ftext_subtitle.cc;h=0f5e055cfc781180069506e8c05fe0ecdf8e3e37;hb=c3e2b2051f4c50d92c7bbe59c42174984c2f3e54;hp=d55ff68d7e46f3bc1702389ac75b2ea72888382a;hpb=80400212e939dc2f3b987cb6df57709929aa5178;p=dcpomatic.git diff --git a/src/lib/text_subtitle.cc b/src/lib/text_subtitle.cc index d55ff68d7..0f5e055cf 100644 --- a/src/lib/text_subtitle.cc +++ b/src/lib/text_subtitle.cc @@ -1,19 +1,20 @@ /* Copyright (C) 2014-2016 Carl Hetherington - This program is free software; you can redistribute it and/or modify + This file is part of DCP-o-matic. + + DCP-o-matic is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. - This program is distributed in the hope that it will be useful, + DCP-o-matic is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + along with DCP-o-matic. If not, see . */ @@ -22,6 +23,7 @@ #include "exceptions.h" #include "text_subtitle_content.h" #include +#include #include #include #include @@ -65,8 +67,22 @@ TextSubtitle::TextSubtitle (shared_ptr content) ucnv_close (to_utf16); ucnv_close (to_utf8); - sub::SubripReader reader (utf8.get()); - _subtitles = sub::collect > (reader.subtitles ()); + sub::Reader* reader = 0; + + string ext = content->path(0).extension().string(); + transform (ext.begin(), ext.end(), ext.begin(), ::tolower); + + if (ext == ".srt") { + reader = new sub::SubripReader (utf8.get()); + } else if (ext == ".ssa" || ext == ".ass") { + reader = new sub::SSAReader (utf8.get()); + } + + if (reader) { + _subtitles = sub::collect > (reader->subtitles ()); + } + + delete reader; } ContentTime