Commit 2178cf9a35 for aom
commit 2178cf9a35c5fae268e10daaea37a3b0e1e8d617
Author: Yunqing Wang <yunqingwang@google.com>
Date: Tue Dec 16 14:56:33 2025 -0800
Fix array-bounds crash in encoder_encode
Bug: b/468491090
Change-Id: Ie6a5abd07d87e5204fef00a6ced045a0ebd7b56d
diff --git a/av1/av1_cx_iface.c b/av1/av1_cx_iface.c
index c049a9912e..603fe1bef3 100644
--- a/av1/av1_cx_iface.c
+++ b/av1/av1_cx_iface.c
@@ -3577,6 +3577,8 @@ static aom_codec_err_t encoder_encode(aom_codec_alg_priv_t *ctx,
#endif // CONFIG_FPMT_TEST
if (!simulate_parallel_frame) {
+ // May need a better way for checking the frame's frame_parallel_level,
+ // especially for the first frame of the following gop.
if (ppi->gf_group.frame_parallel_level[cpi->gf_frame_index] == 0) {
status = av1_get_compressed_data(cpi, &cpi_data);
} else if (ppi->gf_group.frame_parallel_level[cpi->gf_frame_index] ==
diff --git a/av1/encoder/encoder.c b/av1/encoder/encoder.c
index 54e4214a04..08433d1bad 100644
--- a/av1/encoder/encoder.c
+++ b/av1/encoder/encoder.c
@@ -5048,6 +5048,10 @@ static inline void update_gf_group_index(AV1_COMP *cpi) {
cpi->gf_frame_index = 0;
} else {
++cpi->gf_frame_index;
+ // In rare cases, the gop size can be MAX_STATIC_GF_GROUP_LENGTH for VOD
+ // encoding. Need to reset this to 0 for the following gop.
+ if (cpi->gf_frame_index == MAX_STATIC_GF_GROUP_LENGTH)
+ cpi->gf_frame_index = 0;
}
}