|
|
@@ -303,11 +303,10 @@ static av_always_inline int64_t av_sat_add64_c(int64_t a, int64_t b) { |
|
|
int64_t tmp; |
|
|
int64_t tmp; |
|
|
return !__builtin_add_overflow(a, b, &tmp) ? tmp : (tmp < 0 ? INT64_MAX : INT64_MIN); |
|
|
return !__builtin_add_overflow(a, b, &tmp) ? tmp : (tmp < 0 ? INT64_MAX : INT64_MIN); |
|
|
#else |
|
|
#else |
|
|
if (b >= 0 && a >= INT64_MAX - b) |
|
|
|
|
|
return INT64_MAX; |
|
|
|
|
|
if (b <= 0 && a <= INT64_MIN - b) |
|
|
|
|
|
return INT64_MIN; |
|
|
|
|
|
return a + b; |
|
|
|
|
|
|
|
|
int64_t s = a+(uint64_t)b; |
|
|
|
|
|
if ((int64_t)(a^b | ~s^b) >= 0) |
|
|
|
|
|
return INT64_MAX ^ (b >> 63); |
|
|
|
|
|
return s; |
|
|
#endif |
|
|
#endif |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|