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]); | |
} |