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