Mercurial > mplayer.hg
comparison postproc/swscale.c @ 12017:21e5cb258a95
AltiVec support in postproc/ + altivec optimizations for yuv2yuvX patch by (Romain Dolbeau <dolbeau at irisa dot fr>)
author | michael |
---|---|
date | Thu, 11 Mar 2004 17:58:11 +0000 |
parents | b352fe84ce64 |
children | 57fd2f36b8cb |
comparison
equal
deleted
inserted
replaced
12016:b962aaad2940 | 12017:21e5cb258a95 |
---|---|
671 //Plain C versions | 671 //Plain C versions |
672 #if !defined (HAVE_MMX) || defined (RUNTIME_CPUDETECT) | 672 #if !defined (HAVE_MMX) || defined (RUNTIME_CPUDETECT) |
673 #define COMPILE_C | 673 #define COMPILE_C |
674 #endif | 674 #endif |
675 | 675 |
676 #ifdef ARCH_POWERPC | |
677 #ifdef HAVE_ALTIVEC | |
678 #define COMPILE_ALTIVEC | |
679 #endif //HAVE_ALTIVEC | |
680 #endif //ARCH_POWERPC | |
681 | |
676 #ifdef ARCH_X86 | 682 #ifdef ARCH_X86 |
677 | 683 |
678 #if (defined (HAVE_MMX) && !defined (HAVE_3DNOW) && !defined (HAVE_MMX2)) || defined (RUNTIME_CPUDETECT) | 684 #if (defined (HAVE_MMX) && !defined (HAVE_3DNOW) && !defined (HAVE_MMX2)) || defined (RUNTIME_CPUDETECT) |
679 #define COMPILE_MMX | 685 #define COMPILE_MMX |
680 #endif | 686 #endif |
694 | 700 |
695 #ifdef COMPILE_C | 701 #ifdef COMPILE_C |
696 #undef HAVE_MMX | 702 #undef HAVE_MMX |
697 #undef HAVE_MMX2 | 703 #undef HAVE_MMX2 |
698 #undef HAVE_3DNOW | 704 #undef HAVE_3DNOW |
705 #undef HAVE_ALTIVEC | |
699 #define RENAME(a) a ## _C | 706 #define RENAME(a) a ## _C |
700 #include "swscale_template.c" | 707 #include "swscale_template.c" |
701 #endif | 708 #endif |
709 | |
710 #ifdef ARCH_POWERPC | |
711 #ifdef COMPILE_ALTIVEC | |
712 #undef RENAME | |
713 #define HAVE_ALTIVEC | |
714 #define RENAME(a) a ## _altivec | |
715 #include "swscale_template.c" | |
716 #endif | |
717 #endif //ARCH_POWERPC | |
702 | 718 |
703 #ifdef ARCH_X86 | 719 #ifdef ARCH_X86 |
704 | 720 |
705 //X86 versions | 721 //X86 versions |
706 /* | 722 /* |
1307 return swScale_MMX; | 1323 return swScale_MMX; |
1308 else | 1324 else |
1309 return swScale_C; | 1325 return swScale_C; |
1310 | 1326 |
1311 #else | 1327 #else |
1328 #ifdef ARCH_POWERPC | |
1329 if(flags & SWS_CPU_CAPS_ALTIVEC) | |
1330 return swScale_altivec; | |
1331 else | |
1332 return swScale_C; | |
1333 #endif | |
1312 return swScale_C; | 1334 return swScale_C; |
1313 #endif | 1335 #endif |
1314 #else //RUNTIME_CPUDETECT | 1336 #else //RUNTIME_CPUDETECT |
1315 #ifdef HAVE_MMX2 | 1337 #ifdef HAVE_MMX2 |
1316 return swScale_MMX2; | 1338 return swScale_MMX2; |
1317 #elif defined (HAVE_3DNOW) | 1339 #elif defined (HAVE_3DNOW) |
1318 return swScale_3DNow; | 1340 return swScale_3DNow; |
1319 #elif defined (HAVE_MMX) | 1341 #elif defined (HAVE_MMX) |
1320 return swScale_MMX; | 1342 return swScale_MMX; |
1343 #elif defined (HAVE_ALTIVEC) | |
1344 return swScale_altivec; | |
1321 #else | 1345 #else |
1322 return swScale_C; | 1346 return swScale_C; |
1323 #endif | 1347 #endif |
1324 #endif //!RUNTIME_CPUDETECT | 1348 #endif //!RUNTIME_CPUDETECT |
1325 } | 1349 } |
1718 if(flags & SWS_CPU_CAPS_MMX) | 1742 if(flags & SWS_CPU_CAPS_MMX) |
1719 asm volatile("emms\n\t"::: "memory"); | 1743 asm volatile("emms\n\t"::: "memory"); |
1720 #endif | 1744 #endif |
1721 | 1745 |
1722 #ifndef RUNTIME_CPUDETECT //ensure that the flags match the compiled variant if cpudetect is off | 1746 #ifndef RUNTIME_CPUDETECT //ensure that the flags match the compiled variant if cpudetect is off |
1723 flags &= ~(SWS_CPU_CAPS_MMX|SWS_CPU_CAPS_MMX2|SWS_CPU_CAPS_3DNOW); | 1747 flags &= ~(SWS_CPU_CAPS_MMX|SWS_CPU_CAPS_MMX2|SWS_CPU_CAPS_3DNOW|SWS_CPU_CAPS_ALTIVEC); |
1724 #ifdef HAVE_MMX2 | 1748 #ifdef HAVE_MMX2 |
1725 flags |= SWS_CPU_CAPS_MMX|SWS_CPU_CAPS_MMX2; | 1749 flags |= SWS_CPU_CAPS_MMX|SWS_CPU_CAPS_MMX2; |
1726 #elif defined (HAVE_3DNOW) | 1750 #elif defined (HAVE_3DNOW) |
1727 flags |= SWS_CPU_CAPS_MMX|SWS_CPU_CAPS_3DNOW; | 1751 flags |= SWS_CPU_CAPS_MMX|SWS_CPU_CAPS_3DNOW; |
1728 #elif defined (HAVE_MMX) | 1752 #elif defined (HAVE_MMX) |
1729 flags |= SWS_CPU_CAPS_MMX; | 1753 flags |= SWS_CPU_CAPS_MMX; |
1754 #elif defined (HAVE_ALTIVEC) | |
1755 flags |= SWS_CPU_CAPS_ALTIVEC; | |
1730 #endif | 1756 #endif |
1731 #endif | 1757 #endif |
1732 if(clip_table[512] != 255) globalInit(); | 1758 if(clip_table[512] != 255) globalInit(); |
1733 if(rgb15to16 == NULL) sws_rgb2rgb_init(flags); | 1759 if(rgb15to16 == NULL) sws_rgb2rgb_init(flags); |
1734 | 1760 |
2031 MSG_INFO("using MMX2\n"); | 2057 MSG_INFO("using MMX2\n"); |
2032 else if(flags & SWS_CPU_CAPS_3DNOW) | 2058 else if(flags & SWS_CPU_CAPS_3DNOW) |
2033 MSG_INFO("using 3DNOW\n"); | 2059 MSG_INFO("using 3DNOW\n"); |
2034 else if(flags & SWS_CPU_CAPS_MMX) | 2060 else if(flags & SWS_CPU_CAPS_MMX) |
2035 MSG_INFO("using MMX\n"); | 2061 MSG_INFO("using MMX\n"); |
2036 else | 2062 else if(flags & SWS_CPU_CAPS_ALTIVEC) |
2063 MSG_INFO("using AltiVec\n"); | |
2064 else | |
2037 MSG_INFO("using C\n"); | 2065 MSG_INFO("using C\n"); |
2038 } | 2066 } |
2039 | 2067 |
2040 if(flags & SWS_PRINT_INFO) | 2068 if(flags & SWS_PRINT_INFO) |
2041 { | 2069 { |