Mercurial > libavcodec.hg
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; |