int getPosLenPrice(int pos, int len, int posState) { int price; int lenToPosState = Base.getLenToPosState(len); if (pos < Base.kNumFullDistances) { price = _distancesPrices[(lenToPosState * Base.kNumFullDistances) + pos]; } else { price = _posSlotPrices[(lenToPosState << Base.kNumPosSlotBits) + getPosSlot2(pos)] + _alignPrices[pos & Base.kAlignMask]; } return price + _lenEncoder.getPrice(len - Base.kMatchMinLen, posState); }
int getPosLenPrice(int pos, int len, int posState) { int price; int lenToPosState = Base.getLenToPosState(len); if (pos < Base.kNumFullDistances) { price = _distancesPrices[(lenToPosState * Base.kNumFullDistances) + pos]; } else { price = _posSlotPrices[(lenToPosState << Base.kNumPosSlotBits) + getPosSlot2(pos)] + _alignPrices[pos & Base.kAlignMask]; } return price + _lenEncoder.getPrice(len - Base.kMatchMinLen, posState); }
void writeEndMarker(int posState) throws IOException { if (!_writeEndMark) { return; } _rangeEncoder.encode(_isMatch, (_state << Base.kNumPosStatesBitsMax) + posState, 1); _rangeEncoder.encode(_isRep, _state, 0); _state = Base.stateUpdateMatch(_state); int len = Base.kMatchMinLen; _lenEncoder.encode(_rangeEncoder, len - Base.kMatchMinLen, posState); int posSlot = (1 << Base.kNumPosSlotBits) - 1; int lenToPosState = Base.getLenToPosState(len); _posSlotEncoder[lenToPosState].encode(_rangeEncoder, posSlot); int footerBits = 30; int posReduced = (1 << footerBits) - 1; _rangeEncoder.encodeDirectBits(posReduced >> Base.kNumAlignBits, footerBits - Base.kNumAlignBits); _posAlignEncoder.reverseEncode(_rangeEncoder, posReduced & Base.kAlignMask); }
void writeEndMarker(int posState) throws IOException { if (!_writeEndMark) { return; } _rangeEncoder.encode(_isMatch, (_state << Base.kNumPosStatesBitsMax) + posState, 1); _rangeEncoder.encode(_isRep, _state, 0); _state = Base.stateUpdateMatch(_state); int len = Base.kMatchMinLen; _lenEncoder.encode(_rangeEncoder, len - Base.kMatchMinLen, posState); int posSlot = (1 << Base.kNumPosSlotBits) - 1; int lenToPosState = Base.getLenToPosState(len); _posSlotEncoder[lenToPosState].encode(_rangeEncoder, posSlot); int footerBits = 30; int posReduced = (1 << footerBits) - 1; _rangeEncoder.encodeDirectBits(posReduced >> Base.kNumAlignBits, footerBits - Base.kNumAlignBits); _posAlignEncoder.reverseEncode(_rangeEncoder, posReduced & Base.kAlignMask); }
len = Base.kMatchMinLen + m_LenDecoder.decode(m_RangeDecoder, posState); state = Base.stateUpdateMatch(state); int posSlot = m_PosSlotDecoder[Base.getLenToPosState(len)].decode(m_RangeDecoder); if (posSlot >= Base.kStartPosModelIndex)
len = Base.kMatchMinLen + m_LenDecoder.decode(m_RangeDecoder, posState); state = Base.stateUpdateMatch(state); int posSlot = m_PosSlotDecoder[Base.getLenToPosState(len)].decode(m_RangeDecoder); if (posSlot >= Base.kStartPosModelIndex)
pos -= Base.kNumRepDistances; int posSlot = getPosSlot(pos); int lenToPosState = Base.getLenToPosState(len); _posSlotEncoder[lenToPosState].encode(_rangeEncoder, posSlot);
pos -= Base.kNumRepDistances; int posSlot = getPosSlot(pos); int lenToPosState = Base.getLenToPosState(len); _posSlotEncoder[lenToPosState].encode(_rangeEncoder, posSlot);