Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
小白菜888
Ffmpeg
提交
b94cd551
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,体验更适合开发者的 AI 搜索 >>
提交
b94cd551
编写于
12月 30, 2017
作者:
M
Martin Vignali
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
avfilter/x86/vf_interlace : add AVX2 version
上级
ef21033c
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
50 addition
and
1 deletion
+50
-1
libavfilter/x86/vf_interlace.asm
libavfilter/x86/vf_interlace.asm
+22
-1
libavfilter/x86/vf_interlace_init.c
libavfilter/x86/vf_interlace_init.c
+12
-0
libavfilter/x86/vf_tinterlace_init.c
libavfilter/x86/vf_tinterlace_init.c
+16
-0
未找到文件。
libavfilter/x86/vf_interlace.asm
浏览文件 @
b94cd551
...
...
@@ -39,6 +39,20 @@ SECTION .text
pcmpeq
%
1
m6
,
m6
test
hq
,
mmsize
je
.loop
;process 1 * mmsize
movu
m0
,
[
mrefq
+
hq
]
pavg
%
1
m0
,
[
prefq
+
hq
]
pxor
m0
,
m6
pxor
m2
,
m6
,
[
srcq
+
hq
]
pavg
%
1
m0
,
m2
pxor
m0
,
m6
mova
[
ds
tq
+
hq
],
m0
add
hq
,
mmsize
jge
.end
.loop:
movu
m0
,
[
mrefq
+
hq
]
movu
m1
,
[
mrefq
+
hq
+
mmsize
]
...
...
@@ -57,7 +71,9 @@ SECTION .text
add
hq
,
2
*
mmsize
jl
.loop
REP_RET
.end:
REP_RET
%endmacro
%macro LOWPASS_LINE 0
...
...
@@ -201,5 +217,10 @@ LOWPASS_LINE
INIT_XMM
avx
LOWPASS_LINE
%if HAVE_AVX2_EXTERNAL
INIT_YMM
avx2
LOWPASS_LINE
%endif
INIT_XMM
ss
e2
LOWPASS_LINE_COMPLEX
libavfilter/x86/vf_interlace_init.c
浏览文件 @
b94cd551
...
...
@@ -32,6 +32,9 @@ void ff_lowpass_line_sse2(uint8_t *dstp, ptrdiff_t linesize,
void
ff_lowpass_line_avx
(
uint8_t
*
dstp
,
ptrdiff_t
linesize
,
const
uint8_t
*
srcp
,
ptrdiff_t
mref
,
ptrdiff_t
pref
,
int
clip_max
);
void
ff_lowpass_line_avx2
(
uint8_t
*
dstp
,
ptrdiff_t
linesize
,
const
uint8_t
*
srcp
,
ptrdiff_t
mref
,
ptrdiff_t
pref
,
int
clip_max
);
void
ff_lowpass_line_16_sse2
(
uint8_t
*
dstp
,
ptrdiff_t
linesize
,
const
uint8_t
*
srcp
,
ptrdiff_t
mref
,
...
...
@@ -39,6 +42,9 @@ void ff_lowpass_line_16_sse2(uint8_t *dstp, ptrdiff_t linesize,
void
ff_lowpass_line_16_avx
(
uint8_t
*
dstp
,
ptrdiff_t
linesize
,
const
uint8_t
*
srcp
,
ptrdiff_t
mref
,
ptrdiff_t
pref
,
int
clip_max
);
void
ff_lowpass_line_16_avx2
(
uint8_t
*
dstp
,
ptrdiff_t
linesize
,
const
uint8_t
*
srcp
,
ptrdiff_t
mref
,
ptrdiff_t
pref
,
int
clip_max
);
void
ff_lowpass_line_complex_sse2
(
uint8_t
*
dstp
,
ptrdiff_t
linesize
,
const
uint8_t
*
srcp
,
ptrdiff_t
mref
,
...
...
@@ -62,6 +68,9 @@ av_cold void ff_interlace_init_x86(InterlaceContext *s, int depth)
if
(
EXTERNAL_AVX
(
cpu_flags
))
if
(
s
->
lowpass
==
VLPF_LIN
)
s
->
lowpass_line
=
ff_lowpass_line_16_avx
;
if
(
EXTERNAL_AVX2_FAST
(
cpu_flags
))
if
(
s
->
lowpass
==
VLPF_LIN
)
s
->
lowpass_line
=
ff_lowpass_line_16_avx2
;
}
else
{
if
(
EXTERNAL_SSE2
(
cpu_flags
))
{
if
(
s
->
lowpass
==
VLPF_LIN
)
...
...
@@ -72,5 +81,8 @@ av_cold void ff_interlace_init_x86(InterlaceContext *s, int depth)
if
(
EXTERNAL_AVX
(
cpu_flags
))
if
(
s
->
lowpass
==
VLPF_LIN
)
s
->
lowpass_line
=
ff_lowpass_line_avx
;
if
(
EXTERNAL_AVX2_FAST
(
cpu_flags
))
if
(
s
->
lowpass
==
VLPF_LIN
)
s
->
lowpass_line
=
ff_lowpass_line_avx2
;
}
}
libavfilter/x86/vf_tinterlace_init.c
浏览文件 @
b94cd551
...
...
@@ -33,6 +33,9 @@ void ff_lowpass_line_sse2(uint8_t *dstp, ptrdiff_t linesize,
void
ff_lowpass_line_avx
(
uint8_t
*
dstp
,
ptrdiff_t
linesize
,
const
uint8_t
*
srcp
,
ptrdiff_t
mref
,
ptrdiff_t
pref
,
int
clip_max
);
void
ff_lowpass_line_avx2
(
uint8_t
*
dstp
,
ptrdiff_t
linesize
,
const
uint8_t
*
srcp
,
ptrdiff_t
mref
,
ptrdiff_t
pref
,
int
clip_max
);
void
ff_lowpass_line_16_sse2
(
uint8_t
*
dstp
,
ptrdiff_t
linesize
,
const
uint8_t
*
srcp
,
ptrdiff_t
mref
,
...
...
@@ -40,6 +43,9 @@ void ff_lowpass_line_16_sse2(uint8_t *dstp, ptrdiff_t linesize,
void
ff_lowpass_line_16_avx
(
uint8_t
*
dstp
,
ptrdiff_t
linesize
,
const
uint8_t
*
srcp
,
ptrdiff_t
mref
,
ptrdiff_t
pref
,
int
clip_max
);
void
ff_lowpass_line_16_avx2
(
uint8_t
*
dstp
,
ptrdiff_t
linesize
,
const
uint8_t
*
srcp
,
ptrdiff_t
mref
,
ptrdiff_t
pref
,
int
clip_max
);
void
ff_lowpass_line_complex_sse2
(
uint8_t
*
dstp
,
ptrdiff_t
linesize
,
const
uint8_t
*
srcp
,
ptrdiff_t
mref
,
...
...
@@ -63,6 +69,11 @@ av_cold void ff_tinterlace_init_x86(TInterlaceContext *s)
if
(
EXTERNAL_AVX
(
cpu_flags
))
if
(
!
(
s
->
flags
&
TINTERLACE_FLAG_CVLPF
))
s
->
lowpass_line
=
ff_lowpass_line_16_avx
;
if
(
EXTERNAL_AVX2_FAST
(
cpu_flags
))
{
if
(
!
(
s
->
flags
&
TINTERLACE_FLAG_CVLPF
))
{
s
->
lowpass_line
=
ff_lowpass_line_16_avx2
;
}
}
}
else
{
if
(
EXTERNAL_SSE2
(
cpu_flags
))
{
if
(
!
(
s
->
flags
&
TINTERLACE_FLAG_CVLPF
))
...
...
@@ -73,5 +84,10 @@ av_cold void ff_tinterlace_init_x86(TInterlaceContext *s)
if
(
EXTERNAL_AVX
(
cpu_flags
))
if
(
!
(
s
->
flags
&
TINTERLACE_FLAG_CVLPF
))
s
->
lowpass_line
=
ff_lowpass_line_avx
;
if
(
EXTERNAL_AVX2_FAST
(
cpu_flags
))
{
if
(
!
(
s
->
flags
&
TINTERLACE_FLAG_CVLPF
))
{
s
->
lowpass_line
=
ff_lowpass_line_avx2
;
}
}
}
}
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录