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
65722e7f
Commit
65722e7f
authored
Apr 29, 2012
by
Michael Niedermayer
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
swr: int32_to_int16_mmx/sse
Signed-off-by:
Michael Niedermayer
<
michaelni@gmx.at
>
parent
755667ee
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
36 additions
and
1 deletion
+36
-1
audio_convert.asm
libswresample/x86/audio_convert.asm
+31
-0
swresample_x86.c
libswresample/x86/swresample_x86.c
+5
-1
No files found.
libswresample/x86/audio_convert.asm
View file @
65722e7f
...
@@ -194,14 +194,45 @@ float_to_int16_u_int %+ SUFFIX
...
@@ -194,14 +194,45 @@ float_to_int16_u_int %+ SUFFIX
REP_RET
REP_RET
%endmacro
%endmacro
%macro
INT32_TO_INT16
1
cglobal
int32_to_int16_
%1
,
3
,
3
,
2
,
dst
,
src
,
len
mov
srcq
,
[srcq]
mov
dstq
,
[dstq]
%ifidn
%1
,
a
test
dstq
,
mmsize
-
1
jne
int32_to_int16_u_int
%
+
SUFFIX
test
srcq
,
mmsize
-
1
jne
int32_to_int16_u_int
%
+
SUFFIX
%else
int32_to_int16_u_int
%
+
SUFFIX
%endif
lea
srcq
,
[
srcq
+
2
*
lenq
]
add
dstq
,
lenq
neg
lenq
.
next
:
mov%1
m0
,
[
srcq
+
2
*
lenq
]
mov%1
m1
,
[
mmsize
+
srcq
+
2
*
lenq
]
psrad
m0
,
16
psrad
m1
,
16
packssdw
m0
,
m1
mov%1
[
dstq
+
lenq
]
,
m0
add
lenq
,
mmsize
jl
.
next
REP_RET
%endmacro
INIT_MMX
mmx
INIT_MMX
mmx
INT16_TO_INT32
u
INT16_TO_INT32
u
INT16_TO_INT32
a
INT16_TO_INT32
a
INT32_TO_INT16
u
INT32_TO_INT16
a
INIT_XMM
sse
INIT_XMM
sse
INT16_TO_INT32
u
INT16_TO_INT32
u
INT16_TO_INT32
a
INT16_TO_INT32
a
INT32_TO_INT16
u
INT32_TO_INT16
a
INIT_XMM
sse2
INIT_XMM
sse2
INT32_TO_FLOAT
u
INT32_TO_FLOAT
u
...
...
libswresample/x86/swresample_x86.c
View file @
65722e7f
...
@@ -22,7 +22,9 @@
...
@@ -22,7 +22,9 @@
#include "libswresample/audioconvert.h"
#include "libswresample/audioconvert.h"
#define MULTI_CAPS_FUNC_DECL(cap) \
#define MULTI_CAPS_FUNC_DECL(cap) \
void ff_int16_to_int32_a_ ## cap(uint8_t **dst, const uint8_t **src, int len);
void ff_int16_to_int32_a_ ## cap(uint8_t **dst, const uint8_t **src, int len);\
void ff_int32_to_int16_a_ ## cap(uint8_t **dst, const uint8_t **src, int len);\
MULTI_CAPS_FUNC_DECL
(
mmx
)
MULTI_CAPS_FUNC_DECL
(
mmx
)
MULTI_CAPS_FUNC_DECL
(
sse
)
MULTI_CAPS_FUNC_DECL
(
sse
)
...
@@ -45,6 +47,8 @@ void swri_audio_convert_init_x86(struct AudioConvert *ac,
...
@@ -45,6 +47,8 @@ void swri_audio_convert_init_x86(struct AudioConvert *ac,
if (mm_flags & flag) {\
if (mm_flags & flag) {\
if( out_fmt == AV_SAMPLE_FMT_S32 && in_fmt == AV_SAMPLE_FMT_S16 || out_fmt == AV_SAMPLE_FMT_S32P && in_fmt == AV_SAMPLE_FMT_S16P)\
if( out_fmt == AV_SAMPLE_FMT_S32 && in_fmt == AV_SAMPLE_FMT_S16 || out_fmt == AV_SAMPLE_FMT_S32P && in_fmt == AV_SAMPLE_FMT_S16P)\
ac->simd_f = ff_int16_to_int32_a_ ## cap;\
ac->simd_f = ff_int16_to_int32_a_ ## cap;\
if( out_fmt == AV_SAMPLE_FMT_S16 && in_fmt == AV_SAMPLE_FMT_S32 || out_fmt == AV_SAMPLE_FMT_S16P && in_fmt == AV_SAMPLE_FMT_S32P)\
ac->simd_f = ff_int32_to_int16_a_ ## cap;\
}
}
MULTI_CAPS_FUNC
(
AV_CPU_FLAG_MMX
,
mmx
)
MULTI_CAPS_FUNC
(
AV_CPU_FLAG_MMX
,
mmx
)
...
...
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