avutil/mathematics: Do not treat INT64_MIN as positive in av_rescale_rnd
The code expects actual positive numbers and gives completely wrong results if INT64_MIN is treated as positive Instead clip it into the valid range that is add 1 and treat it as negative Signed-off-by: Michael Niedermayer <michael@niedermayer.cc> (cherry picked from commit 25e37f5ea92d4201976a59ae306ce848d257a7e6) Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
This commit is contained in:
parent
60369668ca
commit
582a6035bc
@ -76,8 +76,8 @@ int64_t av_rescale_rnd(int64_t a, int64_t b, int64_t c, enum AVRounding rnd)
|
|||||||
rnd -= AV_ROUND_PASS_MINMAX;
|
rnd -= AV_ROUND_PASS_MINMAX;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (a < 0 && a != INT64_MIN)
|
if (a < 0)
|
||||||
return -av_rescale_rnd(-a, b, c, rnd ^ ((rnd >> 1) & 1));
|
return -av_rescale_rnd(-FFMAX(a, -INT64_MAX), b, c, rnd ^ ((rnd >> 1) & 1));
|
||||||
|
|
||||||
if (rnd == AV_ROUND_NEAR_INF)
|
if (rnd == AV_ROUND_NEAR_INF)
|
||||||
r = c / 2;
|
r = c / 2;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user