- opj_mqc_setcurctx(mqc, T1_CTXNO_UNI); \
- runlen = opj_mqc_decode(mqc); \
- runlen = (runlen << 1) | opj_mqc_decode(mqc); \
- } else { \
- runlen = 0; \
- } \
- for (j = k + (OPJ_UINT32)runlen; j < k + 4 && j < h; ++j) { \
- vsc = (j == k + 3 || j == h - 1) ? 1 : 0; \
- opj_t1_dec_clnpass_step_vsc( \
- t1, \
- &t1->flags[((j+1) * flags_stride) + i + 1], \
- colflags2, \
- &t1->data[(j * w) + i], \
- oneplushalf, \
- agg && (j == k + (OPJ_UINT32)runlen), \
- vsc, j - k); \
- } \
- *colflags2 &= (opj_colflag_t)~(T1_COLFLAG_VISIT_ROW_0 | T1_COLFLAG_VISIT_ROW_1 | T1_COLFLAG_VISIT_ROW_2 | T1_COLFLAG_VISIT_ROW_3); \
- } \
- colflags1 += flags_stride; \
- } \
- } else { \
- OPJ_INT32 *data1 = t1->data; \
- opj_flag_t *flags1 = &t1->flags[1]; \
- opj_colflag_t *colflags1 = &t1->colflags[flags_stride + 1]; \
- for (k = 0; k < (h & ~3u); k += 4) { \
- for (i = 0; i < w; ++i) { \
- OPJ_INT32 *data2 = data1 + i; \
- opj_flag_t *flags2 = flags1 + i; \
- opj_colflag_t *colflags2 = colflags1 + i; \
- opj_colflag_t colflags = *colflags2; \
- agg = !(colflags & (T1_COLFLAG_SIG_ROW_0 | T1_COLFLAG_VISIT_ROW_0 | T1_COLFLAG_SIG_OTHER_ROW_0 | \
- T1_COLFLAG_SIG_ROW_1 | T1_COLFLAG_VISIT_ROW_1 | T1_COLFLAG_SIG_OTHER_ROW_1 | \
- T1_COLFLAG_SIG_ROW_2 | T1_COLFLAG_VISIT_ROW_2 | T1_COLFLAG_SIG_OTHER_ROW_2 | \
- T1_COLFLAG_SIG_ROW_3 | T1_COLFLAG_VISIT_ROW_3 | T1_COLFLAG_SIG_OTHER_ROW_3)); \
- if( consistency_check ) { \
- assert( agg == !((MACRO_t1_flags_internal(1 + k, 1 + i,flags_stride) | \
- MACRO_t1_flags_internal(1 + k + 1, 1 + i,flags_stride) | \
- MACRO_t1_flags_internal(1 + k + 2, 1 + i,flags_stride) | \
- MACRO_t1_flags_internal(1 + k + 3, 1 + i,flags_stride)) & (T1_SIG | T1_VISIT | T1_SIG_OTH)) ); \
- } \
- if (agg) { \
- opj_mqc_setcurctx(mqc, T1_CTXNO_AGG); \
- if (!opj_mqc_decode(mqc)) { \
- continue; \
- } \
- opj_mqc_setcurctx(mqc, T1_CTXNO_UNI); \
- runlen = opj_mqc_decode(mqc); \
- runlen = (runlen << 1) | opj_mqc_decode(mqc); \
- flags2 += (OPJ_UINT32)runlen * flags_stride; \
- data2 += (OPJ_UINT32)runlen * w; \
- for (j = (OPJ_UINT32)runlen; j < 4; ++j) { \
- flags2 += flags_stride; \
- if (j == (OPJ_UINT32)runlen) { \
- opj_t1_dec_clnpass_step_partial(t1, flags2, colflags2, data2, oneplushalf, j); \
- } else { \
- opj_t1_dec_clnpass_step(t1, flags2, colflags2, data2, oneplushalf, j); \
- } \
- data2 += w; \
- } \
- } else { \
- flags2 += flags_stride; \
- if( consistency_check ) { assert( (!(colflags & (T1_COLFLAG_SIG_ROW_0 | T1_COLFLAG_VISIT_ROW_0))) == (!(*flags2 & (T1_SIG | T1_VISIT))) ); } \
- if (!(colflags & (T1_COLFLAG_SIG_ROW_0 | T1_COLFLAG_VISIT_ROW_0))) {\
- opj_t1_dec_clnpass_step_only_if_flag_not_sig_visit(t1, flags2, colflags2, data2, oneplushalf, 0U, flags_stride); \
- } \
- if( consistency_check ) *flags2 &= (opj_flag_t)~T1_VISIT; \
- data2 += w; \
- flags2 += flags_stride; \
- if( consistency_check ) { assert( (!(colflags & (T1_COLFLAG_SIG_ROW_1 | T1_COLFLAG_VISIT_ROW_1))) == (!(*flags2 & (T1_SIG | T1_VISIT))) ); } \
- if (!(colflags & (T1_COLFLAG_SIG_ROW_1 | T1_COLFLAG_VISIT_ROW_1))) {\
- opj_t1_dec_clnpass_step_only_if_flag_not_sig_visit(t1, flags2, colflags2, data2, oneplushalf, 1U, flags_stride); \
- } \
- if( consistency_check ) *flags2 &= (opj_flag_t)~T1_VISIT; \
- data2 += w; \
- flags2 += flags_stride; \
- if( consistency_check ) { assert( (!(colflags & (T1_COLFLAG_SIG_ROW_2 | T1_COLFLAG_VISIT_ROW_2))) == (!(*flags2 & (T1_SIG | T1_VISIT))) ); } \
- if (!(colflags & (T1_COLFLAG_SIG_ROW_2 | T1_COLFLAG_VISIT_ROW_2))) {\
- opj_t1_dec_clnpass_step_only_if_flag_not_sig_visit(t1, flags2, colflags2, data2, oneplushalf, 2U, flags_stride); \
- } \
- if( consistency_check ) *flags2 &= (opj_flag_t)~T1_VISIT; \
- data2 += w; \
- flags2 += flags_stride; \
- if( consistency_check ) { assert( (!(colflags & (T1_COLFLAG_SIG_ROW_3 | T1_COLFLAG_VISIT_ROW_3))) == (!(*flags2 & (T1_SIG | T1_VISIT))) ); } \
- if (!(colflags & (T1_COLFLAG_SIG_ROW_3 | T1_COLFLAG_VISIT_ROW_3))) {\
- opj_t1_dec_clnpass_step_only_if_flag_not_sig_visit(t1, flags2, colflags2, data2, oneplushalf, 3U, flags_stride); \
- } \
- if( consistency_check ) *flags2 &= (opj_flag_t)~T1_VISIT; \
- data2 += w; \
+ opj_t1_setcurctx(curctx, T1_CTXNO_UNI); \
+ opj_mqc_decode_macro(runlen, mqc, curctx, a, c, ct); \
+ opj_mqc_decode_macro(v, mqc, curctx, a, c, ct); \
+ runlen = (runlen << 1) | v; \
+ switch(runlen) { \
+ case 0: \
+ opj_t1_dec_clnpass_step_macro(OPJ_FALSE, OPJ_TRUE,\
+ flags, flagsp, flags_stride, data, \
+ l_w, 0, mqc, curctx, \
+ v, a, c, ct, oneplushalf, vsc); \
+ partial = OPJ_FALSE; \
+ /* FALLTHRU */ \
+ case 1: \
+ opj_t1_dec_clnpass_step_macro(OPJ_FALSE, partial,\
+ flags, flagsp, flags_stride, data, \
+ l_w, 1, mqc, curctx, \
+ v, a, c, ct, oneplushalf, OPJ_FALSE); \
+ partial = OPJ_FALSE; \
+ /* FALLTHRU */ \
+ case 2: \
+ opj_t1_dec_clnpass_step_macro(OPJ_FALSE, partial,\
+ flags, flagsp, flags_stride, data, \
+ l_w, 2, mqc, curctx, \
+ v, a, c, ct, oneplushalf, OPJ_FALSE); \
+ partial = OPJ_FALSE; \
+ /* FALLTHRU */ \
+ case 3: \
+ opj_t1_dec_clnpass_step_macro(OPJ_FALSE, partial,\
+ flags, flagsp, flags_stride, data, \
+ l_w, 3, mqc, curctx, \
+ v, a, c, ct, oneplushalf, OPJ_FALSE); \
+ break; \