diff options
author | nullableVoidPtr <30564701+nullableVoidPtr@users.noreply.github.com> | 2019-08-04 10:18:13 +0000 |
---|---|---|
committer | nullableVoidPtr <30564701+nullableVoidPtr@users.noreply.github.com> | 2019-08-04 10:18:13 +0000 |
commit | ba6f243c728de5d5c024aeb177026bcc59909e2e (patch) | |
tree | af8fdeb1c6cdf9cd8584f0d693a4049bfc408b9d /tools/gbagfx/huff.h | |
parent | 6211b0c5ecbe4a43aa3f6e8fd96e99af29caa77a (diff) | |
parent | 250a331df9dbd312d572aaf0d629503417cfc9d4 (diff) |
Forgot upstream tools tracking
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 |