summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJingning Han <jingning@google.com>2015-04-07 12:51:27 -0700
committerGerrit Code Review <gerrit@gerrit.golo.chromium.org>2015-04-07 12:51:27 -0700
commit927693a991e59e1fe1135a7585722c8af2626d6e (patch)
tree05bae284275f7c7b669417b214eeb6c472428064
parent6de407b63897d950d43681ba8e633fcd3e8dc8c2 (diff)
parent9922e4344a40a147abab06f16c7a9d9403d1a33b (diff)
downloadlibvpx-927693a991e59e1fe1135a7585722c8af2626d6e.tar
libvpx-927693a991e59e1fe1135a7585722c8af2626d6e.tar.gz
libvpx-927693a991e59e1fe1135a7585722c8af2626d6e.tar.bz2
libvpx-927693a991e59e1fe1135a7585722c8af2626d6e.zip
Merge "Enable Hadamard transform based cost estimate for all block sizes"
-rw-r--r--vp9/encoder/vp9_pickmode.c27
1 files changed, 11 insertions, 16 deletions
diff --git a/vp9/encoder/vp9_pickmode.c b/vp9/encoder/vp9_pickmode.c
index 19824628a..94ea4cd2d 100644
--- a/vp9/encoder/vp9_pickmode.c
+++ b/vp9/encoder/vp9_pickmode.c
@@ -678,8 +678,10 @@ static void block_yrd(VP9_COMP *cpi, MACROBLOCK *x, int *rate, int64_t *dist,
}
}
- *rate <<= 10;
- *rate += (eob_cost << 8);
+ if (*skippable == 0) {
+ *rate <<= 10;
+ *rate += (eob_cost << 8);
+ }
}
#endif
@@ -908,18 +910,10 @@ static void estimate_block_intra(int plane, int block, BLOCK_SIZE plane_bsize,
i, j, 0);
// TODO(jingning): This needs further refactoring.
- if (plane_bsize <= BLOCK_32X32) {
- block_yrd(cpi, x, &rate, &dist, &is_skippable, &this_sse, 0,
- bsize_tx, MIN(tx_size, TX_16X16));
- x->skip_txfm[0] = is_skippable;
- if (is_skippable)
- rate = vp9_cost_bit(vp9_get_skip_prob(&cpi->common, xd), 1);
- else
- rate += vp9_cost_bit(vp9_get_skip_prob(&cpi->common, xd), 0);
- } else {
- unsigned int var_y, sse_y;
- model_rd_for_sb_y(cpi, bsize_tx, x, xd, &rate, &dist, &var_y, &sse_y);
- }
+ block_yrd(cpi, x, &rate, &dist, &is_skippable, &this_sse, 0,
+ bsize_tx, MIN(tx_size, TX_16X16));
+ x->skip_txfm[0] = is_skippable;
+ rate += vp9_cost_bit(vp9_get_skip_prob(&cpi->common, xd), is_skippable);
p->src.buf = src_buf_base;
pd->dst.buf = dst_buf_base;
@@ -1345,13 +1339,12 @@ void vp9_pick_inter_mode(VP9_COMP *cpi, MACROBLOCK *x,
model_rd_for_sb_y(cpi, bsize, x, xd, &this_rdc.rate, &this_rdc.dist,
&var_y, &sse_y);
}
-
this_rdc.rate +=
cm->interp_filter == SWITCHABLE ?
vp9_get_switchable_rate(cpi, xd) : 0;
}
- if (bsize <= BLOCK_32X32) {
+ if (!this_early_term) {
this_sse = (int64_t)sse_y;
block_yrd(cpi, x, &this_rdc.rate, &this_rdc.dist, &is_skippable,
&this_sse, 0, bsize, MIN(mbmi->tx_size, TX_16X16));
@@ -1373,6 +1366,8 @@ void vp9_pick_inter_mode(VP9_COMP *cpi, MACROBLOCK *x,
if ((mbmi->mv[0].as_mv.row | mbmi->mv[0].as_mv.col) & 0x07)
this_rdc.rate += vp9_get_switchable_rate(cpi, xd);
}
+ } else {
+ this_rdc.rate += vp9_cost_bit(vp9_get_skip_prob(cm, xd), 1);
}
if (x->color_sensitivity[0] || x->color_sensitivity[1]) {