]> granicus.if.org Git - libvpx/commitdiff
vp9_ratectrl: change ARF overlays rate correction factor
authorGuillaume Martres <smarter3@gmail.com>
Sat, 5 Apr 2014 23:07:53 +0000 (01:07 +0200)
committerGuillaume Martres <smarter3@gmail.com>
Mon, 7 Apr 2014 16:22:11 +0000 (18:22 +0200)
ARF overlays now use the same rate correction factor as regular inter
frames, further testing would be needed to see if it makes sense to use
a completely separate rate correction factor for ARF overlays.

$ vpxenc --cpu-used=5  --fps=50/1 --target-bitrate=2000
         parkjoy.y4m -o out.webm
=> Before: 3356 kb/s
=> After: 2271 kb/s

Change-Id: I73e4defa615ba7a8a2bdb845864f4b1721cbbffe

vp9/encoder/vp9_ratectrl.c

index 26e89addfb3067ea5b544b9bd57ea56a8ca5b242..c033b2fb6b4e6ec768284023e5ef5331f557fa3f 100644 (file)
@@ -272,6 +272,7 @@ static double get_rate_correction_factor(const VP9_COMP *cpi) {
     return cpi->rc.key_frame_rate_correction_factor;
   } else {
     if ((cpi->refresh_alt_ref_frame || cpi->refresh_golden_frame) &&
+        !cpi->rc.is_src_frame_alt_ref &&
         !(cpi->use_svc && cpi->oxcf.end_usage == USAGE_STREAM_FROM_SERVER))
       return cpi->rc.gf_rate_correction_factor;
     else
@@ -284,6 +285,7 @@ static void set_rate_correction_factor(VP9_COMP *cpi, double factor) {
     cpi->rc.key_frame_rate_correction_factor = factor;
   } else {
     if ((cpi->refresh_alt_ref_frame || cpi->refresh_golden_frame) &&
+        !cpi->rc.is_src_frame_alt_ref &&
         !(cpi->use_svc && cpi->oxcf.end_usage == USAGE_STREAM_FROM_SERVER))
       cpi->rc.gf_rate_correction_factor = factor;
     else