Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
小白菜888
Ffmpeg
提交
70849851
F
Ffmpeg
项目概览
小白菜888
/
Ffmpeg
通知
3
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
F
Ffmpeg
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
70849851
编写于
3月 17, 2012
作者:
N
Nicolas George
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
vsrc_color: port to new drawutils API.
上级
53b7a3fe
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
12 addition
and
49 deletion
+12
-49
libavfilter/vsrc_color.c
libavfilter/vsrc_color.c
+12
-49
未找到文件。
libavfilter/vsrc_color.c
浏览文件 @
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
,
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录