summaryrefslogtreecommitdiff
path: root/ffmpeg/libswresample/x86
diff options
context:
space:
mode:
Diffstat (limited to 'ffmpeg/libswresample/x86')
-rw-r--r--ffmpeg/libswresample/x86/audio_convert.asm8
-rw-r--r--ffmpeg/libswresample/x86/rematrix.asm3
-rw-r--r--ffmpeg/libswresample/x86/swresample_x86.c5
3 files changed, 12 insertions, 4 deletions
diff --git a/ffmpeg/libswresample/x86/audio_convert.asm b/ffmpeg/libswresample/x86/audio_convert.asm
index ad46977..b6e9e5d 100644
--- a/ffmpeg/libswresample/x86/audio_convert.asm
+++ b/ffmpeg/libswresample/x86/audio_convert.asm
@@ -20,8 +20,7 @@
%include "libavutil/x86/x86util.asm"
-SECTION_RODATA
-align 32
+SECTION_RODATA 32
flt2pm31: times 8 dd 4.6566129e-10
flt2p31 : times 8 dd 2147483648.0
flt2p15 : times 8 dd 32768.0
@@ -195,7 +194,12 @@ cglobal %2_to_%1_%3, 3, 3, 6, dst, src, len
add lenq, 2*mmsize/(1<<%4)
%endif
jl .next
+%if mmsize == 8
+ emms
+ RET
+%else
REP_RET
+%endif
%endmacro
%macro PACK_6CH 5-7
diff --git a/ffmpeg/libswresample/x86/rematrix.asm b/ffmpeg/libswresample/x86/rematrix.asm
index 84448e8..f0ae959 100644
--- a/ffmpeg/libswresample/x86/rematrix.asm
+++ b/ffmpeg/libswresample/x86/rematrix.asm
@@ -21,8 +21,7 @@
%include "libavutil/x86/x86util.asm"
-SECTION_RODATA
-align 32
+SECTION_RODATA 32
dw1: times 8 dd 1
w1 : times 16 dw 1
diff --git a/ffmpeg/libswresample/x86/swresample_x86.c b/ffmpeg/libswresample/x86/swresample_x86.c
index e18f0c5..581dc17 100644
--- a/ffmpeg/libswresample/x86/swresample_x86.c
+++ b/ffmpeg/libswresample/x86/swresample_x86.c
@@ -169,6 +169,7 @@ av_cold void swri_rematrix_init_x86(struct SwrContext *s){
s->mix_2_1_simd = ff_mix_2_1_a_int16_sse2;
}
s->native_simd_matrix = av_mallocz(2 * num * sizeof(int16_t));
+ s->native_simd_one = av_mallocz(2 * sizeof(int16_t));
for(i=0; i<nb_out; i++){
int sh = 0;
for(j=0; j<nb_in; j++)
@@ -180,6 +181,8 @@ av_cold void swri_rematrix_init_x86(struct SwrContext *s){
((((int*)s->native_matrix)[i * nb_in + j]) + (1<<sh>>1)) >> sh;
}
}
+ ((int16_t*)s->native_simd_one)[1] = 14;
+ ((int16_t*)s->native_simd_one)[0] = 16384;
} else if(s->midbuf.fmt == AV_SAMPLE_FMT_FLTP){
if(mm_flags & AV_CPU_FLAG_SSE) {
s->mix_1_1_simd = ff_mix_1_1_a_float_sse;
@@ -191,5 +194,7 @@ av_cold void swri_rematrix_init_x86(struct SwrContext *s){
}
s->native_simd_matrix = av_mallocz(num * sizeof(float));
memcpy(s->native_simd_matrix, s->native_matrix, num * sizeof(float));
+ s->native_simd_one = av_mallocz(sizeof(float));
+ memcpy(s->native_simd_one, s->native_one, sizeof(float));
}
}