/*TITLE translation table coding constants and variables */ /****keyword-flag*** "%v %f %n" */ /* "9 12-May-92,17:46:24 MODEL.H" */ #define NO_OF_CHARS 256 #define EOF_SYMBOL (NO_OF_CHARS+1) #define NO_OF_SYMBOLS (NO_OF_CHARS+1) #define MAX_FREQUENCY 16383 typedef struct { unsigned total_freq; unsigned char freq[(NO_OF_SYMBOLS+1+1)/2]; } FrequencyInfo; extern FrequencyInfo frequency_info_data[NO_OF_CHARS]; extern FrequencyInfo *frequency_info[NO_OF_CHARS]; extern unsigned translate[16]; extern unsigned both_weights[256]; extern unsigned symbol_translation[NO_OF_CHARS]; extern unsigned char_translation[NO_OF_CHARS]; #define HIGH_MASK 240 /* the high four bits */ #define LOW_MASK 15 /* the low four bits */ #define HIGH_INCREMENT 16 /* the difference between two high values */ #define LOW_INCREMENT 1 /* the difference between two low values */ #define HIGH_SHIFT 4 /* how much to shift a high nibble */ #define LOW_SHIFT 0 /* how much to shift a low nibble */ #define UPPER_INDEX 15 /* how high is the last table index */ #define TRANSLATE_SIZE 16 #define TRANSLATE_TABLE {1,16,22,30,42,58,79,109,150,\ 207,285,392,540,744,1024,16000} int start_inputing_bits(void); int start_model(void); int update_model(int symbol,unsigned char oldch); int start_decoding(void); unsigned decode_symbol(unsigned oldch); int input_bit(void); int output_0(void); int output_1(void); int done_outputing_bits(void); int start_outputing_bits(void); int done_encoding(void); int start_encoding(void); int encode_symbol(unsigned symbol, unsigned oldch);