00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021 #include "config.h"
00022 #include "libavutil/cpu.h"
00023 #include "libavresample/audio_convert.h"
00024
00025 extern void ff_conv_fltp_to_flt_6ch_mmx (float *dst, float *const *src, int len);
00026 extern void ff_conv_fltp_to_flt_6ch_sse4(float *dst, float *const *src, int len);
00027 extern void ff_conv_fltp_to_flt_6ch_avx (float *dst, float *const *src, int len);
00028
00029 av_cold void ff_audio_convert_init_x86(AudioConvert *ac)
00030 {
00031 #if HAVE_YASM
00032 int mm_flags = av_get_cpu_flags();
00033
00034 if (mm_flags & AV_CPU_FLAG_MMX && HAVE_MMX) {
00035 ff_audio_convert_set_func(ac, AV_SAMPLE_FMT_FLT, AV_SAMPLE_FMT_FLTP,
00036 6, 1, 4, "MMX", ff_conv_fltp_to_flt_6ch_mmx);
00037 }
00038 if (mm_flags & AV_CPU_FLAG_SSE4 && HAVE_SSE) {
00039 ff_audio_convert_set_func(ac, AV_SAMPLE_FMT_FLT, AV_SAMPLE_FMT_FLTP,
00040 6, 16, 4, "SSE4", ff_conv_fltp_to_flt_6ch_sse4);
00041 }
00042 if (mm_flags & AV_CPU_FLAG_AVX && HAVE_AVX) {
00043 ff_audio_convert_set_func(ac, AV_SAMPLE_FMT_FLT, AV_SAMPLE_FMT_FLTP,
00044 6, 16, 4, "AVX", ff_conv_fltp_to_flt_6ch_avx);
00045 }
00046 #endif
00047 }