On 08/06/2012 05:40 AM, Loren Merritt wrote: > On Mon, 6 Aug 2012, Justin Ruggles wrote: > >> --- >> libavresample/x86/audio_convert.asm | 39 >> ++++++++++++++++++++++++++++++++ >> libavresample/x86/audio_convert_init.c | 13 ++++++++++ >> 2 files changed, 52 insertions(+), 0 deletions(-) >> >> diff --git a/libavresample/x86/audio_convert.asm >> b/libavresample/x86/audio_convert.asm >> index 09c4e7f..ea0debf 100644 >> --- a/libavresample/x86/audio_convert.asm >> +++ b/libavresample/x86/audio_convert.asm >> @@ -923,3 +923,42 @@ CONV_S16_TO_S16P_6CH >> INIT_XMM avx >> CONV_S16_TO_S16P_6CH >> %endif >> + >> +;------------------------------------------------------------------------------ >> +; void ff_conv_s16_to_fltp_2ch(float *const *dst, int16_t *src, int len, >> +; int channels); >> +;------------------------------------------------------------------------------ >> + >> +%macro CONV_S16_TO_FLTP_2CH 0 >> +cglobal conv_s16_to_fltp_2ch, 3,4,4, dst0, src, len, dst1 >> + lea lenq, [4*lend] >> + mov dst1q, [dst0q+gprsize] >> + mov dst0q, [dst0q ] >> + add srcq, lenq >> + add dst0q, lenq >> + add dst1q, lenq >> + neg lenq >> + mova m3, [pf_s16_inv_scale] >> +.loop: >> + mova m0, [srcq+lenq] >> + S16_TO_S32_SX 0, 1 >> + cvtdq2ps m0, m0 >> + cvtdq2ps m1, m1 >> + mulps m0, m0, m3 >> + mulps m1, m1, m3 >> + DEINT2_PS 0, 1, 2 > > pslld m1, m0, 16 > psrad m0, m0, 16 > psrad m1, m1, 16 > cvtdq2ps m0, m0 > cvtdq2ps m1, m1 > mulps m0, m0, m3 > mulps m1, m1, m3 > >> + mova [dst0q+lenq], m0 >> + mova [dst1q+lenq], m1 >> + add lenq, mmsize >> + jl .loop >> + REP_RET >> +%endmacro
Thanks. Also, we might be able to replace the 2 psrad with a pand with 0xFFFF0000FFFF0000FFFF0000FFFF0000 then use [pf_s32_inv_scale] instead of [pf_s16_inv_scale]. I'll try it out. -Justin _______________________________________________ libav-devel mailing list libav-devel@libav.org https://lists.libav.org/mailman/listinfo/libav-devel