ref: 70ffd5d0558d69f89d92168fcab337ed252df028
parent: b38e42fe9d1bbdb1fe4497a9d2c1191e820831ff
author: Jim Bankoski <jimbankoski@google.com>
date: Thu Nov 21 11:55:22 EST 2013
detokenization speedups removed unnecessary ifs and branches .. Change-Id: Id1698a35292659388f48926791024d1400f2cea9
--- a/vp9/decoder/vp9_detokenize.c
+++ b/vp9/decoder/vp9_detokenize.c
@@ -81,6 +81,7 @@
INCREMENT_COUNT(token); \
token_cache[scan[c]] = vp9_pt_energy_class[token]; \
++c; \
+ pt = get_coef_context(nb, token_cache, c); \
dqv = dq[1]; \
continue; \
}
@@ -118,8 +119,6 @@
while (c < seg_eob) {
int val;
- if (c)
- pt = get_coef_context(nb, token_cache, c);
band = *band_translate++;
prob = coef_probs[band][pt];
if (!cm->frame_parallel_decoding_mode)
@@ -126,22 +125,18 @@
++eob_branch_count[band][pt];
if (!vp9_read(r, prob[EOB_CONTEXT_NODE]))
break;
- goto DECODE_ZERO;
- SKIP_START:
- if (c >= seg_eob)
- break;
- if (c)
- pt = get_coef_context(nb, token_cache, c);
- band = *band_translate++;
- prob = coef_probs[band][pt];
-
DECODE_ZERO:
if (!vp9_read(r, prob[ZERO_CONTEXT_NODE])) {
INCREMENT_COUNT(ZERO_TOKEN);
dqv = dq[1];
++c;
- goto SKIP_START;
+ if (c >= seg_eob)
+ break;
+ pt = get_coef_context(nb, token_cache, c);
+ band = *band_translate++;
+ prob = coef_probs[band][pt];
+ goto DECODE_ZERO;
}
// ONE_CONTEXT_NODE_0_
--
⑨