Class LZ4
- java.lang.Object
-
- org.apache.lucene.codecs.compressing.LZ4
-
final class LZ4 extends java.lang.Object
LZ4 compression and decompression routines. http://code.google.com/p/lz4/ http://fastcompression.blogspot.fr/p/lz4.html
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description (package private) static class
LZ4.HashTable
(package private) static class
LZ4.HCHashTable
private static class
LZ4.Match
-
Field Summary
Fields Modifier and Type Field Description (package private) static int
HASH_LOG_HC
(package private) static int
HASH_TABLE_SIZE_HC
(package private) static int
LAST_LITERALS
(package private) static int
MAX_DISTANCE
(package private) static int
MEMORY_USAGE
(package private) static int
MIN_MATCH
(package private) static int
OPTIMAL_ML
-
Constructor Summary
Constructors Modifier Constructor Description private
LZ4()
-
Method Summary
All Methods Static Methods Concrete Methods Modifier and Type Method Description private static int
commonBytes(byte[] b, int o1, int o2, int limit)
private static int
commonBytesBackward(byte[] b, int o1, int o2, int l1, int l2)
static void
compress(byte[] bytes, int off, int len, DataOutput out, LZ4.HashTable ht)
Compressbytes[off:off+len]
intoout
using at most 16KB of memory.static void
compressHC(byte[] src, int srcOff, int srcLen, DataOutput out, LZ4.HCHashTable ht)
Compressbytes[off:off+len]
intoout
.private static void
copyTo(LZ4.Match m1, LZ4.Match m2)
static int
decompress(DataInput compressed, int decompressedLen, byte[] dest, int dOff)
Decompress at leastdecompressedLen
bytes intodest[dOff:]
.private static void
encodeLastLiterals(byte[] bytes, int anchor, int literalLen, DataOutput out)
private static void
encodeLen(int l, DataOutput out)
private static void
encodeLiterals(byte[] bytes, int token, int anchor, int literalLen, DataOutput out)
private static void
encodeSequence(byte[] bytes, int anchor, int matchRef, int matchOff, int matchLen, DataOutput out)
private static int
hash(int i, int hashBits)
private static int
hashHC(int i)
private static int
readInt(byte[] buf, int i)
private static boolean
readIntEquals(byte[] buf, int i, int j)
-
-
-
Field Detail
-
MEMORY_USAGE
static final int MEMORY_USAGE
- See Also:
- Constant Field Values
-
MIN_MATCH
static final int MIN_MATCH
- See Also:
- Constant Field Values
-
MAX_DISTANCE
static final int MAX_DISTANCE
- See Also:
- Constant Field Values
-
LAST_LITERALS
static final int LAST_LITERALS
- See Also:
- Constant Field Values
-
HASH_LOG_HC
static final int HASH_LOG_HC
- See Also:
- Constant Field Values
-
HASH_TABLE_SIZE_HC
static final int HASH_TABLE_SIZE_HC
- See Also:
- Constant Field Values
-
OPTIMAL_ML
static final int OPTIMAL_ML
- See Also:
- Constant Field Values
-
-
Method Detail
-
hash
private static int hash(int i, int hashBits)
-
hashHC
private static int hashHC(int i)
-
readInt
private static int readInt(byte[] buf, int i)
-
readIntEquals
private static boolean readIntEquals(byte[] buf, int i, int j)
-
commonBytes
private static int commonBytes(byte[] b, int o1, int o2, int limit)
-
commonBytesBackward
private static int commonBytesBackward(byte[] b, int o1, int o2, int l1, int l2)
-
decompress
public static int decompress(DataInput compressed, int decompressedLen, byte[] dest, int dOff) throws java.io.IOException
Decompress at leastdecompressedLen
bytes intodest[dOff:]
. Please note thatdest
must be large enough to be able to hold all decompressed data (meaning that you need to know the total decompressed length).- Throws:
java.io.IOException
-
encodeLen
private static void encodeLen(int l, DataOutput out) throws java.io.IOException
- Throws:
java.io.IOException
-
encodeLiterals
private static void encodeLiterals(byte[] bytes, int token, int anchor, int literalLen, DataOutput out) throws java.io.IOException
- Throws:
java.io.IOException
-
encodeLastLiterals
private static void encodeLastLiterals(byte[] bytes, int anchor, int literalLen, DataOutput out) throws java.io.IOException
- Throws:
java.io.IOException
-
encodeSequence
private static void encodeSequence(byte[] bytes, int anchor, int matchRef, int matchOff, int matchLen, DataOutput out) throws java.io.IOException
- Throws:
java.io.IOException
-
compress
public static void compress(byte[] bytes, int off, int len, DataOutput out, LZ4.HashTable ht) throws java.io.IOException
Compressbytes[off:off+len]
intoout
using at most 16KB of memory.ht
shouldn't be shared across threads but can safely be reused.- Throws:
java.io.IOException
-
compressHC
public static void compressHC(byte[] src, int srcOff, int srcLen, DataOutput out, LZ4.HCHashTable ht) throws java.io.IOException
Compressbytes[off:off+len]
intoout
. Compared tocompress(byte[], int, int, DataOutput, HashTable)
, this method is slower and uses more memory (~ 256KB per thread) but should provide better compression ratios (especially on large inputs) because it chooses the best match among up to 256 candidates and then performs trade-offs to fix overlapping matches.ht
shouldn't be shared across threads but can safely be reused.- Throws:
java.io.IOException
-
-