summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAngie Chiang <angiebird@google.com>2021-01-19 17:36:12 -0800
committerAngie Chiang <angiebird@google.com>2021-01-19 18:54:00 -0800
commitf4fc562489bcee227403ca00f589e70043ebc5dc (patch)
tree29b7b97a8f86fac8b8fbe7011af20a739edaaa77
parentecbb0e0e2a9b0500db432922b436d1f59ae9b011 (diff)
downloadlibvpx-f4fc562489bcee227403ca00f589e70043ebc5dc.tar.gz
Return status in vp9_extrc_create/init/delete
Bug: webm:1716 Change-Id: I0b98741db8c639bdddd899fd6ad359da7b916086
-rw-r--r--vp9/encoder/vp9_ext_ratectrl.c43
-rw-r--r--vp9/encoder/vp9_ext_ratectrl.h9
2 files changed, 39 insertions, 13 deletions
diff --git a/vp9/encoder/vp9_ext_ratectrl.c b/vp9/encoder/vp9_ext_ratectrl.c
index 7d553a2ec..d93abd60d 100644
--- a/vp9/encoder/vp9_ext_ratectrl.c
+++ b/vp9/encoder/vp9_ext_ratectrl.c
@@ -13,31 +13,56 @@
#include "vp9/common/vp9_common.h"
#include "vpx_dsp/psnr.h"
-void vp9_extrc_init(EXT_RATECTRL *ext_ratectrl) { vp9_zero(*ext_ratectrl); }
+vpx_codec_err_t vp9_extrc_init(EXT_RATECTRL *ext_ratectrl) {
+ if (ext_ratectrl == NULL) {
+ return VPX_CODEC_ERROR;
+ }
+ vp9_zero(*ext_ratectrl);
+ return VPX_CODEC_OK;
+}
-void vp9_extrc_create(vpx_rc_funcs_t funcs, vpx_rc_config_t ratectrl_config,
- EXT_RATECTRL *ext_ratectrl) {
+vpx_codec_err_t vp9_extrc_create(vpx_rc_funcs_t funcs,
+ vpx_rc_config_t ratectrl_config,
+ EXT_RATECTRL *ext_ratectrl) {
+ vpx_rc_status_t rc_status;
vpx_rc_firstpass_stats_t *rc_firstpass_stats;
+ if (ext_ratectrl == NULL) {
+ return VPX_CODEC_ERROR;
+ }
vp9_extrc_delete(ext_ratectrl);
ext_ratectrl->funcs = funcs;
ext_ratectrl->ratectrl_config = ratectrl_config;
- ext_ratectrl->funcs.create_model(ext_ratectrl->funcs.priv,
- &ext_ratectrl->ratectrl_config,
- &ext_ratectrl->model);
+ rc_status = ext_ratectrl->funcs.create_model(ext_ratectrl->funcs.priv,
+ &ext_ratectrl->ratectrl_config,
+ &ext_ratectrl->model);
+ if (rc_status == VPX_RC_ERROR) {
+ return VPX_CODEC_ERROR;
+ }
rc_firstpass_stats = &ext_ratectrl->rc_firstpass_stats;
rc_firstpass_stats->num_frames = ratectrl_config.show_frame_count;
rc_firstpass_stats->frame_stats =
vpx_malloc(sizeof(*rc_firstpass_stats->frame_stats) *
rc_firstpass_stats->num_frames);
+ if (rc_firstpass_stats->frame_stats == NULL) {
+ return VPX_CODEC_MEM_ERROR;
+ }
ext_ratectrl->ready = 1;
+ return VPX_CODEC_OK;
}
-void vp9_extrc_delete(EXT_RATECTRL *ext_ratectrl) {
+vpx_codec_err_t vp9_extrc_delete(EXT_RATECTRL *ext_ratectrl) {
+ if (ext_ratectrl == NULL) {
+ return VPX_CODEC_ERROR;
+ }
if (ext_ratectrl->ready) {
- ext_ratectrl->funcs.delete_model(ext_ratectrl->model);
+ vpx_rc_status_t rc_status =
+ ext_ratectrl->funcs.delete_model(ext_ratectrl->model);
+ if (rc_status == VPX_RC_ERROR) {
+ return VPX_CODEC_ERROR;
+ }
vpx_free(ext_ratectrl->rc_firstpass_stats.frame_stats);
}
- vp9_extrc_init(ext_ratectrl);
+ return vp9_extrc_init(ext_ratectrl);
}
static void gen_rc_firstpass_stats(const FIRSTPASS_STATS *stats,
diff --git a/vp9/encoder/vp9_ext_ratectrl.h b/vp9/encoder/vp9_ext_ratectrl.h
index 6a86218da..e4d56c0b2 100644
--- a/vp9/encoder/vp9_ext_ratectrl.h
+++ b/vp9/encoder/vp9_ext_ratectrl.h
@@ -22,12 +22,13 @@ typedef struct EXT_RATECTRL {
vpx_rc_firstpass_stats_t rc_firstpass_stats;
} EXT_RATECTRL;
-void vp9_extrc_init(EXT_RATECTRL *ext_ratectrl);
+vpx_codec_err_t vp9_extrc_init(EXT_RATECTRL *ext_ratectrl);
-void vp9_extrc_create(vpx_rc_funcs_t funcs, vpx_rc_config_t ratectrl_config,
- EXT_RATECTRL *ext_ratectrl);
+vpx_codec_err_t vp9_extrc_create(vpx_rc_funcs_t funcs,
+ vpx_rc_config_t ratectrl_config,
+ EXT_RATECTRL *ext_ratectrl);
-void vp9_extrc_delete(EXT_RATECTRL *ext_ratectrl);
+vpx_codec_err_t vp9_extrc_delete(EXT_RATECTRL *ext_ratectrl);
void vp9_extrc_send_firstpass_stats(EXT_RATECTRL *ext_ratectrl,
const FIRST_PASS_INFO *first_pass_info);