allow coexistance of N build and AC build.
[tomato.git] / release / src-rt-6.x / linux / linux-2.6 / scripts / squashfs / lzma / Java / SevenZip / Compression / RangeCoder / BitTreeDecoder.java
blob6864c69cefcd4e9003b34d5de51d362861d08b52
1 package SevenZip.Compression.RangeCoder;
3 public class BitTreeDecoder
5 short[] Models;
6 int NumBitLevels;
8 public BitTreeDecoder(int numBitLevels)
10 NumBitLevels = numBitLevels;
11 Models = new short[1 << numBitLevels];
14 public void Init()
16 Decoder.InitBitModels(Models);
19 public int Decode(Decoder rangeDecoder) throws java.io.IOException
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);
27 public int ReverseDecode(Decoder rangeDecoder) throws java.io.IOException
29 int m = 1;
30 int symbol = 0;
31 for (int bitIndex = 0; bitIndex < NumBitLevels; bitIndex++)
33 int bit = rangeDecoder.DecodeBit(Models, m);
34 m <<= 1;
35 m += bit;
36 symbol |= (bit << bitIndex);
38 return symbol;
41 public static int ReverseDecode(short[] Models, int startIndex,
42 Decoder rangeDecoder, int NumBitLevels) throws java.io.IOException
44 int m = 1;
45 int symbol = 0;
46 for (int bitIndex = 0; bitIndex < NumBitLevels; bitIndex++)
48 int bit = rangeDecoder.DecodeBit(Models, startIndex + m);
49 m <<= 1;
50 m += bit;
51 symbol |= (bit << bitIndex);
53 return symbol;