diff -r 5f819b90d479 -r 99b265e0d1d0 misc/libphysfs/lzma/Java/SevenZip/Compression/RangeCoder/Encoder.java --- a/misc/libphysfs/lzma/Java/SevenZip/Compression/RangeCoder/Encoder.java Thu Oct 11 23:43:31 2018 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,151 +0,0 @@ -package SevenZip.Compression.RangeCoder; -import java.io.IOException; - -public class Encoder -{ - static final int kTopMask = ~((1 << 24) - 1); - - static final int kNumBitModelTotalBits = 11; - static final int kBitModelTotal = (1 << kNumBitModelTotalBits); - static final int kNumMoveBits = 5; - - java.io.OutputStream Stream; - - long Low; - int Range; - int _cacheSize; - int _cache; - - long _position; - - public void SetStream(java.io.OutputStream stream) - { - Stream = stream; - } - - public void ReleaseStream() - { - Stream = null; - } - - public void Init() - { - _position = 0; - Low = 0; - Range = -1; - _cacheSize = 1; - _cache = 0; - } - - public void FlushData() throws IOException - { - for (int i = 0; i < 5; i++) - ShiftLow(); - } - - public void FlushStream() throws IOException - { - Stream.flush(); - } - - public void ShiftLow() throws IOException - { - int LowHi = (int)(Low >>> 32); - if (LowHi != 0 || Low < 0xFF000000L) - { - _position += _cacheSize; - int temp = _cache; - do - { - Stream.write(temp + LowHi); - temp = 0xFF; - } - while(--_cacheSize != 0); - _cache = (((int)Low) >>> 24); - } - _cacheSize++; - Low = (Low & 0xFFFFFF) << 8; - } - - public void EncodeDirectBits(int v, int numTotalBits) throws IOException - { - for (int i = numTotalBits - 1; i >= 0; i--) - { - Range >>>= 1; - if (((v >>> i) & 1) == 1) - Low += Range; - if ((Range & Encoder.kTopMask) == 0) - { - Range <<= 8; - ShiftLow(); - } - } - } - - - public long GetProcessedSizeAdd() - { - return _cacheSize + _position + 4; - } - - - - static final int kNumMoveReducingBits = 2; - public static final int kNumBitPriceShiftBits = 6; - - public static void InitBitModels(short []probs) - { - for (int i = 0; i < probs.length; i++) - probs[i] = (kBitModelTotal >>> 1); - } - - public void Encode(short []probs, int index, int symbol) throws IOException - { - int prob = probs[index]; - int newBound = (Range >>> kNumBitModelTotalBits) * prob; - if (symbol == 0) - { - Range = newBound; - probs[index] = (short)(prob + ((kBitModelTotal - prob) >>> kNumMoveBits)); - } - else - { - Low += (newBound & 0xFFFFFFFFL); - Range -= newBound; - probs[index] = (short)(prob - ((prob) >>> kNumMoveBits)); - } - if ((Range & kTopMask) == 0) - { - Range <<= 8; - ShiftLow(); - } - } - - private static int[] ProbPrices = new int[kBitModelTotal >>> kNumMoveReducingBits]; - - static - { - int kNumBits = (kNumBitModelTotalBits - kNumMoveReducingBits); - for (int i = kNumBits - 1; i >= 0; i--) - { - int start = 1 << (kNumBits - i - 1); - int end = 1 << (kNumBits - i); - for (int j = start; j < end; j++) - ProbPrices[j] = (i << kNumBitPriceShiftBits) + - (((end - j) << kNumBitPriceShiftBits) >>> (kNumBits - i - 1)); - } - } - - static public int GetPrice(int Prob, int symbol) - { - return ProbPrices[(((Prob - symbol) ^ ((-symbol))) & (kBitModelTotal - 1)) >>> kNumMoveReducingBits]; - } - static public int GetPrice0(int Prob) - { - return ProbPrices[Prob >>> kNumMoveReducingBits]; - } - static public int GetPrice1(int Prob) - { - return ProbPrices[(kBitModelTotal - Prob) >>> kNumMoveReducingBits]; - } -}