diff options
author | James Zern <jzern@google.com> | 2020-03-21 15:46:48 -0700 |
---|---|---|
committer | James Zern <jzern@google.com> | 2020-04-16 01:32:16 +0000 |
commit | 8124b863b985c2c6701d173dc021fe215dc869d7 (patch) | |
tree | d1fff36cc18c9a426adb6374920edf94ecd55bda /libvpx/vp8/encoder/onyx_if.c | |
parent | 1feae85011a736262fb2c5679f5a22c0aa5224fc (diff) | |
download | libvpx-8124b863b985c2c6701d173dc021fe215dc869d7.tar.gz |
external/libvpx: backport vp8/9 int overflow fixes
5e065cf9d vp8/{ratectrl,onyx_if}: fix some signed integer overflows
5eab093a7 vp9_ratectrl: fix some signed integer overflows
Bug: b/151945689
Test: walleye builds
Change-Id: I95e9d29143f0ccc8e7da30cd8387abc5f0862d18
(cherry picked from commit 35c6f9f867d4598cef28d32697e21712edba1550)
Diffstat (limited to 'libvpx/vp8/encoder/onyx_if.c')
-rw-r--r-- | libvpx/vp8/encoder/onyx_if.c | 18 |
1 files changed, 9 insertions, 9 deletions
diff --git a/libvpx/vp8/encoder/onyx_if.c b/libvpx/vp8/encoder/onyx_if.c index 29c8cc66c..3f5b9816d 100644 --- a/libvpx/vp8/encoder/onyx_if.c +++ b/libvpx/vp8/encoder/onyx_if.c @@ -4520,15 +4520,15 @@ static void encode_frame_to_data_rate(VP8_COMP *cpi, size_t *size, /* Rolling monitors of whether we are over or underspending used to * help regulate min and Max Q in two pass. */ - cpi->rolling_target_bits = - ((cpi->rolling_target_bits * 3) + cpi->this_frame_target + 2) / 4; - cpi->rolling_actual_bits = - ((cpi->rolling_actual_bits * 3) + cpi->projected_frame_size + 2) / 4; - cpi->long_rolling_target_bits = - ((cpi->long_rolling_target_bits * 31) + cpi->this_frame_target + 16) / 32; - cpi->long_rolling_actual_bits = - ((cpi->long_rolling_actual_bits * 31) + cpi->projected_frame_size + 16) / - 32; + cpi->rolling_target_bits = (int)ROUND64_POWER_OF_TWO( + (int64_t)cpi->rolling_target_bits * 3 + cpi->this_frame_target, 2); + cpi->rolling_actual_bits = (int)ROUND64_POWER_OF_TWO( + (int64_t)cpi->rolling_actual_bits * 3 + cpi->projected_frame_size, 2); + cpi->long_rolling_target_bits = (int)ROUND64_POWER_OF_TWO( + (int64_t)cpi->long_rolling_target_bits * 31 + cpi->this_frame_target, 5); + cpi->long_rolling_actual_bits = (int)ROUND64_POWER_OF_TWO( + (int64_t)cpi->long_rolling_actual_bits * 31 + cpi->projected_frame_size, + 5); /* Actual bits spent */ cpi->total_actual_bits += cpi->projected_frame_size; |