Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
小白菜888
Ffmpeg
提交
f61ce90c
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 搜索 >>
提交
f61ce90c
编写于
5月 29, 2012
作者:
J
Justin Ruggles
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
lavr: add x86-optimized functions for mixing 1-to-2 s16p with flt coeffs
上级
29f7490c
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
60 addition
and
0 deletion
+60
-0
libavresample/x86/audio_mix.asm
libavresample/x86/audio_mix.asm
+47
-0
libavresample/x86/audio_mix_init.c
libavresample/x86/audio_mix_init.c
+13
-0
未找到文件。
libavresample/x86/audio_mix.asm
浏览文件 @
f61ce90c
...
...
@@ -184,3 +184,50 @@ MIX_1_TO_2_FLTP_FLT
INIT_YMM
avx
MIX_1_TO_2_FLTP_FLT
%endif
;-----------------------------------------------------------------------------
; void ff_mix_1_to_2_s16p_flt(int16_t **src, float **matrix, int len,
; int out_ch, int in_ch);
;-----------------------------------------------------------------------------
%macro MIX_1_TO_2_S16P_FLT 0
cglobal
mix_1_to_2_s16p_flt
,
3
,
5
,
6
,
src0
,
matrix0
,
len
,
src1
,
matrix1
mov
src1q
,
[
src0q
+
gprsize
]
mov
src0q
,
[
src0q
]
sub
src1q
,
src0q
mov
matrix1q
,
[
matrix0q
+
gprsize
]
mov
matrix0q
,
[
matrix0q
]
VBROADCASTSS
m4
,
[
matrix0q
]
VBROADCASTSS
m5
,
[
matrix1q
]
ALIGN
16
.loop:
mova
m0
,
[
src0q
]
S16_TO_S32_SX
0
,
2
cvtdq2ps
m0
,
m0
cvtdq2ps
m2
,
m2
mulps
m1
,
m0
,
m5
mulps
m0
,
m0
,
m4
mulps
m3
,
m2
,
m5
mulps
m2
,
m2
,
m4
cvtps2dq
m0
,
m0
cvtps2dq
m1
,
m1
cvtps2dq
m2
,
m2
cvtps2dq
m3
,
m3
packssdw
m0
,
m2
packssdw
m1
,
m3
mova
[
src0q
],
m0
mova
[
src0q
+
src1q
],
m1
add
src0q
,
mmsize
sub
lend
,
mmsize
/
2
jg
.loop
REP_RET
%endmacro
INIT_XMM
ss
e2
MIX_1_TO_2_S16P_FLT
INIT_XMM
ss
e4
MIX_1_TO_2_S16P_FLT
%if HAVE_AVX
INIT_XMM
avx
MIX_1_TO_2_S16P_FLT
%endif
libavresample/x86/audio_mix_init.c
浏览文件 @
f61ce90c
...
...
@@ -40,6 +40,13 @@ extern void ff_mix_1_to_2_fltp_flt_sse(float **src, float **matrix, int len,
extern
void
ff_mix_1_to_2_fltp_flt_avx
(
float
**
src
,
float
**
matrix
,
int
len
,
int
out_ch
,
int
in_ch
);
extern
void
ff_mix_1_to_2_s16p_flt_sse2
(
int16_t
**
src
,
float
**
matrix
,
int
len
,
int
out_ch
,
int
in_ch
);
extern
void
ff_mix_1_to_2_s16p_flt_sse4
(
int16_t
**
src
,
float
**
matrix
,
int
len
,
int
out_ch
,
int
in_ch
);
extern
void
ff_mix_1_to_2_s16p_flt_avx
(
int16_t
**
src
,
float
**
matrix
,
int
len
,
int
out_ch
,
int
in_ch
);
av_cold
void
ff_audio_mix_init_x86
(
AudioMix
*
am
)
{
#if HAVE_YASM
...
...
@@ -56,16 +63,22 @@ av_cold void ff_audio_mix_init_x86(AudioMix *am)
2
,
1
,
16
,
8
,
"SSE2"
,
ff_mix_2_to_1_s16p_flt_sse2
);
ff_audio_mix_set_func
(
am
,
AV_SAMPLE_FMT_S16P
,
AV_MIX_COEFF_TYPE_Q8
,
2
,
1
,
16
,
8
,
"SSE2"
,
ff_mix_2_to_1_s16p_q8_sse2
);
ff_audio_mix_set_func
(
am
,
AV_SAMPLE_FMT_S16P
,
AV_MIX_COEFF_TYPE_FLT
,
1
,
2
,
16
,
8
,
"SSE2"
,
ff_mix_1_to_2_s16p_flt_sse2
);
}
if
(
mm_flags
&
AV_CPU_FLAG_SSE4
&&
HAVE_SSE
)
{
ff_audio_mix_set_func
(
am
,
AV_SAMPLE_FMT_S16P
,
AV_MIX_COEFF_TYPE_FLT
,
2
,
1
,
16
,
8
,
"SSE4"
,
ff_mix_2_to_1_s16p_flt_sse4
);
ff_audio_mix_set_func
(
am
,
AV_SAMPLE_FMT_S16P
,
AV_MIX_COEFF_TYPE_FLT
,
1
,
2
,
16
,
8
,
"SSE4"
,
ff_mix_1_to_2_s16p_flt_sse4
);
}
if
(
mm_flags
&
AV_CPU_FLAG_AVX
&&
HAVE_AVX
)
{
ff_audio_mix_set_func
(
am
,
AV_SAMPLE_FMT_FLTP
,
AV_MIX_COEFF_TYPE_FLT
,
2
,
1
,
32
,
16
,
"AVX"
,
ff_mix_2_to_1_fltp_flt_avx
);
ff_audio_mix_set_func
(
am
,
AV_SAMPLE_FMT_FLTP
,
AV_MIX_COEFF_TYPE_FLT
,
1
,
2
,
32
,
8
,
"AVX"
,
ff_mix_1_to_2_fltp_flt_avx
);
ff_audio_mix_set_func
(
am
,
AV_SAMPLE_FMT_S16P
,
AV_MIX_COEFF_TYPE_FLT
,
1
,
2
,
16
,
8
,
"AVX"
,
ff_mix_1_to_2_s16p_flt_avx
);
}
#endif
}
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录