From: Carl Hetherington Date: Sat, 9 Jun 2018 22:57:00 +0000 (+0100) Subject: Fix bad parsing of ASS lines embedded into FFmpeg files and containing commas; X-Git-Tag: v2.12.13~2 X-Git-Url: https://git.carlh.net/gitweb/?p=dcpomatic.git;a=commitdiff_plain;h=34ddf0c18e6dd815d103552bf4013c41bd3a559c Fix bad parsing of ASS lines embedded into FFmpeg files and containing commas; backport of f3db6f37c85352ad7631078907439ce8ff151b3d. --- diff --git a/ChangeLog b/ChangeLog index 14a969310..65fc1e9c4 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,9 +1,18 @@ +2018-10-08 Carl Hetherington + + * Fix bad parsing of ASS lines embedded into FFmpeg files + and containing commas. + 2018-09-25 Carl Hetherington * Version 2.12.12 released. 2018-09-16 Carl Hetherington + * Add option to open a DCP in the player (#1312). + +2018-06-08 Carl Hetherington + * Version 2.12.11 released. 2018-09-04 Carl Hetherington diff --git a/src/lib/ffmpeg_decoder.cc b/src/lib/ffmpeg_decoder.cc index ea41acf23..7b305ee15 100644 --- a/src/lib/ffmpeg_decoder.cc +++ b/src/lib/ffmpeg_decoder.cc @@ -678,16 +678,24 @@ FFmpegDecoder::decode_ass_subtitle (string ass, ContentTime from) produces a single format of Dialogue: lines... */ - vector bits; - split (bits, ass, is_any_of (",")); - if (bits.size() < 10) { + int commas = 0; + string text; + for (size_t i = 0; i < ass.length(); ++i) { + if (commas < 9 && ass[i] == ',') { + ++commas; + } else if (commas == 9) { + text += ass[i]; + } + } + + if (text.empty ()) { return; } sub::RawSubtitle base; list raw = sub::SSAReader::parse_line ( base, - bits[9], + text, _ffmpeg_content->video->size().width, _ffmpeg_content->video->size().height );