lavr: Add x86-optimized functions for s32 to flt conversion
[ffmpeg.git] / libavresample / x86 / audio_convert_init.c
index c4fe3ae..f0a1a1a 100644 (file)
@@ -30,6 +30,9 @@ extern void ff_conv_s16_to_flt_sse4(float *dst, const int16_t *src, int len);
 extern void ff_conv_s32_to_s16_mmx (int16_t *dst, const int32_t *src, int len);
 extern void ff_conv_s32_to_s16_sse2(int16_t *dst, const int32_t *src, int len);
 
+extern void ff_conv_s32_to_flt_sse2(float *dst, const int32_t *src, int len);
+extern void ff_conv_s32_to_flt_avx (float *dst, const int32_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);
@@ -62,10 +65,16 @@ av_cold void ff_audio_convert_init_x86(AudioConvert *ac)
                                   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);
+        ff_audio_convert_set_func(ac, AV_SAMPLE_FMT_FLT, AV_SAMPLE_FMT_S32,
+                                  0, 16, 8, "SSE2", ff_conv_s32_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);
     }
+    if (mm_flags & AV_CPU_FLAG_AVX && HAVE_AVX) {
+        ff_audio_convert_set_func(ac, AV_SAMPLE_FMT_FLT, AV_SAMPLE_FMT_S32,
+                                  0, 32, 16, "AVX", ff_conv_s32_to_flt_avx);
+    }
 #endif
 }