cpu: add av_set_cpu_flags_mask().
authorAnton Khirnov <anton@khirnov.net>
Sun, 4 Mar 2012 15:08:48 +0000 (16:08 +0100)
committerAnton Khirnov <anton@khirnov.net>
Tue, 6 Mar 2012 14:02:28 +0000 (15:02 +0100)
doc/APIchanges
libavutil/avutil.h
libavutil/cpu.c
libavutil/cpu.h

index c375529..8ddd4d3 100644 (file)
@@ -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()
index e4219eb..21fc737 100644 (file)
  */
 
 #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, \
index 25895d6..e72f723 100644 (file)
 #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
index df7bf44..361fe98 100644 (file)
  */
 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);