aboutsummaryrefslogtreecommitdiffstats
path: root/libavutil
diff options
context:
space:
mode:
authorAnton Khirnov <anton@khirnov.net>2012-03-04 16:08:48 +0100
committerAnton Khirnov <anton@khirnov.net>2012-03-06 15:02:28 +0100
commit4d851f8dcf951d380e935ef14ae01db813adfc2d (patch)
treebd5610a073c4d4292b6caa6b9ebe840bad168eac /libavutil
parent338978a7c17d303672bcf5e035e54da362274a18 (diff)
downloadffmpeg-4d851f8dcf951d380e935ef14ae01db813adfc2d.tar.gz
cpu: add av_set_cpu_flags_mask().
Diffstat (limited to 'libavutil')
-rw-r--r--libavutil/avutil.h2
-rw-r--r--libavutil/cpu.c12
-rw-r--r--libavutil/cpu.h8
3 files changed, 20 insertions, 2 deletions
diff --git a/libavutil/avutil.h b/libavutil/avutil.h
index e4219eb87f..21fc737114 100644
--- a/libavutil/avutil.h
+++ b/libavutil/avutil.h
@@ -152,7 +152,7 @@
*/
#define LIBAVUTIL_VERSION_MAJOR 51
-#define LIBAVUTIL_VERSION_MINOR 24
+#define LIBAVUTIL_VERSION_MINOR 25
#define LIBAVUTIL_VERSION_MICRO 0
#define LIBAVUTIL_VERSION_INT AV_VERSION_INT(LIBAVUTIL_VERSION_MAJOR, \
diff --git a/libavutil/cpu.c b/libavutil/cpu.c
index 25895d6d5d..e72f7231a8 100644
--- a/libavutil/cpu.c
+++ b/libavutil/cpu.c
@@ -19,9 +19,11 @@
#include "cpu.h"
#include "config.h"
+static int cpuflags_mask, checked;
+
int av_get_cpu_flags(void)
{
- static int flags, checked;
+ static int flags;
if (checked)
return flags;
@@ -30,10 +32,18 @@ int av_get_cpu_flags(void)
if (ARCH_PPC) flags = ff_get_cpu_flags_ppc();
if (ARCH_X86) flags = ff_get_cpu_flags_x86();
+ flags &= cpuflags_mask;
checked = 1;
+
return flags;
}
+void av_set_cpu_flags_mask(int mask)
+{
+ cpuflags_mask = mask;
+ checked = 0;
+}
+
#ifdef TEST
#undef printf
diff --git a/libavutil/cpu.h b/libavutil/cpu.h
index df7bf4421a..361fe9866a 100644
--- a/libavutil/cpu.h
+++ b/libavutil/cpu.h
@@ -48,6 +48,14 @@
*/
int av_get_cpu_flags(void);
+/**
+ * Set a mask on flags returned by av_get_cpu_flags().
+ * This function is mainly useful for testing.
+ *
+ * @warning this function is not thread safe.
+ */
+void av_set_cpu_flags_mask(int mask);
+
/* The following CPU-specific functions shall not be called directly. */
int ff_get_cpu_flags_arm(void);
int ff_get_cpu_flags_ppc(void);