/* Código de compresión que indica el fin del stream de datos. Su
posición dentro del alfabeto fuente será siempre al final del mismo. */ #define EOS (ALPHA_SIZE-1) /* Máximo recuento acumulado permitido. Este valor afecta a la precisión del modelo probabilístico a la hora de calcular las probabilidades de los símbolos. */ #define MAX_CUM_COUNT 16383 /* Probabilidad (en forma de recuento) de los índices. Cada índice está asociado a un símbolo diferente, cumpliéndose que el índice 0 no se pude usar para ningún símbolo aunque debe estar definido cumpliéndose siempre que el recuento para el índice 0 debe ser siempre 0 (este es un requerimiento del codificador aritmético que estamos usando). Por tanto, si existen ALPHA_SIZE símbolos diferentes, existen ALPHA_SIZE+1 índices distintos. Nótese además que el tipo de dato asociado se escoge en relación con el valor MAX_CUM_COUNT. */ static unsigned short prob[ALPHA_SIZE+1]; /* Recuentos acumulados de los índices. El codificador aritmético necesita que la entrada cum_prob[0] almacene el recuento acumlado de todos los símbolos. Nótese además que el tipo de dato asociado se escoge en relación con el valor MAX_CUM_COUNT. */ static unsigned short cum_prob[ALPHA_SIZE+1]; /* Símbolo codificado. */ static int symbol; /* Indice del símbolo codificado. */ static int index; |