=== Data Block (`DBLK`) A data block encapsulates media-derived content and is composed of a header followed by either compressed or uncompressed data. The contents of a data block may represent user data—such as media sectors—or auxiliary data elements, including media or sector-specific tags. When a data block includes multiple items (e.g., sectors or sector tags), the `sectorSize` field specifies the size, in bytes, of each individual item. Conversely, if the block contains a single item (e.g., media tags), `sectorSize` must be set to 0. ==== Structure Definition [source,c] #define DATABLOCK_MAGIC 0x4B4C4244 /**Block header, precedes block data */ typedef struct BlockHeader { uint32_t identifier; ///< Block identifier, must be BlockType::DataBlock. uint16_t type; ///< Logical data classification (value from \ref DataType). uint16_t compression; ///< Compression algorithm used (value from \ref CompressionType). uint32_t sectorSize; ///< Size in bytes of each logical sector represented in this block. uint32_t cmpLength; ///< Size in bytes of the compressed payload immediately following this header. uint32_t length; ///< Size in bytes of the uncompressed payload resulting after decompression. uint64_t cmpCrc64; ///< CRC64-ECMA of the compressed payload (cmpLength bytes). uint64_t crc64; ///< CRC64-ECMA of the uncompressed payload (length bytes). } BlockHeader; ==== Field Descriptions [cols="2,2,2,6",options="header"] |=== |Type |Size |Name |Description |uint32_t |4 bytes |identifier |The data block identifier, always `DBLK` |uint16_t |2 bytes |type |The data type contained in this block. See Annex B. |uint16_t |2 bytes |compression |The compression algorithm used in the data. See Annex C. |uint32_t |4 bytes |sectorSize |The size in bytes of the sectors contained in this data block if applicable. |uint32_t |4 bytes |cmpLength |The size in bytes of the compressed data that follows this header. |uint32_t |4 bytes |length |The size in bytes of the data block when decompressed. |uint64_t |8 bytes |cmpCrc64 |The CRC64-ECMA checksum of the compressed data that follows this header. |uint64_t |8 bytes |crc64 |The CRC64-ECMA checksum of the decompressed data. |===