Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
小白菜888
Ffmpeg
提交
ce385c86
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,发现更多精彩内容 >>
提交
ce385c86
编写于
7月 17, 2014
作者:
M
Muhammad Faiz
提交者:
Michael Niedermayer
7月 21, 2014
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
avfilter/biquads: avoid clipping when using floating type
Signed-off-by:
N
Michael Niedermayer
<
michaelni@gmx.at
>
上级
71e515c1
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
11 addition
and
11 deletion
+11
-11
libavfilter/af_biquads.c
libavfilter/af_biquads.c
+11
-11
未找到文件。
libavfilter/af_biquads.c
浏览文件 @
ce385c86
...
@@ -161,7 +161,7 @@ static int query_formats(AVFilterContext *ctx)
...
@@ -161,7 +161,7 @@ static int query_formats(AVFilterContext *ctx)
return
0
;
return
0
;
}
}
#define BIQUAD_FILTER(name, type, min, max
)
\
#define BIQUAD_FILTER(name, type, min, max
, need_clipping)
\
static void biquad_## name (const void *input, void *output, int len, \
static void biquad_## name (const void *input, void *output, int len, \
double *in1, double *in2, \
double *in1, double *in2, \
double *out1, double *out2, \
double *out1, double *out2, \
...
@@ -181,10 +181,10 @@ static void biquad_## name (const void *input, void *output, int len, \
...
@@ -181,10 +181,10 @@ static void biquad_## name (const void *input, void *output, int len, \
for (i = 0; i+1 < len; i++) { \
for (i = 0; i+1 < len; i++) { \
o2 = i2 * b2 + i1 * b1 + ibuf[i] * b0 + o2 * a2 + o1 * a1; \
o2 = i2 * b2 + i1 * b1 + ibuf[i] * b0 + o2 * a2 + o1 * a1; \
i2 = ibuf[i]; \
i2 = ibuf[i]; \
if (
o2 < min) {
\
if (
need_clipping && o2 < min) {
\
av_log(NULL, AV_LOG_WARNING, "clipping\n"); \
av_log(NULL, AV_LOG_WARNING, "clipping\n"); \
obuf[i] = min; \
obuf[i] = min; \
} else if (
o2 > max) {
\
} else if (
need_clipping && o2 > max) {
\
av_log(NULL, AV_LOG_WARNING, "clipping\n"); \
av_log(NULL, AV_LOG_WARNING, "clipping\n"); \
obuf[i] = max; \
obuf[i] = max; \
} else { \
} else { \
...
@@ -193,10 +193,10 @@ static void biquad_## name (const void *input, void *output, int len, \
...
@@ -193,10 +193,10 @@ static void biquad_## name (const void *input, void *output, int len, \
i++; \
i++; \
o1 = i1 * b2 + i2 * b1 + ibuf[i] * b0 + o1 * a2 + o2 * a1; \
o1 = i1 * b2 + i2 * b1 + ibuf[i] * b0 + o1 * a2 + o2 * a1; \
i1 = ibuf[i]; \
i1 = ibuf[i]; \
if (
o1 < min) {
\
if (
need_clipping && o1 < min) {
\
av_log(NULL, AV_LOG_WARNING, "clipping\n"); \
av_log(NULL, AV_LOG_WARNING, "clipping\n"); \
obuf[i] = min; \
obuf[i] = min; \
} else if (
o1 > max) {
\
} else if (
need_clipping && o1 > max) {
\
av_log(NULL, AV_LOG_WARNING, "clipping\n"); \
av_log(NULL, AV_LOG_WARNING, "clipping\n"); \
obuf[i] = max; \
obuf[i] = max; \
} else { \
} else { \
...
@@ -209,10 +209,10 @@ static void biquad_## name (const void *input, void *output, int len, \
...
@@ -209,10 +209,10 @@ static void biquad_## name (const void *input, void *output, int len, \
i1 = ibuf[i]; \
i1 = ibuf[i]; \
o2 = o1; \
o2 = o1; \
o1 = o0; \
o1 = o0; \
if (
o0 < min) {
\
if (
need_clipping && o0 < min) {
\
av_log(NULL, AV_LOG_WARNING, "clipping\n"); \
av_log(NULL, AV_LOG_WARNING, "clipping\n"); \
obuf[i] = min; \
obuf[i] = min; \
} else if (
o0 > max) {
\
} else if (
need_clipping && o0 > max) {
\
av_log(NULL, AV_LOG_WARNING, "clipping\n"); \
av_log(NULL, AV_LOG_WARNING, "clipping\n"); \
obuf[i] = max; \
obuf[i] = max; \
} else { \
} else { \
...
@@ -225,10 +225,10 @@ static void biquad_## name (const void *input, void *output, int len, \
...
@@ -225,10 +225,10 @@ static void biquad_## name (const void *input, void *output, int len, \
*out2 = o2; \
*out2 = o2; \
}
}
BIQUAD_FILTER
(
s16
,
int16_t
,
INT16_MIN
,
INT16_MAX
)
BIQUAD_FILTER
(
s16
,
int16_t
,
INT16_MIN
,
INT16_MAX
,
1
)
BIQUAD_FILTER
(
s32
,
int32_t
,
INT32_MIN
,
INT32_MAX
)
BIQUAD_FILTER
(
s32
,
int32_t
,
INT32_MIN
,
INT32_MAX
,
1
)
BIQUAD_FILTER
(
flt
,
float
,
-
1
.,
1
.)
BIQUAD_FILTER
(
flt
,
float
,
-
1
.,
1
.
,
0
)
BIQUAD_FILTER
(
dbl
,
double
,
-
1
.,
1
.)
BIQUAD_FILTER
(
dbl
,
double
,
-
1
.,
1
.
,
0
)
static
int
config_output
(
AVFilterLink
*
outlink
)
static
int
config_output
(
AVFilterLink
*
outlink
)
{
{
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录