static void t1_dec_clnpass_step( opj_t1_t *t1, flag_t *flagsp, int *datap, int orient, int oneplushalf, int partial, int vsc) { int v, flag; opj_mqc_t *mqc = t1->mqc; /* MQC component */ flag = vsc ? ((*flagsp) & (~(T1_SIG_S | T1_SIG_SE | T1_SIG_SW | T1_SGN_S))) : (*flagsp); if (partial) { goto LABEL_PARTIAL; } if (!(flag & (T1_SIG | T1_VISIT))) { mqc_setcurctx(mqc, t1_getctxno_zc(flag, orient)); if (mqc_decode(mqc)) { LABEL_PARTIAL: mqc_setcurctx(mqc, t1_getctxno_sc(flag)); v = mqc_decode(mqc) ^ t1_getspb(flag); *datap = v ? -oneplushalf : oneplushalf; t1_updateflags(flagsp, v, t1->flags_stride); } } *flagsp &= ~T1_VISIT; } /* VSC and BYPASS by Antonin */
static void t1_dec_sigpass_step( opj_t1_t *t1, flag_t *flagsp, int *datap, int orient, int oneplushalf, char type, int vsc) { int v, flag; opj_raw_t *raw = t1->raw; /* RAW component */ opj_mqc_t *mqc = t1->mqc; /* MQC component */ flag = vsc ? ((*flagsp) & (~(T1_SIG_S | T1_SIG_SE | T1_SIG_SW | T1_SGN_S))) : (*flagsp); if ((flag & T1_SIG_OTH) && !(flag & (T1_SIG | T1_VISIT))) { if (type == T1_TYPE_RAW) { if (raw_decode(raw)) { v = raw_decode(raw); /* ESSAI */ *datap = v ? -oneplushalf : oneplushalf; t1_updateflags(flagsp, v, t1->flags_stride); } } else { mqc_setcurctx(mqc, t1_getctxno_zc(flag, orient)); if (mqc_decode(mqc)) { mqc_setcurctx(mqc, t1_getctxno_sc(flag)); v = mqc_decode(mqc) ^ t1_getspb(flag); *datap = v ? -oneplushalf : oneplushalf; t1_updateflags(flagsp, v, t1->flags_stride); } } *flagsp |= T1_VISIT; } } /* VSC and BYPASS by Antonin */
static void t1_dec_refpass_step( opj_t1_t *t1, flag_t *flagsp, int *datap, int poshalf, int neghalf, char type, int vsc) { int v, t, flag; opj_mqc_t *mqc = t1->mqc; /* MQC component */ opj_raw_t *raw = t1->raw; /* RAW component */ flag = vsc ? ((*flagsp) & (~(T1_SIG_S | T1_SIG_SE | T1_SIG_SW | T1_SGN_S))) : (*flagsp); if ((flag & (T1_SIG | T1_VISIT)) == T1_SIG) { mqc_setcurctx(mqc, t1_getctxno_mag(flag)); /* ESSAI */ if (type == T1_TYPE_RAW) { v = raw_decode(raw); } else { v = mqc_decode(mqc); } t = v ? poshalf : neghalf; *datap += *datap < 0 ? -t : t; *flagsp |= T1_REFINE; } } /* VSC and BYPASS by Antonin */
static void t1_dec_clnpass_step( opj_t1_t *t1, flag_t *flagsp, int *datap, int orient, int oneplushalf) { int v, flag; opj_mqc_t *mqc = t1->mqc; /* MQC component */ flag = *flagsp; if (!(flag & (T1_SIG | T1_VISIT))) { mqc_setcurctx(mqc, t1_getctxno_zc(flag, orient)); if (mqc_decode(mqc)) { mqc_setcurctx(mqc, t1_getctxno_sc(flag)); v = mqc_decode(mqc) ^ t1_getspb(flag); *datap = v ? -oneplushalf : oneplushalf; t1_updateflags(flagsp, v, t1->flags_stride); } } *flagsp &= ~T1_VISIT; } /* VSC and BYPASS by Antonin */
static INLINE void t1_dec_sigpass_step_mqc( opj_t1_t *t1, flag_t *flagsp, S32 *datap, S32 orient, S32 oneplushalf) { S32 v, flag; opj_mqc_t *mqc = t1->mqc; /* MQC component */ flag = *flagsp; if ((flag & T1_SIG_OTH) && !(flag & (T1_SIG | T1_VISIT))) { mqc_setcurctx(mqc, t1_getctxno_zc(flag, orient)); if (mqc_decode(mqc)) { mqc_setcurctx(mqc, t1_getctxno_sc(flag)); v = mqc_decode(mqc) ^ t1_getspb(flag); *datap = v ? -oneplushalf : oneplushalf; t1_updateflags(flagsp, v, t1->flags_stride); } *flagsp |= T1_VISIT; } } /* VSC and BYPASS by Antonin */
static void t1_dec_clnpass_step_partial( opj_t1_t *t1, flag_t *flagsp, S32 *datap, S32 orient, S32 oneplushalf) { S32 v, flag; opj_mqc_t *mqc = t1->mqc; /* MQC component */ flag = *flagsp; mqc_setcurctx(mqc, t1_getctxno_sc(flag)); v = mqc_decode(mqc) ^ t1_getspb(flag); *datap = v ? -oneplushalf : oneplushalf; t1_updateflags(flagsp, v, t1->flags_stride); *flagsp &= ~T1_VISIT; } /* VSC and BYPASS by Antonin */
static INLINE void t1_dec_refpass_step_mqc( opj_t1_t *t1, flag_t *flagsp, int *datap, int poshalf, int neghalf) { int v, t, flag; opj_mqc_t *mqc = t1->mqc; /* MQC component */ flag = *flagsp; if ((flag & (T1_SIG | T1_VISIT)) == T1_SIG) { mqc_setcurctx(mqc, t1_getctxno_mag(flag)); /* ESSAI */ v = mqc_decode(mqc); t = v ? poshalf : neghalf; *datap += *datap < 0 ? -t : t; *flagsp |= T1_REFINE; } } /* VSC and BYPASS by Antonin */
static INLINE void t1_dec_refpass_step_mqc_vsc( opj_t1_t *t1, flag_t *flagsp, S32 *datap, S32 poshalf, S32 neghalf, S32 vsc) { S32 v, t, flag; opj_mqc_t *mqc = t1->mqc; /* MQC component */ flag = vsc ? ((*flagsp) & (~(T1_SIG_S | T1_SIG_SE | T1_SIG_SW | T1_SGN_S))) : (*flagsp); if ((flag & (T1_SIG | T1_VISIT)) == T1_SIG) { mqc_setcurctx(mqc, t1_getctxno_mag(flag)); /* ESSAI */ v = mqc_decode(mqc); t = v ? poshalf : neghalf; *datap += *datap < 0 ? -t : t; *flagsp |= T1_REFINE; } } /* VSC and BYPASS by Antonin */