diff --git a/vp9/decoder/vp9_decodframe.c b/vp9/decoder/vp9_decodframe.c index 43015b987b60a6fe3f462c6101cb00078c84eb07..fa1f8a46d73f001c5c45239e291938dd1ca4abc8 100644 --- a/vp9/decoder/vp9_decodframe.c +++ b/vp9/decoder/vp9_decodframe.c @@ -156,13 +156,14 @@ static int merge_index(int v, int n, int modulus) { } static int inv_remap_prob(int v, int m) { - const int n = 256; + const int n = 255; v = merge_index(v, n - 1, MODULUS_PARAM); + m--; if ((m << 1) <= n) { - return inv_recenter_nonneg(v + 1, m); + return 1 + inv_recenter_nonneg(v + 1, m); } else { - return n - 1 - inv_recenter_nonneg(v + 1, n - 1 - m); + return n - inv_recenter_nonneg(v + 1, n - 1 - m); } } diff --git a/vp9/encoder/vp9_bitstream.c b/vp9/encoder/vp9_bitstream.c index 2808571e8e931fb875396281cdc6c276099ac35e..86cd81031273d77b08dba4db1b03a275855365c8 100644 --- a/vp9/encoder/vp9_bitstream.c +++ b/vp9/encoder/vp9_bitstream.c @@ -265,7 +265,7 @@ int count_term_subexp(int word, int k, int num_syms) { static void compute_update_table() { int i; - for (i = 0; i < 255; i++) + for (i = 0; i < 254; i++) update_bits[i] = count_term_subexp(i, SUBEXP_PARAM, 255); } @@ -277,9 +277,11 @@ static int split_index(int i, int n, int modulus) { } static int remap_prob(int v, int m) { - const int n = 256; + const int n = 255; const int modulus = MODULUS_PARAM; int i; + v--; + m--; if ((m << 1) <= n) i = recenter_nonneg(v, m) - 1; else