From: Marco Date: Mon, 14 Dec 2015 20:43:32 +0000 (-0800) Subject: Non-rd variance partition: Adjust logic for 32->16 force split. X-Git-Tag: v1.6.0~482^2 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=6f17954f853788b02e97bbb8bf8fcb4f8c69c4a8;p=libvpx 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 --- diff --git a/vp9/encoder/vp9_encodeframe.c b/vp9/encoder/vp9_encodeframe.c index 1606b16a2..85fce1ce4 100644 --- a/vp9/encoder/vp9_encodeframe.c +++ b/vp9/encoder/vp9_encodeframe.c @@ -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; }