X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=libavcodec%2Fppc%2Ffdct_altivec.c;h=355a697f4d6e8cf9456e274fb41848c9557556bd;hb=6af2c351b3ae61e4478950ffddd0dfcad06188b8;hp=97333432f53511dd6b32c546a785e09e6950d1a0;hpb=6c618a263d9f6daa3d836dcc2c3896698de64941;p=ffmpeg diff --git a/libavcodec/ppc/fdct_altivec.c b/libavcodec/ppc/fdct_altivec.c index 97333432f53..355a697f4d6 100644 --- a/libavcodec/ppc/fdct_altivec.c +++ b/libavcodec/ppc/fdct_altivec.c @@ -1,28 +1,29 @@ -/* ffmpeg/libavcodec/ppc/fdct_altivec.c, this file is part of the - * AltiVec optimized library for the FFMPEG Multimedia System +/* * Copyright (C) 2003 James Klicman * - * This library is free software; you can redistribute it and/or + * This file is part of Libav. + * + * Libav is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * - * This library is distributed in the hope that it will be useful, + * Libav 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * License along with Libav; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ - -#include "../common.h" -#include "../dsputil.h" +#include "config.h" +#if HAVE_ALTIVEC_H +#include +#endif +#include "libavutil/common.h" #include "dsputil_altivec.h" -#include "gcc_fixes.h" - #define vs16(v) ((vector signed short)(v)) #define vs32(v) ((vector signed int)(v)) @@ -56,9 +57,9 @@ static vector float fdctconsts[3] = { - (vector float)AVV( W0, W1, W2, W3 ), - (vector float)AVV( W4, W5, W6, W7 ), - (vector float)AVV( W8, W9, WA, WB ) + { W0, W1, W2, W3 }, + { W4, W5, W6, W7 }, + { W8, W9, WA, WB } }; #define LD_W0 vec_splat(cnsts0, 0) @@ -193,15 +194,8 @@ static vector float fdctconsts[3] = { /* two dimensional discrete cosine transform */ -void fdct_altivec(int16_t *block) +void ff_fdct_altivec(int16_t *block) { -POWERPC_PERF_DECLARE(altivec_fdct, 1); -#ifdef ALTIVEC_USE_REFERENCE_C_CODE -POWERPC_PERF_START_COUNT(altivec_fdct, 1); - void ff_jpeg_fdct_islow(int16_t *block); - ff_jpeg_fdct_islow(block); -POWERPC_PERF_STOP_COUNT(altivec_fdct, 1); -#else /* ALTIVEC_USE_REFERENCE_C_CODE */ vector signed short *bp; vector float *cp; vector float b00, b10, b20, b30, b40, b50, b60, b70; @@ -209,9 +203,6 @@ POWERPC_PERF_STOP_COUNT(altivec_fdct, 1); vector float mzero, cnst, cnsts0, cnsts1, cnsts2; vector float x0, x1, x2, x3, x4, x5, x6, x7, x8; - POWERPC_PERF_START_COUNT(altivec_fdct, 1); - - /* setup constants {{{ */ /* mzero = -0.0 */ mzero = ((vector float)vec_splat_u32(-1)); @@ -273,7 +264,6 @@ POWERPC_PERF_STOP_COUNT(altivec_fdct, 1); * conversion to vector float. The following code section takes advantage * of this. */ -#if 1 /* fdct rows {{{ */ x0 = ((vector float)vec_add(vs16(b00), vs16(b70))); x7 = ((vector float)vec_sub(vs16(b00), vs16(b70))); @@ -397,29 +387,6 @@ POWERPC_PERF_STOP_COUNT(altivec_fdct, 1); b31 = vec_add(b31, x2); b11 = vec_add(b11, x3); /* }}} */ -#else - /* convert to float {{{ */ -#define CTF(n) \ - vs32(b##n##1) = vec_unpackl(vs16(b##n##0)); \ - vs32(b##n##0) = vec_unpackh(vs16(b##n##0)); \ - b##n##1 = vec_ctf(vs32(b##n##1), 0); \ - b##n##0 = vec_ctf(vs32(b##n##0), 0); \ - - CTF(0); - CTF(1); - CTF(2); - CTF(3); - CTF(4); - CTF(5); - CTF(6); - CTF(7); - -#undef CTF - /* }}} */ - - FDCTROW(b00, b10, b20, b30, b40, b50, b60, b70); - FDCTROW(b01, b11, b21, b31, b41, b51, b61, b71); -#endif /* 8x8 matrix transpose (vector float[8][2]) {{{ */ @@ -490,9 +457,4 @@ POWERPC_PERF_STOP_COUNT(altivec_fdct, 1); #undef CTS /* }}} */ - -POWERPC_PERF_STOP_COUNT(altivec_fdct, 1); -#endif /* ALTIVEC_USE_REFERENCE_C_CODE */ } - -/* vim:set foldmethod=marker foldlevel=0: */