Viewing file: jbig_ar.h (2.21 KB) -rw-r--r-- Select action/file-type: (+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
/* * Header file for the arithmetic encoder and decoder of * the portable JBIG compression library * * Markus Kuhn -- http://www.cl.cam.ac.uk/~mgk25/jbigkit/ */
#ifndef JBG_AR_H #define JBG_AR_H
/* * Status of arithmetic encoder */
struct jbg_arenc_state { unsigned char st[4096]; /* probability status for contexts, MSB = MPS */ unsigned long c; /* register C: base of coding intervall, * * layout as in Table 23 */ unsigned long a; /* register A: normalized size of coding interval */ long sc; /* number of buffered 0xff values that might still overflow */ int ct; /* bit shift counter, determines when next byte will be written */ int buffer; /* buffer for most recent output byte != 0xff */ void (*byte_out)(int, void *); /* function that receives all PSCD bytes */ void *file; /* parameter passed to byte_out */ };
/* * Status of arithmetic decoder */
struct jbg_ardec_state { unsigned char st[4096]; /* probability status for contexts, MSB = MPS */ unsigned long c; /* register C: base of coding intervall, * * layout as in Table 25 */ unsigned long a; /* register A: normalized size of coding interval */ unsigned char *pscd_ptr; /* pointer to next PSCD data byte */ unsigned char *pscd_end; /* pointer to byte after PSCD */ int ct; /* bit-shift counter, determines when next byte will be read; * special value -1 signals that zero-padding has started */ int startup; /* boolean flag that controls initial fill of s->c */ int nopadding; /* boolean flag that triggers return -2 between * reaching PSCD end and decoding the first symbol * that might never have been encoded in the first * place */ };
void arith_encode_init(struct jbg_arenc_state *s, int reuse_st); void arith_encode_flush(struct jbg_arenc_state *s); void arith_encode(struct jbg_arenc_state *s, int cx, int pix); void arith_decode_init(struct jbg_ardec_state *s, int reuse_st); int arith_decode(struct jbg_ardec_state *s, int cx);
#endif /* JBG_AR_H */
|