[FFmpeg-cvslog] cpu: add av_set_cpu_flags_mask().

Anton Khirnov git at videolan.org
Wed Mar 7 03:37:18 CET 2012


ffmpeg | branch: master | Anton Khirnov <anton at khirnov.net> | Sun Mar  4 16:08:48 2012 +0100| [4d851f8dcf951d380e935ef14ae01db813adfc2d] | committer: Anton Khirnov

cpu: add av_set_cpu_flags_mask().

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=4d851f8dcf951d380e935ef14ae01db813adfc2d
---

 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 c375529..8ddd4d3 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 e4219eb..21fc737 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 25895d6..e72f723 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 df7bf44..361fe98 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);



More information about the ffmpeg-cvslog mailing list