Go to the documentation of this file.
40 #define mqc_renorme_macro(mqc, a_, c_, ct_) \
52 } while( (a_ & 0x8000) == 0); \
55 #define mqc_codemps_macro(mqc, curctx, a, c, ct) \
57 a -= (*curctx)->qeval; \
58 if ((a & 0x8000) == 0) { \
59 if (a < (*curctx)->qeval) { \
60 a = (*curctx)->qeval; \
62 c += (*curctx)->qeval; \
64 *curctx = (*curctx)->nmps; \
65 mqc_renorme_macro(mqc, a, c, ct); \
67 c += (*curctx)->qeval; \
71 #define mqc_codelps_macro(mqc, curctx, a, c, ct) \
73 a -= (*curctx)->qeval; \
74 if (a < (*curctx)->qeval) { \
75 c += (*curctx)->qeval; \
77 a = (*curctx)->qeval; \
79 *curctx = (*curctx)->nlps; \
80 mqc_renorme_macro(mqc, a, c, ct); \
83 #define mqc_encode_macro(mqc, curctx, a, c, ct, d) \
85 if ((*curctx)->mps == (d)) { \
86 mqc_codemps_macro(mqc, curctx, a, c, ct); \
88 mqc_codelps_macro(mqc, curctx, a, c, ct); \
93 #define mqc_bypass_enc_macro(mqc, c, ct, d) \
95 if (ct == BYPASS_CT_INIT) {\
101 *mqc->bp = (uint8_t)c;\
104 if (*mqc->bp == 0xff) {\
uint32_t mqc_bypass_get_extra_bytes_enc(mqcoder *mqc, bool erterm)
Definition: mqc_enc.cpp:273
void mqc_erterm_enc(mqcoder *mqc)
Definition: mqc_enc.cpp:331
uint8_t * start
pointer to the start of the buffer
Definition: mqc.h:54
static void mqc_renorm_enc(mqcoder *mqc)
Definition: mqc_enc.cpp:166
void mqc_init_enc(mqcoder *mqc, uint8_t *bp)
Definition: mqc_enc.cpp:210
static void mqc_codelps_enc(mqcoder *mqc)
Definition: mqc_enc.cpp:190
void mqc_byteout(mqcoder *mqc)
Definition: mqc_enc.cpp:133
uint8_t * bp
pointer to the current position in the buffer
Definition: mqc.h:52
#define mqc_setcurctx(mqc, ctxno)
Definition: mqc_inl.h:38
uint32_t ct
number of bits already read or free to write
Definition: mqc.h:48
void mqc_restart_init_enc(mqcoder *mqc)
Definition: mqc_enc.cpp:314
const mqc_state ** curctx
Active context.
Definition: mqc.h:60
Copyright (C) 2016-2020 Grok Image Compression Inc.
Definition: BitIO.cpp:23
uint32_t c
temporary buffer where bits are coded or decoded
Definition: mqc.h:44
#define BYPASS_CT_INIT
Definition: mqc_inl.h:24
void mqc_segmark_enc(mqcoder *mqc)
Definition: mqc_enc.cpp:344
void mqc_encode(mqcoder *mqc, uint32_t d)
Definition: mqc_enc.cpp:232
uint32_t mqc_numbytes_enc(mqcoder *mqc)
Definition: mqc_enc.cpp:206
void mqc_byteout(mqcoder *mqc)
Output a byte, doing bit-stuffing if necessary.
uint32_t end_of_byte_stream_counter
Definition: mqc.h:50
static const mqc_state mqc_states[47 *2]
Definition: mqc_dec.cpp:29
static void mqc_codemps_enc(mqcoder *mqc)
Definition: mqc_enc.cpp:176
static void mqc_setbits_enc(mqcoder *mqc)
Definition: mqc_enc.cpp:200
uint32_t a
only used by MQ decoder
Definition: mqc.h:46
void mqc_bypass_flush_enc(mqcoder *mqc, bool erterm)
Definition: mqc_enc.cpp:278
void mqc_flush_enc(mqcoder *mqc)
Definition: mqc_enc.cpp:239
void mqc_bypass_init_enc(mqcoder *mqc)
Definition: mqc_enc.cpp:256