From 30c6fefd013a579f455c230ca9b9b0f8fc68285a Mon Sep 17 00:00:00 2001 From: Darren Horrocks Date: Tue, 5 Apr 2011 02:34:26 +0200 Subject: [PATCH] fix runtime-cpu-detect bug in swscale swscale doesnt ever actually do any runtime detection at all when runtime cpu detection is enabled, it simply passes whatever is passed to -sws_flags, which could be nothing at all making swscale default to the C implementation. --- libswscale/swscale.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/libswscale/swscale.c b/libswscale/swscale.c index b4107ac873..e0e48088fc 100644 --- a/libswscale/swscale.c +++ b/libswscale/swscale.c @@ -62,6 +62,7 @@ untested special converters #include "rgb2rgb.h" #include "libavutil/intreadwrite.h" #include "libavutil/x86_cpu.h" +#include "libavutil/cpu.h" #include "libavutil/avutil.h" #include "libavutil/mathematics.h" #include "libavutil/bswap.h" @@ -1315,6 +1316,12 @@ SwsFunc ff_getSwsFunc(SwsContext *c) #if CONFIG_RUNTIME_CPUDETECT int flags = c->flags; + int cpuflags = av_get_cpu_flags(); + + flags |= (cpuflags & AV_CPU_FLAG_MMX ? SWS_CPU_CAPS_MMX : 0); + flags |= (cpuflags & AV_CPU_FLAG_MMX2 ? SWS_CPU_CAPS_MMX2 : 0); + flags |= (cpuflags & AV_CPU_FLAG_3DNOW ? SWS_CPU_CAPS_3DNOW : 0); + #if ARCH_X86 // ordered per speed fastest first if (flags & SWS_CPU_CAPS_MMX2) {