in src/main/java/com/hadoop/compression/lzo/LzopOutputStream.java [44:82]
protected static void writeLzopHeader(OutputStream out,
LzoCompressor.CompressionStrategy strategy,
int compressionLevel) throws IOException {
DataOutputBuffer dob = new DataOutputBuffer();
try {
dob.writeShort(LzopCodec.LZOP_VERSION);
dob.writeShort(LzoCompressor.LZO_LIBRARY_VERSION);
dob.writeShort(LzopCodec.LZOP_COMPAT_VERSION);
switch (strategy) {
case LZO1X_1:
dob.writeByte(1);
dob.writeByte(5);
break;
case LZO1X_15:
dob.writeByte(2);
dob.writeByte(1);
break;
case LZO1X_999:
dob.writeByte(3);
dob.writeByte((byte) compressionLevel);
break;
default:
throw new IOException("Incompatible lzop strategy: " + strategy);
}
dob.writeInt(0); // all flags 0
dob.writeInt(0x81A4); // mode
dob.writeInt((int)(System.currentTimeMillis() / 1000)); // mtime
dob.writeInt(0); // gmtdiff ignored
dob.writeByte(0); // no filename
Adler32 headerChecksum = new Adler32();
headerChecksum.update(dob.getData(), 0, dob.getLength());
int hc = (int)headerChecksum.getValue();
dob.writeInt(hc);
out.write(LzopCodec.LZO_MAGIC);
out.write(dob.getData(), 0, dob.getLength());
} finally {
dob.close();
}
}