aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRonald S. Bultje <rsbultje@gmail.com>2011-06-02 19:28:56 -0700
committerRonald S. Bultje <rsbultje@gmail.com>2011-06-03 09:52:09 -0700
commita3e9bb5deed0f43c84ee3006962f7bd27ae4f811 (patch)
tree4a5835328946ffcb5bff4bb779d49d9755be73a5
parent0e5d31b16b39f0b4d2e3307714af592dd65cf123 (diff)
downloadffmpeg-a3e9bb5deed0f43c84ee3006962f7bd27ae4f811.tar.gz
swscale: remove indirections in ppc/swscale_template.c.
-rw-r--r--libswscale/ppc/swscale_altivec_template.c25
-rw-r--r--libswscale/ppc/swscale_template.c66
-rw-r--r--libswscale/ppc/yuv2rgb_altivec.c3
-rw-r--r--libswscale/swscale.c2
4 files changed, 24 insertions, 72 deletions
diff --git a/libswscale/ppc/swscale_altivec_template.c b/libswscale/ppc/swscale_altivec_template.c
index 5a821d0abf..3c31c3e130 100644
--- a/libswscale/ppc/swscale_altivec_template.c
+++ b/libswscale/ppc/swscale_altivec_template.c
@@ -85,12 +85,15 @@ altivec_packIntArrayToCharArray(int *val, uint8_t* dest, int dstW)
}
}
-static inline void
-yuv2yuvX_altivec_real(const int16_t *lumFilter, const int16_t **lumSrc,
+static void
+yuv2yuvX_altivec_real(SwsContext *c,
+ const int16_t *lumFilter, const int16_t **lumSrc,
int lumFilterSize, const int16_t *chrFilter,
const int16_t **chrUSrc, const int16_t **chrVSrc,
- int chrFilterSize, uint8_t *dest, uint8_t *uDest,
- uint8_t *vDest, int dstW, int chrDstW)
+ int chrFilterSize, const int16_t **alpSrc,
+ uint8_t *dest, uint8_t *uDest,
+ uint8_t *vDest, uint8_t *aDest,
+ int dstW, int chrDstW)
{
const vector signed int vini = {(1 << 18), (1 << 18), (1 << 18), (1 << 18)};
register int i, j;
@@ -390,3 +393,17 @@ static inline void hScale_altivec_real(int16_t *dst, int dstW,
}
}
}
+
+static void RENAME(sws_init_swScale)(SwsContext *c)
+{
+ c->yuv2yuvX = yuv2yuvX_altivec_real;
+
+ /* The following list of supported dstFormat values should
+ * match what's found in the body of ff_yuv2packedX_altivec() */
+ if (!(c->flags & SWS_BITEXACT) && !c->alpPixBuf &&
+ (c->dstFormat==PIX_FMT_ABGR || c->dstFormat==PIX_FMT_BGRA ||
+ c->dstFormat==PIX_FMT_BGR24 || c->dstFormat==PIX_FMT_RGB24 ||
+ c->dstFormat==PIX_FMT_RGBA || c->dstFormat==PIX_FMT_ARGB)) {
+ c->yuv2packedX = ff_yuv2packedX_altivec;
+ }
+}
diff --git a/libswscale/ppc/swscale_template.c b/libswscale/ppc/swscale_template.c
deleted file mode 100644
index 01afe43bb2..0000000000
--- a/libswscale/ppc/swscale_template.c
+++ /dev/null
@@ -1,66 +0,0 @@
-/*
- * Copyright (C) 2001-2003 Michael Niedermayer <michaelni@gmx.at>
- *
- * 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.
- *
- * 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 Libav; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- */
-
-
-#include "swscale_altivec_template.c"
-
-static inline void RENAME(yuv2yuvX)(SwsContext *c, const int16_t *lumFilter,
- const int16_t **lumSrc, int lumFilterSize,
- const int16_t *chrFilter, const int16_t **chrUSrc,
- const int16_t **chrVSrc, int chrFilterSize,
- const int16_t **alpSrc,
- uint8_t *dest, uint8_t *uDest, uint8_t *vDest,
- uint8_t *aDest, int dstW, int chrDstW)
-{
- yuv2yuvX_altivec_real(lumFilter, lumSrc, lumFilterSize,
- chrFilter, chrUSrc, chrVSrc, chrFilterSize,
- dest, uDest, vDest, dstW, chrDstW);
-}
-
-/**
- * vertical scale YV12 to RGB
- */
-static inline void RENAME(yuv2packedX)(SwsContext *c, const int16_t *lumFilter,
- const int16_t **lumSrc, int lumFilterSize,
- const int16_t *chrFilter, const int16_t **chrUSrc,
- const int16_t **chrVSrc, int chrFilterSize,
- const int16_t **alpSrc, uint8_t *dest,
- int dstW, int dstY)
-{
- /* The following list of supported dstFormat values should
- match what's found in the body of ff_yuv2packedX_altivec() */
- if (!(c->flags & SWS_BITEXACT) && !c->alpPixBuf &&
- (c->dstFormat==PIX_FMT_ABGR || c->dstFormat==PIX_FMT_BGRA ||
- c->dstFormat==PIX_FMT_BGR24 || c->dstFormat==PIX_FMT_RGB24 ||
- c->dstFormat==PIX_FMT_RGBA || c->dstFormat==PIX_FMT_ARGB))
- ff_yuv2packedX_altivec(c, lumFilter, lumSrc, lumFilterSize,
- chrFilter, chrUSrc, chrVSrc, chrFilterSize,
- dest, dstW, dstY);
- else
- yuv2packedXinC(c, lumFilter, lumSrc, lumFilterSize,
- chrFilter, chrUSrc, chrVSrc, chrFilterSize,
- alpSrc, dest, dstW, dstY);
-}
-
-static void RENAME(sws_init_swScale)(SwsContext *c)
-{
- c->yuv2yuvX = RENAME(yuv2yuvX );
- c->yuv2packedX = RENAME(yuv2packedX );
-}
diff --git a/libswscale/ppc/yuv2rgb_altivec.c b/libswscale/ppc/yuv2rgb_altivec.c
index 54ebee1edf..4b2bdafca0 100644
--- a/libswscale/ppc/yuv2rgb_altivec.c
+++ b/libswscale/ppc/yuv2rgb_altivec.c
@@ -630,7 +630,8 @@ ff_yuv2packedX_altivec(SwsContext *c, const int16_t *lumFilter,
const int16_t **lumSrc, int lumFilterSize,
const int16_t *chrFilter, const int16_t **chrUSrc,
const int16_t **chrVSrc, int chrFilterSize,
- uint8_t *dest, int dstW, int dstY)
+ const int16_t **alpSrc, uint8_t *dest,
+ int dstW, int dstY)
{
int i,j;
vector signed short X,X0,X1,Y0,U0,V0,Y1,U1,V1,U,V;
diff --git a/libswscale/swscale.c b/libswscale/swscale.c
index 5327948d3c..f15495de36 100644
--- a/libswscale/swscale.c
+++ b/libswscale/swscale.c
@@ -1192,7 +1192,7 @@ static inline void monoblack2Y(uint8_t *dst, const uint8_t *src, int width, uint
#if HAVE_ALTIVEC
#undef RENAME
#define RENAME(a) a ## _altivec
-#include "ppc/swscale_template.c"
+#include "ppc/swscale_altivec_template.c"
#endif
//MMX versions