ref: d9e8c1eafc6bfb8515ffea60e025df3c724a7694
parent: 3f6d1bce3cf16e14a508b86dae5dcf2e146f7f10
parent: 4a1386e3c89c2fb671133c2898701398102edb56
author: Minghai Shang <minghai@google.com>
date: Wed Apr 30 07:02:54 EDT 2014
Merge "[svc rc] Increase worst quality for enhancement layers"
--- a/vp9/encoder/vp9_firstpass.c
+++ b/vp9/encoder/vp9_firstpass.c
@@ -920,12 +920,19 @@
const int target_norm_bits_per_mb = ((uint64_t)section_target_bandwidth <<
BPER_MB_NORMBITS) / num_mbs;
int q;
+ int is_svc_upper_layer = 0;
+ if (cpi->use_svc && cpi->svc.number_temporal_layers == 1 &&
+ cpi->svc.spatial_layer_id > 0) {
+ is_svc_upper_layer = 1;
+ }
// Try and pick a max Q that will be high enough to encode the
// content at the given rate.
for (q = rc->best_quality; q < rc->worst_quality; ++q) {
- const double factor = calc_correction_factor(err_per_mb, ERR_DIVISOR,
- 0.5, 0.90, q);
+ const double factor =
+ calc_correction_factor(err_per_mb, ERR_DIVISOR,
+ is_svc_upper_layer ? 0.8 : 0.5,
+ is_svc_upper_layer ? 1.0 : 0.90, q);
const int bits_per_mb = vp9_rc_bits_per_mb(INTER_FRAME, q,
factor * speed_term);
if (bits_per_mb <= target_norm_bits_per_mb)
--
⑨