swscale: ppc: Hide arch-specific initialization details
authorDiego Biurrun <diego@biurrun.de>
Wed, 10 Oct 2012 23:06:04 +0000 (01:06 +0200)
committerDiego Biurrun <diego@biurrun.de>
Thu, 29 Aug 2013 08:23:41 +0000 (10:23 +0200)
Also give consistent names to init functions.

libswscale/ppc/Makefile
libswscale/ppc/swscale_altivec.c
libswscale/ppc/yuv2rgb_altivec.c
libswscale/ppc/yuv2yuv_altivec.c
libswscale/swscale.c
libswscale/swscale_internal.h
libswscale/swscale_unscaled.c
libswscale/utils.c
libswscale/yuv2rgb.c

index 018955b1227e8135f623e21104b44ebb86ac38ec..d1b596eb3f835e82f745768a3ad57272e06242e2 100644 (file)
@@ -1,3 +1,3 @@
-ALTIVEC-OBJS +=  ppc/swscale_altivec.o                                  \
-                 ppc/yuv2rgb_altivec.o                                  \
-                 ppc/yuv2yuv_altivec.o                                  \
+OBJS += ppc/swscale_altivec.o                                           \
+        ppc/yuv2rgb_altivec.o                                           \
+        ppc/yuv2yuv_altivec.o                                           \
index b0e25d041aa8da71e7dcac4f7590c222ee0fabf5..7e00488a6142ed8be58531ebfc5c10655ae9ae01 100644 (file)
@@ -30,6 +30,7 @@
 #include "libavutil/cpu.h"
 #include "yuv2rgb_altivec.h"
 
+#if HAVE_ALTIVEC
 #define vzero vec_splat_s32(0)
 
 #define yuv2planeX_8(d1, d2, l1, src, x, perm, filter) do {     \
@@ -284,9 +285,11 @@ static void hScale_altivec_real(SwsContext *c, int16_t *dst, int dstW,
             }
         }
 }
+#endif /* HAVE_ALTIVEC */
 
-av_cold void ff_sws_init_swScale_altivec(SwsContext *c)
+av_cold void ff_sws_init_swscale_ppc(SwsContext *c)
 {
+#if HAVE_ALTIVEC
     enum AVPixelFormat dstFormat = c->dstFormat;
 
     if (!(av_get_cpu_flags() & AV_CPU_FLAG_ALTIVEC))
@@ -325,4 +328,5 @@ av_cold void ff_sws_init_swScale_altivec(SwsContext *c)
             break;
         }
     }
+#endif /* HAVE_ALTIVEC */
 }
index 846a4dcfa22c7db4d27d8058c0b6d298610d5488..74b0f18190402eb6263270d5b9b5f6f34761ff4f 100644 (file)
@@ -99,6 +99,8 @@
 #include "libavutil/cpu.h"
 #include "yuv2rgb_altivec.h"
 
+#if HAVE_ALTIVEC
+
 #undef PROFILE_THE_BEAST
 #undef INC_SCALING
 
@@ -528,14 +530,17 @@ static int altivec_uyvy_rgb32(SwsContext *c, const unsigned char **in,
     return srcSliceH;
 }
 
+#endif /* HAVE_ALTIVEC */
+
 /* Ok currently the acceleration routine only supports
  * inputs of widths a multiple of 16
  * and heights a multiple 2
  *
  * So we just fall back to the C codes for this.
  */
-av_cold SwsFunc ff_yuv2rgb_init_altivec(SwsContext *c)
+av_cold SwsFunc ff_yuv2rgb_init_ppc(SwsContext *c)
 {
+#if HAVE_ALTIVEC
     if (!(av_get_cpu_flags() & AV_CPU_FLAG_ALTIVEC))
         return NULL;
 
@@ -591,20 +596,26 @@ av_cold SwsFunc ff_yuv2rgb_init_altivec(SwsContext *c)
         }
         break;
     }
+#endif /* HAVE_ALTIVEC */
+
     return NULL;
 }
 
-av_cold void ff_yuv2rgb_init_tables_altivec(SwsContext *c,
-                                            const int inv_table[4],
-                                            int brightness,
-                                            int contrast,
-                                            int saturation)
+av_cold void ff_yuv2rgb_init_tables_ppc(SwsContext *c,
+                                        const int inv_table[4],
+                                        int brightness,
+                                        int contrast,
+                                        int saturation)
 {
+#if HAVE_ALTIVEC
     union {
         DECLARE_ALIGNED(16, signed short, tmp)[8];
         vector signed short vec;
     } buf;
 
+    if (!(av_get_cpu_flags() & AV_CPU_FLAG_ALTIVEC))
+        return;
+
     buf.tmp[0] = ((0xffffLL) * contrast >> 8) >> 9;                               // cy
     buf.tmp[1] = -256 * brightness;                                               // oy
     buf.tmp[2] =   (inv_table[0] >> 3) * (contrast >> 16) * (saturation >> 16);   // crv
@@ -620,8 +631,11 @@ av_cold void ff_yuv2rgb_init_tables_altivec(SwsContext *c,
     c->CGU    = vec_splat((vector signed short) buf.vec, 4);
     c->CGV    = vec_splat((vector signed short) buf.vec, 5);
     return;
+#endif /* HAVE_ALTIVEC */
 }
 
+#if HAVE_ALTIVEC
+
 static av_always_inline void yuv2packedX_altivec(SwsContext *c,
                                                  const int16_t *lumFilter,
                                                  const int16_t **lumSrc,
@@ -854,3 +868,5 @@ YUV2PACKEDX_WRAPPER(argb,  AV_PIX_FMT_ARGB);
 YUV2PACKEDX_WRAPPER(rgba,  AV_PIX_FMT_RGBA);
 YUV2PACKEDX_WRAPPER(rgb24, AV_PIX_FMT_RGB24);
 YUV2PACKEDX_WRAPPER(bgr24, AV_PIX_FMT_BGR24);
+
+#endif /* HAVE_ALTIVEC */
index 5aa1820351b5ec2ca74d9b94365935206d7a12e1..9a7177bb5c0e09271fb555ed753b1391f47b2b2d 100644 (file)
@@ -28,6 +28,8 @@
 #include "libswscale/swscale_internal.h"
 #include "libavutil/cpu.h"
 
+#if HAVE_ALTIVEC
+
 static int yv12toyuy2_unscaled_altivec(SwsContext *c, const uint8_t *src[],
                                        int srcStride[], int srcSliceY,
                                        int srcSliceH, uint8_t *dstParam[],
@@ -179,8 +181,11 @@ static int yv12touyvy_unscaled_altivec(SwsContext *c, const uint8_t *src[],
     return srcSliceH;
 }
 
-void ff_swscale_get_unscaled_altivec(SwsContext *c)
+#endif /* HAVE_ALTIVEC */
+
+void ff_swscale_get_unscaled_ppc(SwsContext *c)
 {
+#if HAVE_ALTIVEC
     if ((av_get_cpu_flags() & AV_CPU_FLAG_ALTIVEC) && !(c->srcW & 15) &&
         !(c->flags & SWS_BITEXACT) && c->srcFormat == AV_PIX_FMT_YUV420P) {
         enum AVPixelFormat dstFormat = c->dstFormat;
@@ -191,4 +196,5 @@ void ff_swscale_get_unscaled_altivec(SwsContext *c)
         else if (dstFormat == AV_PIX_FMT_UYVY422)
             c->swScale = yv12touyvy_unscaled_altivec;
     }
+#endif /* HAVE_ALTIVEC */
 }
index 8b2090e761b0ced6e42f94f4c9a5241b701f1453..1a34a902f10b5f29f58f5fb3f0b4761df4368451 100644 (file)
@@ -772,10 +772,10 @@ SwsFunc ff_getSwsFunc(SwsContext *c)
 {
     sws_init_swScale_c(c);
 
+    if (ARCH_PPC)
+        ff_sws_init_swscale_ppc(c);
     if (ARCH_X86)
         ff_sws_init_swscale_x86(c);
-    if (HAVE_ALTIVEC)
-        ff_sws_init_swScale_altivec(c);
 
     return swScale;
 }
index d9e300be1ee2d1c97490c56cbcfeb862b6d8977d..a52626cbd5d72545045ece9edd8cd7307a88985e 100644 (file)
@@ -564,15 +564,15 @@ SwsFunc ff_yuv2rgb_get_func_ptr(SwsContext *c);
 int ff_yuv2rgb_c_init_tables(SwsContext *c, const int inv_table[4],
                              int fullRange, int brightness,
                              int contrast, int saturation);
+void ff_yuv2rgb_init_tables_ppc(SwsContext *c, const int inv_table[4],
+                                int brightness, int contrast, int saturation);
 
-void ff_yuv2rgb_init_tables_altivec(SwsContext *c, const int inv_table[4],
-                                    int brightness, int contrast, int saturation);
 void updateMMXDitherTables(SwsContext *c, int dstY, int lumBufIndex, int chrBufIndex,
                            int lastInLumBuf, int lastInChrBuf);
 
 SwsFunc ff_yuv2rgb_init_x86(SwsContext *c);
 SwsFunc ff_yuv2rgb_init_vis(SwsContext *c);
-SwsFunc ff_yuv2rgb_init_altivec(SwsContext *c);
+SwsFunc ff_yuv2rgb_init_ppc(SwsContext *c);
 SwsFunc ff_yuv2rgb_get_func_ptr_bfin(SwsContext *c);
 void ff_bfin_get_unscaled_swscale(SwsContext *c);
 
@@ -736,7 +736,7 @@ extern const AVClass sws_context_class;
  */
 void ff_get_unscaled_swscale(SwsContext *c);
 
-void ff_swscale_get_unscaled_altivec(SwsContext *c);
+void ff_swscale_get_unscaled_ppc(SwsContext *c);
 
 /**
  * Return function pointer to fastest main scaler path function depending
@@ -753,7 +753,7 @@ void ff_sws_init_output_funcs(SwsContext *c,
                               yuv2packed2_fn *yuv2packed2,
                               yuv2packedX_fn *yuv2packedX,
                               yuv2anyX_fn *yuv2anyX);
-void ff_sws_init_swScale_altivec(SwsContext *c);
+void ff_sws_init_swscale_ppc(SwsContext *c);
 void ff_sws_init_swscale_x86(SwsContext *c);
 
 #endif /* SWSCALE_SWSCALE_INTERNAL_H */
index 19470c543e6e5ad6673241f98fc8a261208d540b..88bd3802aa1a8da910856e0c9886063e310a1e45 100644 (file)
@@ -1091,8 +1091,8 @@ void ff_get_unscaled_swscale(SwsContext *c)
 
     if (ARCH_BFIN)
         ff_bfin_get_unscaled_swscale(c);
-    if (HAVE_ALTIVEC)
-        ff_swscale_get_unscaled_altivec(c);
+    if (ARCH_PPC)
+        ff_swscale_get_unscaled_ppc(c);
 }
 
 static void reset_ptr(const uint8_t *src[], int format)
index c47678cdd2a15edeb1dfa5fe081dd19f4789bff4..740cdc0b9b6a4e3a9fe9075d33e4555228095977 100644 (file)
@@ -806,9 +806,9 @@ int sws_setColorspaceDetails(struct SwsContext *c, const int inv_table[4],
                              contrast, saturation);
     // FIXME factorize
 
-    if (PPC_ALTIVEC(av_get_cpu_flags()))
-        ff_yuv2rgb_init_tables_altivec(c, inv_table, brightness,
-                                       contrast, saturation);
+    if (ARCH_PPC)
+        ff_yuv2rgb_init_tables_ppc(c, inv_table, brightness,
+                                   contrast, saturation);
     return 0;
 }
 
index 7e17fcc0e3174dcc97d805b64abf518e5107b08a..84e3e9c50e0b48528a8429531af9c99818b70c09 100644 (file)
@@ -564,10 +564,10 @@ SwsFunc ff_yuv2rgb_get_func_ptr(SwsContext *c)
         t = ff_yuv2rgb_init_x86(c);
     else if (HAVE_VIS)
         t = ff_yuv2rgb_init_vis(c);
-    else if (HAVE_ALTIVEC)
-        t = ff_yuv2rgb_init_altivec(c);
     else if (ARCH_BFIN)
         t = ff_yuv2rgb_get_func_ptr_bfin(c);
+    else if (ARCH_PPC)
+        t = ff_yuv2rgb_init_ppc(c);
 
     if (t)
         return t;