diff options
author | Justin Ruggles <justin.ruggles@gmail.com> | 2012-05-03 15:23:32 -0400 |
---|---|---|
committer | Justin Ruggles <justin.ruggles@gmail.com> | 2012-05-09 16:17:59 -0400 |
commit | 5cc6d5244d4ec89b3ac855abff4a3d19caee22f1 (patch) | |
tree | 7c3643f535a67203b60bd001f1382b9b1282d3af /libavresample/x86/audio_convert_init.c | |
parent | 0b45334a5880d6e2a4b3642adcd5feab8a27a150 (diff) | |
download | ffmpeg-5cc6d5244d4ec89b3ac855abff4a3d19caee22f1.tar.gz |
lavr: replace the SSE version of ff_conv_fltp_to_flt_6ch() with SSE4 and AVX
The current SSE version is slower than the MMX version on Athlon64 and Sandy
Bridge, but the SSE4 and AVX versions are faster on Sandy Bridge.
Diffstat (limited to 'libavresample/x86/audio_convert_init.c')
-rw-r--r-- | libavresample/x86/audio_convert_init.c | 13 |
1 files changed, 9 insertions, 4 deletions
diff --git a/libavresample/x86/audio_convert_init.c b/libavresample/x86/audio_convert_init.c index 6883f10a21..206aede751 100644 --- a/libavresample/x86/audio_convert_init.c +++ b/libavresample/x86/audio_convert_init.c @@ -22,8 +22,9 @@ #include "libavutil/cpu.h" #include "libavresample/audio_convert.h" -extern void ff_conv_fltp_to_flt_6ch_mmx(float *dst, float *const *src, int len); -extern void ff_conv_fltp_to_flt_6ch_sse(float *dst, float *const *src, int len); +extern void ff_conv_fltp_to_flt_6ch_mmx (float *dst, float *const *src, int len); +extern void ff_conv_fltp_to_flt_6ch_sse4(float *dst, float *const *src, int len); +extern void ff_conv_fltp_to_flt_6ch_avx (float *dst, float *const *src, int len); av_cold void ff_audio_convert_init_x86(AudioConvert *ac) { @@ -34,9 +35,13 @@ av_cold void ff_audio_convert_init_x86(AudioConvert *ac) ff_audio_convert_set_func(ac, AV_SAMPLE_FMT_FLT, AV_SAMPLE_FMT_FLTP, 6, 1, 4, "MMX", ff_conv_fltp_to_flt_6ch_mmx); } - if (mm_flags & AV_CPU_FLAG_SSE && HAVE_SSE) { + if (mm_flags & AV_CPU_FLAG_SSE4 && HAVE_SSE) { ff_audio_convert_set_func(ac, AV_SAMPLE_FMT_FLT, AV_SAMPLE_FMT_FLTP, - 6, 16, 4, "SSE", ff_conv_fltp_to_flt_6ch_sse); + 6, 16, 4, "SSE4", ff_conv_fltp_to_flt_6ch_sse4); + } + if (mm_flags & AV_CPU_FLAG_AVX && HAVE_AVX) { + ff_audio_convert_set_func(ac, AV_SAMPLE_FMT_FLT, AV_SAMPLE_FMT_FLTP, + 6, 16, 4, "AVX", ff_conv_fltp_to_flt_6ch_avx); } #endif } |