static inline void codeblock(DiracContext *s, SubBand *b,

                             GetBitContext *gb, DiracArith *c,

                             int left, int right, int top, int bottom,

                             int blockcnt_one, int is_arith)

{

    int x, y, zero_block;

    int qoffset, qfactor;

    IDWTELEM *buf;



    /* check for any coded coefficients in this codeblock */

    if (!blockcnt_one) {

        if (is_arith)

            zero_block = dirac_get_arith_bit(c, CTX_ZERO_BLOCK);

        else

            zero_block = get_bits1(gb);



        if (zero_block)

            return;

    }



    if (s->codeblock_mode && !(s->old_delta_quant && blockcnt_one)) {

        if (is_arith)

            b->quant += dirac_get_arith_int(c, CTX_DELTA_Q_F, CTX_DELTA_Q_DATA);

        else

            b->quant += dirac_get_se_golomb(gb);

    }



    b->quant = FFMIN(b->quant, MAX_QUANT);



    qfactor = qscale_tab[b->quant];

    /* TODO: context pointer? */

    if (!s->num_refs)

        qoffset = qoffset_intra_tab[b->quant];

    else

        qoffset = qoffset_inter_tab[b->quant];



    buf = b->ibuf + top * b->stride;

    for (y = top; y < bottom; y++) {

        for (x = left; x < right; x++) {

            /* [DIRAC_STD] 13.4.4 Subband coefficients. coeff_unpack() */

            if (is_arith)

                coeff_unpack_arith(c, qfactor, qoffset, b, buf+x, x, y);

            else

                buf[x] = coeff_unpack_golomb(gb, qfactor, qoffset);

        }

        buf += b->stride;

    }

}

static inline void codeblock(DiracContext *s, SubBand *b,

                             GetBitContext *gb, DiracArith *c,

                             int left, int right, int top, int bottom,

                             int blockcnt_one, int is_arith)

{

    int x, y, zero_block;

    int qoffset, qfactor;

    IDWTELEM *buf;



    

    if (!blockcnt_one) {

        if (is_arith)

            zero_block = dirac_get_arith_bit(c, CTX_ZERO_BLOCK);

        else

            zero_block = get_bits1(gb);



        if (zero_block)

            return;

    }



    if (s->codeblock_mode && !(s->old_delta_quant && blockcnt_one)) {

        if (is_arith)

            b->quant += dirac_get_arith_int(c, CTX_DELTA_Q_F, CTX_DELTA_Q_DATA);

        else

            b->quant += dirac_get_se_golomb(gb);

    }



    b->quant = FFMIN(b->quant, MAX_QUANT);



    qfactor = qscale_tab[b->quant];

    

    if (!s->num_refs)

        qoffset = qoffset_intra_tab[b->quant];

    else

        qoffset = qoffset_inter_tab[b->quant];



    buf = b->ibuf + top * b->stride;

    for (y = top; y < bottom; y++) {

        for (x = left; x < right; x++) {

            

            if (is_arith)

                coeff_unpack_arith(c, qfactor, qoffset, b, buf+x, x, y);

            else

                buf[x] = coeff_unpack_golomb(gb, qfactor, qoffset);

        }

        buf += b->stride;

    }

}

static inline void FUNC_0(DiracContext *VAR_0, SubBand *VAR_1,

                             GetBitContext *VAR_2, DiracArith *VAR_3,

                             int VAR_4, int VAR_5, int VAR_6, int VAR_7,

                             int VAR_8, int VAR_9)

{

    int VAR_10, VAR_11, VAR_12;

    int VAR_13, VAR_14;

    IDWTELEM *buf;



    

    if (!VAR_8) {

        if (VAR_9)

            VAR_12 = dirac_get_arith_bit(VAR_3, CTX_ZERO_BLOCK);

        else

            VAR_12 = get_bits1(VAR_2);



        if (VAR_12)

            return;

    }



    if (VAR_0->codeblock_mode && !(VAR_0->old_delta_quant && VAR_8)) {

        if (VAR_9)

            VAR_1->quant += dirac_get_arith_int(VAR_3, CTX_DELTA_Q_F, CTX_DELTA_Q_DATA);

        else

            VAR_1->quant += dirac_get_se_golomb(VAR_2);

    }



    VAR_1->quant = FFMIN(VAR_1->quant, MAX_QUANT);



    VAR_14 = qscale_tab[VAR_1->quant];

    

    if (!VAR_0->num_refs)

        VAR_13 = qoffset_intra_tab[VAR_1->quant];

    else

        VAR_13 = qoffset_inter_tab[VAR_1->quant];



    buf = VAR_1->ibuf + VAR_6 * VAR_1->stride;

    for (VAR_11 = VAR_6; VAR_11 < VAR_7; VAR_11++) {

        for (VAR_10 = VAR_4; VAR_10 < VAR_5; VAR_10++) {

            

            if (VAR_9)

                coeff_unpack_arith(VAR_3, VAR_14, VAR_13, VAR_1, buf+VAR_10, VAR_10, VAR_11);

            else

                buf[VAR_10] = coeff_unpack_golomb(VAR_2, VAR_14, VAR_13);

        }

        buf += VAR_1->stride;

    }

}

static inline void FUNC_0(DiracContext *VAR_0, SubBand *VAR_1,
GetBitContext *VAR_2, DiracArith *VAR_3,
int VAR_4, int VAR_5, int VAR_6, int VAR_7,
int VAR_8, int VAR_9)
{ int VAR_10, VAR_11, VAR_12; int VAR_13, VAR_14; IDWTELEM *buf; if (!VAR_8) { if (VAR_9)
VAR_12 = dirac_get_arith_bit(VAR_3, CTX_ZERO_BLOCK); else
VAR_12 = get_bits1(VAR_2); if (VAR_12)
return; } if (VAR_0->codeblock_mode && !(VAR_0->old_delta_quant && VAR_8)) { if (VAR_9)
VAR_1->quant += dirac_get_arith_int(VAR_3, CTX_DELTA_Q_F, CTX_DELTA_Q_DATA); else
VAR_1->quant += dirac_get_se_golomb(VAR_2); } VAR_1->quant = FFMIN(VAR_1->quant, MAX_QUANT); VAR_14 = qscale_tab[VAR_1->quant]; if (!VAR_0->num_refs)
VAR_13 = qoffset_intra_tab[VAR_1->quant]; else
VAR_13 = qoffset_inter_tab[VAR_1->quant]; buf = VAR_1->ibuf + VAR_6 * VAR_1->stride; for (VAR_11 = VAR_6; VAR_11 < VAR_7; VAR_11++) { for (VAR_10 = VAR_4; VAR_10 < VAR_5; VAR_10++) { if (VAR_9)
coeff_unpack_arith(VAR_3, VAR_14, VAR_13, VAR_1, buf+VAR_10, VAR_10, VAR_11); else
buf[VAR_10] = coeff_unpack_golomb(VAR_2, VAR_14, VAR_13); } buf += VAR_1->stride; } }