summaryrefslogtreecommitdiff
path: root/vp8
diff options
context:
space:
mode:
authorJohn Koleszar <jkoleszar@google.com>2011-04-25 10:47:57 -0700
committerCode Review <code-review@webmproject.org>2011-04-25 10:47:57 -0700
commitd9f898ab6dbf2e5f9f031b808c13c204254c0a21 (patch)
treead10f78928c3064644c2a0eff769aa45fd278772 /vp8
parent2089b2cee545f97fe49201a9b081c4263fcd1474 (diff)
parentaa926fbd273c7d62d43487f73f2f3cdce7bec5a8 (diff)
downloadlibvpx-d9f898ab6dbf2e5f9f031b808c13c204254c0a21.tar
libvpx-d9f898ab6dbf2e5f9f031b808c13c204254c0a21.tar.gz
libvpx-d9f898ab6dbf2e5f9f031b808c13c204254c0a21.tar.bz2
libvpx-d9f898ab6dbf2e5f9f031b808c13c204254c0a21.zip
Merge "Add rc_max_intra_bitrate_pct control"
Diffstat (limited to 'vp8')
-rw-r--r--vp8/common/onyx.h1
-rw-r--r--vp8/encoder/onyx_if.c13
-rw-r--r--vp8/vp8_cx_iface.c3
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 */