Merge commit 'bf07d813f6c88b5a76980f321cf7272d799c4216'
authorMichael Niedermayer <michaelni@gmx.at>
Sat, 21 Feb 2015 10:02:17 +0000 (11:02 +0100)
committerMichael Niedermayer <michaelni@gmx.at>
Sat, 21 Feb 2015 10:13:34 +0000 (11:13 +0100)
* commit 'bf07d813f6c88b5a76980f321cf7272d799c4216':
  libavutil: Add av_clip_intp2

Merged-by: Michael Niedermayer <michaelni@gmx.at>
1  2 
libavutil/common.h

@@@ -180,10 -148,24 +180,24 @@@ static av_always_inline av_const int16_
   */
  static av_always_inline av_const int32_t av_clipl_int32_c(int64_t a)
  {
 -    if ((a+0x80000000u) & ~UINT64_C(0xFFFFFFFF)) return (a>>63) ^ 0x7FFFFFFF;
 -    else                                         return a;
 +    if ((a+0x80000000u) & ~UINT64_C(0xFFFFFFFF)) return (int32_t)((a>>63) ^ 0x7FFFFFFF);
 +    else                                         return (int32_t)a;
  }
  
+ /**
+  * Clip a signed integer into the -(2^p),(2^p-1) range.
+  * @param  a value to clip
+  * @param  p bit position to clip at
+  * @return clipped value
+  */
+ static av_always_inline av_const int av_clip_intp2_c(int a, int p)
+ {
+     if ((a + (1 << p)) & ~((1 << (p + 1)) - 1))
+         return (a >> 31) ^ ((1 << p) - 1);
+     else
+         return a;
+ }
  /**
   * Clip a signed integer to an unsigned power of two range.
   * @param  a value to clip