blob: 6002fe954aebc0c642434ae117d40a537972ebc6 (
plain)
| 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
38
 | #ifndef HUFF_H
#define HUFF_H
union HuffNode;
struct HuffData {
    unsigned value:31;
    unsigned isLeaf:1;
};
struct HuffLeaf {
    struct HuffData header;
    unsigned char key;
};
struct HuffBranch {
    struct HuffData header;
    union HuffNode * left;
    union HuffNode * right;
};
union HuffNode {
    struct HuffData header;
    struct HuffLeaf leaf;
    struct HuffBranch branch;
};
typedef union HuffNode HuffNode_t;
struct BitEncoding {
    unsigned long long nbits:6;
    unsigned long long bitstring:58;
};
unsigned char * HuffCompress(unsigned char * buffer, int srcSize, int * compressedSize_p, int bitDepth);
unsigned char * HuffDecompress(unsigned char * buffer, int srcSize, int * uncompressedSize_p);
#endif //HUFF_H
 |