Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Contribute to GitLab
Sign in / Register
Toggle navigation
F
ffmpeg.wasm-core
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Linshizhi
ffmpeg.wasm-core
Commits
f122ba36
Commit
f122ba36
authored
Dec 17, 2015
by
Clément Bœsch
Committed by
Clément Bœsch
Dec 21, 2015
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
lavc: add text encoder
parent
244766e4
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
253 additions
and
5 deletions
+253
-5
Makefile
libavcodec/Makefile
+1
-0
allcodecs.c
libavcodec/allcodecs.c
+1
-1
srtenc.c
libavcodec/srtenc.c
+34
-3
version.h
libavcodec/version.h
+1
-1
subtitles.mak
tests/fate/subtitles.mak
+3
-0
sub-textenc
tests/ref/fate/sub-textenc
+213
-0
No files found.
libavcodec/Makefile
View file @
f122ba36
...
@@ -499,6 +499,7 @@ OBJS-$(CONFIG_SVQ1_ENCODER) += svq1enc.o svq1.o \
...
@@ -499,6 +499,7 @@ OBJS-$(CONFIG_SVQ1_ENCODER) += svq1enc.o svq1.o \
h263.o
ituh263enc.o
h263.o
ituh263enc.o
OBJS-$(CONFIG_SVQ3_DECODER)
+=
svq3.o
svq13.o
mpegutils.o
OBJS-$(CONFIG_SVQ3_DECODER)
+=
svq3.o
svq13.o
mpegutils.o
OBJS-$(CONFIG_TEXT_DECODER)
+=
textdec.o
ass.o
OBJS-$(CONFIG_TEXT_DECODER)
+=
textdec.o
ass.o
OBJS-$(CONFIG_TEXT_ENCODER)
+=
srtenc.o
ass_split.o
OBJS-$(CONFIG_TAK_DECODER)
+=
takdec.o
tak.o
takdsp.o
OBJS-$(CONFIG_TAK_DECODER)
+=
takdec.o
tak.o
takdsp.o
OBJS-$(CONFIG_TARGA_DECODER)
+=
targa.o
OBJS-$(CONFIG_TARGA_DECODER)
+=
targa.o
OBJS-$(CONFIG_TARGA_ENCODER)
+=
targaenc.o
rle.o
OBJS-$(CONFIG_TARGA_ENCODER)
+=
targaenc.o
rle.o
...
...
libavcodec/allcodecs.c
View file @
f122ba36
...
@@ -550,7 +550,7 @@ void avcodec_register_all(void)
...
@@ -550,7 +550,7 @@ void avcodec_register_all(void)
REGISTER_ENCDEC
(
SUBRIP
,
subrip
);
REGISTER_ENCDEC
(
SUBRIP
,
subrip
);
REGISTER_DECODER
(
SUBVIEWER
,
subviewer
);
REGISTER_DECODER
(
SUBVIEWER
,
subviewer
);
REGISTER_DECODER
(
SUBVIEWER1
,
subviewer1
);
REGISTER_DECODER
(
SUBVIEWER1
,
subviewer1
);
REGISTER_
DECODER
(
TEXT
,
text
);
REGISTER_
ENCDEC
(
TEXT
,
text
);
REGISTER_DECODER
(
VPLAYER
,
vplayer
);
REGISTER_DECODER
(
VPLAYER
,
vplayer
);
REGISTER_ENCDEC
(
WEBVTT
,
webvtt
);
REGISTER_ENCDEC
(
WEBVTT
,
webvtt
);
REGISTER_ENCDEC
(
XSUB
,
xsub
);
REGISTER_ENCDEC
(
XSUB
,
xsub
);
...
...
libavcodec/srtenc.c
View file @
f122ba36
...
@@ -221,8 +221,14 @@ static const ASSCodesCallbacks srt_callbacks = {
...
@@ -221,8 +221,14 @@ static const ASSCodesCallbacks srt_callbacks = {
.
end
=
srt_end_cb
,
.
end
=
srt_end_cb
,
};
};
static
int
srt_encode_frame
(
AVCodecContext
*
avctx
,
static
const
ASSCodesCallbacks
text_callbacks
=
{
unsigned
char
*
buf
,
int
bufsize
,
const
AVSubtitle
*
sub
)
.
text
=
srt_text_cb
,
.
new_line
=
srt_new_line_cb
,
};
static
int
encode_frame
(
AVCodecContext
*
avctx
,
unsigned
char
*
buf
,
int
bufsize
,
const
AVSubtitle
*
sub
,
const
ASSCodesCallbacks
*
cb
)
{
{
SRTContext
*
s
=
avctx
->
priv_data
;
SRTContext
*
s
=
avctx
->
priv_data
;
ASSDialog
*
dialog
;
ASSDialog
*
dialog
;
...
@@ -241,7 +247,7 @@ static int srt_encode_frame(AVCodecContext *avctx,
...
@@ -241,7 +247,7 @@ static int srt_encode_frame(AVCodecContext *avctx,
for
(;
dialog
&&
num
--
;
dialog
++
)
{
for
(;
dialog
&&
num
--
;
dialog
++
)
{
s
->
alignment_applied
=
0
;
s
->
alignment_applied
=
0
;
srt_style_apply
(
s
,
dialog
->
style
);
srt_style_apply
(
s
,
dialog
->
style
);
ff_ass_split_override_codes
(
&
srt_callbacks
,
s
,
dialog
->
text
);
ff_ass_split_override_codes
(
cb
,
s
,
dialog
->
text
);
}
}
}
}
...
@@ -259,6 +265,18 @@ static int srt_encode_frame(AVCodecContext *avctx,
...
@@ -259,6 +265,18 @@ static int srt_encode_frame(AVCodecContext *avctx,
return
s
->
buffer
.
len
;
return
s
->
buffer
.
len
;
}
}
static
int
srt_encode_frame
(
AVCodecContext
*
avctx
,
unsigned
char
*
buf
,
int
bufsize
,
const
AVSubtitle
*
sub
)
{
return
encode_frame
(
avctx
,
buf
,
bufsize
,
sub
,
&
srt_callbacks
);
}
static
int
text_encode_frame
(
AVCodecContext
*
avctx
,
unsigned
char
*
buf
,
int
bufsize
,
const
AVSubtitle
*
sub
)
{
return
encode_frame
(
avctx
,
buf
,
bufsize
,
sub
,
&
text_callbacks
);
}
static
int
srt_encode_close
(
AVCodecContext
*
avctx
)
static
int
srt_encode_close
(
AVCodecContext
*
avctx
)
{
{
SRTContext
*
s
=
avctx
->
priv_data
;
SRTContext
*
s
=
avctx
->
priv_data
;
...
@@ -293,3 +311,16 @@ AVCodec ff_subrip_encoder = {
...
@@ -293,3 +311,16 @@ AVCodec ff_subrip_encoder = {
.
close
=
srt_encode_close
,
.
close
=
srt_encode_close
,
};
};
#endif
#endif
#if CONFIG_TEXT_ENCODER
AVCodec
ff_text_encoder
=
{
.
name
=
"text"
,
.
long_name
=
NULL_IF_CONFIG_SMALL
(
"Raw text subtitle"
),
.
type
=
AVMEDIA_TYPE_SUBTITLE
,
.
id
=
AV_CODEC_ID_TEXT
,
.
priv_data_size
=
sizeof
(
SRTContext
),
.
init
=
srt_encode_init
,
.
encode_sub
=
text_encode_frame
,
.
close
=
srt_encode_close
,
};
#endif
libavcodec/version.h
View file @
f122ba36
...
@@ -29,7 +29,7 @@
...
@@ -29,7 +29,7 @@
#include "libavutil/version.h"
#include "libavutil/version.h"
#define LIBAVCODEC_VERSION_MAJOR 57
#define LIBAVCODEC_VERSION_MAJOR 57
#define LIBAVCODEC_VERSION_MINOR 1
8
#define LIBAVCODEC_VERSION_MINOR 1
9
#define LIBAVCODEC_VERSION_MICRO 100
#define LIBAVCODEC_VERSION_MICRO 100
#define LIBAVCODEC_VERSION_INT AV_VERSION_INT(LIBAVCODEC_VERSION_MAJOR, \
#define LIBAVCODEC_VERSION_INT AV_VERSION_INT(LIBAVCODEC_VERSION_MAJOR, \
...
...
tests/fate/subtitles.mak
View file @
f122ba36
...
@@ -76,6 +76,9 @@ fate-sub-webvtt2: CMD = fmtstdout ass -i $(TARGET_SAMPLES)/sub/WebVTT_extended_t
...
@@ -76,6 +76,9 @@ fate-sub-webvtt2: CMD = fmtstdout ass -i $(TARGET_SAMPLES)/sub/WebVTT_extended_t
FATE_SUBTITLES-$(call ALLYES, SRT_DEMUXER SUBRIP_DECODER WEBVTT_ENCODER WEBVTT_MUXER) += fate-sub-webvttenc
FATE_SUBTITLES-$(call ALLYES, SRT_DEMUXER SUBRIP_DECODER WEBVTT_ENCODER WEBVTT_MUXER) += fate-sub-webvttenc
fate-sub-webvttenc: CMD = fmtstdout webvtt -i $(TARGET_SAMPLES)/sub/SubRip_capability_tester.srt
fate-sub-webvttenc: CMD = fmtstdout webvtt -i $(TARGET_SAMPLES)/sub/SubRip_capability_tester.srt
FATE_SUBTITLES-$(call ALLYES, SRT_DEMUXER SUBRIP_DECODER TEXT_ENCODER SRT_MUXER) += fate-sub-textenc
fate-sub-textenc: CMD = fmtstdout srt -i $(TARGET_SAMPLES)/sub/SubRip_capability_tester.srt -c:s text
FATE_SUBTITLES_ASS-$(call ALLYES, MICRODVD_DEMUXER MICRODVD_DECODER ICONV) += fate-sub-charenc
FATE_SUBTITLES_ASS-$(call ALLYES, MICRODVD_DEMUXER MICRODVD_DECODER ICONV) += fate-sub-charenc
fate-sub-charenc: CMD = fmtstdout ass -sub_charenc cp1251 -i $(TARGET_SAMPLES)/sub/cp1251-subtitles.sub
fate-sub-charenc: CMD = fmtstdout ass -sub_charenc cp1251 -i $(TARGET_SAMPLES)/sub/cp1251-subtitles.sub
...
...
tests/ref/fate/sub-textenc
0 → 100644
View file @
f122ba36
1
00:00:00,000 --> 00:00:00,000
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
If you see this with the normal font, the player don't (fully) support font face
3
00:00:04,500 --> 00:00:04,500
Hidden
4
00:00:04,501 --> 00:00:07,501
This text should be small
This text should be normal
This text should be big
5
00:00:07,501 --> 00:00:11,501
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,501
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,501
>
It would be a good thing to
hide invalid html tags that are closed and show the text in them
<invalid_tag_unclosed>but show un-closed invalid html tags
Show not opened tags</invalid_tag_not_opened>
<
8
00:00:17,501 --> 00:00:20,501
and also
hide invalid html tags with parameters that are closed and show the text in them
<invalid_tag_uc par=5>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
00:00:20,501 --> 00:00:21,501
This text should be in the normal position...
10
00:00:21,501 --> 00:00:22,501
This text should NOT be in the normal position
11
00:00:22,501 --> 00:00:24,501
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,501
This text should be at the
middle and horizontally centered
13
00:00:22,501 --> 00:00:24,501
This text should be at the
bottom and horizontally centered
14
00:00:24,501 --> 00:00:26,501
This text should be at the
top and horizontally at the left
15
00:00:24,501 --> 00:00:26,501
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,501
This text should be at the
bottom and horizontally at the left
17
00:00:26,501 --> 00:00:28,501
This text should be at the
top and horizontally at the right
18
00:00:26,501 --> 00:00:28,501
This text should be at the
middle and horizontally at the right
19
00:00:26,501 --> 00:00:28,501
This text should be at the
bottom and horizontally at the right
20
00:00:28,501 --> 00:00:31,501
This could be the most difficult thing to implement
21
00:00:31,501 --> 00:00:50,501
First text
22
00:00:33,500 --> 00:00:35,500
Second, it shouldn't overlap first
23
00:00:35,501 --> 00:00:37,501
Third, it should replace second
24
00:00:36,501 --> 00:00:50,501
Fourth, it shouldn't overlap first and third
25
00:00:40,501 --> 00:00:45,501
Fifth, it should replace third
26
00:00:45,501 --> 00:00:50,501
Sixth, it shouldn't be
showed overlapped
27
00:00:50,501 --> 00:00:52,501
TEXT 1 (bottom)
28
00:00:50,501 --> 00:00:52,501
text 2
29
00:00:52,501 --> 00:00:54,501
Hide these tags:
also hide these tags:
but show this: {normal text}
30
00:00:54,501 --> 00:01:00,501
\ 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,501
\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,501
\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,501
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,501
Both line should be strikethrough,
yes.
Correctly closed tags
should be hidden.
35
00:01:02,501 --> 00:01:04,501
It shouldn't be strikethrough,
not opened tag showed as text.</s>
Not opened tag showed as text.</xxxxx>
36
00:01:04,501 --> 00:01:06,501
Three lines should be strikethrough,
yes.
<yyyy>Not closed tags showed as text
37
00:01:06,501 --> 00:01:08,501
Both line should be strikethrough but
the wrong closing tag should be showed</b>
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment