Source code
Revision control
Copy as Markdown
Other Tools
package SevenZip.Compression.RangeCoder;↩
↩
public class BitTreeDecoder↩
{↩
short[] Models;↩
int NumBitLevels;↩
↩
public BitTreeDecoder(int numBitLevels)↩
{↩
NumBitLevels = numBitLevels;↩
Models = new short[1 << numBitLevels];↩
}↩
↩
public void Init()↩
{↩
Decoder.InitBitModels(Models);↩
}↩
↩
public int Decode(Decoder rangeDecoder) throws java.io.IOException↩
{↩
int m = 1;↩
for (int bitIndex = NumBitLevels; bitIndex != 0; bitIndex--)↩
m = (m << 1) + rangeDecoder.DecodeBit(Models, m);↩
return m - (1 << NumBitLevels);↩
}↩
↩
public int ReverseDecode(Decoder rangeDecoder) throws java.io.IOException↩
{↩
int m = 1;↩
int symbol = 0;↩
for (int bitIndex = 0; bitIndex < NumBitLevels; bitIndex++)↩
{↩
int bit = rangeDecoder.DecodeBit(Models, m);↩
m <<= 1;↩
m += bit;↩
symbol |= (bit << bitIndex);↩
}↩
return symbol;↩
}↩
↩
public static int ReverseDecode(short[] Models, int startIndex,↩
Decoder rangeDecoder, int NumBitLevels) throws java.io.IOException↩
{↩
int m = 1;↩
int symbol = 0;↩
for (int bitIndex = 0; bitIndex < NumBitLevels; bitIndex++)↩
{↩
int bit = rangeDecoder.DecodeBit(Models, startIndex + m);↩
m <<= 1;↩
m += bit;↩
symbol |= (bit << bitIndex);↩
}↩
return symbol;↩
}↩
}↩