diff --git a/libavcodec/ra288.c b/libavcodec/ra288.c index 72ed8102ee..57ee6c20dd 100644 --- a/libavcodec/ra288.c +++ b/libavcodec/ra288.c @@ -88,14 +88,8 @@ static void decode(Real288_internal *glob, float gain, int cb_coef) /* output */ for (x=0; x < 5; x++) { - float f = glob->sb[4-x] + buffer[x]; - - if (f > 4095) - f = 4095; - else if (f < -4095) - f = -4095; - - glob->output[glob->phase*5+x] = glob->sb[4-x] = f; + glob->output[glob->phase*5+x] = glob->sb[4-x] = + av_clipf(glob->sb[4-x] + buffer[x], -4095, 4095); } } diff --git a/libavutil/common.h b/libavutil/common.h index 5a56832eeb..696b03e78b 100644 --- a/libavutil/common.h +++ b/libavutil/common.h @@ -225,6 +225,20 @@ static inline av_const int16_t av_clip_int16(int a) else return a; } +/** + * clip a float value into the amin-amax range + * @param a value to clip + * @param amin minimum value of the clip range + * @param amax maximum value of the clip range + * @return clipped value + */ +static inline av_const float av_clipf(float a, float amin, float amax) +{ + if (a < amin) return amin; + else if (a > amax) return amax; + else return a; +} + /* math */ int64_t av_const ff_gcd(int64_t a, int64_t b);