swscale: also update flags on sws_getCachedContext()

Originally committed as revision 32052 to svn://svn.mplayerhq.hu/mplayer/trunk/libswscale
This commit is contained in:
Ramiro Polla 2010-09-06 14:42:25 +00:00
parent a1899e0adc
commit c17f5a4e15
1 changed files with 12 additions and 4 deletions

View 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, SwsContext *sws_getContext(int srcW, int srcH, enum PixelFormat srcFormat,
int dstW, int dstH, enum PixelFormat dstFormat, int flags, int dstW, int dstH, enum PixelFormat dstFormat, int flags,
SwsFilter *srcFilter, SwsFilter *dstFilter, const double *param) 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"); __asm__ volatile("emms\n\t"::: "memory");
#endif #endif
#if !CONFIG_RUNTIME_CPUDETECT //ensure that the flags match the compiled variant if cpudetect is off flags = update_flags_cpu(flags);
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 */
if (!rgb15to16) sws_rgb2rgb_init(flags); if (!rgb15to16) sws_rgb2rgb_init(flags);
unscaled = (srcW == dstW && srcH == dstH); unscaled = (srcW == dstW && srcH == dstH);
@ -1509,6 +1515,8 @@ struct SwsContext *sws_getCachedContext(struct SwsContext *context,
if (!param) if (!param)
param = default_param; param = default_param;
flags = update_flags_cpu(flags);
if (context && if (context &&
(context->srcW != srcW || (context->srcW != srcW ||
context->srcH != srcH || context->srcH != srcH ||