shithub: libvpx

Download patch

ref: 6f17954f853788b02e97bbb8bf8fcb4f8c69c4a8
parent: e19b7df8d33c795e0daf4432315325ec445d21bd
author: Marco <[email protected]>
date: Mon Dec 14 07:43:32 EST 2015

Non-rd variance partition: Adjust logic for 32->16 force split.

Lower the threshold for splitting 32x32->16x16 based on average variance,
and add lower bound condition for this split to occur. This prevents
unneccassry splitting for areas with very low variance.

Change-Id: Ibeb33b3d993632c2019f296eb87ef3b7e3568189

--- a/vp9/encoder/vp9_encodeframe.c
+++ b/vp9/encoder/vp9_encodeframe.c
@@ -923,7 +923,8 @@
       get_variance(&vt.split[i].part_variances.none);
       if (vt.split[i].part_variances.none.variance > thresholds[1] ||
           (!is_key_frame &&
-          vt.split[i].part_variances.none.variance > (3 * avg_16x16[i]) >> 2)) {
+          vt.split[i].part_variances.none.variance > (thresholds[1] >> 1) &&
+          vt.split[i].part_variances.none.variance > (avg_16x16[i] >> 1))) {
         force_split[i + 1] = 1;
         force_split[0] = 1;
       }