|
|
|
@@ -181,6 +181,30 @@ static av_always_inline av_const unsigned av_clip_uintp2_c(int a, int p) |
|
|
|
else return a; |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* Add two signed 32-bit values with saturation. |
|
|
|
* |
|
|
|
* @param a one value |
|
|
|
* @param b another value |
|
|
|
* @return sum with signed saturation |
|
|
|
*/ |
|
|
|
static av_always_inline int av_sat_add32_c(int a, int b) |
|
|
|
{ |
|
|
|
return av_clipl_int32((int64_t)a + b); |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* Add a doubled value to another value with saturation at both stages. |
|
|
|
* |
|
|
|
* @param a first value |
|
|
|
* @param b value doubled and added to a |
|
|
|
* @return sum with signed saturation |
|
|
|
*/ |
|
|
|
static av_always_inline int av_sat_dadd32_c(int a, int b) |
|
|
|
{ |
|
|
|
return av_sat_add32(a, av_sat_add32(b, b)); |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* Clip a float value into the amin-amax range. |
|
|
|
* @param a value to clip |
|
|
|
@@ -387,6 +411,12 @@ 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_sat_add32 |
|
|
|
# define av_sat_add32 av_sat_add32_c |
|
|
|
#endif |
|
|
|
#ifndef av_sat_dadd32 |
|
|
|
# define av_sat_dadd32 av_sat_dadd32_c |
|
|
|
#endif |
|
|
|
#ifndef av_clipf |
|
|
|
# define av_clipf av_clipf_c |
|
|
|
#endif |
|
|
|
|