X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=src%2Fthird_party%2Flibvpx%2Fsource%2Flibvpx%2Fvp9%2Fdecoder%2Fvp9_dsubexp.c;h=e67b372407f8be153e53907a6ee8c8d68d0207f2;hb=ff3e2503a20db9193d323c1d19c38c68004dec4a;hp=fcca01729a482564d971b44ae55951b99c0078b1;hpb=7338fba38ba696536d1cc9d389afd716a6ab2fe6;p=platform%2Fframework%2Fweb%2Fcrosswalk.git diff --git a/src/third_party/libvpx/source/libvpx/vp9/decoder/vp9_dsubexp.c b/src/third_party/libvpx/source/libvpx/vp9/decoder/vp9_dsubexp.c index fcca017..e67b372 100644 --- a/src/third_party/libvpx/source/libvpx/vp9/decoder/vp9_dsubexp.c +++ b/src/third_party/libvpx/source/libvpx/vp9/decoder/vp9_dsubexp.c @@ -19,14 +19,10 @@ static int inv_recenter_nonneg(int v, int m) { return v % 2 ? m - (v + 1) / 2 : m + v / 2; } -static int decode_uniform(vp9_reader *r, int n) { - int v; - const int l = get_unsigned_bits(n); - const int m = (1 << l) - n; - if (!l) - return 0; - - v = vp9_read_literal(r, l - 1); +static int decode_uniform(vp9_reader *r) { + const int l = 8; + const int m = (1 << l) - 191; + const int v = vp9_read_literal(r, l - 1); return v < m ? v : (v << 1) - m + vp9_read_bit(r); } @@ -78,30 +74,19 @@ static int inv_remap_prob(int v, int m) { } } -static int decode_term_subexp(vp9_reader *r, int k, int num_syms) { - int i = 0, mk = 0, word; - while (1) { - const int b = i ? k + i - 1 : k; - const int a = 1 << b; - if (num_syms <= mk + 3 * a) { - word = decode_uniform(r, num_syms - mk) + mk; - break; - } else { - if (vp9_read_bit(r)) { - i++; - mk += a; - } else { - word = vp9_read_literal(r, b) + mk; - break; - } - } - } - return word; +static int decode_term_subexp(vp9_reader *r) { + if (!vp9_read_bit(r)) + return vp9_read_literal(r, 4); + if (!vp9_read_bit(r)) + return vp9_read_literal(r, 4) + 16; + if (!vp9_read_bit(r)) + return vp9_read_literal(r, 5) + 32; + return decode_uniform(r) + 64; } void vp9_diff_update_prob(vp9_reader *r, vp9_prob* p) { if (vp9_read(r, DIFF_UPDATE_PROB)) { - const int delp = decode_term_subexp(r, SUBEXP_PARAM, 255); + const int delp = decode_term_subexp(r); *p = (vp9_prob)inv_remap_prob(delp, *p); } }