27 lines
555 B
C
27 lines
555 B
C
typedef struct RangeCoder
|
|
{
|
|
unsigned char one_state[256];
|
|
} RangeCoder;
|
|
static inline void put_rac(RangeCoder *c, unsigned char* const state)
|
|
{
|
|
*state= c->one_state[*state];
|
|
}
|
|
typedef struct PlaneContext{
|
|
unsigned (*state)[32];
|
|
} PlaneContext;
|
|
static inline void put_symbol(RangeCoder *c, unsigned char *state)
|
|
{
|
|
int i;
|
|
const int e;
|
|
put_rac(c, state);
|
|
for(i=e-1; i>=0; i--)
|
|
put_rac(c, state+22+i);
|
|
}
|
|
int encode_line(void)
|
|
{
|
|
PlaneContext * const p;
|
|
RangeCoder * const c;
|
|
int a;
|
|
put_symbol(c, p->state[a]);
|
|
}
|