EC_ADAPT: faster CDF update. Also fix warning. Change-Id: Ia515360af9c3269901eb0d002d326b7af43a00e7
diff --git a/aom_dsp/prob.h b/aom_dsp/prob.h index 9384ffe..782e4b3 100644 --- a/aom_dsp/prob.h +++ b/aom_dsp/prob.h
@@ -138,9 +138,21 @@ #if CONFIG_EC_ADAPT static INLINE void update_cdf(aom_cdf_prob *cdf, int val, int nsymbs) { const int rate = 4 + get_msb(nsymbs); - int i, diff, tmp; + const int rate2 = 12 - rate; + int i, tmp; + int diff; +#if 1 + const int tmp0 = 1 << rate2; + tmp = tmp0; + diff = ((32768 - (nsymbs << rate2)) >> rate) << rate; + // Single loop (faster) + for (i = 0; i < nsymbs - 1; ++i, tmp += tmp0) { + tmp += (i == val ? diff : 0); + cdf[i] -= ((cdf[i] - tmp) >> rate); + } +#else for (i = 0; i < nsymbs; ++i) { - tmp = (i + 1) << (12 - rate); + tmp = (i + 1) << rate2; cdf[i] -= ((cdf[i] - tmp) >> rate); } diff = 32768 - cdf[nsymbs - 1]; @@ -148,6 +160,7 @@ for (i = val; i < nsymbs; ++i) { cdf[i] += diff; } +#endif } #endif
diff --git a/av1/decoder/detokenize.c b/av1/decoder/detokenize.c index 97a7b41..12bbacd 100644 --- a/av1/decoder/detokenize.c +++ b/av1/decoder/detokenize.c
@@ -85,7 +85,7 @@ fc->coef_cdfs[tx_size_ctx][type][ref]; aom_cdf_prob(*cdf)[ENTROPY_TOKENS]; #endif // CONFIG_EC_MULTISYMBOL - unsigned int(*coef_counts)[COEFF_CONTEXTS][UNCONSTRAINED_NODES + 1]; + unsigned int(*coef_counts)[COEFF_CONTEXTS][UNCONSTRAINED_NODES + 1] = NULL; unsigned int(*eob_branch_count)[COEFF_CONTEXTS]; uint8_t token_cache[MAX_TX_SQUARE]; const uint8_t *band_translate = get_band_translate(tx_size);