1;****************************************************************************** 2;* x86-SIMD-optimized IDCT for prores 3;* this is identical to "simple" IDCT written by Michael Niedermayer 4;* except for the clip range 5;* 6;* Copyright (c) 2011 Ronald S. Bultje <rsbultje@gmail.com> 7;* 8;* This file is part of FFmpeg. 9;* 10;* FFmpeg is free software; you can redistribute it and/or 11;* modify it under the terms of the GNU Lesser General Public 12;* License as published by the Free Software Foundation; either 13;* version 2.1 of the License, or (at your option) any later version. 14;* 15;* FFmpeg is distributed in the hope that it will be useful, 16;* but WITHOUT ANY WARRANTY; without even the implied warranty of 17;* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 18;* Lesser General Public License for more details. 19;* 20;* You should have received a copy of the GNU Lesser General Public 21;* License along with FFmpeg; if not, write to the Free Software 22;* 51, Inc., Foundation Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA 23;****************************************************************************** 24 25%include "libavutil/x86/x86util.asm" 26 27%if ARCH_X86_64 28 29SECTION_RODATA 30 31pw_88: times 8 dw 0x2008 32cextern pw_1 33cextern pw_4 34cextern pw_1019 35; Below are defined in simple_idct10.asm built from selecting idctdsp 36cextern w4_plus_w2_hi 37cextern w4_min_w2_hi 38cextern w4_plus_w6_hi 39cextern w4_min_w6_hi 40cextern w1_plus_w3_hi 41cextern w3_min_w1_hi 42cextern w7_plus_w3_hi 43cextern w3_min_w7_hi 44cextern w1_plus_w5 45cextern w5_min_w1 46cextern w5_plus_w7 47cextern w7_min_w5 48 49%include "libavcodec/x86/simple_idct10_template.asm" 50 51SECTION .text 52 53define_constants _hi 54 55%macro idct_fn 0 56cglobal prores_idct_put_10, 4, 4, 15, pixels, lsize, block, qmat 57 IDCT_FN pw_1, 15, pw_88, 18, "put", pw_4, pw_1019, r3 58 RET 59%endmacro 60 61INIT_XMM sse2 62idct_fn 63%if HAVE_AVX_EXTERNAL 64INIT_XMM avx 65idct_fn 66%endif 67 68%endif 69