From 4d851f8dcf951d380e935ef14ae01db813adfc2d Mon Sep 17 00:00:00 2001 From: Anton Khirnov Date: Sun, 4 Mar 2012 16:08:48 +0100 Subject: [PATCH] cpu: add av_set_cpu_flags_mask(). --- doc/APIchanges | 3 +++ libavutil/avutil.h | 2 +- libavutil/cpu.c | 12 +++++++++++- libavutil/cpu.h | 8 ++++++++ 4 files changed, 23 insertions(+), 2 deletions(-) diff --git a/doc/APIchanges b/doc/APIchanges index c3755299dc..8ddd4d3742 100644 --- a/doc/APIchanges +++ b/doc/APIchanges @@ -12,6 +12,9 @@ libavutil: 2011-04-18 API changes, most recent first: +2012-03-xx - xxxxxxx - lavu 51.25.0 - cpu.h + Add av_set_cpu_flags_mask(). + 2012-xx-xx - lavc 54.8.0 xxxxxxx Add av_get_exact_bits_per_sample() xxxxxxx Add av_get_audio_frame_duration() 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);