Browse Source

lavf/assenc: normalize line endings to \n

Previously, we produced output with either \r\n or mixed line endings.
This was undesirable unto itself, but also made working with patches affecting
FATE output particularly challenging, especially via the mailing list.

Everything that consumes the SSA/ASS format is line-ending-agnostic,
so \n is selected to simplify git/ML usage in FATE.

Extra \r characters at the end of a packet are dropped. These are always
ignored by the renderer anyway.
rcombs 1 year ago
parent
commit
7bf1b9b357

+ 0 - 1
.gitattributes

@@ -1,2 +1 @@
 *.pnm -diff -text
 *.pnm -diff -text
-tests/ref/fate/sub-scc eol=crlf

+ 13 - 9
libavformat/assenc.c

@@ -21,6 +21,7 @@
 
 
 #include "libavutil/avstring.h"
 #include "libavutil/avstring.h"
 #include "avformat.h"
 #include "avformat.h"
+#include "avio_internal.h"
 #include "internal.h"
 #include "internal.h"
 #include "mux.h"
 #include "mux.h"
 
 
@@ -70,13 +71,11 @@ static int write_header(AVFormatContext *s)
                 ass->trailer = trailer;
                 ass->trailer = trailer;
         }
         }
 
 
-        header_size = av_strnlen(par->extradata, header_size);
-        avio_write(s->pb, par->extradata, header_size);
-        if (header_size && par->extradata[header_size - 1] != '\n')
-            avio_write(s->pb, "\r\n", 2);
+        ffio_write_lines(s->pb, par->extradata, header_size, NULL);
+
         ass->ssa_mode = !strstr(par->extradata, "\n[V4+ Styles]");
         ass->ssa_mode = !strstr(par->extradata, "\n[V4+ Styles]");
         if (!strstr(par->extradata, "\n[Events]"))
         if (!strstr(par->extradata, "\n[Events]"))
-            avio_printf(s->pb, "[Events]\r\nFormat: %s, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text\r\n",
+            avio_printf(s->pb, "[Events]\nFormat: %s, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text\n",
                         ass->ssa_mode ? "Marked" : "Layer");
                         ass->ssa_mode ? "Marked" : "Layer");
     }
     }
 
 
@@ -96,7 +95,7 @@ static void purge_dialogues(AVFormatContext *s, int force)
                    ass->expected_readorder, dialogue->readorder);
                    ass->expected_readorder, dialogue->readorder);
             ass->expected_readorder = dialogue->readorder;
             ass->expected_readorder = dialogue->readorder;
         }
         }
-        avio_print(s->pb, "Dialogue: ", dialogue->line, "\r\n");
+        avio_print(s->pb, "Dialogue: ", dialogue->line, "\n");
         if (dialogue == ass->last_added_dialogue)
         if (dialogue == ass->last_added_dialogue)
             ass->last_added_dialogue = next;
             ass->last_added_dialogue = next;
         av_freep(&dialogue->line);
         av_freep(&dialogue->line);
@@ -158,6 +157,7 @@ static int write_packet(AVFormatContext *s, AVPacket *pkt)
     ASSContext *ass = s->priv_data;
     ASSContext *ass = s->priv_data;
 
 
     long int layer;
     long int layer;
+    int text_len;
     char *p = pkt->data;
     char *p = pkt->data;
     int64_t start = pkt->pts;
     int64_t start = pkt->pts;
     int64_t end   = start + pkt->duration;
     int64_t end   = start + pkt->duration;
@@ -188,9 +188,13 @@ static int write_packet(AVFormatContext *s, AVPacket *pkt)
     if (hh1 > 9) hh1 = 9, mm1 = 59, ss1 = 59, ms1 = 99;
     if (hh1 > 9) hh1 = 9, mm1 = 59, ss1 = 59, ms1 = 99;
     if (hh2 > 9) hh2 = 9, mm2 = 59, ss2 = 59, ms2 = 99;
     if (hh2 > 9) hh2 = 9, mm2 = 59, ss2 = 59, ms2 = 99;
 
 
-    dialogue->line = av_asprintf("%s%ld,%d:%02d:%02d.%02d,%d:%02d:%02d.%02d,%s",
+    text_len = strlen(p);
+    while (text_len > 0 && p[text_len - 1] == '\r' || p[text_len - 1] == '\n')
+        text_len--;
+
+    dialogue->line = av_asprintf("%s%ld,%d:%02d:%02d.%02d,%d:%02d:%02d.%02d,%.*s",
                                  ass->ssa_mode ? "Marked=" : "",
                                  ass->ssa_mode ? "Marked=" : "",
-                                 layer, hh1, mm1, ss1, ms1, hh2, mm2, ss2, ms2, p);
+                                 layer, hh1, mm1, ss1, ms1, hh2, mm2, ss2, ms2, text_len, p);
     if (!dialogue->line) {
     if (!dialogue->line) {
         av_free(dialogue);
         av_free(dialogue);
         return AVERROR(ENOMEM);
         return AVERROR(ENOMEM);
@@ -208,7 +212,7 @@ static int write_trailer(AVFormatContext *s)
     purge_dialogues(s, 1);
     purge_dialogues(s, 1);
 
 
     if (ass->trailer) {
     if (ass->trailer) {
-        avio_write(s->pb, ass->trailer, ass->trailer_size);
+        ffio_write_lines(s->pb, ass->trailer, ass->trailer_size, NULL);
     }
     }
 
 
     return 0;
     return 0;

+ 47 - 47
tests/ref/fate/sub-aqtitle

@@ -1,47 +1,47 @@
-[Script Info]
-; Script generated by FFmpeg/Lavc
-ScriptType: v4.00+
-PlayResX: 384
-PlayResY: 288
-ScaledBorderAndShadow: yes
-YCbCr Matrix: None
-
-[V4+ Styles]
-Format: Name, Fontname, Fontsize, PrimaryColour, SecondaryColour, OutlineColour, BackColour, Bold, Italic, Underline, StrikeOut, ScaleX, ScaleY, Spacing, Angle, BorderStyle, Outline, Shadow, Alignment, MarginL, MarginR, MarginV, Encoding
-Style: Default,Arial,16,&Hffffff,&Hffffff,&H0,&H0,0,0,0,0,100,100,0,0,1,1,0,2,10,10,10,1
-
-[Events]
-Format: Layer, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text
-Dialogue: 0,0:03:29.92,0:03:31.28,Default,,0,0,0,,Dougu?
-Dialogue: 0,0:03:33.36,0:03:35.76,Default,,0,0,0,,Zlato, jseš v pořádku?
-Dialogue: 0,0:03:37.72,0:03:39.12,Default,,0,0,0,,Měl jsi sny.
-Dialogue: 0,0:03:41.44,0:03:43.32,Default,,0,0,0,,Byly o Marsu?
-Dialogue: 0,0:03:48.92,0:03:50.52,Default,,0,0,0,,Je to lepší?
-Dialogue: 0,0:03:53.12,0:03:54.72,Default,,0,0,0,,Chudinko moje.
-Dialogue: 0,0:03:55.76,0:03:58.08,Default,,0,0,0,,Začíná to být\Nposedlost.
-Dialogue: 0,0:04:05.92,0:04:07.16,Default,,0,0,0,,Byla tam i ona?
-Dialogue: 0,0:04:09.12,0:04:10.48,Default,,0,0,0,,Kdo?
-Dialogue: 0,0:04:12.44,0:04:15.16,Default,,0,0,0,,Ta, o které jsi mi vyprávěl.\NTa bruneta.
-Dialogue: 0,0:04:16.32,0:04:17.52,Default,,0,0,0,,Lori.
-Dialogue: 0,0:04:20.32,0:04:23.16,Default,,0,0,0,,Nemůžu uvěřit\Nže žárlíš na sen.
-Dialogue: 0,0:04:23.84,0:04:26.60,Default,,0,0,0,,- Kdo je ona?\N- Nikdo.
-Dialogue: 0,0:04:26.60,0:04:28.80,Default,,0,0,0,,"Nikdo"? Jak se jmenuje?
-Dialogue: 0,0:04:28.80,0:04:30.24,Default,,0,0,0,,Nevím.
-Dialogue: 0,0:04:31.52,0:04:33.20,Default,,0,0,0,,- Pověz!\N- Nevím!
-Dialogue: 0,0:04:33.20,0:04:35.48,Default,,0,0,0,,Radši bys mi to měl říct!
-Dialogue: 0,0:04:35.48,0:04:39.16,Default,,0,0,0,,To není legrace Dougu.\NZdá se ti o ní každou noc.
-Dialogue: 0,0:04:39.16,0:04:41.84,Default,,0,0,0,,Ale vždy se ráno probudím.
-Dialogue: 0,0:04:41.84,0:04:43.28,Default,,0,0,0,,Nech mě být!
-Dialogue: 0,0:04:45.72,0:04:47.76,Default,,0,0,0,,No tak, zlato.
-Dialogue: 0,0:04:47.76,0:04:50.72,Default,,0,0,0,,Ty víš, že jsi dívkou\Nmých snů.
-Dialogue: 0,0:04:50.72,0:04:52.40,Default,,0,0,0,,Myslíš to vážně?
-Dialogue: 0,0:04:53.48,0:04:55.32,Default,,0,0,0,,To víš že ano.
-Dialogue: 0,0:05:04.40,0:05:07.20,Default,,0,0,0,,Dám ti něco\No čem budeš snít.
-Dialogue: 0,0:05:16.76,0:05:16.92,Default,,0,0,0,,Premiér se útoku ubránil\Na řekl, že zbraně založené na vesmírných...
-Dialogue: 0,0:05:16.92,0:05:20.36,Default,,0,0,0,,Premiér se útoku ubránil\Na řekl, že zbraně založené na vesmírných...
-Dialogue: 0,0:05:20.36,0:05:24.36,Default,,0,0,0,,jsou naše jediná obrana proti\Npočetní převaze z jižního bloku.
-Dialogue: 0,0:05:24.36,0:05:26.76,Default,,0,0,0,,A další násilí na Marsu...
-Dialogue: 0,0:05:26.76,1:44:16.00,Default,,0,0,0,,[...]
-Dialogue: 0,1:44:16.00,1:44:17.60,Default,,0,0,0,,Co se děje?
-Dialogue: 0,1:44:17.60,1:44:21.28,Default,,0,0,0,,Měl jsem jenom hroznou představu.\NCo když tohle je jenom sen?
-Dialogue: 0,1:44:22.76,1:44:25.68,Default,,0,0,0,,Tak mi dej ryhcle pusu\Nnež se probudíš.
+[Script Info]
+; Script generated by FFmpeg/Lavc
+ScriptType: v4.00+
+PlayResX: 384
+PlayResY: 288
+ScaledBorderAndShadow: yes
+YCbCr Matrix: None
+
+[V4+ Styles]
+Format: Name, Fontname, Fontsize, PrimaryColour, SecondaryColour, OutlineColour, BackColour, Bold, Italic, Underline, StrikeOut, ScaleX, ScaleY, Spacing, Angle, BorderStyle, Outline, Shadow, Alignment, MarginL, MarginR, MarginV, Encoding
+Style: Default,Arial,16,&Hffffff,&Hffffff,&H0,&H0,0,0,0,0,100,100,0,0,1,1,0,2,10,10,10,1
+
+[Events]
+Format: Layer, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text
+Dialogue: 0,0:03:29.92,0:03:31.28,Default,,0,0,0,,Dougu?
+Dialogue: 0,0:03:33.36,0:03:35.76,Default,,0,0,0,,Zlato, jseš v pořádku?
+Dialogue: 0,0:03:37.72,0:03:39.12,Default,,0,0,0,,Měl jsi sny.
+Dialogue: 0,0:03:41.44,0:03:43.32,Default,,0,0,0,,Byly o Marsu?
+Dialogue: 0,0:03:48.92,0:03:50.52,Default,,0,0,0,,Je to lepší?
+Dialogue: 0,0:03:53.12,0:03:54.72,Default,,0,0,0,,Chudinko moje.
+Dialogue: 0,0:03:55.76,0:03:58.08,Default,,0,0,0,,Začíná to být\Nposedlost.
+Dialogue: 0,0:04:05.92,0:04:07.16,Default,,0,0,0,,Byla tam i ona?
+Dialogue: 0,0:04:09.12,0:04:10.48,Default,,0,0,0,,Kdo?
+Dialogue: 0,0:04:12.44,0:04:15.16,Default,,0,0,0,,Ta, o které jsi mi vyprávěl.\NTa bruneta.
+Dialogue: 0,0:04:16.32,0:04:17.52,Default,,0,0,0,,Lori.
+Dialogue: 0,0:04:20.32,0:04:23.16,Default,,0,0,0,,Nemůžu uvěřit\Nže žárlíš na sen.
+Dialogue: 0,0:04:23.84,0:04:26.60,Default,,0,0,0,,- Kdo je ona?\N- Nikdo.
+Dialogue: 0,0:04:26.60,0:04:28.80,Default,,0,0,0,,"Nikdo"? Jak se jmenuje?
+Dialogue: 0,0:04:28.80,0:04:30.24,Default,,0,0,0,,Nevím.
+Dialogue: 0,0:04:31.52,0:04:33.20,Default,,0,0,0,,- Pověz!\N- Nevím!
+Dialogue: 0,0:04:33.20,0:04:35.48,Default,,0,0,0,,Radši bys mi to měl říct!
+Dialogue: 0,0:04:35.48,0:04:39.16,Default,,0,0,0,,To není legrace Dougu.\NZdá se ti o ní každou noc.
+Dialogue: 0,0:04:39.16,0:04:41.84,Default,,0,0,0,,Ale vždy se ráno probudím.
+Dialogue: 0,0:04:41.84,0:04:43.28,Default,,0,0,0,,Nech mě být!
+Dialogue: 0,0:04:45.72,0:04:47.76,Default,,0,0,0,,No tak, zlato.
+Dialogue: 0,0:04:47.76,0:04:50.72,Default,,0,0,0,,Ty víš, že jsi dívkou\Nmých snů.
+Dialogue: 0,0:04:50.72,0:04:52.40,Default,,0,0,0,,Myslíš to vážně?
+Dialogue: 0,0:04:53.48,0:04:55.32,Default,,0,0,0,,To víš že ano.
+Dialogue: 0,0:05:04.40,0:05:07.20,Default,,0,0,0,,Dám ti něco\No čem budeš snít.
+Dialogue: 0,0:05:16.76,0:05:16.92,Default,,0,0,0,,Premiér se útoku ubránil\Na řekl, že zbraně založené na vesmírných...
+Dialogue: 0,0:05:16.92,0:05:20.36,Default,,0,0,0,,Premiér se útoku ubránil\Na řekl, že zbraně založené na vesmírných...
+Dialogue: 0,0:05:20.36,0:05:24.36,Default,,0,0,0,,jsou naše jediná obrana proti\Npočetní převaze z jižního bloku.
+Dialogue: 0,0:05:24.36,0:05:26.76,Default,,0,0,0,,A další násilí na Marsu...
+Dialogue: 0,0:05:26.76,1:44:16.00,Default,,0,0,0,,[...]
+Dialogue: 0,1:44:16.00,1:44:17.60,Default,,0,0,0,,Co se děje?
+Dialogue: 0,1:44:17.60,1:44:21.28,Default,,0,0,0,,Měl jsem jenom hroznou představu.\NCo když tohle je jenom sen?
+Dialogue: 0,1:44:22.76,1:44:25.68,Default,,0,0,0,,Tak mi dej ryhcle pusu\Nnež se probudíš.

+ 62 - 62
tests/ref/fate/sub-ass-to-ass-transcode

@@ -1,62 +1,62 @@
-[Script Info]
-; Script generated by Aegisub 3.2.2
-; http://www.aegisub.org/
-Title: Default Aegisub file
-ScriptType: v4.00+
-WrapStyle: 0
-PlayResX: 1280
-PlayResY: 720
-ScaledBorderAndShadow: yes
-Video Zoom: 4
-Video Colorspace: BT.601
-Video Aspect Ratio: c1.77778
-YCbCr Matrix: TV.709
-
-[Aegisub Project Garbage]
-Automation Scripts: ~../../../../Aegisub autoload folder/New Folder/cmconv.lua
-Last Style Storage: Default1
-Audio File: kamisama05-premux.mkv
-Video File: kamisama05-premux.mkv
-Keyframes File: ../Desktop/Keyframe Raws/kamisama05-wr.keyframes.txt
-Video AR Mode: 4
-Video AR Value: 1.777778
-Video Zoom Percent: 0.875000
-Video Position: 306
-
-[V4+ Styles]
-Format: Name, Fontname, Fontsize, PrimaryColour, SecondaryColour, OutlineColour, BackColour, Bold, Italic, Underline, StrikeOut, ScaleX, ScaleY, Spacing, Angle, BorderStyle, Outline, Shadow, Alignment, MarginL, MarginR, MarginV, Encoding
-Style: Default,Luxi Sub Sans,48,&H00F9FDFB,&H00003FFF,&H0A093346,&HDC0A0E10,-1,0,0,0,99,100,0,0,1,2.5,1,2,110,110,40,0
-Style: Default2,Luxi Sub Sans,48,&H00F9FDFB,&H00003FFF,&H0A093346,&HDC0A0E10,-1,0,0,0,99,100,0,0,1,2.5,1,2,60,60,40,0
-Style: Default - Alt,Luxi Sub Sans,48,&H00F9FDFB,&H00003FFF,&H0A673308,&HDC0A0E10,-1,0,0,0,99,100,0,0,1,2.5,1,8,110,110,40,0
-Style: OP2-Romaji-furigana,Chinacat,21,&H003B1A9A,&H00CBCB9F,&H00FFFFFF,&H00000000,0,0,0,0,96,114,0,0,1,2.5,0,8,40,40,30,1
-Style: OP1-Eng-furigana,Chinacat,20,&H003B1A9A,&H000019FF,&H00FFFFFF,&H007857D5,0,0,0,0,96,114,0.5,0,1,2.5,0.05,2,40,40,30,1
-Style: OP1-Romaji-furigana,Chinacat,21,&H003B1A9A,&H00CBCB9F,&H00FFFFFF,&H00000000,0,0,0,0,96,114,0,0,1,2.5,0,8,40,40,30,1
-Style: OP1-Romaji,Chinacat,42,&H003B1A9A,&H00CBCB9F,&H00FFFFFF,&H00000000,0,0,0,0,96,114,0,0,1,5,0,8,40,40,30,1
-Style: OP1-Eng,Chinacat,39,&H003B1A9A,&H000019FF,&H00FFFFFF,&H007857D5,0,0,0,0,96,114,0.5,0,1,5,0.1,2,40,40,30,1
-Style: OP2-Romaji,Chinacat,42,&H003B1A9A,&H00CBCB9F,&H00FFFFFF,&H00000000,0,0,0,0,96,114,0,0,1,5,0,8,40,40,30,1
-Style: ED1-Romaji,Agency FB,44,&H00000000,&H00EBDCCD,&H00FFFFFF,&H00000000,0,0,0,0,98,115,0,0,1,3,0,7,40,40,30,1
-Style: ED1-Eng,ClaudeSansPlain,40,&H00000000,&H00EBDCCD,&H00FFFFFF,&H007857D5,0,0,0,0,90,115,0,0,1,4,0,3,40,40,30,1
-Style: ED1-Eng-furigana,ClaudeSansPlain,20,&H00000000,&H00EBDCCD,&H00FFFFFF,&H007857D5,0,0,0,0,90,115,0,0,1,2,0,3,40,40,30,1
-Style: ED1-Romaji-furigana,Agency FB,22,&H00000000,&H00EBDCCD,&H00FFFFFF,&H00000000,0,0,0,0,98,115,0,0,1,1.5,0,7,40,40,30,1
-Style: Signs,Arial,46,&H00FFFFFF,&H000000FF,&H00000000,&H00000000,0,0,0,0,100,100,0,0,1,0,0,5,10,10,10,1
-
-[Events]
-Format: Layer, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text
-Dialogue: 3,0:00:12.74,0:00:13.49,OP1-Romaji,,0,0,0,fx,{\an5\pos(352,54)\move(352,-101,352,54,0,400)\bord3\blur2\2c&HD4B5CB&\fad(300,0)}i
-Dialogue: 3,0:00:12.78,0:00:14.28,OP1-Romaji,,0,0,0,fx,{\an5\pos(365,54)\move(365,-101,365,54,0,400)\bord3\blur2\2c&HD4B5CB&\fad(300,0)}t
-Dialogue: 3,0:00:12.78,0:00:14.28,OP1-Romaji,,0,0,0,fx,{\an5\pos(383,54)\move(383,-101,383,54,0,400)\bord3\blur2\2c&HD4B5CB&\fad(300,0)}t
-Dialogue: 3,0:00:12.78,0:00:14.28,OP1-Romaji,,0,0,0,fx,{\an5\pos(402,54)\move(402,-101,402,54,0,400)\bord3\blur2\2c&HD4B5CB&\fad(300,0)}a
-Dialogue: 3,0:00:12.78,0:00:14.28,OP1-Romaji,,0,0,0,fx,{\an5\pos(416,54)\move(416,-101,416,54,0,400)\bord3\blur2\2c&HD4B5CB&\fad(300,0)}i
-Dialogue: 3,0:00:12.78,0:00:15.11,OP1-Romaji,,0,0,0,fx,{\an5\pos(438,54)\move(438,-101,438,54,0,400)\bord3\blur2\2c&HD4B5CB&\fad(300,0)}k
-Dialogue: 3,0:00:12.78,0:00:15.11,OP1-Romaji,,0,0,0,fx,{\an5\pos(455,54)\move(455,-101,455,54,0,400)\bord3\blur2\2c&HD4B5CB&\fad(300,0)}o
-Dialogue: 10,0:23:52.82,0:23:54.80,Default,,0,0,100,,Wing Fling Hazard!
-
-
-[Aegisub Extradata]
-Data: 5,a-mo,e{"uuid"#3A"3386f06e-e9b4-40e2-8412-3fb75759e716"#2C"originalText"#3A"{\\fs65\\xbord4\\fsp2\\blur0.6\\c&H454C38&\\fneveryone\\b1\\3c&H454C38&\\frz20.87\\pos(241.27#2C441.97)\\fscy101.1\\fscx101.1\\bord1\\1a&HFF&\\3a&HFF&\\4a&HFF&\\t(0#2C233#2C1#2C\\1a&HFF&\\3a&H00&\\4a&H00&)}Oh"}
-Data: 6,a-mo,e{"uuid"#3A"599d1dca-62d7-4732-9983-729119494e29"#2C"originalText"#3A"{\\fs65\\xbord4\\fsp2\\blur0.6\\c&H454C38&\\fneveryone\\b1\\3c&H454C38&\\frz20.87\\pos(251.27#2C441.97)\\fscy101.1\\fscx101.1\\bord1\\1a&HFF&\\3a&HFF&\\4a&HFF&\\t(0#2C233#2C1#2C\\1a&HFF&\\3a&H00&\\4a&H00&)}Oh"}
-Data: 7,a-mo,e{"uuid"#3A"6f1637e2-25f1-44e5-98d8-0e63a7b72c10"#2C"originalText"#3A"{\\fs65\\xbord4\\fsp2\\blur0.6\\c&H454C38&\\fneveryone\\b1\\3c&H454C38&\\frz20.87\\pos(246.27#2C435.97)\\fscy101.1\\fscx101.1\\bord1\\1a&HFF&\\3a&HFF&\\4a&HFF&\\t(0#2C233#2C1#2C\\1a&HFF&\\3a&H00&\\4a&H00&)}Oh"}
-Data: 8,a-mo,e{"uuid"#3A"4d9840e0-62db-4bb4-b6a3-87f376a9009c"#2C"originalText"#3A"{\\fs65\\xbord4\\fsp2\\blur0.7\\c&H454C38&\\fneveryone\\b1\\3c&H454C38&\\frz20.87\\pos(244.27#2C440.97)\\fscy101.1\\fscx101.1\\bord3.2\\alpha&HFF&\\t(0#2C233#2C1#2C\\alpha&H00&)}Oh"}
-Data: 9,a-mo,e{"uuid"#3A"65a47c5f-8cc5-403f-9b1d-fb1912311891"#2C"originalText"#3A"{\\fs65\\xbord4\\fsp2\\blur1\\c&H8FE2CF&\\fneveryone\\b1\\frz20.87\\pos(244.27#2C440.97)\\fscy101.1\\fscx101.1\\bord0\\alpha&HFF&\\t(0#2C233#2C1#2C\\alpha&H00&)}Oh"}
-
-
+[Script Info]
+; Script generated by Aegisub 3.2.2
+; http://www.aegisub.org/
+Title: Default Aegisub file
+ScriptType: v4.00+
+WrapStyle: 0
+PlayResX: 1280
+PlayResY: 720
+ScaledBorderAndShadow: yes
+Video Zoom: 4
+Video Colorspace: BT.601
+Video Aspect Ratio: c1.77778
+YCbCr Matrix: TV.709
+
+[Aegisub Project Garbage]
+Automation Scripts: ~../../../../Aegisub autoload folder/New Folder/cmconv.lua
+Last Style Storage: Default1
+Audio File: kamisama05-premux.mkv
+Video File: kamisama05-premux.mkv
+Keyframes File: ../Desktop/Keyframe Raws/kamisama05-wr.keyframes.txt
+Video AR Mode: 4
+Video AR Value: 1.777778
+Video Zoom Percent: 0.875000
+Video Position: 306
+
+[V4+ Styles]
+Format: Name, Fontname, Fontsize, PrimaryColour, SecondaryColour, OutlineColour, BackColour, Bold, Italic, Underline, StrikeOut, ScaleX, ScaleY, Spacing, Angle, BorderStyle, Outline, Shadow, Alignment, MarginL, MarginR, MarginV, Encoding
+Style: Default,Luxi Sub Sans,48,&H00F9FDFB,&H00003FFF,&H0A093346,&HDC0A0E10,-1,0,0,0,99,100,0,0,1,2.5,1,2,110,110,40,0
+Style: Default2,Luxi Sub Sans,48,&H00F9FDFB,&H00003FFF,&H0A093346,&HDC0A0E10,-1,0,0,0,99,100,0,0,1,2.5,1,2,60,60,40,0
+Style: Default - Alt,Luxi Sub Sans,48,&H00F9FDFB,&H00003FFF,&H0A673308,&HDC0A0E10,-1,0,0,0,99,100,0,0,1,2.5,1,8,110,110,40,0
+Style: OP2-Romaji-furigana,Chinacat,21,&H003B1A9A,&H00CBCB9F,&H00FFFFFF,&H00000000,0,0,0,0,96,114,0,0,1,2.5,0,8,40,40,30,1
+Style: OP1-Eng-furigana,Chinacat,20,&H003B1A9A,&H000019FF,&H00FFFFFF,&H007857D5,0,0,0,0,96,114,0.5,0,1,2.5,0.05,2,40,40,30,1
+Style: OP1-Romaji-furigana,Chinacat,21,&H003B1A9A,&H00CBCB9F,&H00FFFFFF,&H00000000,0,0,0,0,96,114,0,0,1,2.5,0,8,40,40,30,1
+Style: OP1-Romaji,Chinacat,42,&H003B1A9A,&H00CBCB9F,&H00FFFFFF,&H00000000,0,0,0,0,96,114,0,0,1,5,0,8,40,40,30,1
+Style: OP1-Eng,Chinacat,39,&H003B1A9A,&H000019FF,&H00FFFFFF,&H007857D5,0,0,0,0,96,114,0.5,0,1,5,0.1,2,40,40,30,1
+Style: OP2-Romaji,Chinacat,42,&H003B1A9A,&H00CBCB9F,&H00FFFFFF,&H00000000,0,0,0,0,96,114,0,0,1,5,0,8,40,40,30,1
+Style: ED1-Romaji,Agency FB,44,&H00000000,&H00EBDCCD,&H00FFFFFF,&H00000000,0,0,0,0,98,115,0,0,1,3,0,7,40,40,30,1
+Style: ED1-Eng,ClaudeSansPlain,40,&H00000000,&H00EBDCCD,&H00FFFFFF,&H007857D5,0,0,0,0,90,115,0,0,1,4,0,3,40,40,30,1
+Style: ED1-Eng-furigana,ClaudeSansPlain,20,&H00000000,&H00EBDCCD,&H00FFFFFF,&H007857D5,0,0,0,0,90,115,0,0,1,2,0,3,40,40,30,1
+Style: ED1-Romaji-furigana,Agency FB,22,&H00000000,&H00EBDCCD,&H00FFFFFF,&H00000000,0,0,0,0,98,115,0,0,1,1.5,0,7,40,40,30,1
+Style: Signs,Arial,46,&H00FFFFFF,&H000000FF,&H00000000,&H00000000,0,0,0,0,100,100,0,0,1,0,0,5,10,10,10,1
+
+[Events]
+Format: Layer, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text
+Dialogue: 3,0:00:12.74,0:00:13.49,OP1-Romaji,,0,0,0,fx,{\an5\pos(352,54)\move(352,-101,352,54,0,400)\bord3\blur2\2c&HD4B5CB&\fad(300,0)}i
+Dialogue: 3,0:00:12.78,0:00:14.28,OP1-Romaji,,0,0,0,fx,{\an5\pos(365,54)\move(365,-101,365,54,0,400)\bord3\blur2\2c&HD4B5CB&\fad(300,0)}t
+Dialogue: 3,0:00:12.78,0:00:14.28,OP1-Romaji,,0,0,0,fx,{\an5\pos(383,54)\move(383,-101,383,54,0,400)\bord3\blur2\2c&HD4B5CB&\fad(300,0)}t
+Dialogue: 3,0:00:12.78,0:00:14.28,OP1-Romaji,,0,0,0,fx,{\an5\pos(402,54)\move(402,-101,402,54,0,400)\bord3\blur2\2c&HD4B5CB&\fad(300,0)}a
+Dialogue: 3,0:00:12.78,0:00:14.28,OP1-Romaji,,0,0,0,fx,{\an5\pos(416,54)\move(416,-101,416,54,0,400)\bord3\blur2\2c&HD4B5CB&\fad(300,0)}i
+Dialogue: 3,0:00:12.78,0:00:15.11,OP1-Romaji,,0,0,0,fx,{\an5\pos(438,54)\move(438,-101,438,54,0,400)\bord3\blur2\2c&HD4B5CB&\fad(300,0)}k
+Dialogue: 3,0:00:12.78,0:00:15.11,OP1-Romaji,,0,0,0,fx,{\an5\pos(455,54)\move(455,-101,455,54,0,400)\bord3\blur2\2c&HD4B5CB&\fad(300,0)}o
+Dialogue: 10,0:23:52.82,0:23:54.80,Default,,0,0,100,,Wing Fling Hazard!
+
+
+[Aegisub Extradata]
+Data: 5,a-mo,e{"uuid"#3A"3386f06e-e9b4-40e2-8412-3fb75759e716"#2C"originalText"#3A"{\\fs65\\xbord4\\fsp2\\blur0.6\\c&H454C38&\\fneveryone\\b1\\3c&H454C38&\\frz20.87\\pos(241.27#2C441.97)\\fscy101.1\\fscx101.1\\bord1\\1a&HFF&\\3a&HFF&\\4a&HFF&\\t(0#2C233#2C1#2C\\1a&HFF&\\3a&H00&\\4a&H00&)}Oh"}
+Data: 6,a-mo,e{"uuid"#3A"599d1dca-62d7-4732-9983-729119494e29"#2C"originalText"#3A"{\\fs65\\xbord4\\fsp2\\blur0.6\\c&H454C38&\\fneveryone\\b1\\3c&H454C38&\\frz20.87\\pos(251.27#2C441.97)\\fscy101.1\\fscx101.1\\bord1\\1a&HFF&\\3a&HFF&\\4a&HFF&\\t(0#2C233#2C1#2C\\1a&HFF&\\3a&H00&\\4a&H00&)}Oh"}
+Data: 7,a-mo,e{"uuid"#3A"6f1637e2-25f1-44e5-98d8-0e63a7b72c10"#2C"originalText"#3A"{\\fs65\\xbord4\\fsp2\\blur0.6\\c&H454C38&\\fneveryone\\b1\\3c&H454C38&\\frz20.87\\pos(246.27#2C435.97)\\fscy101.1\\fscx101.1\\bord1\\1a&HFF&\\3a&HFF&\\4a&HFF&\\t(0#2C233#2C1#2C\\1a&HFF&\\3a&H00&\\4a&H00&)}Oh"}
+Data: 8,a-mo,e{"uuid"#3A"4d9840e0-62db-4bb4-b6a3-87f376a9009c"#2C"originalText"#3A"{\\fs65\\xbord4\\fsp2\\blur0.7\\c&H454C38&\\fneveryone\\b1\\3c&H454C38&\\frz20.87\\pos(244.27#2C440.97)\\fscy101.1\\fscx101.1\\bord3.2\\alpha&HFF&\\t(0#2C233#2C1#2C\\alpha&H00&)}Oh"}
+Data: 9,a-mo,e{"uuid"#3A"65a47c5f-8cc5-403f-9b1d-fb1912311891"#2C"originalText"#3A"{\\fs65\\xbord4\\fsp2\\blur1\\c&H8FE2CF&\\fneveryone\\b1\\frz20.87\\pos(244.27#2C440.97)\\fscy101.1\\fscx101.1\\bord0\\alpha&HFF&\\t(0#2C233#2C1#2C\\alpha&H00&)}Oh"}
+
+

+ 16 - 16
tests/ref/fate/sub-cc

@@ -1,16 +1,16 @@
-[Script Info]
-; Script generated by FFmpeg/Lavc
-ScriptType: v4.00+
-PlayResX: 384
-PlayResY: 288
-ScaledBorderAndShadow: yes
-YCbCr Matrix: None
-
-[V4+ Styles]
-Format: Name, Fontname, Fontsize, PrimaryColour, SecondaryColour, OutlineColour, BackColour, Bold, Italic, Underline, StrikeOut, ScaleX, ScaleY, Spacing, Angle, BorderStyle, Outline, Shadow, Alignment, MarginL, MarginR, MarginV, Encoding
-Style: Default,Monospace,16,&Hffffff,&Hffffff,&H0,&H0,0,0,0,0,100,100,0,0,3,1,0,2,10,10,10,1
-
-[Events]
-Format: Layer, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text
-Dialogue: 0,0:00:00.83,0:00:02.97,Default,,0,0,0,,{\an7}{\pos(38,44)}({\i1} inaudible radio chatter{\i0} )
-Dialogue: 0,0:00:02.97,0:00:04.34,Default,,0,0,0,,{\an7}{\pos(38,28)}({\i1} inaudible radio chatter{\i0} )\N{\an7}{\pos(38,44)}>> Safety remains our number one
+[Script Info]
+; Script generated by FFmpeg/Lavc
+ScriptType: v4.00+
+PlayResX: 384
+PlayResY: 288
+ScaledBorderAndShadow: yes
+YCbCr Matrix: None
+
+[V4+ Styles]
+Format: Name, Fontname, Fontsize, PrimaryColour, SecondaryColour, OutlineColour, BackColour, Bold, Italic, Underline, StrikeOut, ScaleX, ScaleY, Spacing, Angle, BorderStyle, Outline, Shadow, Alignment, MarginL, MarginR, MarginV, Encoding
+Style: Default,Monospace,16,&Hffffff,&Hffffff,&H0,&H0,0,0,0,0,100,100,0,0,3,1,0,2,10,10,10,1
+
+[Events]
+Format: Layer, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text
+Dialogue: 0,0:00:00.83,0:00:02.97,Default,,0,0,0,,{\an7}{\pos(38,44)}({\i1} inaudible radio chatter{\i0} )
+Dialogue: 0,0:00:02.97,0:00:04.34,Default,,0,0,0,,{\an7}{\pos(38,28)}({\i1} inaudible radio chatter{\i0} )\N{\an7}{\pos(38,44)}>> Safety remains our number one

+ 22 - 22
tests/ref/fate/sub-cc-realtime

@@ -1,22 +1,22 @@
-[Script Info]
-; Script generated by FFmpeg/Lavc
-ScriptType: v4.00+
-PlayResX: 384
-PlayResY: 288
-ScaledBorderAndShadow: yes
-YCbCr Matrix: None
-
-[V4+ Styles]
-Format: Name, Fontname, Fontsize, PrimaryColour, SecondaryColour, OutlineColour, BackColour, Bold, Italic, Underline, StrikeOut, ScaleX, ScaleY, Spacing, Angle, BorderStyle, Outline, Shadow, Alignment, MarginL, MarginR, MarginV, Encoding
-Style: Default,Monospace,16,&Hffffff,&Hffffff,&H0,&H0,0,0,0,0,100,100,0,0,3,1,0,2,10,10,10,1
-
-[Events]
-Format: Layer, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text
-Dialogue: 0,0:00:00.97,9:59:59.99,Default,,0,0,0,,{\an7}{\pos(38,44)}(
-Dialogue: 0,0:00:01.17,9:59:59.99,Default,,0,0,0,,{\an7}{\pos(38,44)}({\i1} inaudibl
-Dialogue: 0,0:00:01.37,9:59:59.99,Default,,0,0,0,,{\an7}{\pos(38,44)}({\i1} inaudible radio chat
-Dialogue: 0,0:00:01.57,9:59:59.99,Default,,0,0,0,,{\an7}{\pos(38,44)}({\i1} inaudible radio chatter{\i0} )
-Dialogue: 0,0:00:03.10,9:59:59.99,Default,,0,0,0,,{\an7}{\pos(38,28)}({\i1} inaudible radio chatter{\i0} )\N{\an7}{\pos(38,44)}>>
-Dialogue: 0,0:00:03.30,9:59:59.99,Default,,0,0,0,,{\an7}{\pos(38,28)}({\i1} inaudible radio chatter{\i0} )\N{\an7}{\pos(38,44)}>> Safety rema
-Dialogue: 0,0:00:03.50,9:59:59.99,Default,,0,0,0,,{\an7}{\pos(38,28)}({\i1} inaudible radio chatter{\i0} )\N{\an7}{\pos(38,44)}>> Safety remains our numb
-Dialogue: 0,0:00:03.70,9:59:59.99,Default,,0,0,0,,{\an7}{\pos(38,28)}({\i1} inaudible radio chatter{\i0} )\N{\an7}{\pos(38,44)}>> Safety remains our number one
+[Script Info]
+; Script generated by FFmpeg/Lavc
+ScriptType: v4.00+
+PlayResX: 384
+PlayResY: 288
+ScaledBorderAndShadow: yes
+YCbCr Matrix: None
+
+[V4+ Styles]
+Format: Name, Fontname, Fontsize, PrimaryColour, SecondaryColour, OutlineColour, BackColour, Bold, Italic, Underline, StrikeOut, ScaleX, ScaleY, Spacing, Angle, BorderStyle, Outline, Shadow, Alignment, MarginL, MarginR, MarginV, Encoding
+Style: Default,Monospace,16,&Hffffff,&Hffffff,&H0,&H0,0,0,0,0,100,100,0,0,3,1,0,2,10,10,10,1
+
+[Events]
+Format: Layer, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text
+Dialogue: 0,0:00:00.97,9:59:59.99,Default,,0,0,0,,{\an7}{\pos(38,44)}(
+Dialogue: 0,0:00:01.17,9:59:59.99,Default,,0,0,0,,{\an7}{\pos(38,44)}({\i1} inaudibl
+Dialogue: 0,0:00:01.37,9:59:59.99,Default,,0,0,0,,{\an7}{\pos(38,44)}({\i1} inaudible radio chat
+Dialogue: 0,0:00:01.57,9:59:59.99,Default,,0,0,0,,{\an7}{\pos(38,44)}({\i1} inaudible radio chatter{\i0} )
+Dialogue: 0,0:00:03.10,9:59:59.99,Default,,0,0,0,,{\an7}{\pos(38,28)}({\i1} inaudible radio chatter{\i0} )\N{\an7}{\pos(38,44)}>>
+Dialogue: 0,0:00:03.30,9:59:59.99,Default,,0,0,0,,{\an7}{\pos(38,28)}({\i1} inaudible radio chatter{\i0} )\N{\an7}{\pos(38,44)}>> Safety rema
+Dialogue: 0,0:00:03.50,9:59:59.99,Default,,0,0,0,,{\an7}{\pos(38,28)}({\i1} inaudible radio chatter{\i0} )\N{\an7}{\pos(38,44)}>> Safety remains our numb
+Dialogue: 0,0:00:03.70,9:59:59.99,Default,,0,0,0,,{\an7}{\pos(38,28)}({\i1} inaudible radio chatter{\i0} )\N{\an7}{\pos(38,44)}>> Safety remains our number one

+ 17 - 17
tests/ref/fate/sub-cc-scte20

@@ -1,17 +1,17 @@
-[Script Info]
-; Script generated by FFmpeg/Lavc
-ScriptType: v4.00+
-PlayResX: 384
-PlayResY: 288
-ScaledBorderAndShadow: yes
-YCbCr Matrix: None
-
-[V4+ Styles]
-Format: Name, Fontname, Fontsize, PrimaryColour, SecondaryColour, OutlineColour, BackColour, Bold, Italic, Underline, StrikeOut, ScaleX, ScaleY, Spacing, Angle, BorderStyle, Outline, Shadow, Alignment, MarginL, MarginR, MarginV, Encoding
-Style: Default,Monospace,16,&Hffffff,&Hffffff,&H0,&H0,0,0,0,0,100,100,0,0,3,1,0,2,10,10,10,1
-
-[Events]
-Format: Layer, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text
-Dialogue: 0,0:00:00.00,0:00:01.44,Default,,0,0,0,,{\an7}{\pos(48,182)}BESIDES THE 
-Dialogue: 0,0:00:01.43,0:00:03.93,Default,,0,0,0,,{\an7}{\pos(38,166)}\hBESIDES THE \N{\an7}{\pos(38,197)}SPENDING AND THIS, IS THAT CAR 
-Dialogue: 0,0:00:03.94,0:00:06.31,Default,,0,0,0,,{\an7}{\pos(38,182)}SPENDING AND THIS, IS THAT CAR \N{\an7}{\pos(38,197)}MANUFACTURERS ARE ABOUT AS 
+[Script Info]
+; Script generated by FFmpeg/Lavc
+ScriptType: v4.00+
+PlayResX: 384
+PlayResY: 288
+ScaledBorderAndShadow: yes
+YCbCr Matrix: None
+
+[V4+ Styles]
+Format: Name, Fontname, Fontsize, PrimaryColour, SecondaryColour, OutlineColour, BackColour, Bold, Italic, Underline, StrikeOut, ScaleX, ScaleY, Spacing, Angle, BorderStyle, Outline, Shadow, Alignment, MarginL, MarginR, MarginV, Encoding
+Style: Default,Monospace,16,&Hffffff,&Hffffff,&H0,&H0,0,0,0,0,100,100,0,0,3,1,0,2,10,10,10,1
+
+[Events]
+Format: Layer, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text
+Dialogue: 0,0:00:00.00,0:00:01.44,Default,,0,0,0,,{\an7}{\pos(48,182)}BESIDES THE 
+Dialogue: 0,0:00:01.43,0:00:03.93,Default,,0,0,0,,{\an7}{\pos(38,166)}\hBESIDES THE \N{\an7}{\pos(38,197)}SPENDING AND THIS, IS THAT CAR 
+Dialogue: 0,0:00:03.94,0:00:06.31,Default,,0,0,0,,{\an7}{\pos(38,182)}SPENDING AND THIS, IS THAT CAR \N{\an7}{\pos(38,197)}MANUFACTURERS ARE ABOUT AS 

+ 64 - 64
tests/ref/fate/sub-charenc

@@ -1,64 +1,64 @@
-[Script Info]
-; Script generated by FFmpeg/Lavc
-ScriptType: v4.00+
-PlayResX: 384
-PlayResY: 288
-ScaledBorderAndShadow: yes
-YCbCr Matrix: None
-
-[V4+ Styles]
-Format: Name, Fontname, Fontsize, PrimaryColour, SecondaryColour, OutlineColour, BackColour, Bold, Italic, Underline, StrikeOut, ScaleX, ScaleY, Spacing, Angle, BorderStyle, Outline, Shadow, Alignment, MarginL, MarginR, MarginV, Encoding
-Style: Default,Arial,16,&Hffffff,&Hffffff,&H0,&H0,0,0,0,0,100,100,0,0,1,1,0,2,10,10,10,1
-
-[Events]
-Format: Layer, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text
-Dialogue: 0,0:00:32.95,0:00:38.25,Default,,0,0,0,,КОЛУМБИА ПИКЧЪРС - АЗИЯ\NСОНИ ПИКЧЪРС и Е.Е. Co.\Nпредставят
-Dialogue: 0,0:00:52.76,0:00:58.60,Default,,0,0,0,,Т И Г Ъ Р   И   Д Р А К О Н
-Dialogue: 0,0:01:22.17,0:01:24.05,Default,,0,0,0,,Учителят Ли е тук.
-Dialogue: 0,0:01:45.48,0:01:47.32,Default,,0,0,0,,Шу Лиен!
-Dialogue: 0,0:01:54.53,0:01:57.24,Default,,0,0,0,,Ли Му Бай е тук.
-Dialogue: 0,0:02:05.83,0:02:09.00,Default,,0,0,0,,- Как вървят нещата?\N- Добре. Моля, влезте!
-Dialogue: 0,0:02:23.48,0:02:26.53,Default,,0,0,0,,Му Бай...\NМина много време.
-Dialogue: 0,0:02:26.73,0:02:28.11,Default,,0,0,0,,Така е.
-Dialogue: 0,0:02:28.57,0:02:31.41,Default,,0,0,0,,- Как върви бизнесът?\N- Добре.
-Dialogue: 0,0:02:31.61,0:02:33.90,Default,,0,0,0,,- А ти как си?\N- Добре.
-Dialogue: 0,0:02:40.16,0:02:42.79,Default,,0,0,0,,Монахът Дзенг каза,\Nче си в планината Удан.
-Dialogue: 0,0:02:43.04,0:02:46.54,Default,,0,0,0,,Каза, че практикуваш\Nдълбока медитация.
-Dialogue: 0,0:02:48.84,0:02:50.68,Default,,0,0,0,,Сигурно в планината\Nе много спокойно.
-Dialogue: 0,0:02:51.25,0:02:53.46,Default,,0,0,0,,Завиждам ти.
-Dialogue: 0,0:02:53.67,0:02:58.34,Default,,0,0,0,,Имам толкова много работа,\Nпочти не ми остава\Nвреме за почивка.
-Dialogue: 0,0:03:00.26,0:03:03.89,Default,,0,0,0,,Оставих обучението рано.
-Dialogue: 0,0:03:05.69,0:03:11.28,Default,,0,0,0,,Защо? Ти си боец на Удан.\NОбучението е всичко.
-Dialogue: 0,0:03:11.90,0:03:14.86,Default,,0,0,0,,По време на медитация…
-Dialogue: 0,0:03:15.07,0:03:18.49,Default,,0,0,0,,стигнах до място,\Nкъдето имаше дълбока тишина...
-Dialogue: 0,0:03:19.87,0:03:22.79,Default,,0,0,0,,бях обграден от светлина...
-Dialogue: 0,0:03:23.41,0:03:28.08,Default,,0,0,0,,времето и пространството изчезнаха.
-Dialogue: 0,0:03:28.71,0:03:34.09,Default,,0,0,0,,Достигнах до състояние, за което\Nучителят не ми беше казвал.
-Dialogue: 0,0:03:37.05,0:03:39.14,Default,,0,0,0,,Постигнал си просветление?
-Dialogue: 0,0:03:39.34,0:03:41.22,Default,,0,0,0,,Не.
-Dialogue: 0,0:03:41.72,0:03:45.81,Default,,0,0,0,,Не почувствах блаженството\Nна просветлението.
-Dialogue: 0,0:03:46.02,0:03:52.86,Default,,0,0,0,,Вместо това... ме обгърна\Nбезкрайна мъка.
-Dialogue: 0,0:03:53.40,0:03:56.57,Default,,0,0,0,,Не можах да издържа.
-Dialogue: 0,0:03:57.49,0:03:59.74,Default,,0,0,0,,Прекъснах медитацията си.
-Dialogue: 0,0:03:59.95,0:04:02.24,Default,,0,0,0,,Не можах да продължа.
-Dialogue: 0,0:04:03.20,0:04:07.79,Default,,0,0,0,,Нещо...\Nме дърпаше назад.
-Dialogue: 0,0:04:09.62,0:04:10.91,Default,,0,0,0,,Какво беше?
-Dialogue: 0,0:04:15.46,0:04:18.00,Default,,0,0,0,,Нещо, от което не\Nмога да се освободя.
-Dialogue: 0,0:04:23.39,0:04:24.68,Default,,0,0,0,,Скоро ли ще тръгваш?
-Dialogue: 0,0:04:26.77,0:04:30.27,Default,,0,0,0,,Подготвяме охрана\Nза една доставка...
-Dialogue: 0,0:04:30.48,0:04:31.94,Default,,0,0,0,,за Пекин.
-Dialogue: 0,0:04:32.56,0:04:34.10,Default,,0,0,0,,Мога ли да те помоля...
-Dialogue: 0,0:04:35.07,0:04:38.82,Default,,0,0,0,,да занесеш нещо на господин Те.
-Dialogue: 0,0:04:44.28,0:04:48.12,Default,,0,0,0,,Зеленият меч на Съдбата!?\NДаваш го на господин Те!?
-Dialogue: 0,0:04:48.37,0:04:52.67,Default,,0,0,0,,Да. Той винаги е бил\Nнашият най-голям покровител.
-Dialogue: 0,0:04:52.88,0:04:56.55,Default,,0,0,0,,Не разбирам.\NКак можеш да се разделиш с него?
-Dialogue: 0,0:04:56.76,0:04:59.93,Default,,0,0,0,,Той винаги е бил с теб.
-Dialogue: 0,0:05:01.18,0:05:05.52,Default,,0,0,0,,Твърде много хора са\Nзагинали от това острие.
-Dialogue: 0,0:05:09.68,0:05:14.52,Default,,0,0,0,,Чисто е единствено защото\Nкръвта се отмива лесно.
-Dialogue: 0,0:05:15.40,0:05:20.61,Default,,0,0,0,,Ти го използваш справедливо.\NДостоен си за него.
-Dialogue: 0,0:05:23.66,0:05:27.37,Default,,0,0,0,,Дойде време\Nда го оставя.
-Dialogue: 0,0:05:27.58,0:05:31.21,Default,,0,0,0,,Е, какво ще правиш\Nот сега нататък?
-Dialogue: 0,0:05:34.71,0:05:37.50,Default,,0,0,0,,Ела с мен в Пекин.
-Dialogue: 0,0:05:37.71,0:05:41.42,Default,,0,0,0,,Лично ще дадеш меча\Nна господин Те.
-Dialogue: 0,0:05:41.68,0:05:44.89,Default,,0,0,0,,Ще бъде както преди.
-Dialogue: 0,0:05:47.01,0:05:51.68,Default,,0,0,0,,Първо трябва да отида\Nна гроба на учителя си.
+[Script Info]
+; Script generated by FFmpeg/Lavc
+ScriptType: v4.00+
+PlayResX: 384
+PlayResY: 288
+ScaledBorderAndShadow: yes
+YCbCr Matrix: None
+
+[V4+ Styles]
+Format: Name, Fontname, Fontsize, PrimaryColour, SecondaryColour, OutlineColour, BackColour, Bold, Italic, Underline, StrikeOut, ScaleX, ScaleY, Spacing, Angle, BorderStyle, Outline, Shadow, Alignment, MarginL, MarginR, MarginV, Encoding
+Style: Default,Arial,16,&Hffffff,&Hffffff,&H0,&H0,0,0,0,0,100,100,0,0,1,1,0,2,10,10,10,1
+
+[Events]
+Format: Layer, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text
+Dialogue: 0,0:00:32.95,0:00:38.25,Default,,0,0,0,,КОЛУМБИА ПИКЧЪРС - АЗИЯ\NСОНИ ПИКЧЪРС и Е.Е. Co.\Nпредставят
+Dialogue: 0,0:00:52.76,0:00:58.60,Default,,0,0,0,,Т И Г Ъ Р   И   Д Р А К О Н
+Dialogue: 0,0:01:22.17,0:01:24.05,Default,,0,0,0,,Учителят Ли е тук.
+Dialogue: 0,0:01:45.48,0:01:47.32,Default,,0,0,0,,Шу Лиен!
+Dialogue: 0,0:01:54.53,0:01:57.24,Default,,0,0,0,,Ли Му Бай е тук.
+Dialogue: 0,0:02:05.83,0:02:09.00,Default,,0,0,0,,- Как вървят нещата?\N- Добре. Моля, влезте!
+Dialogue: 0,0:02:23.48,0:02:26.53,Default,,0,0,0,,Му Бай...\NМина много време.
+Dialogue: 0,0:02:26.73,0:02:28.11,Default,,0,0,0,,Така е.
+Dialogue: 0,0:02:28.57,0:02:31.41,Default,,0,0,0,,- Как върви бизнесът?\N- Добре.
+Dialogue: 0,0:02:31.61,0:02:33.90,Default,,0,0,0,,- А ти как си?\N- Добре.
+Dialogue: 0,0:02:40.16,0:02:42.79,Default,,0,0,0,,Монахът Дзенг каза,\Nче си в планината Удан.
+Dialogue: 0,0:02:43.04,0:02:46.54,Default,,0,0,0,,Каза, че практикуваш\Nдълбока медитация.
+Dialogue: 0,0:02:48.84,0:02:50.68,Default,,0,0,0,,Сигурно в планината\Nе много спокойно.
+Dialogue: 0,0:02:51.25,0:02:53.46,Default,,0,0,0,,Завиждам ти.
+Dialogue: 0,0:02:53.67,0:02:58.34,Default,,0,0,0,,Имам толкова много работа,\Nпочти не ми остава\Nвреме за почивка.
+Dialogue: 0,0:03:00.26,0:03:03.89,Default,,0,0,0,,Оставих обучението рано.
+Dialogue: 0,0:03:05.69,0:03:11.28,Default,,0,0,0,,Защо? Ти си боец на Удан.\NОбучението е всичко.
+Dialogue: 0,0:03:11.90,0:03:14.86,Default,,0,0,0,,По време на медитация…
+Dialogue: 0,0:03:15.07,0:03:18.49,Default,,0,0,0,,стигнах до място,\Nкъдето имаше дълбока тишина...
+Dialogue: 0,0:03:19.87,0:03:22.79,Default,,0,0,0,,бях обграден от светлина...
+Dialogue: 0,0:03:23.41,0:03:28.08,Default,,0,0,0,,времето и пространството изчезнаха.
+Dialogue: 0,0:03:28.71,0:03:34.09,Default,,0,0,0,,Достигнах до състояние, за което\Nучителят не ми беше казвал.
+Dialogue: 0,0:03:37.05,0:03:39.14,Default,,0,0,0,,Постигнал си просветление?
+Dialogue: 0,0:03:39.34,0:03:41.22,Default,,0,0,0,,Не.
+Dialogue: 0,0:03:41.72,0:03:45.81,Default,,0,0,0,,Не почувствах блаженството\Nна просветлението.
+Dialogue: 0,0:03:46.02,0:03:52.86,Default,,0,0,0,,Вместо това... ме обгърна\Nбезкрайна мъка.
+Dialogue: 0,0:03:53.40,0:03:56.57,Default,,0,0,0,,Не можах да издържа.
+Dialogue: 0,0:03:57.49,0:03:59.74,Default,,0,0,0,,Прекъснах медитацията си.
+Dialogue: 0,0:03:59.95,0:04:02.24,Default,,0,0,0,,Не можах да продължа.
+Dialogue: 0,0:04:03.20,0:04:07.79,Default,,0,0,0,,Нещо...\Nме дърпаше назад.
+Dialogue: 0,0:04:09.62,0:04:10.91,Default,,0,0,0,,Какво беше?
+Dialogue: 0,0:04:15.46,0:04:18.00,Default,,0,0,0,,Нещо, от което не\Nмога да се освободя.
+Dialogue: 0,0:04:23.39,0:04:24.68,Default,,0,0,0,,Скоро ли ще тръгваш?
+Dialogue: 0,0:04:26.77,0:04:30.27,Default,,0,0,0,,Подготвяме охрана\Nза една доставка...
+Dialogue: 0,0:04:30.48,0:04:31.94,Default,,0,0,0,,за Пекин.
+Dialogue: 0,0:04:32.56,0:04:34.10,Default,,0,0,0,,Мога ли да те помоля...
+Dialogue: 0,0:04:35.07,0:04:38.82,Default,,0,0,0,,да занесеш нещо на господин Те.
+Dialogue: 0,0:04:44.28,0:04:48.12,Default,,0,0,0,,Зеленият меч на Съдбата!?\NДаваш го на господин Те!?
+Dialogue: 0,0:04:48.37,0:04:52.67,Default,,0,0,0,,Да. Той винаги е бил\Nнашият най-голям покровител.
+Dialogue: 0,0:04:52.88,0:04:56.55,Default,,0,0,0,,Не разбирам.\NКак можеш да се разделиш с него?
+Dialogue: 0,0:04:56.76,0:04:59.93,Default,,0,0,0,,Той винаги е бил с теб.
+Dialogue: 0,0:05:01.18,0:05:05.52,Default,,0,0,0,,Твърде много хора са\Nзагинали от това острие.
+Dialogue: 0,0:05:09.68,0:05:14.52,Default,,0,0,0,,Чисто е единствено защото\Nкръвта се отмива лесно.
+Dialogue: 0,0:05:15.40,0:05:20.61,Default,,0,0,0,,Ти го използваш справедливо.\NДостоен си за него.
+Dialogue: 0,0:05:23.66,0:05:27.37,Default,,0,0,0,,Дойде време\Nда го оставя.
+Dialogue: 0,0:05:27.58,0:05:31.21,Default,,0,0,0,,Е, какво ще правиш\Nот сега нататък?
+Dialogue: 0,0:05:34.71,0:05:37.50,Default,,0,0,0,,Ела с мен в Пекин.
+Dialogue: 0,0:05:37.71,0:05:41.42,Default,,0,0,0,,Лично ще дадеш меча\Nна господин Те.
+Dialogue: 0,0:05:41.68,0:05:44.89,Default,,0,0,0,,Ще бъде както преди.
+Dialogue: 0,0:05:47.01,0:05:51.68,Default,,0,0,0,,Първо трябва да отида\Nна гроба на учителя си.

+ 25 - 25
tests/ref/fate/sub-jacosub

@@ -1,25 +1,25 @@
-[Script Info]
-; Script generated by FFmpeg/Lavc
-ScriptType: v4.00+
-PlayResX: 384
-PlayResY: 288
-ScaledBorderAndShadow: yes
-YCbCr Matrix: None
-
-[V4+ Styles]
-Format: Name, Fontname, Fontsize, PrimaryColour, SecondaryColour, OutlineColour, BackColour, Bold, Italic, Underline, StrikeOut, ScaleX, ScaleY, Spacing, Angle, BorderStyle, Outline, Shadow, Alignment, MarginL, MarginR, MarginV, Encoding
-Style: Default,Arial,16,&Hffffff,&Hffffff,&H0,&H0,0,0,0,0,100,100,0,0,1,1,0,2,10,10,10,1
-
-[Events]
-Format: Layer, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text
-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.
+[Script Info]
+; Script generated by FFmpeg/Lavc
+ScriptType: v4.00+
+PlayResX: 384
+PlayResY: 288
+ScaledBorderAndShadow: yes
+YCbCr Matrix: None
+
+[V4+ Styles]
+Format: Name, Fontname, Fontsize, PrimaryColour, SecondaryColour, OutlineColour, BackColour, Bold, Italic, Underline, StrikeOut, ScaleX, ScaleY, Spacing, Angle, BorderStyle, Outline, Shadow, Alignment, MarginL, MarginR, MarginV, Encoding
+Style: Default,Arial,16,&Hffffff,&Hffffff,&H0,&H0,0,0,0,0,100,100,0,0,1,1,0,2,10,10,10,1
+
+[Events]
+Format: Layer, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text
+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.

+ 24 - 24
tests/ref/fate/sub-microdvd

@@ -1,24 +1,24 @@
-[Script Info]
-; Script generated by FFmpeg/Lavc
-ScriptType: v4.00+
-PlayResX: 384
-PlayResY: 288
-ScaledBorderAndShadow: yes
-YCbCr Matrix: None
-
-[V4+ Styles]
-Format: Name, Fontname, Fontsize, PrimaryColour, SecondaryColour, OutlineColour, BackColour, Bold, Italic, Underline, StrikeOut, ScaleX, ScaleY, Spacing, Angle, BorderStyle, Outline, Shadow, Alignment, MarginL, MarginR, MarginV, Encoding
-Style: Default,Comic Sans MS,30,&H123456,&H123456,&H0,&H0,0,0,0,0,100,100,0,0,1,1,0,2,10,10,10,1
-
-[Events]
-Format: Layer, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text
-Dialogue: 0,0:00:40.00,0:00:52.00,Default,,0,0,0,,{\c&H345678&}foo{\c}\N{\c&HABCDEF&}bar{\c}\Nbla
-Dialogue: 0,0:00:52.00,0:00:56.00,Default,,0,0,0,,{\u1}{\s1}{\i1}{\b1}italic bold underline strike{\s0}{\u0}\Nitalic bold no-underline no-strike
-Dialogue: 0,0:00:56.00,0:01:00.00,Default,,0,0,0,,back to
-Dialogue: 0,0:01:00.00,0:01:04.00,Default,,0,0,0,,the future
-Dialogue: 0,0:01:20.00,0:01:24.92,Default,,0,0,0,,{\pos(10,20)}Some more crazy stuff
-Dialogue: 0,0:02:14.00,0:02:15.60,Default,,0,0,0,,this subtitle...
-Dialogue: 0,0:02:15.60,0:02:40.00,Default,,0,0,0,,...continues up to...
-Dialogue: 0,0:02:40.00,0:03:00.00,Default,,0,0,0,,this one.
-Dialogue: 0,0:03:04.00,0:03:12.00,Default,,0,0,0,,and now...
-Dialogue: 0,0:03:12.00,9:59:59.99,Default,,0,0,0,,...to the end of the presentation
+[Script Info]
+; Script generated by FFmpeg/Lavc
+ScriptType: v4.00+
+PlayResX: 384
+PlayResY: 288
+ScaledBorderAndShadow: yes
+YCbCr Matrix: None
+
+[V4+ Styles]
+Format: Name, Fontname, Fontsize, PrimaryColour, SecondaryColour, OutlineColour, BackColour, Bold, Italic, Underline, StrikeOut, ScaleX, ScaleY, Spacing, Angle, BorderStyle, Outline, Shadow, Alignment, MarginL, MarginR, MarginV, Encoding
+Style: Default,Comic Sans MS,30,&H123456,&H123456,&H0,&H0,0,0,0,0,100,100,0,0,1,1,0,2,10,10,10,1
+
+[Events]
+Format: Layer, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text
+Dialogue: 0,0:00:40.00,0:00:52.00,Default,,0,0,0,,{\c&H345678&}foo{\c}\N{\c&HABCDEF&}bar{\c}\Nbla
+Dialogue: 0,0:00:52.00,0:00:56.00,Default,,0,0,0,,{\u1}{\s1}{\i1}{\b1}italic bold underline strike{\s0}{\u0}\Nitalic bold no-underline no-strike
+Dialogue: 0,0:00:56.00,0:01:00.00,Default,,0,0,0,,back to
+Dialogue: 0,0:01:00.00,0:01:04.00,Default,,0,0,0,,the future
+Dialogue: 0,0:01:20.00,0:01:24.92,Default,,0,0,0,,{\pos(10,20)}Some more crazy stuff
+Dialogue: 0,0:02:14.00,0:02:15.60,Default,,0,0,0,,this subtitle...
+Dialogue: 0,0:02:15.60,0:02:40.00,Default,,0,0,0,,...continues up to...
+Dialogue: 0,0:02:40.00,0:03:00.00,Default,,0,0,0,,this one.
+Dialogue: 0,0:03:04.00,0:03:12.00,Default,,0,0,0,,and now...
+Dialogue: 0,0:03:12.00,9:59:59.99,Default,,0,0,0,,...to the end of the presentation

Some files were not shown because too many files changed in this diff