From d9ef5790efa895abdfadb5aca29b79633a98c3f6 Mon Sep 17 00:00:00 2001 From: Ram Mohan Date: Fri, 29 Sep 2023 01:02:22 +0530 Subject: libavcenc: fix computations that are resulting in overflow Intermediate precision for few computations are exceeding int max. This is addressed --- encoder/irc_rate_control_api.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/encoder/irc_rate_control_api.c b/encoder/irc_rate_control_api.c index 4a64645..b641aa1 100644 --- a/encoder/irc_rate_control_api.c +++ b/encoder/irc_rate_control_api.c @@ -163,7 +163,9 @@ void irc_initialise_rate_control(rate_control_api_t *ps_rate_control_api, UWORD32 u4_tgt_ticks) { WORD32 i; - UWORD32 u4_frms_in_delay_prd = (u4_frame_rate * u4_max_delay) / 1000000; + UWORD32 u4_frms_in_delay_prd; + + X_PROD_Y_DIV_Z(u4_frame_rate, u4_max_delay, 1000000, u4_frms_in_delay_prd); ps_rate_control_api->e_rc_type = e_rate_control_type; ps_rate_control_api->u1_is_mb_level_rc_on = u1_is_mb_level_rc_on; @@ -307,8 +309,8 @@ void irc_initialise_rate_control(rate_control_api_t *ps_rate_control_api, /* Initialize the mb level rate control module */ irc_init_mb_level_rc(ps_rate_control_api->ps_mb_rate_control); - ps_rate_control_api->i4_prev_frm_est_bits = u4_avg_bit_rate * 1000 - / u4_frame_rate; + X_PROD_Y_DIV_Z(u4_avg_bit_rate, 1000, u4_frame_rate, + ps_rate_control_api->i4_prev_frm_est_bits); ps_rate_control_api->prev_ref_pic_type = I_PIC; } -- cgit v1.2.3