lavr: Add x86-optimized functions for s16 to flt conversion
[ffmpeg.git] / libavresample / x86 / audio_convert_init.c
index 206aede..2488cd3 100644 (file)
 #include "libavutil/cpu.h"
 #include "libavresample/audio_convert.h"
 
+extern void ff_conv_s16_to_s32_sse2(int16_t *dst, const int32_t *src, int len);
+
+extern void ff_conv_s16_to_flt_sse2(float *dst, const int16_t *src, int len);
+extern void ff_conv_s16_to_flt_sse4(float *dst, const int16_t *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);
@@ -43,5 +48,15 @@ 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, 16, 4, "AVX", ff_conv_fltp_to_flt_6ch_avx);
     }
+    if (mm_flags & AV_CPU_FLAG_SSE2 && HAVE_SSE) {
+        ff_audio_convert_set_func(ac, AV_SAMPLE_FMT_S32, AV_SAMPLE_FMT_S16,
+                                  0, 16, 8, "SSE2", ff_conv_s16_to_s32_sse2);
+        ff_audio_convert_set_func(ac, AV_SAMPLE_FMT_FLT, AV_SAMPLE_FMT_S16,
+                                  0, 16, 8, "SSE2", ff_conv_s16_to_flt_sse2);
+    }
+    if (mm_flags & AV_CPU_FLAG_SSE4 && HAVE_SSE) {
+        ff_audio_convert_set_func(ac, AV_SAMPLE_FMT_FLT, AV_SAMPLE_FMT_S16,
+                                  0, 16, 8, "SSE4", ff_conv_s16_to_flt_sse4);
+    }
 #endif
 }