From 9eea9fa20637df99da6d7a70fb89a6dfb415c33d Mon Sep 17 00:00:00 2001 From: "Ronald S. Bultje" Date: Thu, 28 Mar 2013 09:24:29 -0700 Subject: [PATCH] Fix mix-up in pt token indexing. This fixes uninitialized reads in the trellis, and probably makes the trellis do something again. Change-Id: Ifac8dae9aa77574bde0954a71d4571c5c556df3c --- vp9/common/vp9_entropy.c | 3 +-- vp9/decoder/vp9_detokenize.c | 2 +- vp9/encoder/vp9_rdopt.c | 2 +- vp9/encoder/vp9_tokenize.c | 2 +- 4 files changed, 4 insertions(+), 5 deletions(-) diff --git a/vp9/common/vp9_entropy.c b/vp9/common/vp9_entropy.c index a1dbd3e..d05be99 100644 --- a/vp9/common/vp9_entropy.c +++ b/vp9/common/vp9_entropy.c @@ -2105,11 +2105,10 @@ int vp9_get_coef_context(const int *scan, const int *neighbors, int nb_pad, uint8_t *token_cache, int c, int l) { int eob = l; assert(nb_pad == MAX_NEIGHBORS); - if (c == eob - 1) { + if (c == eob) { return 0; } else { int ctx; - c++; assert(neighbors[MAX_NEIGHBORS * c + 0] >= 0); if (neighbors[MAX_NEIGHBORS * c + 1] >= 0) { ctx = (1 + token_cache[neighbors[MAX_NEIGHBORS * c + 0]] + diff --git a/vp9/decoder/vp9_detokenize.c b/vp9/decoder/vp9_detokenize.c index b6eec37..a744050 100644 --- a/vp9/decoder/vp9_detokenize.c +++ b/vp9/decoder/vp9_detokenize.c @@ -69,7 +69,7 @@ static int get_signed(BOOL_DECODER *br, int value_to_sign) { [pt][token]++; \ token_cache[c] = token; \ pt = vp9_get_coef_context(scan, nb, pad, token_cache, \ - c, default_eob); \ + c + 1, default_eob); \ } while (0) #if CONFIG_CODE_NONZEROCOUNT diff --git a/vp9/encoder/vp9_rdopt.c b/vp9/encoder/vp9_rdopt.c index ad9b960..0083e8a 100644 --- a/vp9/encoder/vp9_rdopt.c +++ b/vp9/encoder/vp9_rdopt.c @@ -595,7 +595,7 @@ static INLINE int cost_coeffs(VP9_COMMON *const cm, MACROBLOCK *mb, [get_coef_band(scan, tx_size, c)] [pt][0], 1); #endif - pt = vp9_get_coef_context(scan, nb, pad, token_cache, c, default_eob); + pt = vp9_get_coef_context(scan, nb, pad, token_cache, c + 1, default_eob); } #if CONFIG_CODE_NONZEROCOUNT cost += nzc_cost[nzc]; diff --git a/vp9/encoder/vp9_tokenize.c b/vp9/encoder/vp9_tokenize.c index 6e2b847..21401d1 100644 --- a/vp9/encoder/vp9_tokenize.c +++ b/vp9/encoder/vp9_tokenize.c @@ -291,7 +291,7 @@ static void tokenize_b(VP9_COMP *cpi, #endif token_cache[c] = token; - pt = vp9_get_coef_context(scan, nb, pad, token_cache, c, default_eob); + pt = vp9_get_coef_context(scan, nb, pad, token_cache, c + 1, default_eob); ++t; } while (c < eob && ++c < seg_eob); #if CONFIG_CODE_NONZEROCOUNT -- 2.7.4