Alan Kennedy [Thu, 24 Jun 2004 06:15:03 +0000 (06:15 +0000)]
Se quita el archivo temporal del jacu.c y se modifica para usar Huffman por Chunks. Se lo prueba con test_es respecto del compresor con archivo temporal con MD5SUM para comprobar que quedo andando bien. Las pruebas se realizaron con y sin zerogrouping
Alan Kennedy [Wed, 23 Jun 2004 22:24:07 +0000 (22:24 +0000)]
Listo Huffman Canonico, con dos nuevos parametros s y m se permite grabar una tabla luego de una compresion (-s = save) y tambien se permite cargar una tabla/modelo antes de encodear y utilizarla, salteando el scan por supuesto (-m modelfile = carga una tabla de freq de disco). Todo esto, tanto para huff por archivo o por chunk, same deal por lo que ya esta listo para usar en el TP
Alan Kennedy [Wed, 23 Jun 2004 08:55:15 +0000 (08:55 +0000)]
Modifico el main del Jacu para que compile con la nueva API de Huffman por lo que puedan hacer svn up tranquilos. No obstante, dado que estoy muy cansado, sigue usando el archivo temporal y a huffman por file, pero ya esta implementado huffman by chunks que en cuanto este un poco mas depurado jacu en si, lo metemos.
Alan Kennedy [Wed, 23 Jun 2004 08:28:26 +0000 (08:28 +0000)]
Listo en teoria Huffman Compresor/Descompresor ByFile y Bychunk. Maniana detallo un poco el API y si tengo pilas ahora lo acoplo en JACU, sino tomorrow porque no doy mas. Vamo que llegamos al viernes..
Agrego descompresor. No funciona porque me esta faltando el vector "pos" del MTF que no estoy
seguro de donde sacarlo, hay que ver donde lo guardamos en el archivo (delante de cada bloque ?)
Se implementa zerogrouping sin uso de buffer (caracter a caracter). Esto mejora
la eficacia porque si el buffer partía una serie de ceros, la serie ocupaba 4
bytes (2 en el primer buffer y 2 en el segundo) en vez de 2.
* Mejor guardo el k al principio y tambien guardo el tamaño del bloque (sera necesario hacer esto?)
porque hay veces que no tengo un bloque completo, y para recuperar me pa' que lo voy a necesitar.
Alan Kennedy [Sun, 20 Jun 2004 22:07:25 +0000 (22:07 +0000)]
Huffman ya comprime multivolumen, pero aun funciona descompresion de multivolumen o volumen unico. Pareceria que el problema esta en el vfwrite. Agrego el vfile.c desde el statichuffman.c pero a lo guapo, asi que quizas no compile el test del all in one, no soy bueno con los makefiles, alguien que lo vea
Agrando buffer para procesar archivos "chicos" completos y saco salida por salida estandar de forma binaria. De nuevo, espero que no moleste (parece que ya anda bien, no?)
Alan Kennedy [Sun, 20 Jun 2004 05:32:28 +0000 (05:32 +0000)]
Listo Huffman, Encoding y Decoding con Codigos de 32 bits maximo. Tambien arme el ejecutable para que tome los parametros como los pide el TP, no es que vaya a usarse mi ejecutable, pero para que lo puedan probar tranquilo. Aun NO SOPORTA multivolumen, ahora me pongo a ver los 40 mails sobre el VFILE que no logre ver en la semana para ver como acoplo lo que tengo. Ademas hay que ver como acopla el Huffman con la salida el MTF, porque por el momento lo arme para que reciba archivos, no chunks, o cosas por el estilo, lo charlamos luego, me parece mejor ver el tema VFILE first pero avisen
Reemplazo printf() por fprintf(stderr) para hacer pruebas.
Ahora el ejecutable de prueba toma los datos por la entrada estandar (solo los
primeros BUFSIZ caracteres) para poder hacer pruebas mas facil combinando los
distintos algoritmos a traves de pipes.
Para ejecutar el ejemplo original seria: echo RDARCAAAABB | ./mtf
(espero que no les moleste mucho, si no lo vuelvo para atras y hago un fork)
Alan Kennedy [Sat, 19 Jun 2004 23:07:16 +0000 (23:07 +0000)]
Reordeno un poco el codigo para hacerlo mas modular, igualmente en cuanto vea el tema de multivolumen y de como me van a enviar los datos desde el MTF, seguramente va a sufrir algunos cambios lindos
Alan Kennedy [Sat, 19 Jun 2004 05:33:28 +0000 (05:33 +0000)]
Encodeo, pero me falta guardar la de frecuencias, y ver como marco el fin de archivo, es decir como hago el output del ultimo buffer de 32 bits que es lo que utilizo para hacer output de bits (se va llenando y cuando se llena se emite. Al fin del archivo, se fuerza un flush de lo que haya dentro). Sidenote: Ahora los codigos son maximo 32 bits, con 16 bits andaba para atras, igualmente no se si esta encodeando joya, pero al menos comprime y no expande. Limo los detalles y me mando con el decompresor que es bastante zonzo asi encuentro la verdad Scully
Alan Kennedy [Fri, 18 Jun 2004 06:29:23 +0000 (06:29 +0000)]
Compresor Huffman, todo salvo el encodeado final, pero ya se obtiene la tabla de codigos prefijos, toy a un paso. Nevertheless, tengo que ver varias cositas como por ejemplo limitar los codigos a 32 bits max en vez de 16 como lo hize porque meparece que se pierden poder de compresion. Con texto pinta lindo, con un mp3, medio choto pero bueno after all un mp3 ya esta comprimido a su manera.
El codigo esta mas prolijo, nada nuevo, trate de optimizar las cosas basicas de manejo de memoria
pero todo parece andar peor :-) ... La verdad verdadera se vera cuando le meta
un heap sort para ordenar el vector :-)