From 4ac6727438eaecce24333af3d5babb0953d0055b Mon Sep 17 00:00:00 2001 From: Geza Lore Date: Tue, 9 Feb 2016 10:17:22 +0000 Subject: [PATCH] Fix partition type costing. This patch makes rd optimization use the same context for computing the rate cost of coding the partitioning as the packer actually uses when emitting it in write_modes_sb. Change-Id: Idb1427bb2f9c37ab80c6aa182f7ff754ef0595cb --- vp10/encoder/encodeframe.c | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/vp10/encoder/encodeframe.c b/vp10/encoder/encodeframe.c index 859ec49c4..e26505fb0 100644 --- a/vp10/encoder/encodeframe.c +++ b/vp10/encoder/encodeframe.c @@ -2875,7 +2875,8 @@ static void rd_pick_partition(VP10_COMP *cpi, ThreadData *td, #endif TOKENEXTRA *tp_orig = *tp; PICK_MODE_CONTEXT *ctx = &pc_tree->none; - int i, pl; + int i; + const int pl = partition_plane_context(xd, mi_row, mi_col, bsize); BLOCK_SIZE subsize; RD_COST this_rdc, sum_rdc, best_rdc; #if CONFIG_SUPERTX @@ -3021,7 +3022,6 @@ static void rd_pick_partition(VP10_COMP *cpi, ThreadData *td, bsize, ctx, best_rdc.rdcost); if (this_rdc.rate != INT_MAX) { if (bsize >= BLOCK_8X8) { - pl = partition_plane_context(xd, mi_row, mi_col, bsize); this_rdc.rate += cpi->partition_cost[pl][PARTITION_NONE]; this_rdc.rdcost = RDCOST(x->rdmult, x->rddiv, this_rdc.rate, this_rdc.dist); @@ -3288,7 +3288,6 @@ static void rd_pick_partition(VP10_COMP *cpi, ThreadData *td, } if (sum_rdc.rdcost < best_rdc.rdcost && i == 4) { - pl = partition_plane_context(xd, mi_row, mi_col, bsize); sum_rdc.rate += cpi->partition_cost[pl][PARTITION_SPLIT]; sum_rdc.rdcost = RDCOST(x->rdmult, x->rddiv, sum_rdc.rate, sum_rdc.dist); @@ -3427,7 +3426,6 @@ static void rd_pick_partition(VP10_COMP *cpi, ThreadData *td, #endif // CONFIG_SUPERTX if (sum_rdc.rdcost < best_rdc.rdcost) { - pl = partition_plane_context(xd, mi_row, mi_col, bsize); sum_rdc.rate += cpi->partition_cost[pl][PARTITION_HORZ]; sum_rdc.rdcost = RDCOST(x->rdmult, x->rddiv, sum_rdc.rate, sum_rdc.dist); #if CONFIG_SUPERTX @@ -3556,7 +3554,6 @@ static void rd_pick_partition(VP10_COMP *cpi, ThreadData *td, #endif // CONFIG_SUPERTX if (sum_rdc.rdcost < best_rdc.rdcost) { - pl = partition_plane_context(xd, mi_row, mi_col, bsize); sum_rdc.rate += cpi->partition_cost[pl][PARTITION_VERT]; sum_rdc.rdcost = RDCOST(x->rdmult, x->rddiv, sum_rdc.rate, sum_rdc.dist);