diff options
author | Kacper Michajłow <[email protected]> | 2025-08-01 23:49:50 +0200 |
---|---|---|
committer | Kacper Michajłow <[email protected]> | 2025-08-03 17:27:35 +0000 |
commit | 5c95e8e3a6fff002294ce1684d6c349cb51f6673 (patch) | |
tree | 6d2be59ad0b8a7e62ffae01ff2bd459da22c24d0 | |
parent | 5bd7003e81c30914e8adfe46b3ab85ba99e42d0f (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.c | 2 | ||||
-rw-r--r-- | tests/ref/fate/ffmpeg-fix_sub_duration_heartbeat | 6 | ||||
-rw-r--r-- | tests/ref/fate/sub-subripenc | 4 | ||||
-rw-r--r-- | tests/ref/fate/sub-textenc | 130 |
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 |