diff options
author | Marco <marpan@google.com> | 2016-10-17 14:32:28 -0700 |
---|---|---|
committer | Marco <marpan@google.com> | 2016-10-19 09:43:53 -0700 |
commit | ff38b8dfaed089cb36d651dcdc6c1fb74acab657 (patch) | |
tree | 7692c3fc912a6f484fc6d648cca22a9b4abeffa6 /vp8/vp8_cx_iface.c | |
parent | 7f31bfeddbe4a0309b2a79129c1d526ba5725864 (diff) | |
download | libvpx-ff38b8dfaed089cb36d651dcdc6c1fb74acab657.tar libvpx-ff38b8dfaed089cb36d651dcdc6c1fb74acab657.tar.gz libvpx-ff38b8dfaed089cb36d651dcdc6c1fb74acab657.tar.bz2 libvpx-ff38b8dfaed089cb36d651dcdc6c1fb74acab657.zip |
vp8: Add control for gf boost for 1 pass cbr.
Control already exists for vp9, adding it to vp8.
Usage is only when error_resilient is off.
Added a datarate unittest for non-zero boost.
Change-Id: I4296055ebe2f4f048e8210f344531f6486ac9e35
Diffstat (limited to 'vp8/vp8_cx_iface.c')
-rw-r--r-- | vp8/vp8_cx_iface.c | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/vp8/vp8_cx_iface.c b/vp8/vp8_cx_iface.c index fac237eec..f8475ed61 100644 --- a/vp8/vp8_cx_iface.c +++ b/vp8/vp8_cx_iface.c @@ -40,6 +40,7 @@ struct vp8_extracfg { vp8e_tuning tuning; unsigned int cq_level; /* constrained quality level */ unsigned int rc_max_intra_bitrate_pct; + unsigned int gf_cbr_boost_pct; unsigned int screen_content_mode; }; @@ -65,6 +66,7 @@ static struct vp8_extracfg default_extracfg = { 0, /* tuning*/ 10, /* cq_level */ 0, /* rc_max_intra_bitrate_pct */ + 0, /* gf_cbr_boost_pct */ 0, /* screen_content_mode */ }; @@ -315,6 +317,7 @@ static vpx_codec_err_t set_vp8e_config(VP8_CONFIG *oxcf, oxcf->target_bandwidth = cfg.rc_target_bitrate; oxcf->rc_max_intra_bitrate_pct = vp8_cfg.rc_max_intra_bitrate_pct; + oxcf->gf_cbr_boost_pct = vp8_cfg.gf_cbr_boost_pct; oxcf->best_allowed_q = cfg.rc_min_quantizer; oxcf->worst_allowed_q = cfg.rc_max_quantizer; @@ -558,6 +561,13 @@ static vpx_codec_err_t set_rc_max_intra_bitrate_pct(vpx_codec_alg_priv_t *ctx, return update_extracfg(ctx, &extra_cfg); } +static vpx_codec_err_t ctrl_set_rc_gf_cbr_boost_pct(vpx_codec_alg_priv_t *ctx, + va_list args) { + struct vp8_extracfg extra_cfg = ctx->vp8_cfg; + extra_cfg.gf_cbr_boost_pct = CAST(VP8E_SET_GF_CBR_BOOST_PCT, args); + return update_extracfg(ctx, &extra_cfg); +} + static vpx_codec_err_t set_screen_content_mode(vpx_codec_alg_priv_t *ctx, va_list args) { struct vp8_extracfg extra_cfg = ctx->vp8_cfg; @@ -1159,6 +1169,7 @@ static vpx_codec_ctrl_fn_map_t vp8e_ctf_maps[] = { { VP8E_SET_CQ_LEVEL, set_cq_level }, { VP8E_SET_MAX_INTRA_BITRATE_PCT, set_rc_max_intra_bitrate_pct }, { VP8E_SET_SCREEN_CONTENT_MODE, set_screen_content_mode }, + { VP8E_SET_GF_CBR_BOOST_PCT, ctrl_set_rc_gf_cbr_boost_pct }, { -1, NULL }, }; |