1 /* Rubin encoder/decoder header */ 2 /* work started at : aug 3, 1994 */ 3 /* last modification : aug 15, 1994 */ 4 /* $Id: compr_rubin.h,v 1.5 2001/02/26 13:50:01 dwmw2 Exp $ */ 5 6 #include "pushpull.h" 7 8 #define RUBIN_REG_SIZE 16 9 #define UPPER_BIT_RUBIN (((long) 1)<<(RUBIN_REG_SIZE-1)) 10 #define LOWER_BITS_RUBIN ((((long) 1)<<(RUBIN_REG_SIZE-1))-1) 11 12 13 struct rubin_state { 14 unsigned long p; 15 unsigned long q; 16 unsigned long rec_q; 17 long bit_number; 18 struct pushpull pp; 19 int bit_divider; 20 int bits[8]; 21 }; 22 23 24 void init_rubin (struct rubin_state *rs, int div, int *bits); 25 int encode (struct rubin_state *, long, long, int); 26 void end_rubin (struct rubin_state *); 27 void init_decode (struct rubin_state *, int div, int *bits); 28 int decode (struct rubin_state *, long, long); 29