comparison rv10.c @ 1657:aaaa1767acc2 libavcodec

set has_b_frames correctly, fixes rv20 dr1 with mplayer
author michael
date Thu, 04 Dec 2003 19:15:37 +0000
parents c92147a61d97
children 4c9fd29f1606
comparison
equal deleted inserted replaced
1656:34b0e799aeb6 1657:aaaa1767acc2
374 av_log(s->avctx, AV_LOG_ERROR, "unknown bit2 set\n"); 374 av_log(s->avctx, AV_LOG_ERROR, "unknown bit2 set\n");
375 return -1; 375 return -1;
376 } 376 }
377 } 377 }
378 378
379 if(s->avctx->sub_id == 0x20200002 || s->avctx->sub_id == 0x30202002 || s->avctx->sub_id == 0x30203002){ 379 if(s->avctx->has_b_frames){
380 if (get_bits(&s->gb, 1)){ 380 if (get_bits(&s->gb, 1)){
381 av_log(s->avctx, AV_LOG_ERROR, "unknown bit3 set\n"); 381 av_log(s->avctx, AV_LOG_ERROR, "unknown bit3 set\n");
382 return -1; 382 return -1;
383 } 383 }
384 seq= get_bits(&s->gb, 15); 384 seq= get_bits(&s->gb, 15);
458 s->rv10_version= 3; 458 s->rv10_version= 3;
459 s->h263_long_vectors=0; 459 s->h263_long_vectors=0;
460 s->low_delay=1; 460 s->low_delay=1;
461 break; 461 break;
462 case 0x20001000: 462 case 0x20001000:
463 case 0x20100001: //ok 463 case 0x20100001:
464 case 0x20101001:
465 s->low_delay=1;
466 break;
464 case 0x20200002: 467 case 0x20200002:
465 case 0x20101001: //ok 468 case 0x30202002:
469 case 0x30203002:
470 s->low_delay=0;
471 s->avctx->has_b_frames=1;
472 break;
466 default: 473 default:
467 av_log(s->avctx, AV_LOG_ERROR, "unknown header %X\n", avctx->sub_id); 474 av_log(s->avctx, AV_LOG_ERROR, "unknown header %X\n", avctx->sub_id);
468 } 475 }
469 //printf("ver:%X\n", avctx->sub_id); 476 //printf("ver:%X\n", avctx->sub_id);
470 s->flags= avctx->flags; 477 s->flags= avctx->flags;
506 MpegEncContext *s = avctx->priv_data; 513 MpegEncContext *s = avctx->priv_data;
507 int i, mb_count, mb_pos, left; 514 int i, mb_count, mb_pos, left;
508 515
509 init_get_bits(&s->gb, buf, buf_size*8); 516 init_get_bits(&s->gb, buf, buf_size*8);
510 #if 0 517 #if 0
511 for(i=0; i<buf_size*8 && i<100; i++) 518 for(i=0; i<buf_size*8 && i<200; i++)
512 printf("%d", get_bits1(&s->gb)); 519 printf("%d", get_bits1(&s->gb));
513 printf("\n"); 520 printf("\n");
514 return 0; 521 return 0;
515 #endif 522 #endif
516 if(s->codec_id ==CODEC_ID_RV10) 523 if(s->codec_id ==CODEC_ID_RV10)