예제 #1
0
 public uint Decode(RangeDecoder rangeDecoder, uint posState)
 {
     if (m_Choice.Decode(rangeDecoder) == 0)
     {
         return(m_LowCoder[posState].Decode(rangeDecoder));
     }
     else
     {
         uint symbol = LzmaBase.kNumLowLenSymbols;
         if (m_Choice2.Decode(rangeDecoder) == 0)
         {
             symbol += m_MidCoder[posState].Decode(rangeDecoder);
         }
         else
         {
             symbol += LzmaBase.kNumMidLenSymbols;
             symbol += m_HighCoder.Decode(rangeDecoder);
         }
         return(symbol);
     }
 }
예제 #2
0
 internal uint Decode(RangeDecoder RangeDecoder, uint PositionState) => ChoiceA.Decode(RangeDecoder) == 0U ? LowDecoder[PositionState].Decode(RangeDecoder) : 8U + (ChoiceB.Decode(RangeDecoder) == 0U ? MidDecoder[PositionState].Decode(RangeDecoder) : (8U + HighDecoder.Decode(RangeDecoder)));