summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKacper Michajłow <[email protected]>2025-08-01 23:49:50 +0200
committerKacper Michajłow <[email protected]>2025-08-03 17:27:35 +0000
commit5c95e8e3a6fff002294ce1684d6c349cb51f6673 (patch)
tree6d2be59ad0b8a7e62ffae01ff2bd459da22c24d0
parent5bd7003e81c30914e8adfe46b3ab85ba99e42d0f (diff)
avcodec/srtenc: don't produce SRT files with mixed line endings
Initially, avcodec/srtenc.c was outputting CRLF [1]. Later, a real SRT muxer was added [2], which outputs LF. The original srtenc.c was converted to use the muxer [3], changing its output to LF, except for newline characters within subtitle text. Fix this to avoid producing SRT files with mixed line endings. [1] 8e43b6fed905eb30ae941a3968825d88c78d5a12 [2] 9e63c30daa8bfde52c534027ce984e8cf3f200c3 [3] 55180b3299c61e5e3d16f1e9ea58dba8b787cc8e Signed-off-by: Kacper Michajłow <[email protected]>
-rw-r--r--libavcodec/srtenc.c2
-rw-r--r--tests/ref/fate/ffmpeg-fix_sub_duration_heartbeat6
-rw-r--r--tests/ref/fate/sub-subripenc4
-rw-r--r--tests/ref/fate/sub-textenc130
4 files changed, 71 insertions, 71 deletions
diff --git a/libavcodec/srtenc.c b/libavcodec/srtenc.c
index a607beb990..de05a09254 100644
--- a/libavcodec/srtenc.c
+++ b/libavcodec/srtenc.c
@@ -145,7 +145,7 @@ static void srt_text_cb(void *priv, const char *text, int len)
static void srt_new_line_cb(void *priv, int forced)
{
- srt_print(priv, "\r\n");
+ srt_print(priv, "\n");
}
static void srt_style_cb(void *priv, char style, int close)
diff --git a/tests/ref/fate/ffmpeg-fix_sub_duration_heartbeat b/tests/ref/fate/ffmpeg-fix_sub_duration_heartbeat
index 3a3ec96637..1a946394e9 100644
--- a/tests/ref/fate/ffmpeg-fix_sub_duration_heartbeat
+++ b/tests/ref/fate/ffmpeg-fix_sub_duration_heartbeat
@@ -20,16 +20,16 @@
6
00:00:03,103 --> 00:00:03,303
-<font face="Monospace">{\an7}(<i> inaudible radio chatter</i> )
+<font face="Monospace">{\an7}(<i> inaudible radio chatter</i> )
>></font>
7
00:00:03,303 --> 00:00:03,503
-<font face="Monospace">{\an7}(<i> inaudible radio chatter</i> )
+<font face="Monospace">{\an7}(<i> inaudible radio chatter</i> )
>> Safety rema</font>
8
00:00:03,504 --> 00:00:03,704
-<font face="Monospace">{\an7}(<i> inaudible radio chatter</i> )
+<font face="Monospace">{\an7}(<i> inaudible radio chatter</i> )
>> Safety remains our numb</font>
diff --git a/tests/ref/fate/sub-subripenc b/tests/ref/fate/sub-subripenc
index 7f35ae9b49..5bc4ff1267 100644
--- a/tests/ref/fate/sub-subripenc
+++ b/tests/ref/fate/sub-subripenc
@@ -1,6 +1,6 @@
1
00:00:00,970 --> 00:00:02,540
-<font face="Serif" size="18">- Test 1.
+<font face="Serif" size="18">- Test 1.
- Test 2.</font>
2
@@ -9,6 +9,6 @@
3
00:00:05,850 --> 00:00:08,140
-<font face="Serif" size="18">- Test 4.
+<font face="Serif" size="18">- Test 4.
- Test 5.</font>
diff --git a/tests/ref/fate/sub-textenc b/tests/ref/fate/sub-textenc
index 3ea56b38f0..84e4c61063 100644
--- a/tests/ref/fate/sub-textenc
+++ b/tests/ref/fate/sub-textenc
@@ -4,11 +4,11 @@ Don't show this text it may be used to insert hidden data
2
00:00:01,500 --> 00:00:04,500
-SubRip subtitles capability tester 1.3o by ale5000
-Use VLC 1.1 or higher as reference for most things and MPC Home Cinema for others
-This text should be blue
-This text should be red
-This text should be black
+SubRip subtitles capability tester 1.3o by ale5000
+Use VLC 1.1 or higher as reference for most things and MPC Home Cinema for others
+This text should be blue
+This text should be red
+This text should be black
If you see this with the normal font, the player don't (fully) support font face
3
@@ -17,43 +17,43 @@ Hidden
4
00:00:04,501 --> 00:00:07,500
-This text should be small
-This text should be normal
+This text should be small
+This text should be normal
This text should be big
5
00:00:07,501 --> 00:00:11,500
-This should be an E with an accent: È
-日本語
-This text should be bold, italics and underline
-This text should be small and green
-This text should be small and red
+This should be an E with an accent: È
+日本語
+This text should be bold, italics and underline
+This text should be small and green
+This text should be small and red
This text should be big and brown
6
00:00:11,501 --> 00:00:14,500
-This line should be bold
-This line should be italics
-This line should be underline
-This line should be strikethrough
-Both lines
+This line should be bold
+This line should be italics
+This line should be underline
+This line should be strikethrough
+Both lines
should be underline
7
00:00:14,501 --> 00:00:17,500
->
-It would be a good thing to
-hide invalid html tags that are closed and show the text in them
-but show un-closed invalid html tags
-Show not opened tags
+>
+It would be a good thing to
+hide invalid html tags that are closed and show the text in them
+but show un-closed invalid html tags
+Show not opened tags
<
8
00:00:17,501 --> 00:00:20,500
-and also
-hide invalid html tags with parameters that are closed and show the text in them
-but show un-closed invalid html tags
-This text should be showed underlined without problems also: 2<3,5>1,4<6
+and also
+hide invalid html tags with parameters that are closed and show the text in them
+but show un-closed invalid html tags
+This text should be showed underlined without problems also: 2<3,5>1,4<6
This shouldn't be underlined
9
@@ -66,49 +66,49 @@ This text should NOT be in the normal position
11
00:00:22,501 --> 00:00:24,500
-Implementation is the same of the ASS tag
-This text should be at the
+Implementation is the same of the ASS tag
+This text should be at the
top and horizontally centered
12
00:00:22,501 --> 00:00:24,500
-This text should be at the
+This text should be at the
middle and horizontally centered
13
00:00:22,501 --> 00:00:24,500
-This text should be at the
+This text should be at the
bottom and horizontally centered
14
00:00:24,501 --> 00:00:26,500
-This text should be at the
+This text should be at the
top and horizontally at the left
15
00:00:24,501 --> 00:00:26,500
-This text should be at the
-middle and horizontally at the left
+This text should be at the
+middle and horizontally at the left
(The second position must be ignored)
16
00:00:24,501 --> 00:00:26,500
-This text should be at the
+This text should be at the
bottom and horizontally at the left
17
00:00:26,501 --> 00:00:28,500
-This text should be at the
+This text should be at the
top and horizontally at the right
18
00:00:26,501 --> 00:00:28,500
-This text should be at the
+This text should be at the
middle and horizontally at the right
19
00:00:26,501 --> 00:00:28,500
-This text should be at the
+This text should be at the
bottom and horizontally at the right
20
@@ -137,7 +137,7 @@ Fifth, it should replace third
26
00:00:45,501 --> 00:00:50,500
-Sixth, it shouldn't be
+Sixth, it shouldn't be
showed overlapped
27
@@ -150,64 +150,64 @@ text 2
29
00:00:52,501 --> 00:00:54,500
-Hide these tags:
-also hide these tags:
+Hide these tags:
+also hide these tags:
but show this: {normal text}
30
00:00:54,501 --> 00:01:00,500
-
-\ N is a forced line break
-\ h is a hard space
-Normal spaces at the start and at the end of the line are trimmed while hard spaces are not trimmed.
+
+\ N is a forced line break
+\ h is a hard space
+Normal spaces at the start and at the end of the line are trimmed while hard spaces are not trimmed.
The\hline\hwill\hnever\hbreak\hautomatically\hright\hbefore\hor\hafter\ha\hhard\hspace.\h:-D
31
00:00:54,501 --> 00:00:56,500
-
-\h\h\h\h\hA (05 hard spaces followed by a letter)
-A (Normal spaces followed by a letter)
+
+\h\h\h\h\hA (05 hard spaces followed by a letter)
+A (Normal spaces followed by a letter)
A (No hard spaces followed by a letter)
32
00:00:56,501 --> 00:00:58,500
-\h\h\h\h\hA (05 hard spaces followed by a letter)
-A (Normal spaces followed by a letter)
-A (No hard spaces followed by a letter)
+\h\h\h\h\hA (05 hard spaces followed by a letter)
+A (Normal spaces followed by a letter)
+A (No hard spaces followed by a letter)
Show this: \TEST and this: \-)
33
00:00:58,501 --> 00:01:00,500
-
-A letter followed by 05 hard spaces: A\h\h\h\h\h
-A letter followed by normal spaces: A
-A letter followed by no hard spaces: A
-05 hard spaces between letters: A\h\h\h\h\hA
-5 normal spaces between letters: A A
-
+
+A letter followed by 05 hard spaces: A\h\h\h\h\h
+A letter followed by normal spaces: A
+A letter followed by no hard spaces: A
+05 hard spaces between letters: A\h\h\h\h\hA
+5 normal spaces between letters: A A
+
^--Forced line break
34
00:01:00,501 --> 00:01:02,500
-Both line should be strikethrough,
-yes.
-Correctly closed tags
+Both line should be strikethrough,
+yes.
+Correctly closed tags
should be hidden.
35
00:01:02,501 --> 00:01:04,500
-It shouldn't be strikethrough,
-not opened tag showed as text.
+It shouldn't be strikethrough,
+not opened tag showed as text.
Not opened tag showed as text.
36
00:01:04,501 --> 00:01:06,500
-Three lines should be strikethrough,
-yes.
+Three lines should be strikethrough,
+yes.
Not closed tags showed as text
37
00:01:06,501 --> 00:01:08,500
-Both line should be strikethrough but
+Both line should be strikethrough but
the wrong closing tag should be showed