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
fa4e30af
Commit
fa4e30af
authored
Dec 06, 2011
by
Clément Bœsch
Committed by
Clément Bœsch
Dec 12, 2011
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
drawtext: allow burning the timecode.
parent
ad5ade66
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
28 additions
and
1 deletion
+28
-1
filters.texi
doc/filters.texi
+7
-0
vf_drawtext.c
libavfilter/vf_drawtext.c
+21
-1
No files found.
doc/filters.texi
View file @
fa4e30af
...
...
@@ -1148,6 +1148,13 @@ the number of input frame, starting from 0
@item t
timestamp expressed in seconds, NAN if the input timestamp is unknown
@item timecode
initial timecode representation in "hh:mm:ss[:;.]ff" format. It can be used
with or without text parameter. @var{rate} option must be specified
@item r, rate
frame rate (timecode only)
@end table
Some examples follow.
...
...
libavfilter/vf_drawtext.c
View file @
fa4e30af
...
...
@@ -29,6 +29,8 @@
#include <sys/time.h>
#include <time.h>
#include "libavcodec/timecode.h"
#include "libavutil/avstring.h"
#include "libavutil/colorspace.h"
#include "libavutil/file.h"
#include "libavutil/eval.h"
...
...
@@ -154,6 +156,8 @@ typedef struct {
AVExpr
*
d_pexpr
;
int
draw
;
///< set to zero to prevent drawing
AVLFG
prng
;
///< random
struct
ff_timecode
tc
;
int
frame_id
;
}
DrawTextContext
;
#define OFFSET(x) offsetof(DrawTextContext, x)
...
...
@@ -174,6 +178,9 @@ static const AVOption drawtext_options[]= {
{
"tabsize"
,
"set tab size"
,
OFFSET
(
tabsize
),
AV_OPT_TYPE_INT
,
{.
dbl
=
4
},
0
,
INT_MAX
},
{
"basetime"
,
"set base time"
,
OFFSET
(
basetime
),
AV_OPT_TYPE_INT64
,
{.
dbl
=
AV_NOPTS_VALUE
},
INT64_MIN
,
INT64_MAX
},
{
"draw"
,
"if false do not draw"
,
OFFSET
(
d_expr
),
AV_OPT_TYPE_STRING
,
{.
str
=
"1"
},
CHAR_MIN
,
CHAR_MAX
},
{
"timecode"
,
"set initial timecode"
,
OFFSET
(
tc
.
str
),
AV_OPT_TYPE_STRING
,
{.
str
=
NULL
},
CHAR_MIN
,
CHAR_MAX
},
{
"r"
,
"set rate (timecode only)"
,
OFFSET
(
tc
.
rate
),
AV_OPT_TYPE_RATIONAL
,
{.
dbl
=
0
},
0
,
INT_MAX
},
{
"rate"
,
"set rate (timecode only)"
,
OFFSET
(
tc
.
rate
),
AV_OPT_TYPE_RATIONAL
,
{.
dbl
=
0
},
0
,
INT_MAX
},
/* FT_LOAD_* flags */
{
"ft_load_flags"
,
"set font loading flags for libfreetype"
,
OFFSET
(
ft_load_flags
),
AV_OPT_TYPE_FLAGS
,
{.
dbl
=
FT_LOAD_DEFAULT
|
FT_LOAD_RENDER
},
0
,
INT_MAX
,
0
,
"ft_load_flags"
},
...
...
@@ -333,9 +340,16 @@ static av_cold int init(AVFilterContext *ctx, const char *args, void *opaque)
av_file_unmap
(
textbuf
,
textbuf_size
);
}
if
(
dtext
->
tc
.
str
)
{
if
(
ff_init_smtpe_timecode
(
ctx
,
&
dtext
->
tc
)
<
0
)
return
AVERROR
(
EINVAL
);
if
(
!
dtext
->
text
)
dtext
->
text
=
av_strdup
(
""
);
}
if
(
!
dtext
->
text
)
{
av_log
(
ctx
,
AV_LOG_ERROR
,
"Either text
or a valid fil
e must be provided
\n
"
);
"Either text
, a valid file or a timecod
e must be provided
\n
"
);
return
AVERROR
(
EINVAL
);
}
...
...
@@ -708,6 +722,12 @@ static int draw_text(AVFilterContext *ctx, AVFilterBufferRef *picref,
buf_size
*=
2
;
}
while
((
buf
=
av_realloc
(
buf
,
buf_size
)));
if
(
dtext
->
tc
.
str
)
{
char
tcbuf
[
sizeof
(
"hh:mm:ss.ff"
)];
avpriv_timecode_to_string
(
tcbuf
,
&
dtext
->
tc
,
dtext
->
frame_id
++
);
buf
=
av_asprintf
(
"%s%s"
,
dtext
->
text
,
tcbuf
);
}
if
(
!
buf
)
return
AVERROR
(
ENOMEM
);
text
=
dtext
->
expanded_text
=
buf
;
...
...
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