Merge "Non-rd partition: Use force split on 16x16 for low resolutions."
This commit is contained in:
commit
64e46a033f
@ -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);
|
||||
|
Loading…
x
Reference in New Issue
Block a user