diff options
Diffstat (limited to 'ffmpeg/libswresample/x86')
| -rw-r--r-- | ffmpeg/libswresample/x86/audio_convert.asm | 8 | ||||
| -rw-r--r-- | ffmpeg/libswresample/x86/rematrix.asm | 3 | ||||
| -rw-r--r-- | ffmpeg/libswresample/x86/swresample_x86.c | 5 |
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)); } } |
