OLD | NEW |
| (Empty) |
1 package SevenZip.Compression.RangeCoder; | |
2 | |
3 public class BitTreeDecoder | |
4 { | |
5 short[] Models; | |
6 int NumBitLevels; | |
7 | |
8 public BitTreeDecoder(int numBitLevels) | |
9 { | |
10 NumBitLevels = numBitLevels; | |
11 Models = new short[1 << numBitLevels]; | |
12 } | |
13 | |
14 public void Init() | |
15 { | |
16 Decoder.InitBitModels(Models); | |
17 } | |
18 | |
19 public int Decode(Decoder rangeDecoder) throws java.io.IOException | |
20 { | |
21 int m = 1; | |
22 for (int bitIndex = NumBitLevels; bitIndex != 0; bitIndex--) | |
23 m = (m << 1) + rangeDecoder.DecodeBit(Models, m); | |
24 return m - (1 << NumBitLevels); | |
25 } | |
26 | |
27 public int ReverseDecode(Decoder rangeDecoder) throws java.io.IOExceptio
n | |
28 { | |
29 int m = 1; | |
30 int symbol = 0; | |
31 for (int bitIndex = 0; bitIndex < NumBitLevels; bitIndex++) | |
32 { | |
33 int bit = rangeDecoder.DecodeBit(Models, m); | |
34 m <<= 1; | |
35 m += bit; | |
36 symbol |= (bit << bitIndex); | |
37 } | |
38 return symbol; | |
39 } | |
40 | |
41 public static int ReverseDecode(short[] Models, int startIndex, | |
42 Decoder rangeDecoder, int NumBitLevels) throws java.io.I
OException | |
43 { | |
44 int m = 1; | |
45 int symbol = 0; | |
46 for (int bitIndex = 0; bitIndex < NumBitLevels; bitIndex++) | |
47 { | |
48 int bit = rangeDecoder.DecodeBit(Models, startIndex + m)
; | |
49 m <<= 1; | |
50 m += bit; | |
51 symbol |= (bit << bitIndex); | |
52 } | |
53 return symbol; | |
54 } | |
55 } | |
OLD | NEW |