Commit 2ec5ed25 authored by Jingning Han's avatar Jingning Han
Browse files

Refactor tokenization coding tree

Expand the tokenization tree writing to support per transform block
type coding in next CLs.

Change-Id: I3560e658f89cc500eb49603f95dd2b4e99045f5b
parent c1629ca5
......@@ -325,7 +325,6 @@ static void pack_mb_tokens(vpx_writer *w,
while (p < stop && p->token != EOSB_TOKEN) {
const int t = p->token;
const struct vp10_token *const a = &vp10_coef_encodings[t];
int i = 0;
int v = a->value;
int n = a->len;
#if CONFIG_VP9_HIGHBITDEPTH
......@@ -342,28 +341,24 @@ static void pack_mb_tokens(vpx_writer *w,
#endif // CONFIG_VP9_HIGHBITDEPTH
/* skip one or two nodes */
if (p->skip_eob_node) {
if (p->skip_eob_node)
n -= p->skip_eob_node;
i = 2 * p->skip_eob_node;
}
else
vpx_write(w, t != EOB_TOKEN, p->context_tree[0]);
// TODO(jbb): expanding this can lead to big gains. It allows
// much better branch prediction and would enable us to avoid numerous
// lookups and compares.
// If we have a token that's in the constrained set, the coefficient tree
// is split into two treed writes. The first treed write takes care of the
// unconstrained nodes. The second treed write takes care of the
// constrained nodes.
if (t >= TWO_TOKEN && t < EOB_TOKEN) {
int len = UNCONSTRAINED_NODES - p->skip_eob_node;
int bits = v >> (n - len);
vp10_write_tree(w, vp10_coef_tree, p->context_tree, bits, len, i);
vp10_write_tree(w, vp10_coef_con_tree,
vp10_pareto8_full[p->context_tree[PIVOT_NODE] - 1],
v, n - len, 0);
} else {
vp10_write_tree(w, vp10_coef_tree, p->context_tree, v, n, i);
if (t != EOB_TOKEN) {
vpx_write(w, t != ZERO_TOKEN, p->context_tree[1]);
if (t != ZERO_TOKEN) {
vpx_write(w, t != ONE_TOKEN, p->context_tree[2]);
if (t != ONE_TOKEN) {
int len = UNCONSTRAINED_NODES - p->skip_eob_node;
vp10_write_tree(w, vp10_coef_con_tree,
vp10_pareto8_full[p->context_tree[PIVOT_NODE] - 1],
v, n - len, 0);
}
}
}
if (b->base_val) {
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment