|
|
@@ -49,7 +49,7 @@ void swri_audio_convert_init_x86(struct AudioConvert *ac, |
|
|
|
} |
|
|
|
|
|
|
|
MULTI_CAPS_FUNC(AV_CPU_FLAG_MMX, mmx) |
|
|
|
MULTI_CAPS_FUNC(AV_CPU_FLAG_SSE, sse) |
|
|
|
MULTI_CAPS_FUNC(AV_CPU_FLAG_SSE2, sse2) |
|
|
|
|
|
|
|
if(mm_flags & AV_CPU_FLAG_MMX) { |
|
|
|
if(channels == 6) { |
|
|
@@ -58,28 +58,6 @@ MULTI_CAPS_FUNC(AV_CPU_FLAG_SSE, sse) |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
if(mm_flags & AV_CPU_FLAG_SSE) { |
|
|
|
if(channels == 2) { |
|
|
|
if( out_fmt == AV_SAMPLE_FMT_FLT && in_fmt == AV_SAMPLE_FMT_FLTP || out_fmt == AV_SAMPLE_FMT_S32 && in_fmt == AV_SAMPLE_FMT_S32P) |
|
|
|
ac->simd_f = ff_pack_2ch_int32_to_int32_a_sse; |
|
|
|
if( out_fmt == AV_SAMPLE_FMT_S16 && in_fmt == AV_SAMPLE_FMT_S16P) |
|
|
|
ac->simd_f = ff_pack_2ch_int16_to_int16_a_sse; |
|
|
|
if( out_fmt == AV_SAMPLE_FMT_S32 && in_fmt == AV_SAMPLE_FMT_S16P) |
|
|
|
ac->simd_f = ff_pack_2ch_int16_to_int32_a_sse; |
|
|
|
if( out_fmt == AV_SAMPLE_FMT_S16 && in_fmt == AV_SAMPLE_FMT_S32P) |
|
|
|
ac->simd_f = ff_pack_2ch_int32_to_int16_a_sse; |
|
|
|
|
|
|
|
if( out_fmt == AV_SAMPLE_FMT_FLTP && in_fmt == AV_SAMPLE_FMT_FLT || out_fmt == AV_SAMPLE_FMT_S32P && in_fmt == AV_SAMPLE_FMT_S32) |
|
|
|
ac->simd_f = ff_unpack_2ch_int32_to_int32_a_sse; |
|
|
|
if( out_fmt == AV_SAMPLE_FMT_S16P && in_fmt == AV_SAMPLE_FMT_S16) |
|
|
|
ac->simd_f = ff_unpack_2ch_int16_to_int16_a_sse; |
|
|
|
if( out_fmt == AV_SAMPLE_FMT_S32P && in_fmt == AV_SAMPLE_FMT_S16) |
|
|
|
ac->simd_f = ff_unpack_2ch_int16_to_int32_a_sse; |
|
|
|
if( out_fmt == AV_SAMPLE_FMT_S16P && in_fmt == AV_SAMPLE_FMT_S32) |
|
|
|
ac->simd_f = ff_unpack_2ch_int32_to_int16_a_sse; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
if(mm_flags & AV_CPU_FLAG_SSE2) { |
|
|
|
if( out_fmt == AV_SAMPLE_FMT_FLT && in_fmt == AV_SAMPLE_FMT_S32 || out_fmt == AV_SAMPLE_FMT_FLTP && in_fmt == AV_SAMPLE_FMT_S32P) |
|
|
|
ac->simd_f = ff_int32_to_float_a_sse2; |
|
|
@@ -91,6 +69,24 @@ MULTI_CAPS_FUNC(AV_CPU_FLAG_SSE, sse) |
|
|
|
ac->simd_f = ff_float_to_int16_a_sse2; |
|
|
|
|
|
|
|
if(channels == 2) { |
|
|
|
if( out_fmt == AV_SAMPLE_FMT_FLT && in_fmt == AV_SAMPLE_FMT_FLTP || out_fmt == AV_SAMPLE_FMT_S32 && in_fmt == AV_SAMPLE_FMT_S32P) |
|
|
|
ac->simd_f = ff_pack_2ch_int32_to_int32_a_sse2; |
|
|
|
if( out_fmt == AV_SAMPLE_FMT_S16 && in_fmt == AV_SAMPLE_FMT_S16P) |
|
|
|
ac->simd_f = ff_pack_2ch_int16_to_int16_a_sse2; |
|
|
|
if( out_fmt == AV_SAMPLE_FMT_S32 && in_fmt == AV_SAMPLE_FMT_S16P) |
|
|
|
ac->simd_f = ff_pack_2ch_int16_to_int32_a_sse2; |
|
|
|
if( out_fmt == AV_SAMPLE_FMT_S16 && in_fmt == AV_SAMPLE_FMT_S32P) |
|
|
|
ac->simd_f = ff_pack_2ch_int32_to_int16_a_sse2; |
|
|
|
|
|
|
|
if( out_fmt == AV_SAMPLE_FMT_FLTP && in_fmt == AV_SAMPLE_FMT_FLT || out_fmt == AV_SAMPLE_FMT_S32P && in_fmt == AV_SAMPLE_FMT_S32) |
|
|
|
ac->simd_f = ff_unpack_2ch_int32_to_int32_a_sse2; |
|
|
|
if( out_fmt == AV_SAMPLE_FMT_S16P && in_fmt == AV_SAMPLE_FMT_S16) |
|
|
|
ac->simd_f = ff_unpack_2ch_int16_to_int16_a_sse2; |
|
|
|
if( out_fmt == AV_SAMPLE_FMT_S32P && in_fmt == AV_SAMPLE_FMT_S16) |
|
|
|
ac->simd_f = ff_unpack_2ch_int16_to_int32_a_sse2; |
|
|
|
if( out_fmt == AV_SAMPLE_FMT_S16P && in_fmt == AV_SAMPLE_FMT_S32) |
|
|
|
ac->simd_f = ff_unpack_2ch_int32_to_int16_a_sse2; |
|
|
|
|
|
|
|
if( out_fmt == AV_SAMPLE_FMT_FLT && in_fmt == AV_SAMPLE_FMT_S32P) |
|
|
|
ac->simd_f = ff_pack_2ch_int32_to_float_a_sse2; |
|
|
|
if( out_fmt == AV_SAMPLE_FMT_S32 && in_fmt == AV_SAMPLE_FMT_FLTP) |
|
|
|