Skip to content

Latest commit

 

History

History
65 lines (56 loc) · 1.81 KB

README_HEADER.rst

File metadata and controls

65 lines (56 loc) · 1.81 KB

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.