summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAngie Chiang <angiebird@google.com>2021-01-19 18:45:38 -0800
committerAngie Chiang <angiebird@google.com>2021-01-20 17:52:03 -0800
commitf57fa3f1df45ea80049ff831a054ac66a12aebdc (patch)
treeebb418af01c223b948afaffddab1e4f1a6c2c156
parent3aecf4a0ba219d0b92f765c59a89df55ce628da7 (diff)
downloadlibvpx-f57fa3f1df45ea80049ff831a054ac66a12aebdc.tar.gz
libvpx-f57fa3f1df45ea80049ff831a054ac66a12aebdc.tar.bz2
libvpx-f57fa3f1df45ea80049ff831a054ac66a12aebdc.zip
Handle vp9_extrc functions' return status properly
Bug: webm:1716 Change-Id: I204cd3ab35b493759808500b799da3b9e55686d4
-rw-r--r--vp9/encoder/vp9_encoder.c29
-rw-r--r--vp9/vp9_cx_iface.c6
2 files changed, 29 insertions, 6 deletions
diff --git a/vp9/encoder/vp9_encoder.c b/vp9/encoder/vp9_encoder.c
index 6968e5791..eea2f1840 100644
--- a/vp9/encoder/vp9_encoder.c
+++ b/vp9/encoder/vp9_encoder.c
@@ -2464,7 +2464,12 @@ VP9_COMP *vp9_create_compressor(const VP9EncoderConfig *oxcf,
cpi->allow_encode_breakout = ENCODE_BREAKOUT_ENABLED;
- vp9_extrc_init(&cpi->ext_ratectrl);
+ {
+ vpx_codec_err_t codec_status = vp9_extrc_init(&cpi->ext_ratectrl);
+ if (codec_status != VPX_CODEC_OK) {
+ vpx_internal_error(&cm->error, codec_status, "vp9_extrc_init() failed");
+ }
+ }
#if !CONFIG_REALTIME_ONLY
if (oxcf->pass == 1) {
@@ -4503,6 +4508,7 @@ static void encode_with_recode_loop(VP9_COMP *cpi, size_t *size, uint8_t *dest
}
#endif
if (cpi->ext_ratectrl.ready) {
+ vpx_codec_err_t codec_status;
const GF_GROUP *gf_group = &cpi->twopass.gf_group;
vpx_rc_encodeframe_decision_t encode_frame_decision;
FRAME_UPDATE_TYPE update_type = gf_group->update_type[gf_group->index];
@@ -4511,10 +4517,14 @@ static void encode_with_recode_loop(VP9_COMP *cpi, size_t *size, uint8_t *dest
const RefCntBuffer *curr_frame_buf =
get_ref_cnt_buffer(cm, cm->new_fb_idx);
get_ref_frame_bufs(cpi, ref_frame_bufs);
- vp9_extrc_get_encodeframe_decision(
+ codec_status = vp9_extrc_get_encodeframe_decision(
&cpi->ext_ratectrl, curr_frame_buf->frame_index,
cm->current_frame_coding_index, gf_group->index, update_type,
ref_frame_bufs, ref_frame_flags, &encode_frame_decision);
+ if (codec_status != VPX_CODEC_OK) {
+ vpx_internal_error(&cm->error, codec_status,
+ "vp9_extrc_get_encodeframe_decision() failed");
+ }
q = encode_frame_decision.q_index;
}
@@ -5489,9 +5499,13 @@ static void encode_frame_to_data_rate(
{
const RefCntBuffer *coded_frame_buf =
get_ref_cnt_buffer(cm, cm->new_fb_idx);
- vp9_extrc_update_encodeframe_result(
+ vpx_codec_err_t codec_status = vp9_extrc_update_encodeframe_result(
&cpi->ext_ratectrl, (*size) << 3, cpi->Source, &coded_frame_buf->buf,
cm->bit_depth, cpi->oxcf.input_bit_depth);
+ if (codec_status != VPX_CODEC_OK) {
+ vpx_internal_error(&cm->error, codec_status,
+ "vp9_extrc_update_encodeframe_result() failed");
+ }
}
#if CONFIG_REALTIME_ONLY
(void)encode_frame_result;
@@ -5682,8 +5696,13 @@ static void Pass2Encode(VP9_COMP *cpi, size_t *size, uint8_t *dest,
cpi->allow_encode_breakout = ENCODE_BREAKOUT_ENABLED;
if (cpi->common.current_frame_coding_index == 0) {
- vp9_extrc_send_firstpass_stats(&cpi->ext_ratectrl,
- &cpi->twopass.first_pass_info);
+ VP9_COMMON *cm = &cpi->common;
+ const vpx_codec_err_t codec_status = vp9_extrc_send_firstpass_stats(
+ &cpi->ext_ratectrl, &cpi->twopass.first_pass_info);
+ if (codec_status != VPX_CODEC_OK) {
+ vpx_internal_error(&cm->error, codec_status,
+ "vp9_extrc_send_firstpass_stats() failed");
+ }
}
#if CONFIG_MISMATCH_DEBUG
mismatch_move_frame_idx_w();
diff --git a/vp9/vp9_cx_iface.c b/vp9/vp9_cx_iface.c
index a73683dfe..ecfacfaf4 100644
--- a/vp9/vp9_cx_iface.c
+++ b/vp9/vp9_cx_iface.c
@@ -1744,6 +1744,7 @@ static vpx_codec_err_t ctrl_set_external_rate_control(vpx_codec_alg_priv_t *ctx,
if (oxcf->pass == 2) {
const FRAME_INFO *frame_info = &cpi->frame_info;
vpx_rc_config_t ratectrl_config;
+ vpx_codec_err_t codec_status;
ratectrl_config.frame_width = frame_info->frame_width;
ratectrl_config.frame_height = frame_info->frame_height;
@@ -1755,7 +1756,10 @@ static vpx_codec_err_t ctrl_set_external_rate_control(vpx_codec_alg_priv_t *ctx,
ratectrl_config.frame_rate_num = oxcf->g_timebase.den;
ratectrl_config.frame_rate_den = oxcf->g_timebase.num;
- vp9_extrc_create(funcs, ratectrl_config, ext_ratectrl);
+ codec_status = vp9_extrc_create(funcs, ratectrl_config, ext_ratectrl);
+ if (codec_status != VPX_CODEC_OK) {
+ return codec_status;
+ }
}
return VPX_CODEC_OK;
}