[FFmpeg-cvslog] swscale: remove indirections in ppc/swscale_template.c.

Ronald S. Bultje git at videolan.org
Sat Jun 4 06:40:00 CEST 2011


ffmpeg | branch: master | Ronald S. Bultje <rsbultje at gmail.com> | Thu Jun  2 19:28:56 2011 -0700| [a3e9bb5deed0f43c84ee3006962f7bd27ae4f811] | committer: Ronald S. Bultje

swscale: remove indirections in ppc/swscale_template.c.

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=a3e9bb5deed0f43c84ee3006962f7bd27ae4f811
---

 libswscale/ppc/swscale_altivec_template.c |   25 +++++++++--
 libswscale/ppc/swscale_template.c         |   66 -----------------------------
 libswscale/ppc/yuv2rgb_altivec.c          |    3 +-
 libswscale/swscale.c                      |    2 +-
 4 files changed, 24 insertions(+), 72 deletions(-)

diff --git a/libswscale/ppc/swscale_altivec_template.c b/libswscale/ppc/swscale_altivec_template.c
index 5a821d0..3c31c3e 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 01afe43..0000000
--- a/libswscale/ppc/swscale_template.c
+++ /dev/null
@@ -1,66 +0,0 @@
-/*
- * Copyright (C) 2001-2003 Michael Niedermayer <michaelni at 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 54ebee1..4b2bdaf 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 5327948..f15495d 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



More information about the ffmpeg-cvslog mailing list