private void writeDirectValues() { // write the number of fixed bits required in next 5 bits int fixedBits = getClosestAlignedFixedBits(zzBits100p); final int encodeBitWidth = encodeBitWidth(fixedBits) << 1; // adjust variable run length variableRunLength -= 1; // extract the 9th bit of run length final int tailBits = (variableRunLength & 0x100) >>> 8; // create first byte of the header final int headerFirstByte = EncodingType.DIRECT.getOpCode() | encodeBitWidth | tailBits; // second byte of the header stores the remaining 8 bits of run length final int headerSecondByte = variableRunLength & 0xff; // write header buffer.write(headerFirstByte); buffer.write(headerSecondByte); // bit packing the zigzag encoded literals utils.writeInts(zigzagLiterals, 0, numLiterals, fixedBits, buffer); // reset run length variableRunLength = 0; }
private void writeDirectValues() { // write the number of fixed bits required in next 5 bits int fixedBits = getClosestAlignedFixedBits(zzBits100p); final int encodeBitWidth = encodeBitWidth(fixedBits) << 1; // adjust variable run length variableRunLength -= 1; // extract the 9th bit of run length final int tailBits = (variableRunLength & 0x100) >>> 8; // create first byte of the header final int headerFirstByte = EncodingType.DIRECT.getOpCode() | encodeBitWidth | tailBits; // second byte of the header stores the remaining 8 bits of run length final int headerSecondByte = variableRunLength & 0xff; // write header buffer.write(headerFirstByte); buffer.write(headerSecondByte); // bit packing the zigzag encoded literals utils.writeInts(zigzagLiterals, 0, numLiterals, fixedBits, buffer); // reset run length variableRunLength = 0; }