From a3f0d2b9674b4bbbdb6eb28a1e600ba324a5853b Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?M=C3=A5ns=20Rullg=C3=A5rd?= <mans@mansr.com>
Date: Thu, 9 Sep 2010 18:51:49 +0000
Subject: [PATCH] Cache detected CPU flags

Originally committed as revision 25085 to svn://svn.ffmpeg.org/ffmpeg/trunk
---
 libavutil/cpu.c | 15 +++++++++++----
 1 file changed, 11 insertions(+), 4 deletions(-)

diff --git a/libavutil/cpu.c b/libavutil/cpu.c
index 34530eebaf5..1548530b87d 100644
--- a/libavutil/cpu.c
+++ b/libavutil/cpu.c
@@ -21,10 +21,17 @@
 
 int av_get_cpu_flags(void)
 {
-    if (ARCH_ARM) return ff_get_cpu_flags_arm();
-    if (ARCH_PPC) return ff_get_cpu_flags_ppc();
-    if (ARCH_X86) return ff_get_cpu_flags_x86();
-    return 0;
+    static int flags, checked;
+
+    if (checked)
+        return flags;
+
+    if (ARCH_ARM) flags = ff_get_cpu_flags_arm();
+    if (ARCH_PPC) flags = ff_get_cpu_flags_ppc();
+    if (ARCH_X86) flags = ff_get_cpu_flags_x86();
+
+    checked = 1;
+    return flags;
 }
 
 #ifdef TEST
-- 
GitLab