[FFmpeg-devel] [PATCH] lavf/jacosubdec: compute subtitle duration correctly

Carl Eugen Hoyos ceffmpeg at gmail.com
Wed Feb 13 01:40:05 EET 2019


2019-02-13 0:13 GMT+01:00, Adam Sampson <ats at offog.org>:
> When a JACOsub subtitle has two timestamps, they represent its start and
> end times (http://unicorn.us.com/jacosub/jscripts.html#l_times); the
> duration is the difference between the two, not the sum of the two.
>
> Tested using MPV, a LaserDisc, and some authentic 1993 JACOsub files.
> ---
>  libavformat/jacosubdec.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/libavformat/jacosubdec.c b/libavformat/jacosubdec.c
> index 520c435cc5..f6be5df2d7 100644
> --- a/libavformat/jacosubdec.c
> +++ b/libavformat/jacosubdec.c
> @@ -127,7 +127,7 @@ shift_and_ret:
>      ts_start  = (ts_start + jacosub->shift) * 100 / jacosub->timeres;
>      ts_end    = (ts_end   + jacosub->shift) * 100 / jacosub->timeres;
>      *start    = ts_start;
> -    *duration = ts_start + ts_end;
> +    *duration = ts_end - ts_start;
>      return buf + len;
>  }
>
> --
> 2.20.1

Breaks fate-sub-jacosub

Carl Eugen

TEST    sub-jacosub
--- ./tests/ref/fate/sub-jacosub        2018-06-13 12:01:53.103787400 +0200
+++ tests/data/fate/sub-jacosub 2019-02-13 00:39:29.537974964 +0100
@@ -10,14 +10,14 @@

 [Events]
 Format: Layer, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text
-Dialogue: 0,0:00:00.12,0:00:04.36,Default,,0,0,0,,{\an5}JACOsub\N\NThis
script demonstrates some of the capabilities of JACOsub.
-Dialogue: 0,0:00:04.12,0:00:14.86,Default,,0,0,0,,{\an8}Text may be
positioned at the top,
-Dialogue: 0,0:00:05.12,0:00:17.46,Default,,0,0,0,,{\an5}middle,
-Dialogue: 0,0:00:06.12,0:00:20.06,Default,,0,0,0,,{\an2}or bottom of
the screen.
-Dialogue: 0,0:00:08.12,0:00:27.36,Default,,0,0,0,,{\an5}{this is a
comment} (And, you just saw, {another comment} timing ranges for
different lines of text.
-Dialogue: 0,0:00:11.12,0:00:35.86,Default,,0,0,0,,{\an1}Within margin
constraints\Nthat you set, text may be\Nleft justified,
-Dialogue: 0,0:00:13.62,0:00:42.11,Default,,0,0,0,,{\an2}{the JC is
redundant - it's the default}center\Njustified,
-Dialogue: 0,0:00:14.87,0:00:45.86,Default,,0,0,0,,{\an3}and
also\Nright justified.
-Dialogue: 0,0:00:22.42,0:01:12.76,Default,,0,0,0,,Text may appear in
different styles\N(Normal, {\b1}Bold{\r}, {\i1}Italic{\r})
-Dialogue: 0,0:01:16.12,0:03:53.36,Default,,0,0,0,,{\an5}\N\NAt that
time, you may press any key to return to the Editor.
-Dialogue: 0,0:01:16.12,0:03:53.36,Default,,0,0,0,,OK, this script
will be finished when the screen goes blank.
+Dialogue: 0,0:00:00.12,0:00:04.12,Default,,0,0,0,,{\an5}JACOsub\N\NThis
script demonstrates some of the capabilities of JACOsub.
+Dialogue: 0,0:00:04.12,0:00:06.62,Default,,0,0,0,,{\an8}Text may be
positioned at the top,
+Dialogue: 0,0:00:05.12,0:00:07.22,Default,,0,0,0,,{\an5}middle,
+Dialogue: 0,0:00:06.12,0:00:07.82,Default,,0,0,0,,{\an2}or bottom of
the screen.
+Dialogue: 0,0:00:08.12,0:00:11.12,Default,,0,0,0,,{\an5}{this is a
comment} (And, you just saw, {another comment} timing ranges for
different lines of text.
+Dialogue: 0,0:00:11.12,0:00:13.62,Default,,0,0,0,,{\an1}Within margin
constraints\Nthat you set, text may be\Nleft justified,
+Dialogue: 0,0:00:13.62,0:00:14.87,Default,,0,0,0,,{\an2}{the JC is
redundant - it's the default}center\Njustified,
+Dialogue: 0,0:00:14.87,0:00:16.12,Default,,0,0,0,,{\an3}and
also\Nright justified.
+Dialogue: 0,0:00:22.42,0:00:27.92,Default,,0,0,0,,Text may appear in
different styles\N(Normal, {\b1}Bold{\r}, {\i1}Italic{\r})
+Dialogue: 0,0:01:16.12,0:01:21.12,Default,,0,0,0,,{\an5}\N\NAt that
time, you may press any key to return to the Editor.
+Dialogue: 0,0:01:16.12,0:01:21.12,Default,,0,0,0,,OK, this script
will be finished when the screen goes blank.
Test sub-jacosub failed. Look at tests/data/fate/sub-jacosub.err for details.
make: *** [fate-sub-jacosub] Error 1


More information about the ffmpeg-devel mailing list