Index: libvpx/source/libvpx/vp8/decoder/treereader.h |
diff --git a/libvpx/source/libvpx/vp8/decoder/treereader.h b/libvpx/source/libvpx/vp8/decoder/treereader.h |
index 238ff853612ed588ba9bb19800ced203bef567f1..b50a4d2ff39f5af53290862e7f95ae40cd8022af 100644 |
--- a/libvpx/source/libvpx/vp8/decoder/treereader.h |
+++ b/libvpx/source/libvpx/vp8/decoder/treereader.h |
@@ -38,4 +38,27 @@ static int vp8_treed_read( |
return -i; |
} |
+ |
+/* Variant reads a binary number given distributions on each bit. |
+ Note that tree is arbitrary; probability of decoding a zero |
+ may or may not depend on previously decoded bits. */ |
+ |
+static int vp8_treed_read_num( |
+ vp8_reader *const r, /* !!! must return a 0 or 1 !!! */ |
+ vp8_tree t, |
+ const vp8_prob *const p |
+) |
+{ |
+ vp8_tree_index i = 0; |
+ int v = 0, b; |
+ |
+ do |
+ { |
+ b = vp8_read(r, p[i>>1]); |
+ v = (v << 1) + b; |
+ } |
+ while ((i = t[i+b]) > 0); |
+ |
+ return v; |
+} |
#endif /* tree_reader_h */ |