diff libswscale/swscale.c @ 29105:9502a8895e77

swscale: Use function pointers for swScale functions.
author ramiro
date Sat, 04 Apr 2009 22:45:02 +0000
parents f40ddfeeb70b
children a8593f0bdb9c
line wrap: on
line diff
--- a/libswscale/swscale.c	Sat Apr 04 22:43:24 2009 +0000
+++ b/libswscale/swscale.c	Sat Apr 04 22:45:02 2009 +0000
@@ -1776,42 +1776,55 @@
     }
 }
 
-static SwsFunc getSwsFunc(int flags)
+static SwsFunc getSwsFunc(SwsContext *c)
 {
+    int flags = c->flags;
 
 #if defined(RUNTIME_CPUDETECT) && CONFIG_GPL
 #if ARCH_X86
     // ordered per speed fastest first
     if (flags & SWS_CPU_CAPS_MMX2) {
+        sws_init_swScale_MMX2(c);
         return swScale_MMX2;
     } else if (flags & SWS_CPU_CAPS_3DNOW) {
+        sws_init_swScale_3DNow(c);
         return swScale_3DNow;
     } else if (flags & SWS_CPU_CAPS_MMX) {
+        sws_init_swScale_MMX(c);
         return swScale_MMX;
     } else {
+        sws_init_swScale_C(c);
         return swScale_C;
     }
 
 #else
 #if ARCH_PPC
     if (flags & SWS_CPU_CAPS_ALTIVEC) {
+        sws_init_swScale_altivec(c);
         return swScale_altivec;
     } else {
+        sws_init_swScale_C(c);
         return swScale_C;
     }
 #endif
+    sws_init_swScale_C(c);
     return swScale_C;
 #endif /* ARCH_X86 */
 #else //RUNTIME_CPUDETECT
 #if   HAVE_MMX2
+    sws_init_swScale_MMX2(c);
     return swScale_MMX2;
 #elif HAVE_AMD3DNOW
+    sws_init_swScale_3DNow(c);
     return swScale_3DNow;
 #elif HAVE_MMX
+    sws_init_swScale_MMX(c);
     return swScale_MMX;
 #elif HAVE_ALTIVEC
+    sws_init_swScale_altivec(c);
     return swScale_altivec;
 #else
+    sws_init_swScale_C(c);
     return swScale_C;
 #endif
 #endif //!RUNTIME_CPUDETECT
@@ -2932,7 +2945,7 @@
                c->chrSrcW, c->chrSrcH, c->chrDstW, c->chrDstH, c->chrXInc, c->chrYInc);
     }
 
-    c->swScale= getSwsFunc(flags);
+    c->swScale= getSwsFunc(c);
     return c;
 }