Merge "Non-rd partition: Use force split on 16x16 for low resolutions."

This commit is contained in:
Marco Paniconi 2015-12-04 19:21:26 +00:00 committed by Gerrit Code Review
commit 64e46a033f

View File

@ -401,7 +401,6 @@ static int set_vt_partitioning(VP9_COMP *cpi,
variance_node vt;
const int block_width = num_8x8_blocks_wide_lookup[bsize];
const int block_height = num_8x8_blocks_high_lookup[bsize];
const int low_res = (cm->width <= 352 && cm->height <= 288);
assert(block_height == block_width);
tree_to_node(data, bsize, &vt);
@ -414,7 +413,7 @@ static int set_vt_partitioning(VP9_COMP *cpi,
// No check for vert/horiz split as too few samples for variance.
if (bsize == bsize_min) {
// Variance already computed to set the force_split.
if (low_res || cm->frame_type == KEY_FRAME)
if (cm->frame_type == KEY_FRAME)
get_variance(&vt.part_variances->none);
if (mi_col + block_width / 2 < cm->mi_cols &&
mi_row + block_height / 2 < cm->mi_rows &&
@ -425,7 +424,7 @@ static int set_vt_partitioning(VP9_COMP *cpi,
return 0;
} else if (bsize > bsize_min) {
// Variance already computed to set the force_split.
if (low_res || cm->frame_type == KEY_FRAME)
if (cm->frame_type == KEY_FRAME)
get_variance(&vt.part_variances->none);
// For key frame: take split for bsize above 32X32 or very high variance.
if (cm->frame_type == KEY_FRAME &&
@ -897,6 +896,14 @@ static int choose_partitioning(VP9_COMP *cpi,
for (m = 0; m < 4; m++)
fill_variance_tree(&vtemp->split[m], BLOCK_8X8);
fill_variance_tree(vtemp, BLOCK_16X16);
// If variance of this 16x16 block is above the threshold, force block
// to split. This also forces a split on the upper levels.
get_variance(&vtemp->part_variances.none);
if (vtemp->part_variances.none.variance > thresholds[2]) {
force_split[5 + i2 + j] = 1;
force_split[i + 1] = 1;
force_split[0] = 1;
}
}
}
fill_variance_tree(&vt.split[i], BLOCK_32X32);