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
d670848d
Commit
d670848d
authored
Aug 09, 2015
by
Niklesh
Committed by
Philip Langdale
Aug 09, 2015
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
movtextdec: Use default style information from movtext header
Signed-off-by:
Niklesh
<
niklesh.lalwani@iitb.ac.in
>
parent
8628b06b
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
78 additions
and
4 deletions
+78
-4
movtextdec.c
libavcodec/movtextdec.c
+78
-4
No files found.
libavcodec/movtextdec.c
View file @
d670848d
...
...
@@ -37,6 +37,27 @@
#define HLIT_BOX (1<<1)
#define HCLR_BOX (1<<2)
#define BOTTOM_LEFT 1
#define BOTTOM_CENTER 2
#define BOTTOM_RIGHT 3
#define MIDDLE_LEFT 4
#define MIDDLE_CENTER 5
#define MIDDLE_RIGHT 6
#define TOP_LEFT 7
#define TOP_CENTER 8
#define TOP_RIGHT 9
typedef
struct
{
char
*
font
;
int
fontsize
;
int
color
;
int
back_color
;
int
bold
;
int
italic
;
int
underline
;
int
alignment
;
}
MovTextDefault
;
typedef
struct
{
uint16_t
fontID
;
char
*
font
;
...
...
@@ -66,6 +87,7 @@ typedef struct {
HilightcolorBox
c
;
FontRecord
**
ftab
;
FontRecord
*
ftab_temp
;
MovTextDefault
d
;
uint8_t
box_flags
;
uint16_t
style_entries
,
ftab_entries
;
uint64_t
tracksize
;
...
...
@@ -106,6 +128,9 @@ static int mov_text_tx3g(AVCodecContext *avctx, MovTextContext *m)
{
char
*
tx3g_ptr
=
avctx
->
extradata
;
int
i
,
box_size
,
font_length
;
int8_t
v_align
,
h_align
;
int
style_fontID
;
StyleBox
s_default
;
m
->
count_f
=
0
;
m
->
ftab_entries
=
0
;
...
...
@@ -116,13 +141,52 @@ static int mov_text_tx3g(AVCodecContext *avctx, MovTextContext *m)
// Display Flags
tx3g_ptr
+=
4
;
// Alignment
tx3g_ptr
+=
2
;
h_align
=
*
tx3g_ptr
++
;
v_align
=
*
tx3g_ptr
++
;
if
(
h_align
==
0
)
{
if
(
v_align
==
0
)
m
->
d
.
alignment
=
TOP_LEFT
;
if
(
v_align
==
1
)
m
->
d
.
alignment
=
MIDDLE_LEFT
;
if
(
v_align
==
-
1
)
m
->
d
.
alignment
=
BOTTOM_LEFT
;
}
if
(
h_align
==
1
)
{
if
(
v_align
==
0
)
m
->
d
.
alignment
=
TOP_CENTER
;
if
(
v_align
==
1
)
m
->
d
.
alignment
=
MIDDLE_CENTER
;
if
(
v_align
==
-
1
)
m
->
d
.
alignment
=
BOTTOM_CENTER
;
}
if
(
h_align
==
-
1
)
{
if
(
v_align
==
0
)
m
->
d
.
alignment
=
TOP_RIGHT
;
if
(
v_align
==
1
)
m
->
d
.
alignment
=
MIDDLE_RIGHT
;
if
(
v_align
==
-
1
)
m
->
d
.
alignment
=
BOTTOM_RIGHT
;
}
// Background Color
memcpy
(
&
m
->
d
.
back_color
,
tx3g_ptr
,
3
);
tx3g_ptr
+=
4
;
// BoxRecord
tx3g_ptr
+=
8
;
// StyleRecord
tx3g_ptr
+=
12
;
tx3g_ptr
+=
4
;
// fontID
style_fontID
=
AV_RB16
(
tx3g_ptr
);
tx3g_ptr
+=
2
;
// face-style-flags
s_default
.
style_flag
=
*
tx3g_ptr
++
;
m
->
d
.
bold
=
s_default
.
style_flag
&
STYLE_FLAG_BOLD
;
m
->
d
.
italic
=
s_default
.
style_flag
&
STYLE_FLAG_ITALIC
;
m
->
d
.
underline
=
s_default
.
style_flag
&
STYLE_FLAG_UNDERLINE
;
// fontsize
m
->
d
.
fontsize
=
*
tx3g_ptr
++
;
// Primary color
memcpy
(
&
m
->
d
.
color
,
tx3g_ptr
,
3
);
tx3g_ptr
+=
4
;
// FontRecord
// FontRecord Size
tx3g_ptr
+=
4
;
...
...
@@ -169,6 +233,10 @@ static int mov_text_tx3g(AVCodecContext *avctx, MovTextContext *m)
}
tx3g_ptr
=
tx3g_ptr
+
font_length
;
}
for
(
i
=
0
;
i
<
m
->
ftab_entries
;
i
++
)
{
if
(
style_fontID
==
m
->
ftab
[
i
]
->
fontID
)
m
->
d
.
font
=
m
->
ftab
[
i
]
->
font
;
}
return
0
;
}
...
...
@@ -312,9 +380,15 @@ static int mov_text_init(AVCodecContext *avctx) {
* it's very common to find files where the default style is broken
* and respecting it results in a worse experience than ignoring it.
*/
int
ret
;
MovTextContext
*
m
=
avctx
->
priv_data
;
mov_text_tx3g
(
avctx
,
m
);
return
ff_ass_subtitle_header_default
(
avctx
);
ret
=
mov_text_tx3g
(
avctx
,
m
);
if
(
ret
==
0
)
{
return
ff_ass_subtitle_header
(
avctx
,
m
->
d
.
font
,
m
->
d
.
fontsize
,
m
->
d
.
color
,
m
->
d
.
back_color
,
m
->
d
.
bold
,
m
->
d
.
italic
,
m
->
d
.
underline
,
m
->
d
.
alignment
);
}
else
return
ff_ass_subtitle_header_default
(
avctx
);
}
static
int
mov_text_decode_frame
(
AVCodecContext
*
avctx
,
...
...
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