Synopsis
struct              SchroArith;
struct              SchroArithContext;
SchroArith *        schro_arith_new                     (void);
void                schro_arith_free                    (SchroArith *arith);
void                schro_arith_decode_init             (SchroArith *arith,
                                                         SchroBuffer *buffer);
void                schro_arith_encode_init             (SchroArith *arith,
                                                         SchroBuffer *buffer);
void                schro_arith_flush                   (SchroArith *arith);
int                 schro_arith_decode_bit              (SchroArith *arith,
                                                         unsigned int context);
void                schro_arith_decode_flush            (SchroArith *arith);
int                 schro_arith_decode_sint             (SchroArith *arith,
                                                         unsigned int cont_context,
                                                         unsigned int value_context,
                                                         unsigned int sign_context);
int                 schro_arith_decode_uint             (SchroArith *arith,
                                                         unsigned int cont_context,
                                                         unsigned int value_context);
void                schro_arith_encode_bit              (SchroArith *arith,
                                                         int context,
                                                         int value);
void                schro_arith_encode_sint             (SchroArith *arith,
                                                         int cont_context,
                                                         int value_context,
                                                         int sign_context,
                                                         int value);
void                schro_arith_encode_uint             (SchroArith *arith,
                                                         int cont_context,
                                                         int value_context,
                                                         int value);
void                schro_arith_estimate_init           (SchroArith *arith);
void                schro_arith_estimate_sint           (SchroArith *arith,
                                                         int cont_context,
                                                         int value_context,
                                                         int sign_context,
                                                         int value);
void                schro_arith_estimate_uint           (SchroArith *arith,
                                                         int cont_context,
                                                         int value_context,
                                                         int value);
 
Details
struct SchroArith
struct SchroArith {
  SchroBuffer *buffer;
  uint8_t *dataptr;
  uintptr_t offset;
  uint32_t range[2];
  uint32_t code;
  uint32_t range_size;
  int cntr;
  int carry;
  uint16_t probabilities[SCHRO_CTX_LAST];
  uint16_t lut[512];
  SchroArithContext contexts[SCHRO_CTX_LAST];
};
 
struct SchroArithContext
struct SchroArithContext {
  unsigned int next;
#ifdef unused
  int stat_range;
  int n_bits;
  int n_symbols;
  int ones;
#endif
};
 
schro_arith_new ()
SchroArith *        schro_arith_new                     (void);
 
schro_arith_free ()
void                schro_arith_free                    (SchroArith *arith);
 
schro_arith_flush ()
void                schro_arith_flush                   (SchroArith *arith);
 
schro_arith_decode_bit ()
int                 schro_arith_decode_bit              (SchroArith *arith,
                                                         unsigned int context);
 
schro_arith_decode_flush ()
void                schro_arith_decode_flush            (SchroArith *arith);
 
schro_arith_decode_sint ()
int                 schro_arith_decode_sint             (SchroArith *arith,
                                                         unsigned int cont_context,
                                                         unsigned int value_context,
                                                         unsigned int sign_context);
 
schro_arith_decode_uint ()
int                 schro_arith_decode_uint             (SchroArith *arith,
                                                         unsigned int cont_context,
                                                         unsigned int value_context);
 
schro_arith_encode_bit ()
void                schro_arith_encode_bit              (SchroArith *arith,
                                                         int context,
                                                         int value);
 
schro_arith_encode_sint ()
void                schro_arith_encode_sint             (SchroArith *arith,
                                                         int cont_context,
                                                         int value_context,
                                                         int sign_context,
                                                         int value);
 
schro_arith_encode_uint ()
void                schro_arith_encode_uint             (SchroArith *arith,
                                                         int cont_context,
                                                         int value_context,
                                                         int value);
 
schro_arith_estimate_init ()
void                schro_arith_estimate_init           (SchroArith *arith);
 
schro_arith_estimate_sint ()
void                schro_arith_estimate_sint           (SchroArith *arith,
                                                         int cont_context,
                                                         int value_context,
                                                         int sign_context,
                                                         int value);
 
schro_arith_estimate_uint ()
void                schro_arith_estimate_uint           (SchroArith *arith,
                                                         int cont_context,
                                                         int value_context,
                                                         int value);