int i;
static int h261_decode_gob(H261Context *h){    MpegEncContext * const s = &h->s;    int i;        ff_set_qscale(s, s->qscale);    while(h->current_mba <= MAX_MBA)    {        int ret;        /* DCT & quantize */        s->dsp.clear_blocks(s->block[0]);        ret= h261_decode_mb(h, s->block);        if(ret<0){            const int xy= s->mb_x + s->mb_y*s->mb_stride;            if(ret==SLICE_END){                MPV_decode_mb(s, s->block);                if(h->loop_filter){                    ff_h261_loop_filter(h);                }                h->loop_filter = 0;                for(i=1; i<h->mba_diff; i++){                    s->mb_x= ((h->gob_number-1) % 2) * 11 + ((h->current_mba-1-i) % 11);                    s->mb_y= ((h->gob_number-1) / 2) * 3 + ((h->current_mba-1-i) / 11);                    ff_init_block_index(s);                    ff_update_block_index(s);                    s->dsp.clear_blocks(s->block[0]);                    ret= h261_decode_mb_skipped(h, s->block);                    MPV_decode_mb(s, s->block);                }                                return 0;            }else if(ret==SLICE_NOEND){                av_log(s->avctx, AV_LOG_ERROR, "Slice mismatch at MB: %d\n", xy);                return -1;            }            av_log(s->avctx, AV_LOG_ERROR, "Error at MB: %d\n", xy);            return -1;        }        MPV_decode_mb(s, s->block);        if(h->loop_filter){            ff_h261_loop_filter(h);        }        h->loop_filter = 0;        for(i=1; i<h->mba_diff; i++){            s->mb_x= ((h->gob_number-1) % 2) * 11 + ((h->current_mba-1-i) % 11);            s->mb_y= ((h->gob_number-1) / 2) * 3 + ((h->current_mba-1-i) / 11);            ff_init_block_index(s);            ff_update_block_index(s);            s->dsp.clear_blocks(s->block[0]);            ret= h261_decode_mb_skipped(h, s->block);            MPV_decode_mb(s, s->block);        }    }        return -1;}