static void rv30_loop_filter(RV34DecContext *r, int row)

{

    MpegEncContext *s = &r->s;

    int mb_pos, mb_x;

    int i, j, k;

    uint8_t *Y, *C;

    int loc_lim, cur_lim, left_lim = 0, top_lim = 0;



    mb_pos = row * s->mb_stride;

    for(mb_x = 0; mb_x < s->mb_width; mb_x++, mb_pos++){

        int mbtype = s->current_picture_ptr->mb_type[mb_pos];

        if(IS_INTRA(mbtype) || IS_SEPARATE_DC(mbtype))

            r->deblock_coefs[mb_pos] = 0xFFFF;

        if(IS_INTRA(mbtype))

            r->cbp_chroma[mb_pos] = 0xFF;

    }



    /* all vertical edges are filtered first

     * and horizontal edges are filtered on the next iteration

     */

    mb_pos = row * s->mb_stride;

    for(mb_x = 0; mb_x < s->mb_width; mb_x++, mb_pos++){

        cur_lim = rv30_loop_filt_lim[s->current_picture_ptr->qscale_table[mb_pos]];

        if(mb_x)

            left_lim = rv30_loop_filt_lim[s->current_picture_ptr->qscale_table[mb_pos - 1]];

        for(j = 0; j < 16; j += 4){

            Y = s->current_picture_ptr->f.data[0] + mb_x*16 + (row*16 + j) * s->linesize + 4 * !mb_x;

            for(i = !mb_x; i < 4; i++, Y += 4){

                int ij = i + j;

                loc_lim = 0;

                if(r->deblock_coefs[mb_pos] & (1 << ij))

                    loc_lim = cur_lim;

                else if(!i && r->deblock_coefs[mb_pos - 1] & (1 << (ij + 3)))

                    loc_lim = left_lim;

                else if( i && r->deblock_coefs[mb_pos]     & (1 << (ij - 1)))

                    loc_lim = cur_lim;

                if(loc_lim)

                    rv30_weak_loop_filter(Y, 1, s->linesize, loc_lim);

            }

        }

        for(k = 0; k < 2; k++){

            int cur_cbp, left_cbp = 0;

            cur_cbp = (r->cbp_chroma[mb_pos] >> (k*4)) & 0xF;

            if(mb_x)

                left_cbp = (r->cbp_chroma[mb_pos - 1] >> (k*4)) & 0xF;

            for(j = 0; j < 8; j += 4){

                C = s->current_picture_ptr->f.data[k + 1] + mb_x*8 + (row*8 + j) * s->uvlinesize + 4 * !mb_x;

                for(i = !mb_x; i < 2; i++, C += 4){

                    int ij = i + (j >> 1);

                    loc_lim = 0;

                    if (cur_cbp & (1 << ij))

                        loc_lim = cur_lim;

                    else if(!i && left_cbp & (1 << (ij + 1)))

                        loc_lim = left_lim;

                    else if( i && cur_cbp  & (1 << (ij - 1)))

                        loc_lim = cur_lim;

                    if(loc_lim)

                        rv30_weak_loop_filter(C, 1, s->uvlinesize, loc_lim);

                }

            }

        }

    }

    mb_pos = row * s->mb_stride;

    for(mb_x = 0; mb_x < s->mb_width; mb_x++, mb_pos++){

        cur_lim = rv30_loop_filt_lim[s->current_picture_ptr->qscale_table[mb_pos]];

        if(row)

            top_lim = rv30_loop_filt_lim[s->current_picture_ptr->qscale_table[mb_pos - s->mb_stride]];

        for(j = 4*!row; j < 16; j += 4){

            Y = s->current_picture_ptr->f.data[0] + mb_x*16 + (row*16 + j) * s->linesize;

            for(i = 0; i < 4; i++, Y += 4){

                int ij = i + j;

                loc_lim = 0;

                if(r->deblock_coefs[mb_pos] & (1 << ij))

                    loc_lim = cur_lim;

                else if(!j && r->deblock_coefs[mb_pos - s->mb_stride] & (1 << (ij + 12)))

                    loc_lim = top_lim;

                else if( j && r->deblock_coefs[mb_pos]                & (1 << (ij - 4)))

                    loc_lim = cur_lim;

                if(loc_lim)

                    rv30_weak_loop_filter(Y, s->linesize, 1, loc_lim);

            }

        }

        for(k = 0; k < 2; k++){

            int cur_cbp, top_cbp = 0;

            cur_cbp = (r->cbp_chroma[mb_pos] >> (k*4)) & 0xF;

            if(row)

                top_cbp = (r->cbp_chroma[mb_pos - s->mb_stride] >> (k*4)) & 0xF;

            for(j = 4*!row; j < 8; j += 4){

                C = s->current_picture_ptr->f.data[k+1] + mb_x*8 + (row*8 + j) * s->uvlinesize;

                for(i = 0; i < 2; i++, C += 4){

                    int ij = i + (j >> 1);

                    loc_lim = 0;

                    if (r->cbp_chroma[mb_pos] & (1 << ij))

                        loc_lim = cur_lim;

                    else if(!j && top_cbp & (1 << (ij + 2)))

                        loc_lim = top_lim;

                    else if( j && cur_cbp & (1 << (ij - 2)))

                        loc_lim = cur_lim;

                    if(loc_lim)

                        rv30_weak_loop_filter(C, s->uvlinesize, 1, loc_lim);

                }

            }

        }

    }

}

static void rv30_loop_filter(RV34DecContext *r, int row)

{

    MpegEncContext *s = &r->s;

    int mb_pos, mb_x;

    int i, j, k;

    uint8_t *Y, *C;

    int loc_lim, cur_lim, left_lim = 0, top_lim = 0;



    mb_pos = row * s->mb_stride;

    for(mb_x = 0; mb_x < s->mb_width; mb_x++, mb_pos++){

        int mbtype = s->current_picture_ptr->mb_type[mb_pos];

        if(IS_INTRA(mbtype) || IS_SEPARATE_DC(mbtype))

            r->deblock_coefs[mb_pos] = 0xFFFF;

        if(IS_INTRA(mbtype))

            r->cbp_chroma[mb_pos] = 0xFF;

    }



    





    mb_pos = row * s->mb_stride;

    for(mb_x = 0; mb_x < s->mb_width; mb_x++, mb_pos++){

        cur_lim = rv30_loop_filt_lim[s->current_picture_ptr->qscale_table[mb_pos]];

        if(mb_x)

            left_lim = rv30_loop_filt_lim[s->current_picture_ptr->qscale_table[mb_pos - 1]];

        for(j = 0; j < 16; j += 4){

            Y = s->current_picture_ptr->f.data[0] + mb_x*16 + (row*16 + j) * s->linesize + 4 * !mb_x;

            for(i = !mb_x; i < 4; i++, Y += 4){

                int ij = i + j;

                loc_lim = 0;

                if(r->deblock_coefs[mb_pos] & (1 << ij))

                    loc_lim = cur_lim;

                else if(!i && r->deblock_coefs[mb_pos - 1] & (1 << (ij + 3)))

                    loc_lim = left_lim;

                else if( i && r->deblock_coefs[mb_pos]     & (1 << (ij - 1)))

                    loc_lim = cur_lim;

                if(loc_lim)

                    rv30_weak_loop_filter(Y, 1, s->linesize, loc_lim);

            }

        }

        for(k = 0; k < 2; k++){

            int cur_cbp, left_cbp = 0;

            cur_cbp = (r->cbp_chroma[mb_pos] >> (k*4)) & 0xF;

            if(mb_x)

                left_cbp = (r->cbp_chroma[mb_pos - 1] >> (k*4)) & 0xF;

            for(j = 0; j < 8; j += 4){

                C = s->current_picture_ptr->f.data[k + 1] + mb_x*8 + (row*8 + j) * s->uvlinesize + 4 * !mb_x;

                for(i = !mb_x; i < 2; i++, C += 4){

                    int ij = i + (j >> 1);

                    loc_lim = 0;

                    if (cur_cbp & (1 << ij))

                        loc_lim = cur_lim;

                    else if(!i && left_cbp & (1 << (ij + 1)))

                        loc_lim = left_lim;

                    else if( i && cur_cbp  & (1 << (ij - 1)))

                        loc_lim = cur_lim;

                    if(loc_lim)

                        rv30_weak_loop_filter(C, 1, s->uvlinesize, loc_lim);

                }

            }

        }

    }

    mb_pos = row * s->mb_stride;

    for(mb_x = 0; mb_x < s->mb_width; mb_x++, mb_pos++){

        cur_lim = rv30_loop_filt_lim[s->current_picture_ptr->qscale_table[mb_pos]];

        if(row)

            top_lim = rv30_loop_filt_lim[s->current_picture_ptr->qscale_table[mb_pos - s->mb_stride]];

        for(j = 4*!row; j < 16; j += 4){

            Y = s->current_picture_ptr->f.data[0] + mb_x*16 + (row*16 + j) * s->linesize;

            for(i = 0; i < 4; i++, Y += 4){

                int ij = i + j;

                loc_lim = 0;

                if(r->deblock_coefs[mb_pos] & (1 << ij))

                    loc_lim = cur_lim;

                else if(!j && r->deblock_coefs[mb_pos - s->mb_stride] & (1 << (ij + 12)))

                    loc_lim = top_lim;

                else if( j && r->deblock_coefs[mb_pos]                & (1 << (ij - 4)))

                    loc_lim = cur_lim;

                if(loc_lim)

                    rv30_weak_loop_filter(Y, s->linesize, 1, loc_lim);

            }

        }

        for(k = 0; k < 2; k++){

            int cur_cbp, top_cbp = 0;

            cur_cbp = (r->cbp_chroma[mb_pos] >> (k*4)) & 0xF;

            if(row)

                top_cbp = (r->cbp_chroma[mb_pos - s->mb_stride] >> (k*4)) & 0xF;

            for(j = 4*!row; j < 8; j += 4){

                C = s->current_picture_ptr->f.data[k+1] + mb_x*8 + (row*8 + j) * s->uvlinesize;

                for(i = 0; i < 2; i++, C += 4){

                    int ij = i + (j >> 1);

                    loc_lim = 0;

                    if (r->cbp_chroma[mb_pos] & (1 << ij))

                        loc_lim = cur_lim;

                    else if(!j && top_cbp & (1 << (ij + 2)))

                        loc_lim = top_lim;

                    else if( j && cur_cbp & (1 << (ij - 2)))

                        loc_lim = cur_lim;

                    if(loc_lim)

                        rv30_weak_loop_filter(C, s->uvlinesize, 1, loc_lim);

                }

            }

        }

    }

}

            Y = s->current_picture_ptr->f.data[0] + mb_x*16 + (row*16 + j) * s->linesize + 4 * !mb_x;                 C = s->current_picture_ptr->f.data[k + 1] + mb_x*8 + (row*8 + j) * s->uvlinesize + 4 * !mb_x;             Y = s->current_picture_ptr->f.data[0] + mb_x*16 + (row*16 + j) * s->linesize;                 C = s->current_picture_ptr->f.data[k+1] + mb_x*8 + (row*8 + j) * s->uvlinesize;             Y = s->current_picture_ptr->f.data[0] + mb_x*16 + (row*16 + j) * s->linesize;
static void FUNC_0(RV34DecContext *VAR_0, int VAR_1)

{

    MpegEncContext *s = &VAR_0->s;

    int VAR_2, VAR_3;

    int VAR_4, VAR_5, VAR_6;

    uint8_t *Y, *C;

    int VAR_7, VAR_8, VAR_9 = 0, VAR_10 = 0;



    VAR_2 = VAR_1 * s->mb_stride;

    for(VAR_3 = 0; VAR_3 < s->mb_width; VAR_3++, VAR_2++){

        int mbtype = s->current_picture_ptr->mb_type[VAR_2];

        if(IS_INTRA(mbtype) || IS_SEPARATE_DC(mbtype))

            VAR_0->deblock_coefs[VAR_2] = 0xFFFF;

        if(IS_INTRA(mbtype))

            VAR_0->cbp_chroma[VAR_2] = 0xFF;

    }



    





    VAR_2 = VAR_1 * s->mb_stride;

    for(VAR_3 = 0; VAR_3 < s->mb_width; VAR_3++, VAR_2++){

        VAR_8 = rv30_loop_filt_lim[s->current_picture_ptr->qscale_table[VAR_2]];

        if(VAR_3)

            VAR_9 = rv30_loop_filt_lim[s->current_picture_ptr->qscale_table[VAR_2 - 1]];

        for(VAR_5 = 0; VAR_5 < 16; VAR_5 += 4){

            Y = s->current_picture_ptr->f.data[0] + VAR_3*16 + (VAR_1*16 + VAR_5) * s->linesize + 4 * !VAR_3;

            for(VAR_4 = !VAR_3; VAR_4 < 4; VAR_4++, Y += 4){

                int ij = VAR_4 + VAR_5;

                VAR_7 = 0;

                if(VAR_0->deblock_coefs[VAR_2] & (1 << ij))

                    VAR_7 = VAR_8;

                else if(!VAR_4 && VAR_0->deblock_coefs[VAR_2 - 1] & (1 << (ij + 3)))

                    VAR_7 = VAR_9;

                else if( VAR_4 && VAR_0->deblock_coefs[VAR_2]     & (1 << (ij - 1)))

                    VAR_7 = VAR_8;

                if(VAR_7)

                    rv30_weak_loop_filter(Y, 1, s->linesize, VAR_7);

            }

        }

        for(VAR_6 = 0; VAR_6 < 2; VAR_6++){

            int cur_cbp, left_cbp = 0;

            cur_cbp = (VAR_0->cbp_chroma[VAR_2] >> (VAR_6*4)) & 0xF;

            if(VAR_3)

                left_cbp = (VAR_0->cbp_chroma[VAR_2 - 1] >> (VAR_6*4)) & 0xF;

            for(VAR_5 = 0; VAR_5 < 8; VAR_5 += 4){

                C = s->current_picture_ptr->f.data[VAR_6 + 1] + VAR_3*8 + (VAR_1*8 + VAR_5) * s->uvlinesize + 4 * !VAR_3;

                for(VAR_4 = !VAR_3; VAR_4 < 2; VAR_4++, C += 4){

                    int ij = VAR_4 + (VAR_5 >> 1);

                    VAR_7 = 0;

                    if (cur_cbp & (1 << ij))

                        VAR_7 = VAR_8;

                    else if(!VAR_4 && left_cbp & (1 << (ij + 1)))

                        VAR_7 = VAR_9;

                    else if( VAR_4 && cur_cbp  & (1 << (ij - 1)))

                        VAR_7 = VAR_8;

                    if(VAR_7)

                        rv30_weak_loop_filter(C, 1, s->uvlinesize, VAR_7);

                }

            }

        }

    }

    VAR_2 = VAR_1 * s->mb_stride;

    for(VAR_3 = 0; VAR_3 < s->mb_width; VAR_3++, VAR_2++){

        VAR_8 = rv30_loop_filt_lim[s->current_picture_ptr->qscale_table[VAR_2]];

        if(VAR_1)

            VAR_10 = rv30_loop_filt_lim[s->current_picture_ptr->qscale_table[VAR_2 - s->mb_stride]];

        for(VAR_5 = 4*!VAR_1; VAR_5 < 16; VAR_5 += 4){

            Y = s->current_picture_ptr->f.data[0] + VAR_3*16 + (VAR_1*16 + VAR_5) * s->linesize;

            for(VAR_4 = 0; VAR_4 < 4; VAR_4++, Y += 4){

                int ij = VAR_4 + VAR_5;

                VAR_7 = 0;

                if(VAR_0->deblock_coefs[VAR_2] & (1 << ij))

                    VAR_7 = VAR_8;

                else if(!VAR_5 && VAR_0->deblock_coefs[VAR_2 - s->mb_stride] & (1 << (ij + 12)))

                    VAR_7 = VAR_10;

                else if( VAR_5 && VAR_0->deblock_coefs[VAR_2]                & (1 << (ij - 4)))

                    VAR_7 = VAR_8;

                if(VAR_7)

                    rv30_weak_loop_filter(Y, s->linesize, 1, VAR_7);

            }

        }

        for(VAR_6 = 0; VAR_6 < 2; VAR_6++){

            int cur_cbp, top_cbp = 0;

            cur_cbp = (VAR_0->cbp_chroma[VAR_2] >> (VAR_6*4)) & 0xF;

            if(VAR_1)

                top_cbp = (VAR_0->cbp_chroma[VAR_2 - s->mb_stride] >> (VAR_6*4)) & 0xF;

            for(VAR_5 = 4*!VAR_1; VAR_5 < 8; VAR_5 += 4){

                C = s->current_picture_ptr->f.data[VAR_6+1] + VAR_3*8 + (VAR_1*8 + VAR_5) * s->uvlinesize;

                for(VAR_4 = 0; VAR_4 < 2; VAR_4++, C += 4){

                    int ij = VAR_4 + (VAR_5 >> 1);

                    VAR_7 = 0;

                    if (VAR_0->cbp_chroma[VAR_2] & (1 << ij))

                        VAR_7 = VAR_8;

                    else if(!VAR_5 && top_cbp & (1 << (ij + 2)))

                        VAR_7 = VAR_10;

                    else if( VAR_5 && cur_cbp & (1 << (ij - 2)))

                        VAR_7 = VAR_8;

                    if(VAR_7)

                        rv30_weak_loop_filter(C, s->uvlinesize, 1, VAR_7);

                }

            }

        }

    }

}

static void FUNC_0(RV34DecContext *VAR_0, int VAR_1)
{ MpegEncContext *s = &VAR_0->s; int VAR_2, VAR_3; int VAR_4, VAR_5, VAR_6; uint8_t *Y, *C; int VAR_7, VAR_8, VAR_9 = 0, VAR_10 = 0; VAR_2 = VAR_1 * s->mb_stride; for(VAR_3 = 0; VAR_3 < s->mb_width; VAR_3++, VAR_2++){ int mbtype = s->current_picture_ptr->mb_type[VAR_2]; if(IS_INTRA(mbtype) || IS_SEPARATE_DC(mbtype))
VAR_0->deblock_coefs[VAR_2] = 0xFFFF; if(IS_INTRA(mbtype))
VAR_0->cbp_chroma[VAR_2] = 0xFF; } VAR_2 = VAR_1 * s->mb_stride; for(VAR_3 = 0; VAR_3 < s->mb_width; VAR_3++, VAR_2++){ VAR_8 = rv30_loop_filt_lim[s->current_picture_ptr->qscale_table[VAR_2]]; if(VAR_3)
VAR_9 = rv30_loop_filt_lim[s->current_picture_ptr->qscale_table[VAR_2 - 1]]; for(VAR_5 = 0; VAR_5 < 16; VAR_5 += 4){ Y = s->current_picture_ptr->f.data[0] + VAR_3*16 + (VAR_1*16 + VAR_5) * s->linesize + 4 * !VAR_3; for(VAR_4 = !VAR_3; VAR_4 < 4; VAR_4++, Y += 4){ int ij = VAR_4 + VAR_5; VAR_7 = 0; if(VAR_0->deblock_coefs[VAR_2] & (1 << ij))
VAR_7 = VAR_8; else if(!VAR_4 && VAR_0->deblock_coefs[VAR_2 - 1] & (1 << (ij + 3)))
VAR_7 = VAR_9; else if( VAR_4 && VAR_0->deblock_coefs[VAR_2]     & (1 << (ij - 1)))
VAR_7 = VAR_8; if(VAR_7)
rv30_weak_loop_filter(Y, 1, s->linesize, VAR_7); } } for(VAR_6 = 0; VAR_6 < 2; VAR_6++){ int cur_cbp, left_cbp = 0; cur_cbp = (VAR_0->cbp_chroma[VAR_2] >> (VAR_6*4)) & 0xF; if(VAR_3)
left_cbp = (VAR_0->cbp_chroma[VAR_2 - 1] >> (VAR_6*4)) & 0xF; for(VAR_5 = 0; VAR_5 < 8; VAR_5 += 4){ C = s->current_picture_ptr->f.data[VAR_6 + 1] + VAR_3*8 + (VAR_1*8 + VAR_5) * s->uvlinesize + 4 * !VAR_3; for(VAR_4 = !VAR_3; VAR_4 < 2; VAR_4++, C += 4){ int ij = VAR_4 + (VAR_5 >> 1); VAR_7 = 0; if (cur_cbp & (1 << ij))
VAR_7 = VAR_8; else if(!VAR_4 && left_cbp & (1 << (ij + 1)))
VAR_7 = VAR_9; else if( VAR_4 && cur_cbp  & (1 << (ij - 1)))
VAR_7 = VAR_8; if(VAR_7)
rv30_weak_loop_filter(C, 1, s->uvlinesize, VAR_7); } } } } VAR_2 = VAR_1 * s->mb_stride; for(VAR_3 = 0; VAR_3 < s->mb_width; VAR_3++, VAR_2++){ VAR_8 = rv30_loop_filt_lim[s->current_picture_ptr->qscale_table[VAR_2]]; if(VAR_1)
VAR_10 = rv30_loop_filt_lim[s->current_picture_ptr->qscale_table[VAR_2 - s->mb_stride]]; for(VAR_5 = 4*!VAR_1; VAR_5 < 16; VAR_5 += 4){ Y = s->current_picture_ptr->f.data[0] + VAR_3*16 + (VAR_1*16 + VAR_5) * s->linesize; for(VAR_4 = 0; VAR_4 < 4; VAR_4++, Y += 4){ int ij = VAR_4 + VAR_5; VAR_7 = 0; if(VAR_0->deblock_coefs[VAR_2] & (1 << ij))
VAR_7 = VAR_8; else if(!VAR_5 && VAR_0->deblock_coefs[VAR_2 - s->mb_stride] & (1 << (ij + 12)))
VAR_7 = VAR_10; else if( VAR_5 && VAR_0->deblock_coefs[VAR_2]                & (1 << (ij - 4)))
VAR_7 = VAR_8; if(VAR_7)
rv30_weak_loop_filter(Y, s->linesize, 1, VAR_7); } } for(VAR_6 = 0; VAR_6 < 2; VAR_6++){ int cur_cbp, top_cbp = 0; cur_cbp = (VAR_0->cbp_chroma[VAR_2] >> (VAR_6*4)) & 0xF; if(VAR_1)
top_cbp = (VAR_0->cbp_chroma[VAR_2 - s->mb_stride] >> (VAR_6*4)) & 0xF; for(VAR_5 = 4*!VAR_1; VAR_5 < 8; VAR_5 += 4){ C = s->current_picture_ptr->f.data[VAR_6+1] + VAR_3*8 + (VAR_1*8 + VAR_5) * s->uvlinesize; for(VAR_4 = 0; VAR_4 < 2; VAR_4++, C += 4){ int ij = VAR_4 + (VAR_5 >> 1); VAR_7 = 0; if (VAR_0->cbp_chroma[VAR_2] & (1 << ij))
VAR_7 = VAR_8; else if(!VAR_5 && top_cbp & (1 << (ij + 2)))
VAR_7 = VAR_10; else if( VAR_5 && cur_cbp & (1 << (ij - 2)))
VAR_7 = VAR_8; if(VAR_7)
rv30_weak_loop_filter(C, s->uvlinesize, 1, VAR_7); } } } } }