source: other-projects/trunk/7z-ant/src/SevenZip/Compression/RangeCoder/BitTreeDecoder.java@ 17387

Last change on this file since 17387 was 17387, checked in by oranfry, 16 years ago

Modified ant task which works with the updated 7zip API

File size: 1.2 KB
Line 
1package SevenZip.Compression.RangeCoder;
2
3public 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.IOException
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.IOException
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}
Note: See TracBrowser for help on using the repository browser.