lavr: x86: optimized 6-channel flt to s16p conversion
[ffmpeg.git] / libavresample / x86 / audio_convert_init.c
index f32ca249e0ff84d96d503b94d35120c964a44b81..f5309f8ef2633e6742ad14c5c05d7855a2d35467 100644 (file)
@@ -125,6 +125,13 @@ extern void ff_conv_flt_to_s16p_2ch_sse2(int16_t *const *dst, float *src,
 extern void ff_conv_flt_to_s16p_2ch_avx (int16_t *const *dst, float *src,
                                          int len, int channels);
 
+extern void ff_conv_flt_to_s16p_6ch_sse2 (int16_t *const *dst, float *src,
+                                          int len, int channels);
+extern void ff_conv_flt_to_s16p_6ch_ssse3(int16_t *const *dst, float *src,
+                                          int len, int channels);
+extern void ff_conv_flt_to_s16p_6ch_avx  (int16_t *const *dst, float *src,
+                                          int len, int channels);
+
 av_cold void ff_audio_convert_init_x86(AudioConvert *ac)
 {
 #if HAVE_YASM
@@ -182,6 +189,8 @@ av_cold void ff_audio_convert_init_x86(AudioConvert *ac)
                                   6, 16, 4, "SSE2", ff_conv_s16_to_fltp_6ch_sse2);
         ff_audio_convert_set_func(ac, AV_SAMPLE_FMT_S16P, AV_SAMPLE_FMT_FLT,
                                   2, 16, 8, "SSE2", ff_conv_flt_to_s16p_2ch_sse2);
+        ff_audio_convert_set_func(ac, AV_SAMPLE_FMT_S16P, AV_SAMPLE_FMT_FLT,
+                                  6, 16, 4, "SSE2", ff_conv_flt_to_s16p_6ch_sse2);
     }
     if (mm_flags & AV_CPU_FLAG_SSSE3 && HAVE_SSE) {
         ff_audio_convert_set_func(ac, AV_SAMPLE_FMT_FLT, AV_SAMPLE_FMT_S16P,
@@ -194,6 +203,8 @@ av_cold void ff_audio_convert_init_x86(AudioConvert *ac)
                                   6, 16, 4, "SSSE3", ff_conv_s16_to_s16p_6ch_ssse3);
         ff_audio_convert_set_func(ac, AV_SAMPLE_FMT_FLTP, AV_SAMPLE_FMT_S16,
                                   6, 16, 4, "SSSE3", ff_conv_s16_to_fltp_6ch_ssse3);
+        ff_audio_convert_set_func(ac, AV_SAMPLE_FMT_S16P, AV_SAMPLE_FMT_FLT,
+                                  6, 16, 4, "SSSE3", ff_conv_flt_to_s16p_6ch_ssse3);
     }
     if (mm_flags & AV_CPU_FLAG_SSE4 && HAVE_SSE) {
         ff_audio_convert_set_func(ac, AV_SAMPLE_FMT_FLT, AV_SAMPLE_FMT_S16,
@@ -228,6 +239,8 @@ av_cold void ff_audio_convert_init_x86(AudioConvert *ac)
                                   6, 16, 4, "AVX", ff_conv_s16_to_fltp_6ch_avx);
         ff_audio_convert_set_func(ac, AV_SAMPLE_FMT_S16P, AV_SAMPLE_FMT_FLT,
                                   2, 16, 8, "AVX", ff_conv_flt_to_s16p_2ch_avx);
+        ff_audio_convert_set_func(ac, AV_SAMPLE_FMT_S16P, AV_SAMPLE_FMT_FLT,
+                                  6, 16, 4, "AVX", ff_conv_flt_to_s16p_6ch_avx);
     }
 #endif
 }