File: encode_df.h

package info (click to toggle)
libisal 2.31.1-3
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 5,780 kB
  • sloc: asm: 44,577; ansic: 42,149; sh: 915; makefile: 619; pascal: 345
file content (37 lines) | stat: -rw-r--r-- 1,241 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
#ifndef ENCODE_DF_H
#define ENCODE_DF_H

#include <stdint.h>
#include "igzip_lib.h"
#include "huff_codes.h"

/* Deflate Intermediate Compression Format */
#define LIT_LEN_BIT_COUNT  10
#define LIT_LEN_MASK       ((1 << LIT_LEN_BIT_COUNT) - 1)
#define DIST_LIT_BIT_COUNT 9
#define DIST_LIT_MASK      ((1 << DIST_LIT_BIT_COUNT) - 1)
#define ICF_DIST_OFFSET    LIT_LEN_BIT_COUNT
#define NULL_DIST_SYM      30

#define LEN_START    ISAL_DEF_LIT_SYMBOLS
#define LEN_OFFSET   (LEN_START - ISAL_DEF_MIN_MATCH)
#define LEN_MAX      (LEN_OFFSET + ISAL_DEF_MAX_MATCH)
#define LIT_START    (NULL_DIST_SYM + 1)
#define ICF_CODE_LEN 32

struct deflate_icf {
#if __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__
        uint32_t lit_len : LIT_LEN_BIT_COUNT;
        uint32_t lit_dist : DIST_LIT_BIT_COUNT;
        uint32_t dist_extra : ICF_CODE_LEN - DIST_LIT_BIT_COUNT - ICF_DIST_OFFSET;
#else
        uint32_t dist_extra : ICF_CODE_LEN - DIST_LIT_BIT_COUNT - ICF_DIST_OFFSET;
        uint32_t lit_dist : DIST_LIT_BIT_COUNT;
        uint32_t lit_len : LIT_LEN_BIT_COUNT;
#endif
};

struct deflate_icf *
encode_deflate_icf(struct deflate_icf *next_in, struct deflate_icf *end_in, struct BitBuf2 *bb,
                   struct hufftables_icf *hufftables);
#endif