}
#endif // CONFIG_RATE_CTRL
if (cpi->ext_ratectrl.ready && !ext_rc_recode &&
- (cpi->ext_ratectrl.funcs.rc_type & VPX_RC_QP) != 0) {
+ (cpi->ext_ratectrl.funcs.rc_type & VPX_RC_QP) != 0 &&
+ cpi->ext_ratectrl.funcs.get_encodeframe_decision != NULL) {
vpx_codec_err_t codec_status;
const GF_GROUP *gf_group = &cpi->twopass.gf_group;
vpx_rc_encodeframe_decision_t encode_frame_decision;
// Backup to ensure consistency between recodes
save_encode_params(cpi);
if (cpi->ext_ratectrl.ready &&
- (cpi->ext_ratectrl.funcs.rc_type & VPX_RC_RDMULT) != 0) {
+ (cpi->ext_ratectrl.funcs.rc_type & VPX_RC_RDMULT) != 0 &&
+ cpi->ext_ratectrl.funcs.get_frame_rdmult != NULL) {
vpx_codec_err_t codec_status;
const GF_GROUP *gf_group = &cpi->twopass.gf_group;
FRAME_UPDATE_TYPE update_type = gf_group->update_type[gf_group->index];
end_timing(cpi, vp9_pack_bitstream_time);
#endif
- if (cpi->ext_ratectrl.ready) {
+ if (cpi->ext_ratectrl.ready &&
+ cpi->ext_ratectrl.funcs.update_encodeframe_result != NULL) {
const RefCntBuffer *coded_frame_buf =
get_ref_cnt_buffer(cm, cm->new_fb_idx);
vpx_codec_err_t codec_status = vp9_extrc_update_encodeframe_result(
// are overwritten. Specifically, |gop_coding_frames| and |use_alt_ref|
// will be overwritten.
if (cpi->ext_ratectrl.ready &&
- (cpi->ext_ratectrl.funcs.rc_type & VPX_RC_GOP) != 0) {
+ (cpi->ext_ratectrl.funcs.rc_type & VPX_RC_GOP) != 0 &&
+ cpi->ext_ratectrl.funcs.get_gop_decision != NULL) {
vpx_codec_err_t codec_status;
vpx_rc_gop_decision_t gop_decision;
vpx_rc_gop_info_t gop_info;
FIRSTPASS_STATS this_frame;
const int show_idx = cm->current_video_frame;
- if (cpi->common.current_frame_coding_index == 0) {
+ if (cpi->common.current_frame_coding_index == 0 &&
+ cpi->ext_ratectrl.funcs.send_firstpass_stats != NULL) {
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) {
// Qmode.
trim_tpl_stats(&cpi->common.error, &cpi->tpl_gop_stats, extended_frame_count);
- if (cpi->ext_ratectrl.ready) {
+ if (cpi->ext_ratectrl.ready &&
+ cpi->ext_ratectrl.funcs.send_tpl_gop_stats != NULL) {
const vpx_codec_err_t codec_status =
vp9_extrc_send_tpl_stats(&cpi->ext_ratectrl, &cpi->tpl_gop_stats);
if (codec_status != VPX_CODEC_OK) {