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