From 427de67e631244c2b469e922cef07e1583f4b097 Mon Sep 17 00:00:00 2001 From: Marco Date: Tue, 8 Aug 2017 10:34:47 -0700 Subject: [PATCH] vp9: Partition logic adjustment for speed 6 feature. When adapt_partition_source_sad is enabled (currently only at speed 6 for resoln <= 360p): use lower subsize (8x8 instead of 16x16) for nonrd_select_partition on 32X32 blocks. And force avoiding rectangular partition checks in nonrd_pick_partition for speed >= 6. Small increase ~0.5 in metrics for speed 6 on rtc_derf, no change in speed. Change-Id: Id751bc8f7573634571b2d6f5e29627cd5cebccae --- vp9/encoder/vp9_encodeframe.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/vp9/encoder/vp9_encodeframe.c b/vp9/encoder/vp9_encodeframe.c index 8b349ab..175856b 100644 --- a/vp9/encoder/vp9_encodeframe.c +++ b/vp9/encoder/vp9_encodeframe.c @@ -3650,6 +3650,9 @@ static void nonrd_pick_partition(VP9_COMP *cpi, ThreadData *td, !force_horz_split && xss <= yss && bsize >= BLOCK_8X8; (void)*tp_orig; + // Avoid checking for rectangular partitions for speed >= 6. + if (cpi->oxcf.speed >= 6) do_rect = 0; + assert(num_8x8_blocks_wide_lookup[bsize] == num_8x8_blocks_high_lookup[bsize]); @@ -3877,6 +3880,8 @@ static void nonrd_select_partition(VP9_COMP *cpi, ThreadData *td, PARTITION_TYPE partition; BLOCK_SIZE subsize; RD_COST this_rdc; + BLOCK_SIZE subsize_ref = + (cpi->sf.adapt_partition_source_sad) ? BLOCK_8X8 : BLOCK_16X16; vp9_rd_cost_reset(&this_rdc); if (mi_row >= cm->mi_rows || mi_col >= cm->mi_cols) return; @@ -3890,7 +3895,7 @@ static void nonrd_select_partition(VP9_COMP *cpi, ThreadData *td, nonrd_pick_partition(cpi, td, tile_data, tp, mi_row, mi_col, bsize, rd_cost, 0, INT64_MAX, pc_tree); } else if (bsize == BLOCK_32X32 && partition != PARTITION_NONE && - subsize >= BLOCK_16X16) { + subsize >= subsize_ref) { x->max_partition_size = BLOCK_32X32; x->min_partition_size = BLOCK_8X8; nonrd_pick_partition(cpi, td, tile_data, tp, mi_row, mi_col, bsize, rd_cost, -- 2.7.4