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; }
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; }