77 #include "jasper/jas_types.h"
78 #include "jasper/jas_stream.h"
80 #include "jpc_mqcod.h"
100 jpc_mqstate_t **curctx;
103 jpc_mqstate_t **ctxs;
124 jpc_mqdec_t *jpc_mqdec_create(
int maxctxs, jas_stream_t *in);
127 void jpc_mqdec_destroy(jpc_mqdec_t *dec);
134 void jpc_mqdec_setinput(jpc_mqdec_t *dec, jas_stream_t *in);
137 void jpc_mqdec_init(jpc_mqdec_t *dec);
144 #define jpc_mqdec_setcurctx(dec, ctxno) \
145 ((mqdec)->curctx = &(mqdec)->ctxs[ctxno]);
148 void jpc_mqdec_setctx(jpc_mqdec_t *dec,
int ctxno, jpc_mqctx_t *ctx);
151 void jpc_mqdec_setctxs(jpc_mqdec_t *dec,
int numctxs, jpc_mqctx_t *ctxs);
159 #define jpc_mqdec_getbit(dec) \
160 jpc_mqdec_getbit_macro(dec)
162 #define jpc_mqdec_getbit(dec) \
163 jpc_mqdec_getbit_func(dec)
168 #define jpc_mqdec_getbitnoskew(dec) \
169 jpc_mqdec_getbit_macro(dec)
171 #define jpc_mqdec_getbitnoskew(dec) \
172 jpc_mqdec_getbit_func(dec)
180 void jpc_mqdec_dump(jpc_mqdec_t *dec, FILE *out);
188 #define jpc_mqdec_getbit_macro(dec) \
189 ((((dec)->areg -= (*(dec)->curctx)->qeval), \
190 (dec)->creg >> 16 >= (*(dec)->curctx)->qeval) ? \
191 ((((dec)->creg -= (*(dec)->curctx)->qeval << 16), \
192 (dec)->areg & 0x8000) ? (*(dec)->curctx)->mps : \
193 jpc_mqdec_mpsexchrenormd(dec)) : \
194 jpc_mqdec_lpsexchrenormd(dec))
196 #define jpc_mqdec_mpsexchange(areg, delta, curctx, bit) \
198 if ((areg) < (delta)) { \
199 register jpc_mqstate_t *state = *(curctx); \
201 (bit) = state->mps ^ 1; \
202 *(curctx) = state->nlps; \
204 register jpc_mqstate_t *state = *(curctx); \
206 (bit) = state->mps; \
207 *(curctx) = state->nmps; \
211 #define jpc_mqdec_lpsexchange(areg, delta, curctx, bit) \
213 if ((areg) >= (delta)) { \
214 register jpc_mqstate_t *state = *(curctx); \
216 (bit) = state->mps ^ 1; \
217 *(curctx) = state->nlps; \
219 register jpc_mqstate_t *state = *(curctx); \
221 (bit) = state->mps; \
222 *(curctx) = state->nmps; \
226 #define jpc_mqdec_renormd(areg, creg, ctreg, in, eof, inbuf) \
230 jpc_mqdec_bytein2(creg, ctreg, in, eof, inbuf); \
235 } while (!((areg) & 0x8000)); \
238 #define jpc_mqdec_bytein2(creg, ctreg, in, eof, inbuf) \
241 unsigned char prevbuf; \
243 if ((c = jas_stream_getc(in)) == EOF) { \
249 if (prevbuf == 0xff) { \
267 int jpc_mqdec_getbit_func(jpc_mqdec_t *dec);
268 int jpc_mqdec_mpsexchrenormd(jpc_mqdec_t *dec);
269 int jpc_mqdec_lpsexchrenormd(jpc_mqdec_t *dec);