aboutsummaryrefslogtreecommitdiff
path: root/libvpx/vp8/encoder/onyx_if.c
diff options
context:
space:
mode:
authorJames Zern <jzern@google.com>2020-03-21 15:46:48 -0700
committerJames Zern <jzern@google.com>2020-04-16 01:32:16 +0000
commit8124b863b985c2c6701d173dc021fe215dc869d7 (patch)
treed1fff36cc18c9a426adb6374920edf94ecd55bda /libvpx/vp8/encoder/onyx_if.c
parent1feae85011a736262fb2c5679f5a22c0aa5224fc (diff)
downloadlibvpx-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.c18
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;