diff options
author | Paul Wilkins <paulwilkins@google.com> | 2015-01-29 13:50:52 -0800 |
---|---|---|
committer | Gerrit Code Review <gerrit@gerrit.golo.chromium.org> | 2015-01-29 13:50:52 -0800 |
commit | 68340a34706b4db35bbb879dacff758c0a80bd1e (patch) | |
tree | 03b555c8bb159277cd1fb3d6b33b9256be5fd2bb /vp9 | |
parent | a80dd52b6ea410ff20835bd12220dd77934f011a (diff) | |
parent | f752da8ce208bb0b0bc4a83406ba93cefb335928 (diff) | |
download | libvpx-68340a34706b4db35bbb879dacff758c0a80bd1e.tar libvpx-68340a34706b4db35bbb879dacff758c0a80bd1e.tar.gz libvpx-68340a34706b4db35bbb879dacff758c0a80bd1e.tar.bz2 libvpx-68340a34706b4db35bbb879dacff758c0a80bd1e.zip |
Merge "Change to update of rate control factors."
Diffstat (limited to 'vp9')
-rw-r--r-- | vp9/encoder/vp9_encoder.c | 12 | ||||
-rw-r--r-- | vp9/encoder/vp9_ratectrl.c | 21 | ||||
-rw-r--r-- | vp9/encoder/vp9_ratectrl.h | 2 |
3 files changed, 11 insertions, 24 deletions
diff --git a/vp9/encoder/vp9_encoder.c b/vp9/encoder/vp9_encoder.c index c85bf2a0e..e93842726 100644 --- a/vp9/encoder/vp9_encoder.c +++ b/vp9/encoder/vp9_encoder.c @@ -2955,18 +2955,18 @@ static void encode_with_recode_loop(VP9_COMP *cpi, if (undershoot_seen || loop_count > 1) { // Update rate_correction_factor unless - vp9_rc_update_rate_correction_factors(cpi, 1); + vp9_rc_update_rate_correction_factors(cpi); q = (q_high + q_low + 1) / 2; } else { // Update rate_correction_factor unless - vp9_rc_update_rate_correction_factors(cpi, 0); + vp9_rc_update_rate_correction_factors(cpi); q = vp9_rc_regulate_q(cpi, rc->this_frame_target, bottom_index, MAX(q_high, top_index)); while (q < q_low && retries < 10) { - vp9_rc_update_rate_correction_factors(cpi, 0); + vp9_rc_update_rate_correction_factors(cpi); q = vp9_rc_regulate_q(cpi, rc->this_frame_target, bottom_index, MAX(q_high, top_index)); retries++; @@ -2979,10 +2979,10 @@ static void encode_with_recode_loop(VP9_COMP *cpi, q_high = q > q_low ? q - 1 : q_low; if (overshoot_seen || loop_count > 1) { - vp9_rc_update_rate_correction_factors(cpi, 1); + vp9_rc_update_rate_correction_factors(cpi); q = (q_high + q_low) / 2; } else { - vp9_rc_update_rate_correction_factors(cpi, 0); + vp9_rc_update_rate_correction_factors(cpi); q = vp9_rc_regulate_q(cpi, rc->this_frame_target, bottom_index, top_index); // Special case reset for qlow for constrained quality. @@ -2995,7 +2995,7 @@ static void encode_with_recode_loop(VP9_COMP *cpi, } while (q > q_high && retries < 10) { - vp9_rc_update_rate_correction_factors(cpi, 0); + vp9_rc_update_rate_correction_factors(cpi); q = vp9_rc_regulate_q(cpi, rc->this_frame_target, bottom_index, top_index); retries++; diff --git a/vp9/encoder/vp9_ratectrl.c b/vp9/encoder/vp9_ratectrl.c index 21f4cce03..11da367b9 100644 --- a/vp9/encoder/vp9_ratectrl.c +++ b/vp9/encoder/vp9_ratectrl.c @@ -396,7 +396,7 @@ static void set_rate_correction_factor(VP9_COMP *cpi, double factor) { } } -void vp9_rc_update_rate_correction_factors(VP9_COMP *cpi, int damp_var) { +void vp9_rc_update_rate_correction_factors(VP9_COMP *cpi) { const VP9_COMMON *const cm = &cpi->common; int correction_factor = 100; double rate_correction_factor = get_rate_correction_factor(cpi); @@ -431,19 +431,8 @@ void vp9_rc_update_rate_correction_factors(VP9_COMP *cpi, int damp_var) { // More heavily damped adjustment used if we have been oscillating either side // of target. - switch (damp_var) { - case 0: - adjustment_limit = 0.75; - break; - case 1: - adjustment_limit = 0.25 + - 0.5 * MIN(1, fabs(log10(0.01 * correction_factor))); - break; - case 2: - default: - adjustment_limit = 0.25; - break; - } + adjustment_limit = 0.25 + + 0.5 * MIN(1, fabs(log10(0.01 * correction_factor))); cpi->rc.q_2_frame = cpi->rc.q_1_frame; cpi->rc.q_1_frame = cm->base_qindex; @@ -1222,9 +1211,7 @@ void vp9_rc_postencode_update(VP9_COMP *cpi, uint64_t bytes_used) { rc->projected_frame_size = (int)(bytes_used << 3); // Post encode loop adjustment of Q prediction. - vp9_rc_update_rate_correction_factors( - cpi, (cpi->sf.recode_loop >= ALLOW_RECODE_KFARFGF) ? 2 : - ((oxcf->rc_mode == VPX_CBR) ? 1 : 0)); + vp9_rc_update_rate_correction_factors(cpi); // Keep a record of last Q and ambient average Q. if (cm->frame_type == KEY_FRAME) { diff --git a/vp9/encoder/vp9_ratectrl.h b/vp9/encoder/vp9_ratectrl.h index a53f4e0a2..9774127a9 100644 --- a/vp9/encoder/vp9_ratectrl.h +++ b/vp9/encoder/vp9_ratectrl.h @@ -160,7 +160,7 @@ void vp9_rc_postencode_update_drop_frame(struct VP9_COMP *cpi); // Updates rate correction factors // Changes only the rate correction factors in the rate control structure. -void vp9_rc_update_rate_correction_factors(struct VP9_COMP *cpi, int damp_var); +void vp9_rc_update_rate_correction_factors(struct VP9_COMP *cpi); // Decide if we should drop this frame: For 1-pass CBR. // Changes only the decimation count in the rate control structure |