Commit f20ffd491c for aom

commit f20ffd491c629ded91e7b12c9dca1b752ac53cd7
Author: Cheng Chen <chengchen@google.com>
Date:   Fri Apr 17 16:28:49 2026 -0700

    Fix an integer overflow in target bits calculation

    BUG=aomedia:503197490

    Change-Id: I65eaba5e6d48da47ca0e67854ac0cff843e4ddea

diff --git a/av1/encoder/ratectrl.c b/av1/encoder/ratectrl.c
index dd2bd1bac5..f68c78f4ec 100644
--- a/av1/encoder/ratectrl.c
+++ b/av1/encoder/ratectrl.c
@@ -505,10 +505,11 @@ void av1_primary_rc_init(const AV1EncoderConfig *oxcf,
   p_rc->rate_correction_factors[KF_STD] = 1.0;
   p_rc->bits_off_target = p_rc->starting_buffer_level;

-  p_rc->rolling_target_bits = AOMMAX(
-      1, (int)(oxcf->rc_cfg.target_bandwidth / oxcf->input_cfg.init_framerate));
-  p_rc->rolling_actual_bits = AOMMAX(
-      1, (int)(oxcf->rc_cfg.target_bandwidth / oxcf->input_cfg.init_framerate));
+  const double bits_per_frame =
+      oxcf->rc_cfg.target_bandwidth / oxcf->input_cfg.init_framerate;
+  p_rc->rolling_target_bits =
+      AOMMAX(1, bits_per_frame > INT_MAX ? INT_MAX : (int)bits_per_frame);
+  p_rc->rolling_actual_bits = p_rc->rolling_target_bits;
 }

 void av1_rc_init(const AV1EncoderConfig *oxcf, RATE_CONTROL *rc) {
diff --git a/test/encode_api_test.cc b/test/encode_api_test.cc
index 259fb34a07..239d29af1c 100644
--- a/test/encode_api_test.cc
+++ b/test/encode_api_test.cc
@@ -2408,4 +2408,22 @@ TEST(EncodeAPI, DynamicSvcTemporalIssue502735235) {
   ASSERT_EQ(aom_codec_destroy(&codec), AOM_CODEC_OK);
 }

+TEST(EncodeAPI, Buganizer503197490) {
+  aom_codec_iface_t *iface = aom_codec_av1_cx();
+  aom_codec_enc_cfg_t cfg;
+  ASSERT_EQ(aom_codec_enc_config_default(iface, &cfg, AOM_USAGE_REALTIME),
+            AOM_CODEC_OK);
+
+  cfg.g_w = 640;
+  cfg.g_h = 360;
+  cfg.g_timebase.num = 570;
+  cfg.g_timebase.den = 30;
+  cfg.rc_end_usage = AOM_CBR;
+  cfg.rc_target_bitrate = 1728882;  // 1728882000 bits/s
+
+  aom_codec_ctx_t codec;
+  ASSERT_EQ(aom_codec_enc_init(&codec, iface, &cfg, 0), AOM_CODEC_OK);
+  ASSERT_EQ(aom_codec_destroy(&codec), AOM_CODEC_OK);
+}
+
 }  // namespace