/*
* model_1s.c * * Un modelo probabilístico de orden 1. * * Referencias: * * model_0.c * model_0s.c * Witten, Neal, and Cleary, Arithmetic Coding For Data Compression, * CACM, 1987. * M. Nelson and J.-L. Gailly, The Data Compression Book. 1995. */ #include <stdio.h> #include "vlc.h" #include "codec.h" /* Tamaño del alfabeto fuente. Los 256 caracteres posibles y el símbolo EOS (End Of Stream). */ #define ALPHA_SIZE 257 /* El código de model_1s.c es fundamentalmente el mismo que en model_0s.c, excepto que ahora se manejan ALPHA_SIZE-1 contextos (símbolos). */ #include "model_1s.h" #define _symbol_to_index _symbol_to_index[context] #define _index_to_symbol _index_to_symbol[context] #define prob prob[context] #define cum_prob cum_prob[context] #include "model_0s/find_symbols_and_indexes.h" void init_model() { /* Para cada posible contexto. */ for(context=0; context<ALPHA_SIZE-1; context++) { #include "model_0s/init_model.h" init_model(); } context = 0; } #include "model_0/scale_probs.h" #include "model_0s/find_new_position_for.h" #include "model_0/increment_prob_of_index.h" #include "model_0/test_if_scale.h" #include "model_0/finish_model.h" void update_model() { #include "model_0s/update_model.h" update_model(); context = symbol; } #include "model_0/encode_stream.h" #include "model_0/decode_stream.h" #undef _index_to_symbol #undef _symbol_to_index #undef cum_prob #undef prob |