comparison rv10.c @ 2387:f45248df9796 libavcodec

another try at fixing rv20 ...
author michael
date Mon, 13 Dec 2004 11:41:59 +0000
parents 3daf36fd1999
children 436a5f740f29
comparison
equal deleted inserted replaced
2386:8d1983254e28 2387:f45248df9796
427 return -1; 427 return -1;
428 } 428 }
429 } 429 }
430 430
431 if(s->avctx->has_b_frames){ 431 if(s->avctx->has_b_frames){
432 int f1=9; 432 int f=9;
433 int f2=9; 433 int v= s->avctx->extradata_size >= 4 ? ((uint8_t*)s->avctx->extradata)[1] : 0;
434 int f3=9;
435 434
436 if (get_bits(&s->gb, 1)){ 435 if (get_bits(&s->gb, 1)){
437 av_log(s->avctx, AV_LOG_ERROR, "unknown bit3 set\n"); 436 av_log(s->avctx, AV_LOG_ERROR, "unknown bit3 set\n");
438 // return -1; 437 // return -1;
439 } 438 }
440 seq= get_bits(&s->gb, 14)<<1; 439 seq= get_bits(&s->gb, 14)<<1;
441 440
442 if(s->avctx->extradata_size >= 4 && ((uint8_t*)s->avctx->extradata)[1]&1){ 441 if(v>1){
443 f1= get_bits(&s->gb, 1); 442 f= get_bits(&s->gb, av_log2(v-1)+1);
444 }
445 if(s->avctx->extradata_size >= 4 && ((uint8_t*)s->avctx->extradata)[1]&2){
446 f2= get_bits(&s->gb, 1);
447 }
448 if(s->avctx->extradata_size >= 4 && ((uint8_t*)s->avctx->extradata)[1]&4){
449 f3= get_bits(&s->gb, 2);
450 } 443 }
451 444
452 if(s->avctx->debug & FF_DEBUG_PICT_INFO){ 445 if(s->avctx->debug & FF_DEBUG_PICT_INFO){
453 av_log(s->avctx, AV_LOG_DEBUG, "F %d %d %d\n", f1,f2,f3); 446 av_log(s->avctx, AV_LOG_DEBUG, "F %d\n", f);
454 } 447 }
455 448
456 mb_pos= get_bits(&s->gb, av_log2(s->mb_num-1)+1); 449 mb_pos= get_bits(&s->gb, av_log2(s->mb_num-1)+1);
457 s->mb_x= mb_pos % s->mb_width; 450 s->mb_x= mb_pos % s->mb_width;
458 s->mb_y= mb_pos / s->mb_width; 451 s->mb_y= mb_pos / s->mb_width;