diff options
author | Diegoisawesome <diego@domoreaweso.me> | 2019-09-04 13:18:49 -0700 |
---|---|---|
committer | Diegoisawesome <diego@domoreaweso.me> | 2019-09-04 13:18:49 -0700 |
commit | a7ef6c4cbf5ef481281917685a633ccd842335d5 (patch) | |
tree | 44674b0580f41426eb5112e31cdc0245237d1666 /tools/gbagfx/huff.h | |
parent | 1ec2c86089fd933a46ef405da63c131aee52d7e0 (diff) |
Diffstat (limited to 'tools/gbagfx/huff.h')
-rw-r--r-- | tools/gbagfx/huff.h | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/tools/gbagfx/huff.h b/tools/gbagfx/huff.h new file mode 100644 index 0000000..6002fe9 --- /dev/null +++ b/tools/gbagfx/huff.h @@ -0,0 +1,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 |