summaryrefslogtreecommitdiff
path: root/tools/gbagfx/huff.h
diff options
context:
space:
mode:
authorPikalaxALT <pikalaxalt@gmail.com>2019-07-11 21:16:23 -0400
committerPikalaxALT <pikalaxalt@gmail.com>2019-07-11 21:16:23 -0400
commit250a331df9dbd312d572aaf0d629503417cfc9d4 (patch)
tree34f31dba3c816e5c308d1baf336fe4541a208d79 /tools/gbagfx/huff.h
parent97ab00ba2189c4d8b483ddcad3fc7cf97386122b (diff)
Track tools srcs
Diffstat (limited to 'tools/gbagfx/huff.h')
-rw-r--r--tools/gbagfx/huff.h38
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