Revision b98202a4 libavcodec/h263.c

View differences:

libavcodec/h263.c
3336 3336
            if(s->pict_type==I_TYPE){
3337 3337
                int i;
3338 3338

  
3339
                if(show_bits_long(&s->gb, 19)==DC_MARKER){
3340
                    return mb_num-1;
3341
                }
3342

  
3343 3339
                do{
3340
                    if(show_bits_long(&s->gb, 19)==DC_MARKER){
3341
                        return mb_num-1;
3342
                    }
3343

  
3344 3344
                    cbpc = get_vlc2(&s->gb, intra_MCBPC_vlc.table, INTRA_MCBPC_VLC_BITS, 2);
3345 3345
                    if (cbpc < 0){
3346 3346
                        av_log(s->avctx, AV_LOG_ERROR, "cbpc corrupted at %d %d\n", s->mb_x, s->mb_y);
3347 3347
                        return -1;
3348 3348
                    }
3349 3349
                }while(cbpc == 8);
3350

  
3350
                
3351 3351
                s->cbp_table[xy]= cbpc & 3;
3352 3352
                s->current_picture.mb_type[xy]= MB_TYPE_INTRA;
3353 3353
                s->mb_intra = 1;
......
3374 3374
                int16_t * const mot_val= s->current_picture.motion_val[0][s->block_index[0]];
3375 3375
                const int stride= s->block_wrap[0]*2;
3376 3376

  
3377
//              do{ //FIXME
3377
try_again:
3378 3378
                bits= show_bits(&s->gb, 17);
3379 3379
                if(bits==MOTION_MARKER){
3380 3380
                    return mb_num-1;
......
3405 3405
                    av_log(s->avctx, AV_LOG_ERROR, "cbpc corrupted at %d %d\n", s->mb_x, s->mb_y);
3406 3406
                    return -1;
3407 3407
                }
3408
//              }while(cbpc == 20);
3408
                if(cbpc == 20)
3409
                    goto try_again;
3409 3410

  
3410 3411
                s->cbp_table[xy]= cbpc&(8+3); //8 is dquant
3411 3412
    
......
3586 3587
    s->mb_num_left= mb_num;
3587 3588
        
3588 3589
    if(s->pict_type==I_TYPE){
3590
        while(show_bits(&s->gb, 9) == 1)
3591
            skip_bits(&s->gb, 9);
3589 3592
        if(get_bits_long(&s->gb, 19)!=DC_MARKER){
3590 3593
            av_log(s->avctx, AV_LOG_ERROR, "marker missing after first I partition at %d %d\n", s->mb_x, s->mb_y);
3591 3594
            return -1;
3592 3595
        }
3593 3596
    }else{
3597
        while(show_bits(&s->gb, 10) == 1)
3598
            skip_bits(&s->gb, 10);
3594 3599
        if(get_bits(&s->gb, 17)!=MOTION_MARKER){
3595 3600
            av_log(s->avctx, AV_LOG_ERROR, "marker missing after first P partition at %d %d\n", s->mb_x, s->mb_y);
3596 3601
            return -1;

Also available in: Unified diff