diff --git a/vp9/encoder/vp9_firstpass.c b/vp9/encoder/vp9_firstpass.c index df2841020908a3033d94b9f2a89b1246a6a58eac..924f9f3246c10d93862fb5a1de0ebf531857ce5a 100644 --- a/vp9/encoder/vp9_firstpass.c +++ b/vp9/encoder/vp9_firstpass.c @@ -336,9 +336,11 @@ static int frame_max_bits(VP9_COMP *cpi) { const double max_bits = (1.0 * cpi->twopass.bits_left / (cpi->twopass.total_stats.count - cpi->common.current_video_frame)) * (cpi->oxcf.two_pass_vbrmax_section / 100.0); - - // Trap case where we are out of bits. - return MAX((int)max_bits, 0); + if (max_bits < 0) + return 0; + if (max_bits >= INT_MAX) + return INT_MAX; + return (int)max_bits; } void vp9_init_first_pass(VP9_COMP *cpi) { diff --git a/vp9/encoder/vp9_ratectrl.c b/vp9/encoder/vp9_ratectrl.c index 6e4c56c1a22e0b1ee353c6320802985755edf089..062de78f3dace41f1090102aecfb6541a412dcb4 100644 --- a/vp9/encoder/vp9_ratectrl.c +++ b/vp9/encoder/vp9_ratectrl.c @@ -244,7 +244,7 @@ static void calc_iframe_target_size(VP9_COMP *cpi) { cpi->rc.this_frame_target = target; // Target rate per SB64 (including partial SB64s. - cpi->rc.sb64_target_rate = (cpi->rc.this_frame_target * 64 * 64) / + cpi->rc.sb64_target_rate = ((int64_t)cpi->rc.this_frame_target * 64 * 64) / (cpi->common.width * cpi->common.height); } @@ -274,7 +274,7 @@ static void calc_pframe_target_size(VP9_COMP *cpi) { } // Target rate per SB64 (including partial SB64s. - cpi->rc.sb64_target_rate = (cpi->rc.this_frame_target * 64 * 64) / + cpi->rc.sb64_target_rate = ((int64_t)cpi->rc.this_frame_target * 64 * 64) / (cpi->common.width * cpi->common.height);