code: private void readDeltaValues(int firstByte)
              throws IOException
      {
          // extract the number of fixed bits
          int fixedBits = (firstByte >>> 1) & 0x1f;
          if (fixedBits != 0) {
              fixedBits = LongDecode.decodeBitWidth(fixedBits);
          }
  
          // extract the blob run length
          int length = (firstByte & 0x01) << 8;
          length |= input.read();
  
          // read the first value stored as vint
          long firstVal = LongDecode.readVInt(signed, input);
  
          // store first value to result buffer
          literals[numLiterals++] = firstVal;
  
          // if fixed bits is 0 then all values have fixed delta
          long prevVal;
          if (fixedBits == 0) {
              // read the fixed delta value stored as vint (deltas can be negative even
              // if all number are positive)
              long fixedDelta = LongDecode.readSignedVInt(input);
  
              // add fixed deltas to adjacent values
              for (int i = 0; i < length; i++) {
                  literals[numLiterals++] = literals[numLiterals - 2] + fixedDelta;
              }
          }
          else {
              long deltaBase = LongDecode.readSignedVInt(input);
              // add delta base and first value
              literals[numLiterals++] = firstVal + deltaBase;
              prevVal = literals[numLiterals - 1];
              length -= 1;
  
              // write the unpacked values, add it to previous value and store final
              // value to result buffer. if the delta base value is negative then it
              // is a decreasing sequence else an increasing sequence
              packer.unpack(literals, numLiterals, length, fixedBits, input);
              while (length > 0) {
                  if (deltaBase < 0) {
                      literals[numLiterals] = prevVal - literals[numLiterals];
                  }
                  else {
                      literals[numLiterals] = prevVal + literals[numLiterals];
                  }
                  prevVal = literals[numLiterals];
                  length--;
                  numLiterals++;
              }
          }
      }
docs: This comes from the Apache Hive ORC code