dictionaryRandomAccess.c
is LZ4 API example which implements dictionary compression and random access decompression.
Please note that the output file is not compatible with lz4frame and is platform dependent.
Reads the dictionary from a file, and uses it as the history for each block. This allows each block to be independent, but maintains compression ratio.
Dictionary + | v +---------+ | Block#1 | +----+----+ | v {Out#1} Dictionary + | v +---------+ | Block#2 | +----+----+ | v {Out#2}
After writing the magic bytes TEST
and then the compressed blocks, write out the jump table. The last 4 bytes is an integer containing the number of blocks in the stream. If there are N
blocks, then just before the last 4 bytes is N + 1
4 byte integers containing the offsets at the beginning and end of each block. Let Offset#K
be the total number of bytes written after writing out Block#K
including the magic bytes for simplicity.
+------+---------+ +---------+---+----------+ +----------+-----+ | TEST | Block#1 | ... | Block#N | 4 | Offset#1 | ... | Offset#N | N+1 | +------+---------+ +---------+---+----------+ +----------+-----+
Decompression will do reverse order.
Continue these procedure until all the required data has been read.