aboutsummaryrefslogtreecommitdiff
path: root/libvpx/vp8/encoder/ratectrl.c
diff options
context:
space:
mode:
Diffstat (limited to 'libvpx/vp8/encoder/ratectrl.c')
-rw-r--r--libvpx/vp8/encoder/ratectrl.c9
1 files changed, 6 insertions, 3 deletions
diff --git a/libvpx/vp8/encoder/ratectrl.c b/libvpx/vp8/encoder/ratectrl.c
index d2b8dff06..59a4fada8 100644
--- a/libvpx/vp8/encoder/ratectrl.c
+++ b/libvpx/vp8/encoder/ratectrl.c
@@ -780,6 +780,7 @@ static void calc_pframe_target_size(VP8_COMP *cpi) {
}
} else {
int percent_high = 0;
+ int64_t target = cpi->this_frame_target;
if ((cpi->oxcf.end_usage == USAGE_STREAM_FROM_SERVER) &&
(cpi->buffer_level > cpi->oxcf.optimal_buffer_level)) {
@@ -797,7 +798,9 @@ static void calc_pframe_target_size(VP8_COMP *cpi) {
percent_high = 0;
}
- cpi->this_frame_target += (cpi->this_frame_target * percent_high) / 200;
+ target += (target * percent_high) / 200;
+ target = VPXMIN(target, INT_MAX);
+ cpi->this_frame_target = (int)target;
/* Are we allowing control of active_worst_allowed_q according
* to buffer level.
@@ -1078,8 +1081,8 @@ void vp8_update_rate_correction_factors(VP8_COMP *cpi, int damp_var) {
/* Work out a size correction factor. */
if (projected_size_based_on_q > 0) {
- correction_factor =
- (100 * cpi->projected_frame_size) / projected_size_based_on_q;
+ correction_factor = (int)((100 * (int64_t)cpi->projected_frame_size) /
+ projected_size_based_on_q);
}
/* More heavily damped adjustment used if we have been oscillating