libavutil: add av_mod_uintp2
authorJames Almer <jamrial@gmail.com>
Wed, 18 Mar 2015 18:08:45 +0000 (15:08 -0300)
committerJames Almer <jamrial@gmail.com>
Fri, 20 Mar 2015 18:47:31 +0000 (15:47 -0300)
Reviewed-by: Michael Niedermayer <michaelni@gmx.at>
Signed-off-by: James Almer <jamrial@gmail.com>
libavutil/common.h

index 852c1de..3e62b6d 100644 (file)
@@ -210,6 +210,17 @@ static av_always_inline av_const unsigned av_clip_uintp2_c(int a, int p)
     else                   return  a;
 }
 
+/**
+ * Clear high bits from an unsigned integer starting with specific bit position
+ * @param  a value to clip
+ * @param  p bit position to clip at
+ * @return clipped value
+ */
+static av_always_inline av_const unsigned av_mod_uintp2_c(unsigned a, unsigned p)
+{
+    return a & ((1 << p) - 1);
+}
+
 /**
  * Add two signed 32-bit values with saturation.
  *
@@ -466,6 +477,9 @@ static av_always_inline av_const int av_popcount64_c(uint64_t x)
 #ifndef av_clip_uintp2
 #   define av_clip_uintp2   av_clip_uintp2_c
 #endif
+#ifndef av_mod_uintp2
+#   define av_mod_uintp2    av_mod_uintp2_c
+#endif
 #ifndef av_sat_add32
 #   define av_sat_add32     av_sat_add32_c
 #endif