summaryrefslogtreecommitdiff
path: root/vp8/encoder
diff options
context:
space:
mode:
authorJim Bankoski <jimbankoski@google.com>2012-03-06 09:31:51 -0800
committerYaowu Xu <yaowu@google.com>2012-03-06 12:20:34 -0800
commit157f15e1d3f5343607e683844cfa57bee0dd8cce (patch)
tree7eb5d557aa0f02484fa8fdcd6fd08d11caa9523c /vp8/encoder
parent98bf413b4b4e26bec938ceedabdef2b7dab33ee8 (diff)
downloadlibvpx-157f15e1d3f5343607e683844cfa57bee0dd8cce.tar
libvpx-157f15e1d3f5343607e683844cfa57bee0dd8cce.tar.gz
libvpx-157f15e1d3f5343607e683844cfa57bee0dd8cce.tar.bz2
libvpx-157f15e1d3f5343607e683844cfa57bee0dd8cce.zip
Imported a change from stable branch
https://gerrit.chromium.org/gerrit/#change,17319 fixes cost estimating to take skip_eob into account. No quality difference seen on derf set tests, but about .4% gain on STD_HD set. Change-Id: Ic5fe6d35ee021e664a6fcd28037b8432a0e470ca
Diffstat (limited to 'vp8/encoder')
-rw-r--r--vp8/encoder/rdopt.c11
-rw-r--r--vp8/encoder/treewriter.c6
2 files changed, 15 insertions, 2 deletions
diff --git a/vp8/encoder/rdopt.c b/vp8/encoder/rdopt.c
index e239281ff..dc12b6198 100644
--- a/vp8/encoder/rdopt.c
+++ b/vp8/encoder/rdopt.c
@@ -214,7 +214,14 @@ static void fill_token_costs(
for (i = 0; i < BLOCK_TYPES; i++)
for (j = 0; j < COEF_BANDS; j++)
for (k = 0; k < PREV_COEF_CONTEXTS; k++)
- vp8_cost_tokens((int *)(c [i][j][k]), p [i][j][k], vp8_coef_tree);
+ {
+
+ if(k == 0 && ((j > 0 && i > 0) || (j > 1 && i == 0)))
+ vp8_cost_tokens_skip((int *)(c [i][j][k]), p [i][j][k], vp8_coef_tree);
+ else
+
+ vp8_cost_tokens((int *)(c [i][j][k]), p [i][j][k], vp8_coef_tree);
+ }
}
@@ -250,7 +257,7 @@ int compute_rd_mult( int qindex )
int q;
q = vp8_dc_quant(qindex,0);
- return (3 * q * q) >> 4;
+ return (11 * q * q) >> 6;
}
void vp8cx_initialize_me_consts(VP8_COMP *cpi, int QIndex)
diff --git a/vp8/encoder/treewriter.c b/vp8/encoder/treewriter.c
index 03967c835..3a777f222 100644
--- a/vp8/encoder/treewriter.c
+++ b/vp8/encoder/treewriter.c
@@ -37,3 +37,9 @@ void vp8_cost_tokens(int *c, const vp8_prob *p, vp8_tree t)
{
cost(c, t, p, 0, 0);
}
+
+void vp8_cost_tokens_skip(int *c, const vp8_prob *p, vp8_tree t)
+{
+ cost(c, t, p, 2, 0);
+}
+