xref: /isa-l/igzip/encode_df.h (revision 55fbfabfc60f1002bc8133b730a59f6abd22cfce)
101dfbcc4SRoy Oursler #ifndef ENCODE_DF_H
201dfbcc4SRoy Oursler #define ENCODE_DF_H
301dfbcc4SRoy Oursler 
401dfbcc4SRoy Oursler #include <stdint.h>
5ba1a0006SRoy Oursler #include "igzip_lib.h"
601dfbcc4SRoy Oursler #include "huff_codes.h"
701dfbcc4SRoy Oursler 
801dfbcc4SRoy Oursler /* Deflate Intermediate Compression Format */
947256268SRoy Oursler #define LIT_LEN_BIT_COUNT  10
104ae2d1beSRoy Oursler #define LIT_LEN_MASK       ((1 << LIT_LEN_BIT_COUNT) - 1)
1147256268SRoy Oursler #define DIST_LIT_BIT_COUNT 9
124ae2d1beSRoy Oursler #define DIST_LIT_MASK      ((1 << DIST_LIT_BIT_COUNT) - 1)
1347256268SRoy Oursler #define ICF_DIST_OFFSET    LIT_LEN_BIT_COUNT
1401dfbcc4SRoy Oursler #define NULL_DIST_SYM      30
1501dfbcc4SRoy Oursler 
16ba1a0006SRoy Oursler #define LEN_START    ISAL_DEF_LIT_SYMBOLS
17ba1a0006SRoy Oursler #define LEN_OFFSET   (LEN_START - ISAL_DEF_MIN_MATCH)
18ba1a0006SRoy Oursler #define LEN_MAX      (LEN_OFFSET + ISAL_DEF_MAX_MATCH)
194ae2d1beSRoy Oursler #define LIT_START    (NULL_DIST_SYM + 1)
204ae2d1beSRoy Oursler #define ICF_CODE_LEN 32
214ae2d1beSRoy Oursler 
2201dfbcc4SRoy Oursler struct deflate_icf {
23d3cfb2fbSIlya Leoshkevich #if __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__
2447256268SRoy Oursler         uint32_t lit_len : LIT_LEN_BIT_COUNT;
2547256268SRoy Oursler         uint32_t lit_dist : DIST_LIT_BIT_COUNT;
264ae2d1beSRoy Oursler         uint32_t dist_extra : ICF_CODE_LEN - DIST_LIT_BIT_COUNT - ICF_DIST_OFFSET;
27d3cfb2fbSIlya Leoshkevich #else
28d3cfb2fbSIlya Leoshkevich         uint32_t dist_extra : ICF_CODE_LEN - DIST_LIT_BIT_COUNT - ICF_DIST_OFFSET;
29d3cfb2fbSIlya Leoshkevich         uint32_t lit_dist : DIST_LIT_BIT_COUNT;
30d3cfb2fbSIlya Leoshkevich         uint32_t lit_len : LIT_LEN_BIT_COUNT;
31d3cfb2fbSIlya Leoshkevich #endif
3201dfbcc4SRoy Oursler };
3301dfbcc4SRoy Oursler 
34*55fbfabfSMarcel Cornu struct deflate_icf *
35*55fbfabfSMarcel Cornu encode_deflate_icf(struct deflate_icf *next_in, struct deflate_icf *end_in, struct BitBuf2 *bb,
36*55fbfabfSMarcel Cornu                    struct hufftables_icf *hufftables);
3701dfbcc4SRoy Oursler #endif
38