mirror of
https://gitlab.com/mbunkus/mkvtoolnix.git
synced 2025-01-04 09:15:05 +00:00
Fixed SSA/ASS detection for files produced by Aegis Sub which does not include a line with "[script info]" in the file.
This commit is contained in:
parent
e38963c37e
commit
42a1924934
@ -1,3 +1,9 @@
|
|||||||
|
2007-07-19 Moritz Bunkus <moritz@bunkus.org>
|
||||||
|
|
||||||
|
* mkvmerge: enhancement: Fixed SSA/ASS detection for files
|
||||||
|
produced by Aegis Sub which doesn't include a line with '[script
|
||||||
|
info]' in the file.
|
||||||
|
|
||||||
2007-07-07 Moritz Bunkus <moritz@bunkus.org>
|
2007-07-07 Moritz Bunkus <moritz@bunkus.org>
|
||||||
|
|
||||||
* mmg: enhancement: Added another option how mmg choses the
|
* mmg: enhancement: Added another option how mmg choses the
|
||||||
|
@ -38,7 +38,12 @@ ssa_reader_c::probe_file(mm_text_io_c *io,
|
|||||||
int64_t size) {
|
int64_t size) {
|
||||||
string line;
|
string line;
|
||||||
int line_number;
|
int line_number;
|
||||||
|
|
||||||
|
pcrecpp::RE_Options opt_caseless;
|
||||||
|
opt_caseless.set_caseless(true);
|
||||||
pcrecpp::RE comment_re("^\\s*;");
|
pcrecpp::RE comment_re("^\\s*;");
|
||||||
|
pcrecpp::RE script_info_re("^\\s*\\[script\\s+info\\]", opt_caseless);
|
||||||
|
pcrecpp::RE styles_re("^\\s*\\[V4\\+?\\s+Styles\\]", opt_caseless);
|
||||||
|
|
||||||
try {
|
try {
|
||||||
line_number = 0;
|
line_number = 0;
|
||||||
@ -46,26 +51,19 @@ ssa_reader_c::probe_file(mm_text_io_c *io,
|
|||||||
while (io->getline2(line)) {
|
while (io->getline2(line)) {
|
||||||
++line_number;
|
++line_number;
|
||||||
|
|
||||||
strip(line, true);
|
// Read at most 100 lines.
|
||||||
|
if (100 < line_number)
|
||||||
|
return 0;
|
||||||
|
|
||||||
// This is the line mkvmerge is looking for: positive match.
|
// This is the line mkvmerge is looking for: positive match.
|
||||||
if (!strcasecmp(line.c_str(), "[script info]")) {
|
if (script_info_re.PartialMatch(line) || styles_re.PartialMatch(line)) {
|
||||||
io->setFilePointer(0, seek_beginning);
|
io->setFilePointer(0, seek_beginning);
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Read at most 500 lines.
|
|
||||||
if (line_number > 500)
|
|
||||||
return 0;
|
|
||||||
|
|
||||||
// Allow for empty lines and comments.
|
|
||||||
if (comment_re.PartialMatch(line) || (line == ""))
|
|
||||||
continue;
|
|
||||||
|
|
||||||
// It's something else: negative match.
|
|
||||||
return 0;
|
|
||||||
}
|
}
|
||||||
} catch (...) {
|
} catch (...) {
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user