public static uint ReverseDecode( LzmaRangeBitDecoder[] models, uint startIndex, LzmaRangeDecoder rangeDecoder, int numBitLevels) { uint num1 = 1; uint num2 = 0; if (rangeDecoder.CheckInputRequired(numBitLevels, false)) { for (int index = 0; index < numBitLevels; ++index) { uint num3 = models[(IntPtr)(startIndex + num1)].Decode(rangeDecoder); if (!rangeDecoder.InputRequired) { num1 = (num1 << 1) + num3; num2 |= num3 << index; } else { break; } } } return(num2); }
public byte DecodeWithMatchByte( LzmaRangeDecoder rangeDecoder, uint pos, byte previousByte, byte matchByte) { return(this.coders[(IntPtr)this.GetState(pos, previousByte)].DecodeWithMatchByte(rangeDecoder, matchByte)); }
public byte DecodeNormal(LzmaRangeDecoder rangeDecoder) { uint num = 1; do { num = num << 1 | this.decoders[(IntPtr)num].Decode(rangeDecoder); }while (num < 256U); return((byte)num); }
public uint Decode(LzmaRangeDecoder rangeDecoder) { uint num = 1; if (rangeDecoder.CheckInputRequired(this.bitLevels, false)) { for (int bitLevels = this.bitLevels; bitLevels > 0; --bitLevels) { num = (num << 1) + this.models[(IntPtr)num].Decode(rangeDecoder); } } return(num - (uint)(1 << this.bitLevels)); }
public uint Decode(LzmaRangeDecoder rangeDecoder, uint positionState) { rangeDecoder.SaveState(); uint num1 = this.choice.Decode(rangeDecoder); if (rangeDecoder.InputRequired) { return(0); } uint num2; if (num1 == 0U) { num2 = this.lowCoder[(IntPtr)positionState].Decode(rangeDecoder); } else { num2 = 8U; uint num3 = this.choice2.Decode(rangeDecoder); if (!rangeDecoder.InputRequired) { if (num3 == 0U) { num2 += this.middleCoder[(IntPtr)positionState].Decode(rangeDecoder); } else { num2 = num2 + 8U + this.highCoder.Decode(rangeDecoder); } } if (rangeDecoder.InputRequired) { this.choice2.RestoreState(); } } if (rangeDecoder.InputRequired) { this.choice.RestoreState(); rangeDecoder.RestoreState(); } return(num2); }
public byte DecodeWithMatchByte(LzmaRangeDecoder rangeDecoder, byte matchByte) { uint num1 = 1; do { uint num2 = (uint)((int)matchByte >> 7 & 1); matchByte <<= 1; uint num3 = this.decoders[(IntPtr)((uint)(1 + (int)num2 << 8) + num1)].Decode(rangeDecoder); num1 = num1 << 1 | num3; if ((int)num2 != (int)num3) { while (num1 < 256U) { num1 = num1 << 1 | this.decoders[(IntPtr)num1].Decode(rangeDecoder); } break; } }while (num1 < 256U); return((byte)num1); }
public uint ReverseDecode(LzmaRangeDecoder rangeDecoder) { return(LzmaBitTreeDecoder.ReverseDecode(this.models, 0U, rangeDecoder, this.bitLevels)); }
public byte DecodeNormal(LzmaRangeDecoder rangeDecoder, uint position, byte previousByte) { return(this.coders[(IntPtr)this.GetState(position, previousByte)].DecodeNormal(rangeDecoder)); }