X-Git-Url: https://git.piment-noir.org/?p=deb_ffmpeg.git;a=blobdiff_plain;f=ffmpeg%2Flibavfilter%2Fx86%2Fvf_interlace.asm;fp=ffmpeg%2Flibavfilter%2Fx86%2Fvf_interlace.asm;h=ce3dd813112c893b4e2fce2ad1df3b3b039edb3c;hp=0000000000000000000000000000000000000000;hb=f6fa7814ccfe3e76514b36cf04f5cd3cb657c8cf;hpb=2ba45a602cbfa7b771effba9b11bb4245c21bc00 diff --git a/ffmpeg/libavfilter/x86/vf_interlace.asm b/ffmpeg/libavfilter/x86/vf_interlace.asm new file mode 100644 index 0000000..ce3dd81 --- /dev/null +++ b/ffmpeg/libavfilter/x86/vf_interlace.asm @@ -0,0 +1,65 @@ +;***************************************************************************** +;* x86-optimized functions for interlace filter +;* +;* Copyright (C) 2014 Kieran Kunhya +;* Copyright (c) 2014 Michael Niedermayer +;* +;* This file is part of FFmpeg. +;* +;* FFmpeg is free software; you can redistribute it and/or modify +;* it under the terms of the GNU General Public License as published by +;* the Free Software Foundation; either version 2 of the License, or +;* (at your option) any later version. +;* +;* FFmpeg is distributed in the hope that it will be useful, +;* but WITHOUT ANY WARRANTY; without even the implied warranty of +;* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;* GNU General Public License for more details. +;* +;* You should have received a copy of the GNU General Public License along +;* with FFmpeg; if not, write to the Free Software Foundation, Inc., +;* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. +;****************************************************************************** + +%include "libavutil/x86/x86util.asm" + +SECTION_RODATA + +SECTION .text + +%macro LOWPASS_LINE 0 +cglobal lowpass_line, 5, 5, 7 + add r0, r1 + add r2, r1 + add r3, r1 + add r4, r1 + neg r1 + + pcmpeqb m6, m6 + +.loop + mova m0, [r3+r1] + mova m1, [r3+r1+mmsize] + pavgb m0, [r4+r1] + pavgb m1, [r4+r1+mmsize] + pxor m0, m6 + pxor m1, m6 + pxor m2, m6, [r2+r1] + pxor m3, m6, [r2+r1+mmsize] + pavgb m0, m2 + pavgb m1, m3 + pxor m0, m6 + pxor m1, m6 + mova [r0+r1], m0 + mova [r0+r1+mmsize], m1 + + add r1, 2*mmsize + jl .loop +REP_RET +%endmacro + +INIT_XMM sse2 +LOWPASS_LINE + +INIT_XMM avx +LOWPASS_LINE