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