From 34c3a1c1426e6443ba30b8e2852b73bf92757dff Mon Sep 17 00:00:00 2001 From: Magnus Auvinen Date: Sat, 5 Apr 2008 14:50:43 +0000 Subject: new network code. not perfect. connectionless packets is missing so no server discovery is possible. reduced network traffic by A LOT --- src/engine/e_huffman.h | 43 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 src/engine/e_huffman.h (limited to 'src/engine/e_huffman.h') diff --git a/src/engine/e_huffman.h b/src/engine/e_huffman.h new file mode 100644 index 00000000..84c71e60 --- /dev/null +++ b/src/engine/e_huffman.h @@ -0,0 +1,43 @@ + +enum +{ + MAX_SYMBOL_SIZE=8, + MAX_NODES=1024*8 +}; + +typedef struct +{ + int i; +} HUFFSYMBOL; + +typedef struct HUFFNODE_t +{ + int frequency; + + int symbol_size; + unsigned char symbol[MAX_SYMBOL_SIZE]; + + int num_bits; + unsigned bits; + + struct HUFFNODE_t *parent; + struct HUFFNODE_t *zero; + struct HUFFNODE_t *one; +} HUFFNODE; + +typedef struct +{ + HUFFNODE nodes[MAX_NODES]; + HUFFNODE *start_node; + int num_symbols; + int num_nodes; +} HUFFSTATE; + + +void huffman_add_symbol(HUFFSTATE *huff, int frequency, int size, unsigned char *symbol); +void huffman_init(HUFFSTATE *huff); +void huffman_construct_tree(HUFFSTATE *huff); +int huffman_compress(HUFFSTATE *huff, const void *input, int input_size, void *output, int output_size); +int huffman_decompress(HUFFSTATE *huff, const void *input, int input_size, void *output, int output_size); + +int huffman_test(); -- cgit 1.4.1