libavutil: add av_mod_uintp2
authorJames Almer <jamrial@gmail.com>
Wed, 22 Feb 2017 17:53:34 +0000 (12:53 -0500)
committerVittorio Giovara <vittorio.giovara@gmail.com>
Wed, 1 Mar 2017 16:23:19 +0000 (11:23 -0500)
Signed-off-by: James Almer <jamrial@gmail.com>
libavutil/common.h

index d2ddcba..3832f10 100644 (file)
@@ -183,6 +183,17 @@ static av_always_inline av_const unsigned av_clip_uintp2_c(int a, int p)
 }
 
 /**
+ * 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.
  *
  * @param  a one value
@@ -410,6 +421,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