]> granicus.if.org Git - libvpx/commitdiff
Non-rd variance partition: Adjust logic for 32->16 force split.
authorMarco <marpan@google.com>
Mon, 14 Dec 2015 20:43:32 +0000 (12:43 -0800)
committerMarco <marpan@google.com>
Mon, 14 Dec 2015 20:54:10 +0000 (12:54 -0800)
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

vp9/encoder/vp9_encodeframe.c

index 1606b16a2fc131f6e2b06c1986a82e4d47279ba0..85fce1ce4c4f9fad15aa876186136eed7d8fc21f 100644 (file)
@@ -923,7 +923,8 @@ static int choose_partitioning(VP9_COMP *cpi,
       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;
       }