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
70849851
Commit
70849851
authored
Mar 17, 2012
by
Nicolas George
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
vsrc_color: port to new drawutils API.
parent
53b7a3fe
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
12 additions
and
49 deletions
+12
-49
vsrc_color.c
libavfilter/vsrc_color.c
+12
-49
No files found.
libavfilter/vsrc_color.c
View file @
70849851
...
...
@@ -33,12 +33,11 @@
typedef
struct
{
int
w
,
h
;
uint8_t
color
[
4
];
uint8_t
color
_rgba
[
4
];
AVRational
time_base
;
uint8_t
*
line
[
4
];
int
line_step
[
4
];
int
hsub
,
vsub
;
///< chroma subsampling values
uint64_t
pts
;
FFDrawContext
draw
;
FFDrawColor
color
;
}
ColorContext
;
static
av_cold
int
color_init
(
AVFilterContext
*
ctx
,
const
char
*
args
,
void
*
opaque
)
...
...
@@ -66,41 +65,15 @@ static av_cold int color_init(AVFilterContext *ctx, const char *args, void *opaq
color
->
time_base
.
num
=
frame_rate_q
.
den
;
color
->
time_base
.
den
=
frame_rate_q
.
num
;
if
((
ret
=
av_parse_color
(
color
->
color
,
color_string
,
-
1
,
ctx
))
<
0
)
if
((
ret
=
av_parse_color
(
color
->
color
_rgba
,
color_string
,
-
1
,
ctx
))
<
0
)
return
ret
;
return
0
;
}
static
av_cold
void
color_uninit
(
AVFilterContext
*
ctx
)
{
ColorContext
*
color
=
ctx
->
priv
;
int
i
;
for
(
i
=
0
;
i
<
4
;
i
++
)
{
av_freep
(
&
color
->
line
[
i
]);
color
->
line_step
[
i
]
=
0
;
}
}
static
int
query_formats
(
AVFilterContext
*
ctx
)
{
static
const
enum
PixelFormat
pix_fmts
[]
=
{
PIX_FMT_ARGB
,
PIX_FMT_RGBA
,
PIX_FMT_ABGR
,
PIX_FMT_BGRA
,
PIX_FMT_RGB24
,
PIX_FMT_BGR24
,
PIX_FMT_YUV444P
,
PIX_FMT_YUV422P
,
PIX_FMT_YUV420P
,
PIX_FMT_YUV411P
,
PIX_FMT_YUV410P
,
PIX_FMT_YUV440P
,
PIX_FMT_YUVJ444P
,
PIX_FMT_YUVJ422P
,
PIX_FMT_YUVJ420P
,
PIX_FMT_YUVJ440P
,
PIX_FMT_YUVA420P
,
PIX_FMT_NONE
};
avfilter_set_common_pixel_formats
(
ctx
,
avfilter_make_format_list
(
pix_fmts
));
avfilter_set_common_pixel_formats
(
ctx
,
ff_draw_supported_pixel_formats
(
0
));
return
0
;
}
...
...
@@ -108,26 +81,18 @@ static int color_config_props(AVFilterLink *inlink)
{
AVFilterContext
*
ctx
=
inlink
->
src
;
ColorContext
*
color
=
ctx
->
priv
;
uint8_t
rgba_color
[
4
];
int
is_packed_rgba
;
const
AVPixFmtDescriptor
*
pix_desc
=
&
av_pix_fmt_descriptors
[
inlink
->
format
];
color
->
hsub
=
pix_desc
->
log2_chroma_w
;
color
->
vsub
=
pix_desc
->
log2_chroma_h
;
ff_draw_init
(
&
color
->
draw
,
inlink
->
format
,
0
)
;
ff_draw_color
(
&
color
->
draw
,
&
color
->
color
,
color
->
color_rgba
)
;
color
->
w
&=
~
((
1
<<
color
->
hsub
)
-
1
);
color
->
h
&=
~
((
1
<<
color
->
vsub
)
-
1
);
color
->
w
=
ff_draw_round_to_sub
(
&
color
->
draw
,
0
,
-
1
,
color
->
w
);
color
->
h
=
ff_draw_round_to_sub
(
&
color
->
draw
,
1
,
-
1
,
color
->
h
);
if
(
av_image_check_size
(
color
->
w
,
color
->
h
,
0
,
ctx
)
<
0
)
return
AVERROR
(
EINVAL
);
memcpy
(
rgba_color
,
color
->
color
,
sizeof
(
rgba_color
));
ff_fill_line_with_color
(
color
->
line
,
color
->
line_step
,
color
->
w
,
color
->
color
,
inlink
->
format
,
rgba_color
,
&
is_packed_rgba
,
NULL
);
av_log
(
ctx
,
AV_LOG_INFO
,
"w:%d h:%d r:%d/%d color:0x%02x%02x%02x%02x[%s]
\n
"
,
av_log
(
ctx
,
AV_LOG_INFO
,
"w:%d h:%d r:%d/%d color:0x%02x%02x%02x%02x
\n
"
,
color
->
w
,
color
->
h
,
color
->
time_base
.
den
,
color
->
time_base
.
num
,
color
->
color
[
0
],
color
->
color
[
1
],
color
->
color
[
2
],
color
->
color
[
3
],
is_packed_rgba
?
"rgba"
:
"yuva"
);
color
->
color_rgba
[
0
],
color
->
color_rgba
[
1
],
color
->
color_rgba
[
2
],
color
->
color_rgba
[
3
]);
inlink
->
w
=
color
->
w
;
inlink
->
h
=
color
->
h
;
inlink
->
time_base
=
color
->
time_base
;
...
...
@@ -144,8 +109,7 @@ static int color_request_frame(AVFilterLink *link)
picref
->
pos
=
-
1
;
avfilter_start_frame
(
link
,
avfilter_ref_buffer
(
picref
,
~
0
));
ff_draw_rectangle
(
picref
->
data
,
picref
->
linesize
,
color
->
line
,
color
->
line_step
,
color
->
hsub
,
color
->
vsub
,
ff_fill_rectangle
(
&
color
->
draw
,
&
color
->
color
,
picref
->
data
,
picref
->
linesize
,
0
,
0
,
color
->
w
,
color
->
h
);
avfilter_draw_slice
(
link
,
0
,
color
->
h
,
1
);
avfilter_end_frame
(
link
);
...
...
@@ -160,7 +124,6 @@ AVFilter avfilter_vsrc_color = {
.
priv_size
=
sizeof
(
ColorContext
),
.
init
=
color_init
,
.
uninit
=
color_uninit
,
.
query_formats
=
query_formats
,
...
...
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