Go to the documentation of this file.
20#define BYPASS_CT_INIT 0xFF
29#define mqc_byteout(mqc) \
31 assert((mqc)->bp >= ((mqc)->start - 1)); \
32 if(*(mqc)->bp == 0xff) \
35 *(mqc)->bp = (uint8_t)(((mqc)->c) >> 20); \
36 (mqc)->c &= 0xfffff; \
41 if(((mqc)->c & 0x8000000) == 0) \
44 *(mqc)->bp = (uint8_t)(((mqc)->c) >> 19); \
45 (mqc)->c &= 0x7ffff; \
51 if(*(mqc)->bp == 0xff) \
53 (mqc)->c &= 0x7ffffff; \
55 *(mqc)->bp = (uint8_t)(((mqc)->c) >> 20); \
56 (mqc)->c &= 0xfffff; \
62 *(mqc)->bp = (uint8_t)(((mqc)->c) >> 19); \
63 (mqc)->c &= 0x7ffff; \
79#define mqc_renorme_macro(mqc, a_, c_, ct_) \
93 } while((a_ & 0x8000) == 0); \
96#define mqc_codemps_macro(mqc, curctx, a, c, ct) \
99 a -= (*curctx)->qeval; \
100 if((a & 0x8000) == 0) \
102 if(a < (*curctx)->qeval) \
103 a = (*curctx)->qeval; \
105 c += (*curctx)->qeval; \
106 *curctx = (*curctx)->nmps; \
107 mqc_renorme_macro(mqc, a, c, ct); \
111 c += (*curctx)->qeval; \
115#define mqc_codelps_macro(mqc, curctx, a, c, ct) \
118 a -= (*curctx)->qeval; \
119 if(a < (*curctx)->qeval) \
120 c += (*curctx)->qeval; \
122 a = (*curctx)->qeval; \
123 *curctx = (*curctx)->nlps; \
124 mqc_renorme_macro(mqc, a, c, ct); \
127#ifdef PLUGIN_DEBUG_ENCODE
128#define mqc_encode_macro(mqc, curctx, a, c, ct, d) \
130 (mqc)->debug_mqc.context_number = ctxno; \
131 nextCXD(&(mqc)->debug_mqc, d); \
132 if((*curctx)->mps == (d)) \
133 mqc_codemps_macro(mqc, curctx, a, c, ct) else mqc_codelps_macro(mqc, curctx, a, c, ct) \
136#define mqc_encode_macro(mqc, curctx, a, c, ct, d) \
138 if((*curctx)->mps == (d)) \
139 mqc_codemps_macro(mqc, curctx, a, c, ct); \
141 mqc_codelps_macro(mqc, curctx, a, c, ct); \
144#define mqc_bypass_enc_macro(mqc, c, ct, d) \
146 if(ct == BYPASS_CT_INIT) \
149 c = c + ((d) << ct); \
152 *mqc->bp = (uint8_t)c; \
155 if(*mqc->bp == 0xff) \