コード例 #1
0
ファイル: vp9_dsubexp.c プロジェクト: Acidburn0zzz/libvpx
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;
}
コード例 #2
0
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;
}