Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
小白菜888
Ffmpeg
提交
7ed833d7
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,发现更多精彩内容 >>
提交
7ed833d7
编写于
2月 25, 2013
作者:
A
Anton Khirnov
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
vf_gradfun: switch to an AVOptions-based system.
上级
c334c113
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
38 addition
and
21 deletion
+38
-21
doc/filters.texi
doc/filters.texi
+16
-12
libavfilter/gradfun.h
libavfilter/gradfun.h
+2
-0
libavfilter/vf_gradfun.c
libavfilter/vf_gradfun.c
+20
-9
未找到文件。
doc/filters.texi
浏览文件 @
7ed833d7
...
...
@@ -1174,23 +1174,27 @@ This filter is designed for playback only. Do not use it prior to
lossy compression, because compression tends to lose the dither and
bring back the bands.
The filter takes two optional parameters, separated by ':':
@var{strength}:@var{radius}
This filter accepts the following options:
@table @option
@var{strength} is the maximum amount by which the filter will change
any one pixel. Also the threshold for detecting nearly flat
regions. Acceptable values range from .51 to 64, default value is
1.2, out-of-range values will be clipped to the valid range.
@item strength
The maximum amount by which the filter will change any one pixel. Also the
threshold for detecting nearly flat regions. Acceptable values range from .51 to
64, default value is 1.2, out-of-range values will be clipped to the valid
range.
@var{radius} is the neighborhood to fit the gradient to. A larger
radius makes for smoother gradients, but also prevents the filter from
modifying the pixels near detailed regions. Acceptable values are
8-32, default value is 16, out-of-range values will be clipped to the
valid range.
@item radius
The neighborhood to fit the gradient to. A larger radius makes for smoother
gradients, but also prevents the filter from modifying the pixels near detailed
regions. Acceptable values are 8-32, default value is 16, out-of-range values
will be clipped to the valid range.
@end table
@example
# default parameters
gradfun=
1.2:
16
gradfun=
strength=1.2:radius=
16
# omitting radius
gradfun=1.2
...
...
libavfilter/gradfun.h
浏览文件 @
7ed833d7
...
...
@@ -26,6 +26,8 @@
/// Holds instance-specific information for gradfun.
typedef
struct
GradFunContext
{
const
AVClass
*
class
;
float
strength
;
int
thresh
;
///< threshold for gradient algorithm
int
radius
;
///< blur radius
int
chroma_w
;
///< width of the chroma planes
...
...
libavfilter/vf_gradfun.c
浏览文件 @
7ed833d7
...
...
@@ -35,6 +35,7 @@
#include "libavutil/imgutils.h"
#include "libavutil/common.h"
#include "libavutil/cpu.h"
#include "libavutil/opt.h"
#include "libavutil/pixdesc.h"
#include "avfilter.h"
#include "formats.h"
...
...
@@ -122,15 +123,9 @@ static void filter(GradFunContext *ctx, uint8_t *dst, uint8_t *src, int width, i
static
av_cold
int
init
(
AVFilterContext
*
ctx
,
const
char
*
args
)
{
GradFunContext
*
gf
=
ctx
->
priv
;
float
thresh
=
1
.
2
;
int
radius
=
16
;
if
(
args
)
sscanf
(
args
,
"%f:%d"
,
&
thresh
,
&
radius
);
thresh
=
av_clipf
(
thresh
,
0
.
51
,
64
);
gf
->
thresh
=
(
1
<<
15
)
/
thresh
;
gf
->
radius
=
av_clip
((
radius
+
1
)
&
~
1
,
4
,
32
);
gf
->
thresh
=
(
1
<<
15
)
/
gf
->
strength
;
gf
->
radius
&=
~
1
;
gf
->
blur_line
=
ff_gradfun_blur_line_c
;
gf
->
filter_line
=
ff_gradfun_filter_line_c
;
...
...
@@ -138,7 +133,7 @@ static av_cold int init(AVFilterContext *ctx, const char *args)
if
(
ARCH_X86
)
ff_gradfun_init_x86
(
gf
);
av_log
(
ctx
,
AV_LOG_VERBOSE
,
"threshold:%.2f radius:%d
\n
"
,
thres
h
,
gf
->
radius
);
av_log
(
ctx
,
AV_LOG_VERBOSE
,
"threshold:%.2f radius:%d
\n
"
,
gf
->
strengt
h
,
gf
->
radius
);
return
0
;
}
...
...
@@ -227,6 +222,21 @@ static int filter_frame(AVFilterLink *inlink, AVFrame *in)
return
ff_filter_frame
(
outlink
,
out
);
}
#define OFFSET(x) offsetof(GradFunContext, x)
#define FLAGS AV_OPT_FLAG_VIDEO_PARAM
static
const
AVOption
options
[]
=
{
{
"strength"
,
"The maximum amount by which the filter will change any one pixel."
,
OFFSET
(
strength
),
AV_OPT_TYPE_FLOAT
,
{
.
dbl
=
1
.
2
},
0
.
51
,
64
,
FLAGS
},
{
"radius"
,
"The neighborhood to fit the gradient to."
,
OFFSET
(
radius
),
AV_OPT_TYPE_INT
,
{
.
i64
=
16
},
4
,
32
,
FLAGS
},
{
NULL
},
};
static
const
AVClass
gradfun_class
=
{
.
class_name
=
"gradfun"
,
.
item_name
=
av_default_item_name
,
.
option
=
options
,
.
version
=
LIBAVUTIL_VERSION_INT
,
};
static
const
AVFilterPad
avfilter_vf_gradfun_inputs
[]
=
{
{
.
name
=
"default"
,
...
...
@@ -249,6 +259,7 @@ AVFilter avfilter_vf_gradfun = {
.
name
=
"gradfun"
,
.
description
=
NULL_IF_CONFIG_SMALL
(
"Debands video quickly using gradients."
),
.
priv_size
=
sizeof
(
GradFunContext
),
.
priv_class
=
&
gradfun_class
,
.
init
=
init
,
.
uninit
=
uninit
,
.
query_formats
=
query_formats
,
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录