swscale: also update flags on sws_getCachedContext()
authorRamiro Polla <ramiro.polla@gmail.com>
Mon, 6 Sep 2010 14:42:25 +0000 (14:42 +0000)
committerRamiro Polla <ramiro.polla@gmail.com>
Mon, 6 Sep 2010 14:42:25 +0000 (14:42 +0000)
Originally committed as revision 32052 to svn://svn.mplayerhq.hu/mplayer/trunk/libswscale

libswscale/utils.c

index 35e1126..e9400f8 100644 (file)
@@ -720,6 +720,15 @@ static int handle_jpeg(enum PixelFormat *format)
     }
 }
 
+static int update_flags_cpu(int flags)
+{
+#if !CONFIG_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|SWS_CPU_CAPS_ALTIVEC|SWS_CPU_CAPS_BFIN);
+    flags |= ff_hardcodedcpuflags();
+#endif /* CONFIG_RUNTIME_CPUDETECT */
+    return flags;
+}
+
 SwsContext *sws_getContext(int srcW, int srcH, enum PixelFormat srcFormat,
                            int dstW, int dstH, enum PixelFormat dstFormat, int flags,
                            SwsFilter *srcFilter, SwsFilter *dstFilter, const double *param)
@@ -735,10 +744,7 @@ SwsContext *sws_getContext(int srcW, int srcH, enum PixelFormat srcFormat,
         __asm__ volatile("emms\n\t"::: "memory");
 #endif
 
-#if !CONFIG_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|SWS_CPU_CAPS_ALTIVEC|SWS_CPU_CAPS_BFIN);
-    flags |= ff_hardcodedcpuflags();
-#endif /* CONFIG_RUNTIME_CPUDETECT */
+    flags = update_flags_cpu(flags);
     if (!rgb15to16) sws_rgb2rgb_init(flags);
 
     unscaled = (srcW == dstW && srcH == dstH);
@@ -1509,6 +1515,8 @@ struct SwsContext *sws_getCachedContext(struct SwsContext *context,
     if (!param)
         param = default_param;
 
+    flags = update_flags_cpu(flags);
+
     if (context &&
         (context->srcW      != srcW      ||
          context->srcH      != srcH      ||