diff options
author | Jingning Han <jingning@google.com> | 2018-06-20 11:13:00 -0700 |
---|---|---|
committer | Jingning Han <jingning@google.com> | 2018-06-20 17:32:45 -0700 |
commit | 770c68da83215f0f6d0d01587d27ae703281edb8 (patch) | |
tree | c0667af11358ccccd1f03596703fa59d26cafe7f | |
parent | 862d6f48c5be17ee710ecb9e143cb91e54136160 (diff) | |
download | libvpx-770c68da83215f0f6d0d01587d27ae703281edb8.tar libvpx-770c68da83215f0f6d0d01587d27ae703281edb8.tar.gz libvpx-770c68da83215f0f6d0d01587d27ae703281edb8.tar.bz2 libvpx-770c68da83215f0f6d0d01587d27ae703281edb8.zip |
Refactor block partition level rate distortion cost computation
Compute the rate distortion cost directly at the coding block level.
Change-Id: Ib3f8e1ac6b6ec68db4f96c037f567b19da7fb114
-rw-r--r-- | vp9/encoder/vp9_encodeframe.c | 7 |
1 files changed, 2 insertions, 5 deletions
diff --git a/vp9/encoder/vp9_encodeframe.c b/vp9/encoder/vp9_encodeframe.c index 383f7a8d7..b478b5053 100644 --- a/vp9/encoder/vp9_encodeframe.c +++ b/vp9/encoder/vp9_encodeframe.c @@ -1967,6 +1967,8 @@ static void rd_pick_sb_modes(VP9_COMP *cpi, TileDataEnc *tile_data, vp9_caq_select_segment(cpi, x, bsize, mi_row, mi_col, rd_cost->rate); } + rd_cost->rdcost = RDCOST(x->rdmult, x->rddiv, rd_cost->rate, rd_cost->dist); + x->rdmult = orig_rdmult; // TODO(jingning) The rate-distortion optimization flow needs to be @@ -3559,8 +3561,6 @@ static void rd_pick_partition(VP9_COMP *cpi, ThreadData *td, best_rdc.rdcost); if (this_rdc.rate != INT_MAX) { if (bsize >= BLOCK_8X8) { - this_rdc.rdcost = - RDCOST(x->rdmult, x->rddiv, this_rdc.rate, this_rdc.dist); this_rdc.rdcost += RDCOST(x->rdmult, x->rddiv, cpi->partition_cost[pl][PARTITION_NONE], 0); this_rdc.rate += cpi->partition_cost[pl][PARTITION_NONE]; @@ -3714,7 +3714,6 @@ static void rd_pick_partition(VP9_COMP *cpi, ThreadData *td, } if (sum_rdc.rdcost < best_rdc.rdcost && i == 4) { - sum_rdc.rdcost = RDCOST(x->rdmult, x->rddiv, sum_rdc.rate, sum_rdc.dist); sum_rdc.rdcost += RDCOST(x->rdmult, x->rddiv, cpi->partition_cost[pl][PARTITION_SPLIT], 0); sum_rdc.rate += cpi->partition_cost[pl][PARTITION_SPLIT]; @@ -3777,7 +3776,6 @@ static void rd_pick_partition(VP9_COMP *cpi, ThreadData *td, } if (sum_rdc.rdcost < best_rdc.rdcost) { - sum_rdc.rdcost = RDCOST(x->rdmult, x->rddiv, sum_rdc.rate, sum_rdc.dist); sum_rdc.rdcost += RDCOST(x->rdmult, x->rddiv, cpi->partition_cost[pl][PARTITION_HORZ], 0); sum_rdc.rate += cpi->partition_cost[pl][PARTITION_HORZ]; @@ -3827,7 +3825,6 @@ static void rd_pick_partition(VP9_COMP *cpi, ThreadData *td, } if (sum_rdc.rdcost < best_rdc.rdcost) { - sum_rdc.rdcost = RDCOST(x->rdmult, x->rddiv, sum_rdc.rate, sum_rdc.dist); sum_rdc.rdcost += RDCOST(x->rdmult, x->rddiv, cpi->partition_cost[pl][PARTITION_VERT], 0); sum_rdc.rate += cpi->partition_cost[pl][PARTITION_VERT]; |