new_tokenset: Optimize decode_coeffs - Simplify arithmetic - Combine branches - When nesting branches do more predictable branches first About 2.6% faster decodes at very high token rates. Change-Id: I2802fd47a78c144e4d89c59288590fc4b095a504
diff --git a/av1/decoder/detokenize.c b/av1/decoder/detokenize.c index aedc8e5..ee75e5a 100644 --- a/av1/decoder/detokenize.c +++ b/av1/decoder/detokenize.c
@@ -149,26 +149,25 @@ if (comb_token == 0) return 0; } token = comb_token >> 1; - more_data = !token || ((comb_token & 1) == 1); + more_data = comb_token & 1; + if (counts && !last_pos) { +#if !CONFIG_EC_ADAPT + ++coef_counts[band][ctx][token]; +#endif + if (token) { + ++eob_branch_count[band][ctx]; + if (!more_data) ++coef_counts[band][ctx][EOB_MODEL_TOKEN]; + } + } if (token > ONE_TOKEN) token += aom_read_symbol(r, *cdf_tail, TAIL_TOKENS, ACCT_STR); -#if !CONFIG_EC_ADAPT - if (!last_pos) - INCREMENT_COUNT(ZERO_TOKEN + (token > ZERO_TOKEN) + (token > ONE_TOKEN)); -#endif #if CONFIG_NEW_QUANT dqv_val = &dq_val[band][0]; #endif // CONFIG_NEW_QUANT *max_scan_line = AOMMAX(*max_scan_line, scan[c]); - if (token && !last_pos) { - if (counts) ++eob_branch_count[band][ctx]; - if (!more_data) { - if (counts) ++coef_counts[band][ctx][EOB_MODEL_TOKEN]; - } - } token_cache[scan[c]] = av1_pt_energy_class[token]; switch (token) {