1 #ifndef ENCODE_DF_H 2 #define ENCODE_DF_H 3 4 #include <stdint.h> 5 #include "igzip_lib.h" 6 #include "huff_codes.h" 7 8 /* Deflate Intermediate Compression Format */ 9 #define LIT_LEN_BIT_COUNT 10 10 #define LIT_LEN_MASK ((1 << LIT_LEN_BIT_COUNT) - 1) 11 #define DIST_LIT_BIT_COUNT 9 12 #define DIST_LIT_MASK ((1 << DIST_LIT_BIT_COUNT) - 1) 13 #define ICF_DIST_OFFSET LIT_LEN_BIT_COUNT 14 #define NULL_DIST_SYM 30 15 16 #define LEN_START ISAL_DEF_LIT_SYMBOLS 17 #define LEN_OFFSET (LEN_START - ISAL_DEF_MIN_MATCH) 18 #define LEN_MAX (LEN_OFFSET + ISAL_DEF_MAX_MATCH) 19 #define LIT_START (NULL_DIST_SYM + 1) 20 #define ICF_CODE_LEN 32 21 22 struct deflate_icf { 23 #if __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__ 24 uint32_t lit_len : LIT_LEN_BIT_COUNT; 25 uint32_t lit_dist : DIST_LIT_BIT_COUNT; 26 uint32_t dist_extra : ICF_CODE_LEN - DIST_LIT_BIT_COUNT - ICF_DIST_OFFSET; 27 #else 28 uint32_t dist_extra : ICF_CODE_LEN - DIST_LIT_BIT_COUNT - ICF_DIST_OFFSET; 29 uint32_t lit_dist : DIST_LIT_BIT_COUNT; 30 uint32_t lit_len : LIT_LEN_BIT_COUNT; 31 #endif 32 }; 33 34 struct deflate_icf * 35 encode_deflate_icf(struct deflate_icf *next_in, struct deflate_icf *end_in, struct BitBuf2 *bb, 36 struct hufftables_icf *hufftables); 37 #endif 38