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
b7e64be8
Commit
b7e64be8
authored
Jan 09, 2016
by
Aman Gupta
Committed by
Clément Bœsch
Jan 09, 2016
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
lavc/ccaption_dec: implement font styles
parent
086093c7
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
52 additions
and
7 deletions
+52
-7
ccaption_dec.c
libavcodec/ccaption_dec.c
+50
-5
sub-cc
tests/ref/fate/sub-cc
+2
-2
No files found.
libavcodec/ccaption_dec.c
View file @
b7e64be8
...
...
@@ -172,9 +172,11 @@ static int write_char(CCaptionSubContext *ctx, struct Screen *screen, char ch)
{
uint8_t
col
=
ctx
->
cursor_column
;
char
*
row
=
screen
->
characters
[
ctx
->
cursor_row
];
char
*
font
=
screen
->
fonts
[
ctx
->
cursor_row
];
if
(
col
<
SCREEN_COLUMNS
)
{
row
[
col
]
=
ch
;
font
[
col
]
=
ctx
->
cursor_font
;
if
(
ch
)
ctx
->
cursor_column
++
;
return
0
;
}
...
...
@@ -283,17 +285,60 @@ static int capture_screen(CCaptionSubContext *ctx)
int
i
;
int
ret
=
0
;
struct
Screen
*
screen
=
ctx
->
screen
+
ctx
->
active_screen
;
enum
cc_font
prev_font
=
CCFONT_REGULAR
;
av_bprint_clear
(
&
ctx
->
buffer
);
for
(
i
=
0
;
screen
->
row_used
&&
i
<
SCREEN_ROWS
;
i
++
)
{
if
(
CHECK_FLAG
(
screen
->
row_used
,
i
))
{
char
*
str
=
screen
->
characters
[
i
];
/* skip space */
while
(
*
str
==
' '
)
str
++
;
char
*
row
=
screen
->
characters
[
i
];
char
*
font
=
screen
->
fonts
[
i
];
int
j
=
0
;
/* skip leading space */
while
(
row
[
j
]
==
' '
)
j
++
;
for
(;
j
<
SCREEN_COLUMNS
;
j
++
)
{
if
(
row
[
j
]
==
0
)
break
;
const
char
*
e_tag
=
""
,
*
s_tag
=
""
;
if
(
prev_font
!=
font
[
j
])
{
switch
(
prev_font
)
{
case
CCFONT_ITALICS
:
e_tag
=
"{/i0}"
;
break
;
case
CCFONT_UNDERLINED
:
e_tag
=
"{/u0}"
;
break
;
case
CCFONT_UNDERLINED_ITALICS
:
e_tag
=
"{/u0}{/i0}"
;
break
;
}
switch
(
font
[
j
])
{
case
CCFONT_ITALICS
:
s_tag
=
"{/i1}"
;
break
;
case
CCFONT_UNDERLINED
:
s_tag
=
"{/u1}"
;
break
;
case
CCFONT_UNDERLINED_ITALICS
:
s_tag
=
"{/u1}{/i1}"
;
break
;
}
}
prev_font
=
font
[
j
];
av_bprintf
(
&
ctx
->
buffer
,
"%s%s%c"
,
e_tag
,
s_tag
,
row
[
j
]);
ret
=
av_bprint_is_complete
(
&
ctx
->
buffer
);
if
(
ret
==
0
)
{
ret
=
AVERROR
(
ENOMEM
);
break
;
}
}
av_bprintf
(
&
ctx
->
buffer
,
"
%s
\\
N"
,
str
);
av_bprintf
(
&
ctx
->
buffer
,
"
\\
N"
);
ret
=
av_bprint_is_complete
(
&
ctx
->
buffer
);
if
(
ret
==
0
)
{
ret
=
AVERROR
(
ENOMEM
);
...
...
tests/ref/fate/sub-cc
View file @
b7e64be8
...
...
@@ -10,5 +10,5 @@ Style: Default,Arial,16,&Hffffff,&Hffffff,&H0,&H0,0,0,0,0,100,100,0,0,1,1,0,2,10
[Events]
Format: Layer, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text
Dialogue: 0,0:00:12.36,0:00:40.83,Default,,0,0,0,,(
inaudible radio chatter
)
Dialogue: 0,0:00:40.83,0:00:59.07,Default,,0,0,0,,(
inaudible radio chatter
)\N>> Safety remains our number one
Dialogue: 0,0:00:12.36,0:00:40.83,Default,,0,0,0,,(
{/i1} inaudible radio chatter{/i0}
)
Dialogue: 0,0:00:40.83,0:00:59.07,Default,,0,0,0,,(
{/i1} inaudible radio chatter{/i0}
)\N>> Safety remains our number one
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