Lines Matching refs:mqdec
100 static void jpc_mqdec_bytein(jpc_mqdec_t *mqdec);
109 jpc_mqdec_t *mqdec;
115 if (!(mqdec = jas_malloc(sizeof(jpc_mqdec_t)))) {
118 mqdec->in = in;
119 mqdec->maxctxs = maxctxs;
121 if (!(mqdec->ctxs = jas_alloc2(mqdec->maxctxs, sizeof(jpc_mqstate_t *)))) {
125 mqdec->curctx = mqdec->ctxs;
129 if (mqdec->in) {
130 jpc_mqdec_init(mqdec);
133 jpc_mqdec_setctxs(mqdec, 0, 0);
135 return mqdec;
139 if (mqdec) {
140 jpc_mqdec_destroy(mqdec);
146 void jpc_mqdec_destroy(jpc_mqdec_t *mqdec)
148 if (mqdec->ctxs) {
149 jas_free(mqdec->ctxs);
151 jas_free(mqdec);
160 void jpc_mqdec_init(jpc_mqdec_t *mqdec)
164 mqdec->eof = 0;
165 mqdec->creg = 0;
167 if ((c = jas_stream_getc(mqdec->in)) == EOF) {
170 mqdec->eof = 1;
172 mqdec->inbuffer = c;
173 mqdec->creg += mqdec->inbuffer << 16;
174 jpc_mqdec_bytein(mqdec);
175 mqdec->creg <<= 7;
176 mqdec->ctreg -= 7;
177 mqdec->areg = 0x8000;
182 void jpc_mqdec_setinput(jpc_mqdec_t *mqdec, jas_stream_t *in)
184 mqdec->in = in;
189 void jpc_mqdec_setctxs(jpc_mqdec_t *mqdec, int numctxs, jpc_mqctx_t *ctxs)
194 ctx = mqdec->ctxs;
195 n = JAS_MIN(mqdec->maxctxs, numctxs);
201 n = mqdec->maxctxs - numctxs;
210 void jpc_mqdec_setctx(jpc_mqdec_t *mqdec, int ctxno, jpc_mqctx_t *ctx)
213 ctxi = &mqdec->ctxs[ctxno];
223 int jpc_mqdec_getbit_func(register jpc_mqdec_t *mqdec)
226 JAS_DBGLOG(100, ("jpc_mqdec_getbit_func(%p)\n", mqdec));
227 MQDEC_CALL(100, jpc_mqdec_dump(mqdec, stderr));
228 bit = jpc_mqdec_getbit_macro(mqdec);
229 MQDEC_CALL(100, jpc_mqdec_dump(mqdec, stderr));
230 JAS_DBGLOG(100, ("ctx = %d, decoded %d\n", mqdec->curctx -
231 mqdec->ctxs, bit));
236 int jpc_mqdec_mpsexchrenormd(register jpc_mqdec_t *mqdec)
239 register jpc_mqstate_t *state = *mqdec->curctx;
240 jpc_mqdec_mpsexchange(mqdec->areg, state->qeval, mqdec->curctx, ret);
241 jpc_mqdec_renormd(mqdec->areg, mqdec->creg, mqdec->ctreg, mqdec->in,
242 mqdec->eof, mqdec->inbuffer);
247 int jpc_mqdec_lpsexchrenormd(register jpc_mqdec_t *mqdec)
250 register jpc_mqstate_t *state = *mqdec->curctx;
251 jpc_mqdec_lpsexchange(mqdec->areg, state->qeval, mqdec->curctx, ret);
252 jpc_mqdec_renormd(mqdec->areg, mqdec->creg, mqdec->ctreg, mqdec->in,
253 mqdec->eof, mqdec->inbuffer);
262 static void jpc_mqdec_bytein(jpc_mqdec_t *mqdec)
267 if (!mqdec->eof) {
268 if ((c = jas_stream_getc(mqdec->in)) == EOF) {
269 mqdec->eof = 1;
272 prevbuf = mqdec->inbuffer;
273 mqdec->inbuffer = c;
276 mqdec->creg += 0xff00;
277 mqdec->ctreg = 8;
279 mqdec->creg += c << 9;
280 mqdec->ctreg = 7;
283 mqdec->creg += c << 8;
284 mqdec->ctreg = 8;
287 mqdec->creg += 0xff00;
288 mqdec->ctreg = 8;
298 void jpc_mqdec_dump(jpc_mqdec_t *mqdec, FILE *out)
301 (unsigned long) mqdec->areg, (unsigned long) mqdec->creg,
302 (unsigned long) mqdec->ctreg);
303 fprintf(out, "CTX = %d, ", (int)(mqdec->curctx - mqdec->ctxs));
304 fprintf(out, "IND %d, MPS %d, QEVAL %x\n", (int)(*mqdec->curctx -
305 jpc_mqstates), (int)(*mqdec->curctx)->mps, (int)(*mqdec->curctx)->qeval);