diff options
author | Romain Dolbeau <dolbeau@irisa.fr> | 2004-03-11 17:58:11 +0000 |
---|---|---|
committer | Michael Niedermayer <michaelni@gmx.at> | 2004-03-11 17:58:11 +0000 |
commit | a2faa401924b7d3c6d21169762f4340a1331ef48 (patch) | |
tree | 863d209e48b22c941164ee5a14ff892da3094b6d /postproc/swscale.c | |
parent | 08abe0fd66a03b50238654c93a172a059d09ac18 (diff) | |
download | ffmpeg-a2faa401924b7d3c6d21169762f4340a1331ef48.tar.gz |
AltiVec support in postproc/ + altivec optimizations for yuv2yuvX patch by (Romain Dolbeau <dolbeau at irisa dot fr>)
Originally committed as revision 12018 to svn://svn.mplayerhq.hu/mplayer/trunk/postproc
Diffstat (limited to 'postproc/swscale.c')
-rw-r--r-- | postproc/swscale.c | 32 |
1 files changed, 30 insertions, 2 deletions
diff --git a/postproc/swscale.c b/postproc/swscale.c index e3c16a5094..98cd469370 100644 --- a/postproc/swscale.c +++ b/postproc/swscale.c @@ -673,6 +673,12 @@ static inline void yuv2packedXinC(SwsContext *c, int16_t *lumFilter, int16_t **l #define COMPILE_C #endif +#ifdef ARCH_POWERPC +#ifdef HAVE_ALTIVEC +#define COMPILE_ALTIVEC +#endif //HAVE_ALTIVEC +#endif //ARCH_POWERPC + #ifdef ARCH_X86 #if (defined (HAVE_MMX) && !defined (HAVE_3DNOW) && !defined (HAVE_MMX2)) || defined (RUNTIME_CPUDETECT) @@ -696,10 +702,20 @@ static inline void yuv2packedXinC(SwsContext *c, int16_t *lumFilter, int16_t **l #undef HAVE_MMX #undef HAVE_MMX2 #undef HAVE_3DNOW +#undef HAVE_ALTIVEC #define RENAME(a) a ## _C #include "swscale_template.c" #endif +#ifdef ARCH_POWERPC +#ifdef COMPILE_ALTIVEC +#undef RENAME +#define HAVE_ALTIVEC +#define RENAME(a) a ## _altivec +#include "swscale_template.c" +#endif +#endif //ARCH_POWERPC + #ifdef ARCH_X86 //X86 versions @@ -1309,6 +1325,12 @@ static SwsFunc getSwsFunc(int flags){ return swScale_C; #else +#ifdef ARCH_POWERPC + if(flags & SWS_CPU_CAPS_ALTIVEC) + return swScale_altivec; + else + return swScale_C; +#endif return swScale_C; #endif #else //RUNTIME_CPUDETECT @@ -1318,6 +1340,8 @@ static SwsFunc getSwsFunc(int flags){ return swScale_3DNow; #elif defined (HAVE_MMX) return swScale_MMX; +#elif defined (HAVE_ALTIVEC) + return swScale_altivec; #else return swScale_C; #endif @@ -1720,13 +1744,15 @@ SwsContext *sws_getContext(int srcW, int srcH, int origSrcFormat, int dstW, int #endif #ifndef RUNTIME_CPUDETECT //ensure that the flags match the compiled variant if cpudetect is off - flags &= ~(SWS_CPU_CAPS_MMX|SWS_CPU_CAPS_MMX2|SWS_CPU_CAPS_3DNOW); + flags &= ~(SWS_CPU_CAPS_MMX|SWS_CPU_CAPS_MMX2|SWS_CPU_CAPS_3DNOW|SWS_CPU_CAPS_ALTIVEC); #ifdef HAVE_MMX2 flags |= SWS_CPU_CAPS_MMX|SWS_CPU_CAPS_MMX2; #elif defined (HAVE_3DNOW) flags |= SWS_CPU_CAPS_MMX|SWS_CPU_CAPS_3DNOW; #elif defined (HAVE_MMX) flags |= SWS_CPU_CAPS_MMX; +#elif defined (HAVE_ALTIVEC) + flags |= SWS_CPU_CAPS_ALTIVEC; #endif #endif if(clip_table[512] != 255) globalInit(); @@ -2033,7 +2059,9 @@ SwsContext *sws_getContext(int srcW, int srcH, int origSrcFormat, int dstW, int MSG_INFO("using 3DNOW\n"); else if(flags & SWS_CPU_CAPS_MMX) MSG_INFO("using MMX\n"); - else + else if(flags & SWS_CPU_CAPS_ALTIVEC) + MSG_INFO("using AltiVec\n"); + else MSG_INFO("using C\n"); } |