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_mix.h"
00024
00025 extern void ff_mix_2_to_1_fltp_flt_sse(float **src, float **matrix, int len,
00026 int out_ch, int in_ch);
00027 extern void ff_mix_2_to_1_fltp_flt_avx(float **src, float **matrix, int len,
00028 int out_ch, int in_ch);
00029
00030 av_cold void ff_audio_mix_init_x86(AudioMix *am)
00031 {
00032 #if HAVE_YASM
00033 int mm_flags = av_get_cpu_flags();
00034
00035 if (mm_flags & AV_CPU_FLAG_SSE && HAVE_SSE) {
00036 ff_audio_mix_set_func(am, AV_SAMPLE_FMT_FLTP, AV_MIX_COEFF_TYPE_FLT,
00037 2, 1, 16, 8, "SSE", ff_mix_2_to_1_fltp_flt_sse);
00038 }
00039 if (mm_flags & AV_CPU_FLAG_AVX && HAVE_AVX) {
00040 ff_audio_mix_set_func(am, AV_SAMPLE_FMT_FLTP, AV_MIX_COEFF_TYPE_FLT,
00041 2, 1, 32, 16, "AVX", ff_mix_2_to_1_fltp_flt_avx);
00042 }
00043 #endif
00044 }