diff options
Diffstat (limited to 'vp8')
-rw-r--r-- | vp8/common/onyx.h | 1 | ||||
-rw-r--r-- | vp8/encoder/onyx_if.c | 13 | ||||
-rw-r--r-- | vp8/vp8_cx_iface.c | 3 |
3 files changed, 16 insertions, 1 deletions
diff --git a/vp8/common/onyx.h b/vp8/common/onyx.h index 426b8fc2b..c586d0dae 100644 --- a/vp8/common/onyx.h +++ b/vp8/common/onyx.h @@ -109,6 +109,7 @@ extern "C" int noise_sensitivity; // parameter used for applying pre processing blur: recommendation 0 int Sharpness; // parameter used for sharpening output: recommendation 0: int cpu_used; + unsigned int rc_max_intra_bitrate_pct; // mode -> //(0)=Realtime/Live Encoding. This mode is optimized for realtim encoding (for example, capturing diff --git a/vp8/encoder/onyx_if.c b/vp8/encoder/onyx_if.c index 7461edca4..cbaab5fb0 100644 --- a/vp8/encoder/onyx_if.c +++ b/vp8/encoder/onyx_if.c @@ -2704,6 +2704,19 @@ static int pick_frame_size(VP8_COMP *cpi) } } + /* Apply limits on keyframe target. + * + * TODO: move this after consolidating + * vp8_calc_iframe_target_size() and vp8_calc_auto_iframe_target_size() + */ + if (cm->frame_type == KEY_FRAME && cpi->oxcf.rc_max_intra_bitrate_pct) + { + unsigned int max_rate = cpi->av_per_frame_bandwidth + * cpi->oxcf.rc_max_intra_bitrate_pct / 100; + + if (cpi->this_frame_target > max_rate) + cpi->this_frame_target = max_rate; + } return 1; } diff --git a/vp8/vp8_cx_iface.c b/vp8/vp8_cx_iface.c index 973265c2e..17eb6a2ce 100644 --- a/vp8/vp8_cx_iface.c +++ b/vp8/vp8_cx_iface.c @@ -304,6 +304,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 = cfg.rc_max_intra_bitrate_pct; oxcf->best_allowed_q = cfg.rc_min_quantizer; oxcf->worst_allowed_q = cfg.rc_max_quantizer; @@ -1083,7 +1084,7 @@ static vpx_codec_enc_cfg_map_t vp8e_usage_cfg_map[] = {0}, /* rc_twopass_stats_in */ #endif 256, /* rc_target_bandwidth */ - + 0, /* rc_max_intra_bitrate_pct */ 4, /* rc_min_quantizer */ 63, /* rc_max_quantizer */ 95, /* rc_undershoot_pct */ |