Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Contribute to GitLab
Sign in / Register
Toggle navigation
F
ffmpeg.wasm-core
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Linshizhi
ffmpeg.wasm-core
Commits
728f86ed
Commit
728f86ed
authored
Jun 12, 2012
by
Michael Niedermayer
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
swr: mix_2_1_int16_mmx/sse
Signed-off-by:
Michael Niedermayer
<
michaelni@gmx.at
>
parent
d504266c
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
74 additions
and
1 deletion
+74
-1
rematrix.c
libswresample/rematrix.c
+1
-1
rematrix.asm
libswresample/x86/rematrix.asm
+71
-0
swresample_x86.c
libswresample/x86/swresample_x86.c
+2
-0
No files found.
libswresample/rematrix.c
View file @
728f86ed
...
...
@@ -393,7 +393,7 @@ int swri_rematrix(SwrContext *s, AudioData *out, AudioData *in, int len, int mus
int
in_i1
=
s
->
matrix_ch
[
out_i
][
1
];
int
in_i2
=
s
->
matrix_ch
[
out_i
][
2
];
if
(
s
->
mix_2_1_simd
&&
len1
)
s
->
mix_2_1_simd
(
out
->
ch
[
out_i
]
,
in
->
ch
[
in_i1
]
,
in
->
ch
[
in_i2
]
,
s
->
native_matrix
,
in
->
ch_count
*
out_i
+
in_i1
,
in
->
ch_count
*
out_i
+
in_i2
,
len1
);
s
->
mix_2_1_simd
(
out
->
ch
[
out_i
]
,
in
->
ch
[
in_i1
]
,
in
->
ch
[
in_i2
]
,
s
->
native_
simd_
matrix
,
in
->
ch_count
*
out_i
+
in_i1
,
in
->
ch_count
*
out_i
+
in_i2
,
len1
);
else
s
->
mix_2_1_f
(
out
->
ch
[
out_i
]
,
in
->
ch
[
in_i1
]
,
in
->
ch
[
in_i2
]
,
s
->
native_matrix
,
in
->
ch_count
*
out_i
+
in_i1
,
in
->
ch_count
*
out_i
+
in_i2
,
len1
);
if
(
len
!=
len1
)
...
...
libswresample/x86/rematrix.asm
View file @
728f86ed
...
...
@@ -158,9 +158,78 @@ mix_1_1_int16_u_int %+ SUFFIX
%endif
%endmacro
%macro
MIX2_INT16
1
cglobal
mix_2_1_
%1
_int16
,
7
,
7
,
8
,
out
,
in1
,
in2
,
coeffp
,
index1
,
index2
,
len
%ifidn
%1
,
a
test
in1q
,
mmsize
-
1
jne
mix_2_1_int16_u_int
%
+
SUFFIX
test
in2q
,
mmsize
-
1
jne
mix_2_1_int16_u_int
%
+
SUFFIX
test
outq
,
mmsize
-
1
jne
mix_2_1_int16_u_int
%
+
SUFFIX
%else
mix_2_1_int16_u_int
%
+
SUFFIX
%endif
movd
m4
,
[
coeffpq
+
4
*
index1q
]
movd
m6
,
[
coeffpq
+
4
*
index2q
]
SPLATW
m5
,
m4
SPLATW
m6
,
m6
psllq
m4
,
32
psrlq
m4
,
48
mova
m7
,
[dw1]
pslld
m7
,
m4
psrld
m7
,
1
punpcklwd
m5
,
m6
add
lenq
,
lenq
add
in1q
,
lenq
add
in2q
,
lenq
add
outq
,
lenq
neg
lenq
.
next
:
mov%1
m0
,
[
in1q
+
lenq
]
mov%1
m2
,
[
in2q
+
lenq
]
mova
m1
,
m0
punpcklwd
m0
,
m2
punpckhwd
m1
,
m2
mov%1
m2
,
[
in1q
+
lenq
+
mmsize
]
mov%1
m6
,
[
in2q
+
lenq
+
mmsize
]
mova
m3
,
m2
punpcklwd
m2
,
m6
punpckhwd
m3
,
m6
pmaddwd
m0
,
m5
pmaddwd
m1
,
m5
pmaddwd
m2
,
m5
pmaddwd
m3
,
m5
paddd
m0
,
m7
paddd
m1
,
m7
paddd
m2
,
m7
paddd
m3
,
m7
psrad
m0
,
m4
psrad
m1
,
m4
psrad
m2
,
m4
psrad
m3
,
m4
packssdw
m0
,
m1
packssdw
m2
,
m3
mov%1
[
outq
+
lenq
]
,
m0
mov%1
[
outq
+
lenq
+
mmsize
]
,
m2
add
lenq
,
mmsize
*
2
jl
.
next
%if
mmsize
==
8
emms
RET
%else
REP_RET
%endif
%endmacro
INIT_MMX
mmx
MIX1_INT16
u
MIX1_INT16
a
MIX2_INT16
u
MIX2_INT16
a
INIT_XMM
sse
MIX2_FLT
u
...
...
@@ -169,6 +238,8 @@ MIX1_FLT u
MIX1_FLT
a
MIX1_INT16
u
MIX1_INT16
a
MIX2_INT16
u
MIX2_INT16
a
%if
HAVE_AVX
INIT_YMM
avx
...
...
libswresample/x86/swresample_x86.c
View file @
728f86ed
...
...
@@ -166,9 +166,11 @@ void swri_rematrix_init_x86(struct SwrContext *s){
if
(
s
->
midbuf
.
fmt
==
AV_SAMPLE_FMT_S16P
){
if
(
mm_flags
&
AV_CPU_FLAG_MMX
)
{
s
->
mix_1_1_simd
=
ff_mix_1_1_a_int16_mmx
;
s
->
mix_2_1_simd
=
ff_mix_2_1_a_int16_mmx
;
}
if
(
mm_flags
&
AV_CPU_FLAG_SSE
)
{
s
->
mix_1_1_simd
=
ff_mix_1_1_a_int16_sse
;
s
->
mix_2_1_simd
=
ff_mix_2_1_a_int16_sse
;
}
s
->
native_simd_matrix
=
av_mallocz
(
2
*
num
*
sizeof
(
int16_t
));
for
(
i
=
0
;
i
<
nb_out
;
i
++
){
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment