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