Blosc Header Format
Blosc (as of Version 1.0.0) has the following 16 byte header that stores
information about the compressed buffer:
|-0-|-1-|-2-|-3-|-4-|-5-|-6-|-7-|-8-|-9-|-A-|-B-|-C-|-D-|-E-|-F-|
^ ^ ^ ^ | nbytes | blocksize | ctbytes |
| | | |
| | | +--typesize
| | +------flags
| +----------versionlz
+--------------version
Datatypes of the Header Entries
All entries are little endian.
version: | (uint8 ) Blosc format version.
|
versionlz: | (uint8 ) Version of the internal compressor used.
|
flags and compressor enumeration: | (bitfield ) The flags of the buffer
bit 0 (0x01 ): | Whether the byte-shuffle filter has been applied or not. |
bit 1 (0x02 ): | Whether the internal buffer is a pure memcpy or not. |
bit 2 (0x04 ): | Whether the bit-shuffle filter has been applied or not. |
bit 3 (0x08 ): | Reserved, must be zero. |
bit 4 (0x10 ): | If set, the blocks will not be split in sub-blocks during compression. |
bit 5 (0x20 ): | Part of the enumeration for compressors. |
bit 6 (0x40 ): | Part of the enumeration for compressors. |
bit 7 (0x80 ): | Part of the enumeration for compressors. |
The last three bits form an enumeration that allows to use alternative
compressors.
0 : | blosclz |
1 : | lz4 or lz4hc |
2 : | snappy |
3 : | zlib |
4 : | zstd |
|
typesize: | (uint8 ) Number of bytes for the atomic type.
|
nbytes: | (uint32 ) Uncompressed size of the buffer.
|
blocksize: | (uint32 ) Size of internal blocks.
|
ctbytes: | (uint32 ) Compressed size of the buffer.
|