7 #include "../vfile/vfile.h"
9 typedef unsigned long int t_freq;
11 typedef struct t_freqnode {
12 unsigned short int symbol;
14 struct t_freqnode *lchild;
15 struct t_freqnode *rchild;
18 typedef struct t_code {
19 unsigned long int code;
20 unsigned char codelength;
23 typedef struct t_huff {
24 FILE *coderfp; /* filepointer usado en el coder de bychunk */
25 VFILE *decoderfp; /* filepointer usado en ambos decoders */
26 char *sourcefile; /* Nombre del archivo a comprimir */
27 char *targetfile; /* Nombre del archivo comprimido */
28 long volsize; /* Tamanio de volumen para multivol */
29 char preloadfreq; /* 1 Freqtable preloaded (bychunk | canonico) - 0 byfile */
30 t_freq *freqtable; /* Tabla de frecuencias */
31 t_freq sumfreq; /* Frecuencia total acumulada */
32 SHUFFNODE *codetree; /* Puntero al arbol de codigos prefijos */
33 unsigned long int bytesleft; /* Cuanto falta descomprimir en un bychunk */
34 unsigned long int codebuffer; /* Buffer de descompresion para bychunk */
35 int bitsleft; /* Posicion en el buffer de descompresion para bychunk */
39 HUFF_STATE *shuff_init_encoder_byfile(char *inputfile, char *outputfile, long volsize);
40 HUFF_STATE *shuff_init_encoder_bychunk(char *outputfile, long volsize);
41 HUFF_STATE *shuff_init_decoder(char *inputfile, char *outputfile);
42 void shuff_deinit_encoder(HUFF_STATE *shuff);
43 int shuff_encode_file(HUFF_STATE *shuff);
44 int shuff_decode_file(HUFF_STATE *shuff);
46 #endif /* _STATICHUFF_H_ */