ref: e665c8f2c948f65a54de639e01efbd42d3d00bfc
parent: c9725813db4413ed4f4d8fcf11c4234ed9c8fe2e
author: Jingning Han <jingning@google.com>
date: Tue Feb 10 10:32:38 EST 2015
Add mode cost to sub8x8 block mode decision in rtc coding This commit allows the encoder to properly account for the mode cost in sub8x8 non-RD mode decision. Change-Id: I2951960d20e37ed08e372ee0c7044935b2b9b899
--- a/vp9/encoder/vp9_pickmode.c
+++ b/vp9/encoder/vp9_pickmode.c
@@ -1130,8 +1130,6 @@
int64_t b_best_rd = INT64_MAX;
const int i = idy * 2 + idx;
PREDICTION_MODE this_mode;
- int b_rate = 0;
- int64_t b_dist = 0;
RD_COST this_rdc;
unsigned int var_y, sse_y;
@@ -1159,6 +1157,7 @@
&b_mv[NEARMV]);
for (this_mode = NEARESTMV; this_mode <= NEWMV; ++this_mode) {
+ int b_rate = 0;
xd->mi[0].bmi[i].as_mv[0].as_int = b_mv[this_mode].as_int;
if (this_mode == NEWMV) {
@@ -1220,6 +1219,9 @@
&x->pred_sse[ref_frame], NULL, 0, 0);
xd->mi[0].bmi[i].as_mv[0].as_mv = tmp_mv;
+ } else {
+ b_rate += cpi->inter_mode_cost[mbmi->mode_context[ref_frame]]
+ [INTER_OFFSET(this_mode)];
}
vp9_build_inter_predictor(pd->pre[0].buf, pd->pre[0].stride,
@@ -1236,7 +1238,6 @@
&var_y, &sse_y);
this_rdc.rate += b_rate;
- this_rdc.dist += b_dist;
this_rdc.rdcost = RDCOST(x->rdmult, x->rddiv,
this_rdc.rate, this_rdc.dist);
if (this_rdc.rdcost < b_best_rd) {
--
⑨