Merge pull request #910 from jdpurcell/pr-rangedecoderoptim
Optimize LZMA range decoder
This commit is contained in:
commit
35ac2b9d71
2 changed files with 4 additions and 13 deletions
|
|
@ -1,6 +1,7 @@
|
|||
#nullable disable
|
||||
|
||||
using System.IO;
|
||||
using System.Runtime.CompilerServices;
|
||||
|
||||
namespace SharpCompress.Compressors.LZMA.RangeCoder;
|
||||
|
||||
|
|
@ -152,6 +153,7 @@ internal class Decoder
|
|||
}
|
||||
}
|
||||
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void Normalize2()
|
||||
{
|
||||
if (_range < K_TOP_VALUE)
|
||||
|
|
|
|||
|
|
@ -107,24 +107,13 @@ internal struct BitDecoder
|
|||
{
|
||||
rangeDecoder._range = newBound;
|
||||
_prob += (K_BIT_MODEL_TOTAL - _prob) >> K_NUM_MOVE_BITS;
|
||||
if (rangeDecoder._range < Decoder.K_TOP_VALUE)
|
||||
{
|
||||
rangeDecoder._code =
|
||||
(rangeDecoder._code << 8) | (byte)rangeDecoder._stream.ReadByte();
|
||||
rangeDecoder._range <<= 8;
|
||||
rangeDecoder._total++;
|
||||
}
|
||||
rangeDecoder.Normalize2();
|
||||
return 0;
|
||||
}
|
||||
rangeDecoder._range -= newBound;
|
||||
rangeDecoder._code -= newBound;
|
||||
_prob -= (_prob) >> K_NUM_MOVE_BITS;
|
||||
if (rangeDecoder._range < Decoder.K_TOP_VALUE)
|
||||
{
|
||||
rangeDecoder._code = (rangeDecoder._code << 8) | (byte)rangeDecoder._stream.ReadByte();
|
||||
rangeDecoder._range <<= 8;
|
||||
rangeDecoder._total++;
|
||||
}
|
||||
rangeDecoder.Normalize2();
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue