Commit 4784907e79 for aom
commit 4784907e79e16e99cc703e4d3f06a1ee083165da
Author: James Zern <jzern@google.com>
Date: Wed Feb 4 13:16:03 2026 -0800
encoder_set_config: add missing setjmp
`av1_change_config()` may call `aom_internal_error` on error.
Bug: 42302297
Change-Id: I0cee3497dc0b2d7e9b37c7c3794ab0a66f49ca11
diff --git a/av1/av1_cx_iface.c b/av1/av1_cx_iface.c
index 0ad53cd491..73150f2543 100644
--- a/av1/av1_cx_iface.c
+++ b/av1/av1_cx_iface.c
@@ -1592,7 +1592,7 @@ AV1EncoderConfig av1_get_encoder_config(const aom_codec_enc_cfg_t *cfg) {
static aom_codec_err_t encoder_set_config(aom_codec_alg_priv_t *ctx,
const aom_codec_enc_cfg_t *cfg) {
aom_codec_err_t res;
- int force_key = 0;
+ volatile int force_key = 0;
if (cfg->g_w != ctx->cfg.g_w || cfg->g_h != ctx->cfg.g_h) {
if (cfg->g_lag_in_frames > 1 || cfg->g_pass != AOM_RC_ONE_PASS)
@@ -1644,11 +1644,26 @@ static aom_codec_err_t encoder_set_config(aom_codec_alg_priv_t *ctx,
bool is_sb_size_changed = false;
av1_change_config_seq(ctx->ppi, &ctx->oxcf, &is_sb_size_changed);
for (int i = 0; i < ctx->ppi->num_fp_contexts; i++) {
- av1_change_config(ctx->ppi->parallel_cpi[i], &ctx->oxcf,
- is_sb_size_changed);
+ AV1_COMP *const cpi = ctx->ppi->parallel_cpi[i];
+ struct aom_internal_error_info *const error = cpi->common.error;
+ if (setjmp(error->jmp)) {
+ error->setjmp = 0;
+ return error->error_code;
+ }
+ error->setjmp = 1;
+ av1_change_config(cpi, &ctx->oxcf, is_sb_size_changed);
+ error->setjmp = 0;
}
if (ctx->ppi->cpi_lap != NULL) {
- av1_change_config(ctx->ppi->cpi_lap, &ctx->oxcf, is_sb_size_changed);
+ AV1_COMP *const cpi = ctx->ppi->cpi_lap;
+ struct aom_internal_error_info *const error = cpi->common.error;
+ if (setjmp(error->jmp)) {
+ error->setjmp = 0;
+ return error->error_code;
+ }
+ error->setjmp = 1;
+ av1_change_config(cpi, &ctx->oxcf, is_sb_size_changed);
+ error->setjmp = 0;
}
}