shithub: libvpx

Download patch

ref: 9ebc8605dbb493d25247cf106b8760c6fccbd11d
parent: c85c5337bfe2f64503b8e8f4584db63d6cd64d61
author: Marco Paniconi <marpan@google.com>
date: Fri Apr 27 06:38:15 EDT 2018

vp9-realtime: Enable alt_ref at speed 5, for live.

Enable alt_ref and compound prediction at speed 5.

For 1 pass VBR mode, when lag > 0.
Gain for Live set: ~3% gain on average, several
clips have gains ~5-15%.

Encoder fps decrease ~5-10%, on desktop with 4 threads.

For now enable it only for resolutions <= 1280x720.

Change-Id: I25e3d61a2244a3a01962624052c5adf4837965c7

--- a/test/vp9_datarate_test.cc
+++ b/test/vp9_datarate_test.cc
@@ -294,7 +294,7 @@
   ASSERT_NO_FATAL_FAILURE(RunLoop(&video));
   ASSERT_GE(effective_datarate_[0], cfg_.rc_target_bitrate * 0.75)
       << " The datarate for the file is lower than target by too much!";
-  ASSERT_LE(effective_datarate_[0], cfg_.rc_target_bitrate * 1.30)
+  ASSERT_LE(effective_datarate_[0], cfg_.rc_target_bitrate * 1.35)
       << " The datarate for the file is greater than target by too much!";
 }
 
--- a/vp9/encoder/vp9_speed_features.c
+++ b/vp9/encoder/vp9_speed_features.c
@@ -537,8 +537,14 @@
     if (cpi->use_svc && cpi->svc.spatial_layer_id > 0) sf->nonrd_keyframe = 1;
     if (cpi->oxcf.pass == 0 && cpi->oxcf.rc_mode == VPX_CBR &&
         cm->frame_type != KEY_FRAME && cpi->resize_state == ORIG &&
-        cpi->oxcf.content == VP9E_CONTENT_SCREEN)
+        cpi->oxcf.content == VP9E_CONTENT_SCREEN) {
       sf->re_encode_overshoot_rt = 1;
+    }
+    if (cpi->oxcf.rc_mode == VPX_VBR && cpi->oxcf.lag_in_frames > 0 &&
+        cm->width <= 1280 && cm->height <= 720) {
+      sf->use_altref_onepass = 1;
+      sf->use_compound_nonrd_pickmode = 1;
+    }
   }
 
   if (speed >= 6) {