? gmon.out ? libvo/vo_quartz.c ? libvo/vo_quartz.h ? postproc/swscale_altivec_template.c Index: libmpcodecs/vf_scale.c =================================================================== RCS file: /cvsroot/mplayer/main/libmpcodecs/vf_scale.c,v retrieving revision 1.50 diff -u -r1.50 vf_scale.c --- libmpcodecs/vf_scale.c 29 Dec 2003 14:16:07 -0000 1.50 +++ libmpcodecs/vf_scale.c 11 Mar 2004 09:32:57 -0000 @@ -469,7 +469,8 @@ return (gCpuCaps.hasMMX ? SWS_CPU_CAPS_MMX : 0) | (gCpuCaps.hasMMX2 ? SWS_CPU_CAPS_MMX2 : 0) - | (gCpuCaps.has3DNow ? SWS_CPU_CAPS_3DNOW : 0); + | (gCpuCaps.has3DNow ? SWS_CPU_CAPS_3DNOW : 0) + | (gCpuCaps.hasAltiVec ? SWS_CPU_CAPS_ALTIVEC : 0); } void sws_getFlagsAndFilterFromCmdLine(int *flags, SwsFilter **srcFilterParam, SwsFilter **dstFilterParam) Index: postproc/swscale.c =================================================================== RCS file: /cvsroot/mplayer/main/postproc/swscale.c,v retrieving revision 1.136 diff -u -r1.136 swscale.c --- postproc/swscale.c 6 Nov 2003 23:22:17 -0000 1.136 +++ postproc/swscale.c 11 Mar 2004 09:32:57 -0000 @@ -673,6 +673,12 @@ #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 @@ #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 @@ 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 @@ 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 @@ #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 @@ 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"); } Index: postproc/swscale.h =================================================================== RCS file: /cvsroot/mplayer/main/postproc/swscale.h,v retrieving revision 1.30 diff -u -r1.30 swscale.h --- postproc/swscale.h 25 Apr 2003 11:26:34 -0000 1.30 +++ postproc/swscale.h 11 Mar 2004 09:32:57 -0000 @@ -60,6 +60,7 @@ #define SWS_CPU_CAPS_MMX 0x80000000 #define SWS_CPU_CAPS_MMX2 0x20000000 #define SWS_CPU_CAPS_3DNOW 0x40000000 +#define SWS_CPU_CAPS_ALTIVEC 0x10000000 #define SWS_MAX_REDUCE_CUTOFF 0.002 Index: postproc/swscale_template.c =================================================================== RCS file: /cvsroot/mplayer/main/postproc/swscale_template.c,v retrieving revision 1.104 diff -u -r1.104 swscale_template.c --- postproc/swscale_template.c 15 Oct 2003 11:21:54 -0000 1.104 +++ postproc/swscale_template.c 11 Mar 2004 09:32:57 -0000 @@ -59,6 +59,10 @@ #define MOVNTQ(a,b) "movq " #a ", " #b " \n\t" #endif +#ifdef HAVE_ALTIVEC +#include "swscale_altivec_template.c" +#endif + #define YSCALEYUV2YV12X(x, offset) \ "xorl %%eax, %%eax \n\t"\ "movq "VROUNDER_OFFSET"(%0), %%mm3\n\t"\ @@ -766,9 +770,15 @@ : "%eax", "%edx", "%esi" ); #else +#ifdef HAVE_ALTIVEC +yuv2yuvX_altivec_real(lumFilter, lumSrc, lumFilterSize, + chrFilter, chrSrc, chrFilterSize, + dest, uDest, vDest, dstW, chrDstW); +#else //HAVE_ALTIVEC yuv2yuvXinC(lumFilter, lumSrc, lumFilterSize, chrFilter, chrSrc, chrFilterSize, dest, uDest, vDest, dstW, chrDstW); +#endif //!HAVE_ALTIVEC #endif }