OLD | NEW |
1 /* | 1 /* |
2 * H.263 decoder | 2 * H.263 decoder |
3 * Copyright (c) 2001 Fabrice Bellard | 3 * Copyright (c) 2001 Fabrice Bellard |
4 * Copyright (c) 2002-2004 Michael Niedermayer <michaelni@gmx.at> | 4 * Copyright (c) 2002-2004 Michael Niedermayer <michaelni@gmx.at> |
5 * | 5 * |
6 * This file is part of FFmpeg. | 6 * This file is part of FFmpeg. |
7 * | 7 * |
8 * FFmpeg is free software; you can redistribute it and/or | 8 * FFmpeg is free software; you can redistribute it and/or |
9 * modify it under the terms of the GNU Lesser General Public | 9 * modify it under the terms of the GNU Lesser General Public |
10 * License as published by the Free Software Foundation; either | 10 * License as published by the Free Software Foundation; either |
(...skipping 272 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
283 if(v==0x7F && bits_left<=8) | 283 if(v==0x7F && bits_left<=8) |
284 s->padding_bug_score--; | 284 s->padding_bug_score--; |
285 else if(v==0x7F && ((get_bits_count(&s->gb)+8)&8) && bits_left<=16) | 285 else if(v==0x7F && ((get_bits_count(&s->gb)+8)&8) && bits_left<=16) |
286 s->padding_bug_score+= 4; | 286 s->padding_bug_score+= 4; |
287 else | 287 else |
288 s->padding_bug_score++; | 288 s->padding_bug_score++; |
289 } | 289 } |
290 } | 290 } |
291 | 291 |
292 if(s->workaround_bugs&FF_BUG_AUTODETECT){ | 292 if(s->workaround_bugs&FF_BUG_AUTODETECT){ |
293 if(s->padding_bug_score > -2 && !s->data_partitioning /*&& (s->divx_vers
ion || !s->resync_marker)*/) | 293 if(s->padding_bug_score > -2 && !s->data_partitioning /*&& (s->divx_vers
ion>=0 || !s->resync_marker)*/) |
294 s->workaround_bugs |= FF_BUG_NO_PADDING; | 294 s->workaround_bugs |= FF_BUG_NO_PADDING; |
295 else | 295 else |
296 s->workaround_bugs &= ~FF_BUG_NO_PADDING; | 296 s->workaround_bugs &= ~FF_BUG_NO_PADDING; |
297 } | 297 } |
298 | 298 |
299 // handle formats which don't have unique end markers | 299 // handle formats which don't have unique end markers |
300 if(s->msmpeg4_version || (s->workaround_bugs&FF_BUG_NO_PADDING)){ //FIXME pe
rhaps solve this more cleanly | 300 if(s->msmpeg4_version || (s->workaround_bugs&FF_BUG_NO_PADDING)){ //FIXME pe
rhaps solve this more cleanly |
301 int left= get_bits_left(&s->gb); | 301 int left= get_bits_left(&s->gb); |
302 int max_extra=7; | 302 int max_extra=7; |
303 | 303 |
(...skipping 117 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
421 if(ret==FRAME_SKIPPED) return get_consumed_bytes(s, buf_size); | 421 if(ret==FRAME_SKIPPED) return get_consumed_bytes(s, buf_size); |
422 | 422 |
423 /* skip if the header was thrashed */ | 423 /* skip if the header was thrashed */ |
424 if (ret < 0){ | 424 if (ret < 0){ |
425 av_log(s->avctx, AV_LOG_ERROR, "header damaged\n"); | 425 av_log(s->avctx, AV_LOG_ERROR, "header damaged\n"); |
426 return -1; | 426 return -1; |
427 } | 427 } |
428 | 428 |
429 avctx->has_b_frames= !s->low_delay; | 429 avctx->has_b_frames= !s->low_delay; |
430 | 430 |
431 if(s->xvid_build==0 && s->divx_version==0 && s->lavc_build==0){ | 431 if(s->xvid_build==-1 && s->divx_version==-1 && s->lavc_build==-1){ |
432 if(s->stream_codec_tag == AV_RL32("XVID") || | 432 if(s->stream_codec_tag == AV_RL32("XVID") || |
433 s->codec_tag == AV_RL32("XVID") || s->codec_tag == AV_RL32("XVIX") || | 433 s->codec_tag == AV_RL32("XVID") || s->codec_tag == AV_RL32("XVIX") || |
434 s->codec_tag == AV_RL32("RMP4")) | 434 s->codec_tag == AV_RL32("RMP4")) |
435 s->xvid_build= -1; | 435 s->xvid_build= 0; |
436 #if 0 | 436 #if 0 |
437 if(s->codec_tag == AV_RL32("DIVX") && s->vo_type==0 && s->vol_control_pa
rameters==1 | 437 if(s->codec_tag == AV_RL32("DIVX") && s->vo_type==0 && s->vol_control_pa
rameters==1 |
438 && s->padding_bug_score > 0 && s->low_delay) // XVID with modified fo
urcc | 438 && s->padding_bug_score > 0 && s->low_delay) // XVID with modified fo
urcc |
439 s->xvid_build= -1; | 439 s->xvid_build= 0; |
440 #endif | 440 #endif |
441 } | 441 } |
442 | 442 |
443 if(s->xvid_build==0 && s->divx_version==0 && s->lavc_build==0){ | 443 if(s->xvid_build==-1 && s->divx_version==-1 && s->lavc_build==-1){ |
444 if(s->codec_tag == AV_RL32("DIVX") && s->vo_type==0 && s->vol_control_pa
rameters==0) | 444 if(s->codec_tag == AV_RL32("DIVX") && s->vo_type==0 && s->vol_control_pa
rameters==0) |
445 s->divx_version= 400; //divx 4 | 445 s->divx_version= 400; //divx 4 |
446 } | 446 } |
447 | 447 |
448 if(s->xvid_build && s->divx_version){ | 448 if(s->xvid_build>=0 && s->divx_version>=0){ |
449 s->divx_version= | 449 s->divx_version= |
450 s->divx_build= 0; | 450 s->divx_build= -1; |
451 } | 451 } |
452 | 452 |
453 if(s->workaround_bugs&FF_BUG_AUTODETECT){ | 453 if(s->workaround_bugs&FF_BUG_AUTODETECT){ |
454 if(s->codec_tag == AV_RL32("XVIX")) | 454 if(s->codec_tag == AV_RL32("XVIX")) |
455 s->workaround_bugs|= FF_BUG_XVID_ILACE; | 455 s->workaround_bugs|= FF_BUG_XVID_ILACE; |
456 | 456 |
457 if(s->codec_tag == AV_RL32("UMP4")){ | 457 if(s->codec_tag == AV_RL32("UMP4")){ |
458 s->workaround_bugs|= FF_BUG_UMP4; | 458 s->workaround_bugs|= FF_BUG_UMP4; |
459 } | 459 } |
460 | 460 |
461 if(s->divx_version>=500 && s->divx_build<1814){ | 461 if(s->divx_version>=500 && s->divx_build<1814){ |
462 s->workaround_bugs|= FF_BUG_QPEL_CHROMA; | 462 s->workaround_bugs|= FF_BUG_QPEL_CHROMA; |
463 } | 463 } |
464 | 464 |
465 if(s->divx_version>502 && s->divx_build<1814){ | 465 if(s->divx_version>502 && s->divx_build<1814){ |
466 s->workaround_bugs|= FF_BUG_QPEL_CHROMA2; | 466 s->workaround_bugs|= FF_BUG_QPEL_CHROMA2; |
467 } | 467 } |
468 | 468 |
469 if(s->xvid_build && s->xvid_build<=3) | 469 if(s->xvid_build<=3U) |
470 s->padding_bug_score= 256*256*256*64; | 470 s->padding_bug_score= 256*256*256*64; |
471 | 471 |
472 if(s->xvid_build && s->xvid_build<=1) | 472 if(s->xvid_build<=1U) |
473 s->workaround_bugs|= FF_BUG_QPEL_CHROMA; | 473 s->workaround_bugs|= FF_BUG_QPEL_CHROMA; |
474 | 474 |
475 if(s->xvid_build && s->xvid_build<=12) | 475 if(s->xvid_build<=12U) |
476 s->workaround_bugs|= FF_BUG_EDGE; | 476 s->workaround_bugs|= FF_BUG_EDGE; |
477 | 477 |
478 if(s->xvid_build && s->xvid_build<=32) | 478 if(s->xvid_build<=32U) |
479 s->workaround_bugs|= FF_BUG_DC_CLIP; | 479 s->workaround_bugs|= FF_BUG_DC_CLIP; |
480 | 480 |
481 #define SET_QPEL_FUNC(postfix1, postfix2) \ | 481 #define SET_QPEL_FUNC(postfix1, postfix2) \ |
482 s->dsp.put_ ## postfix1 = ff_put_ ## postfix2;\ | 482 s->dsp.put_ ## postfix1 = ff_put_ ## postfix2;\ |
483 s->dsp.put_no_rnd_ ## postfix1 = ff_put_no_rnd_ ## postfix2;\ | 483 s->dsp.put_no_rnd_ ## postfix1 = ff_put_no_rnd_ ## postfix2;\ |
484 s->dsp.avg_ ## postfix1 = ff_avg_ ## postfix2; | 484 s->dsp.avg_ ## postfix1 = ff_avg_ ## postfix2; |
485 | 485 |
486 if(s->lavc_build && s->lavc_build<4653) | 486 if(s->lavc_build<4653U) |
487 s->workaround_bugs|= FF_BUG_STD_QPEL; | 487 s->workaround_bugs|= FF_BUG_STD_QPEL; |
488 | 488 |
489 if(s->lavc_build && s->lavc_build<4655) | 489 if(s->lavc_build<4655U) |
490 s->workaround_bugs|= FF_BUG_DIRECT_BLOCKSIZE; | 490 s->workaround_bugs|= FF_BUG_DIRECT_BLOCKSIZE; |
491 | 491 |
492 if(s->lavc_build && s->lavc_build<4670){ | 492 if(s->lavc_build<4670U){ |
493 s->workaround_bugs|= FF_BUG_EDGE; | 493 s->workaround_bugs|= FF_BUG_EDGE; |
494 } | 494 } |
495 | 495 |
496 if(s->lavc_build && s->lavc_build<=4712) | 496 if(s->lavc_build<=4712U) |
497 s->workaround_bugs|= FF_BUG_DC_CLIP; | 497 s->workaround_bugs|= FF_BUG_DC_CLIP; |
498 | 498 |
499 if(s->divx_version) | 499 if(s->divx_version>=0) |
500 s->workaround_bugs|= FF_BUG_DIRECT_BLOCKSIZE; | 500 s->workaround_bugs|= FF_BUG_DIRECT_BLOCKSIZE; |
501 //printf("padding_bug_score: %d\n", s->padding_bug_score); | 501 //printf("padding_bug_score: %d\n", s->padding_bug_score); |
502 if(s->divx_version==501 && s->divx_build==20020416) | 502 if(s->divx_version==501 && s->divx_build==20020416) |
503 s->padding_bug_score= 256*256*256*64; | 503 s->padding_bug_score= 256*256*256*64; |
504 | 504 |
505 if(s->divx_version && s->divx_version<500){ | 505 if(s->divx_version<500U){ |
506 s->workaround_bugs|= FF_BUG_EDGE; | 506 s->workaround_bugs|= FF_BUG_EDGE; |
507 } | 507 } |
508 | 508 |
509 if(s->divx_version) | 509 if(s->divx_version>=0) |
510 s->workaround_bugs|= FF_BUG_HPEL_CHROMA; | 510 s->workaround_bugs|= FF_BUG_HPEL_CHROMA; |
511 #if 0 | 511 #if 0 |
512 if(s->divx_version==500) | 512 if(s->divx_version==500) |
513 s->padding_bug_score= 256*256*256*64; | 513 s->padding_bug_score= 256*256*256*64; |
514 | 514 |
515 /* very ugly XVID padding bug detection FIXME/XXX solve this differently | 515 /* very ugly XVID padding bug detection FIXME/XXX solve this differently |
516 * Let us hope this at least works. | 516 * Let us hope this at least works. |
517 */ | 517 */ |
518 if( s->resync_marker==0 && s->data_partitioning==0 && s->divx_version=
=0 | 518 if( s->resync_marker==0 && s->data_partitioning==0 && s->divx_version=
=-1 |
519 && s->codec_id==CODEC_ID_MPEG4 && s->vo_type==0) | 519 && s->codec_id==CODEC_ID_MPEG4 && s->vo_type==0) |
520 s->workaround_bugs|= FF_BUG_NO_PADDING; | 520 s->workaround_bugs|= FF_BUG_NO_PADDING; |
521 | 521 |
522 if(s->lavc_build && s->lavc_build<4609) //FIXME not sure about the versi
on num but a 4609 file seems ok | 522 if(s->lavc_build<4609U) //FIXME not sure about the version num but a 460
9 file seems ok |
523 s->workaround_bugs|= FF_BUG_NO_PADDING; | 523 s->workaround_bugs|= FF_BUG_NO_PADDING; |
524 #endif | 524 #endif |
525 } | 525 } |
526 | 526 |
527 if(s->workaround_bugs& FF_BUG_STD_QPEL){ | 527 if(s->workaround_bugs& FF_BUG_STD_QPEL){ |
528 SET_QPEL_FUNC(qpel_pixels_tab[0][ 5], qpel16_mc11_old_c) | 528 SET_QPEL_FUNC(qpel_pixels_tab[0][ 5], qpel16_mc11_old_c) |
529 SET_QPEL_FUNC(qpel_pixels_tab[0][ 7], qpel16_mc31_old_c) | 529 SET_QPEL_FUNC(qpel_pixels_tab[0][ 7], qpel16_mc31_old_c) |
530 SET_QPEL_FUNC(qpel_pixels_tab[0][ 9], qpel16_mc12_old_c) | 530 SET_QPEL_FUNC(qpel_pixels_tab[0][ 9], qpel16_mc12_old_c) |
531 SET_QPEL_FUNC(qpel_pixels_tab[0][11], qpel16_mc32_old_c) | 531 SET_QPEL_FUNC(qpel_pixels_tab[0][11], qpel16_mc32_old_c) |
532 SET_QPEL_FUNC(qpel_pixels_tab[0][13], qpel16_mc13_old_c) | 532 SET_QPEL_FUNC(qpel_pixels_tab[0][13], qpel16_mc13_old_c) |
(...skipping 14 matching lines...) Expand all Loading... |
547 | 547 |
548 #if 0 // dump bits per frame / qp / complexity | 548 #if 0 // dump bits per frame / qp / complexity |
549 { | 549 { |
550 static FILE *f=NULL; | 550 static FILE *f=NULL; |
551 if(!f) f=fopen("rate_qp_cplx.txt", "w"); | 551 if(!f) f=fopen("rate_qp_cplx.txt", "w"); |
552 fprintf(f, "%d %d %f\n", buf_size, s->qscale, buf_size*(double)s->qscale); | 552 fprintf(f, "%d %d %f\n", buf_size, s->qscale, buf_size*(double)s->qscale); |
553 } | 553 } |
554 #endif | 554 #endif |
555 | 555 |
556 #if HAVE_MMX | 556 #if HAVE_MMX |
557 if(s->codec_id == CODEC_ID_MPEG4 && s->xvid_build && avctx->idct_algo == FF_
IDCT_AUTO && (mm_flags & FF_MM_MMX)){ | 557 if(s->codec_id == CODEC_ID_MPEG4 && s->xvid_build>=0 && avctx->idct_algo ==
FF_IDCT_AUTO && (mm_flags & FF_MM_MMX)){ |
558 avctx->idct_algo= FF_IDCT_XVIDMMX; | 558 avctx->idct_algo= FF_IDCT_XVIDMMX; |
559 avctx->coded_width= 0; // force reinit | 559 avctx->coded_width= 0; // force reinit |
560 // dsputil_init(&s->dsp, avctx); | 560 // dsputil_init(&s->dsp, avctx); |
561 s->picture_number=0; | 561 s->picture_number=0; |
562 } | 562 } |
563 #endif | 563 #endif |
564 | 564 |
565 /* After H263 & mpeg4 header decode we have the height, width,*/ | 565 /* After H263 & mpeg4 header decode we have the height, width,*/ |
566 /* and other parameters. So then we could init the picture */ | 566 /* and other parameters. So then we could init the picture */ |
567 /* FIXME: By the way H263 decoder is evolving it should have */ | 567 /* FIXME: By the way H263 decoder is evolving it should have */ |
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
616 s->me.qpel_put= s->dsp.put_no_rnd_qpel_pixels_tab; | 616 s->me.qpel_put= s->dsp.put_no_rnd_qpel_pixels_tab; |
617 s->me.qpel_avg= s->dsp.avg_qpel_pixels_tab; | 617 s->me.qpel_avg= s->dsp.avg_qpel_pixels_tab; |
618 } | 618 } |
619 | 619 |
620 if(MPV_frame_start(s, avctx) < 0) | 620 if(MPV_frame_start(s, avctx) < 0) |
621 return -1; | 621 return -1; |
622 | 622 |
623 if (!s->divx_packed) ff_thread_finish_setup(avctx); | 623 if (!s->divx_packed) ff_thread_finish_setup(avctx); |
624 | 624 |
625 if (CONFIG_MPEG4_VDPAU_DECODER && (s->avctx->codec->capabilities & CODEC_CAP
_HWACCEL_VDPAU)) { | 625 if (CONFIG_MPEG4_VDPAU_DECODER && (s->avctx->codec->capabilities & CODEC_CAP
_HWACCEL_VDPAU)) { |
626 ff_vdpau_mpeg4_decode_picture(s, buf, buf_size); | 626 ff_vdpau_mpeg4_decode_picture(s, s->gb.buffer, s->gb.buffer_end - s->gb.
buffer); |
627 goto frame_end; | 627 goto frame_end; |
628 } | 628 } |
629 | 629 |
630 if (avctx->hwaccel) { | 630 if (avctx->hwaccel) { |
631 if (avctx->hwaccel->start_frame(avctx, buf, buf_size) < 0) | 631 if (avctx->hwaccel->start_frame(avctx, s->gb.buffer, s->gb.buffer_end -
s->gb.buffer) < 0) |
632 return -1; | 632 return -1; |
633 } | 633 } |
634 | 634 |
635 ff_er_frame_start(s); | 635 ff_er_frame_start(s); |
636 | 636 |
637 //the second part of the wmv2 header contains the MB skip bits which are sto
red in current_picture->mb_type | 637 //the second part of the wmv2 header contains the MB skip bits which are sto
red in current_picture->mb_type |
638 //which is not available before MPV_frame_start() | 638 //which is not available before MPV_frame_start() |
639 if (CONFIG_WMV2_DECODER && s->msmpeg4_version==5){ | 639 if (CONFIG_WMV2_DECODER && s->msmpeg4_version==5){ |
640 ret = ff_wmv2_decode_secondary_picture_header(s); | 640 ret = ff_wmv2_decode_secondary_picture_header(s); |
641 if(ret<0) return ret; | 641 if(ret<0) return ret; |
(...skipping 19 matching lines...) Expand all Loading... |
661 | 661 |
662 decode_slice(s); | 662 decode_slice(s); |
663 } | 663 } |
664 | 664 |
665 if (s->h263_msmpeg4 && s->msmpeg4_version<4 && s->pict_type==FF_I_TYPE) | 665 if (s->h263_msmpeg4 && s->msmpeg4_version<4 && s->pict_type==FF_I_TYPE) |
666 if(!CONFIG_MSMPEG4_DECODER || msmpeg4_decode_ext_header(s, buf_size) < 0
){ | 666 if(!CONFIG_MSMPEG4_DECODER || msmpeg4_decode_ext_header(s, buf_size) < 0
){ |
667 s->error_status_table[s->mb_num-1]= AC_ERROR|DC_ERROR|MV_ERROR; | 667 s->error_status_table[s->mb_num-1]= AC_ERROR|DC_ERROR|MV_ERROR; |
668 } | 668 } |
669 | 669 |
670 assert(s->bitstream_buffer_size==0); | 670 assert(s->bitstream_buffer_size==0); |
| 671 frame_end: |
671 /* divx 5.01+ bistream reorder stuff */ | 672 /* divx 5.01+ bistream reorder stuff */ |
672 if(s->codec_id==CODEC_ID_MPEG4 && s->divx_packed){ | 673 if(s->codec_id==CODEC_ID_MPEG4 && s->divx_packed){ |
673 int current_pos= get_bits_count(&s->gb)>>3; | 674 int current_pos= get_bits_count(&s->gb)>>3; |
674 int startcode_found=0; | 675 int startcode_found=0; |
675 | 676 |
676 if(buf_size - current_pos > 5){ | 677 if(buf_size - current_pos > 5){ |
677 int i; | 678 int i; |
678 for(i=current_pos; i<buf_size-3; i++){ | 679 for(i=current_pos; i<buf_size-3; i++){ |
679 if(buf[i]==0 && buf[i+1]==0 && buf[i+2]==1 && buf[i+3]==0xB6){ | 680 if(buf[i]==0 && buf[i+1]==0 && buf[i+2]==1 && buf[i+3]==0xB6){ |
680 startcode_found=1; | 681 startcode_found=1; |
681 break; | 682 break; |
682 } | 683 } |
683 } | 684 } |
684 } | 685 } |
685 if(s->gb.buffer == s->bitstream_buffer && buf_size>7 && s->xvid_build){
//xvid style | 686 if(s->gb.buffer == s->bitstream_buffer && buf_size>7 && s->xvid_build>=0
){ //xvid style |
686 startcode_found=1; | 687 startcode_found=1; |
687 current_pos=0; | 688 current_pos=0; |
688 } | 689 } |
689 | 690 |
690 if(startcode_found){ | 691 if(startcode_found){ |
691 av_fast_malloc( | 692 av_fast_malloc( |
692 &s->bitstream_buffer, | 693 &s->bitstream_buffer, |
693 &s->allocated_bitstream_buffer_size, | 694 &s->allocated_bitstream_buffer_size, |
694 buf_size - current_pos + FF_INPUT_BUFFER_PADDING_SIZE); | 695 buf_size - current_pos + FF_INPUT_BUFFER_PADDING_SIZE); |
695 if (!s->bitstream_buffer) | 696 if (!s->bitstream_buffer) |
696 return AVERROR(ENOMEM); | 697 return AVERROR(ENOMEM); |
697 memcpy(s->bitstream_buffer, buf + current_pos, buf_size - current_po
s); | 698 memcpy(s->bitstream_buffer, buf + current_pos, buf_size - current_po
s); |
698 s->bitstream_buffer_size= buf_size - current_pos; | 699 s->bitstream_buffer_size= buf_size - current_pos; |
699 } | 700 } |
700 } | 701 } |
701 | 702 |
702 intrax8_decoded: | 703 intrax8_decoded: |
703 ff_er_frame_end(s); | 704 ff_er_frame_end(s); |
704 | 705 |
705 frame_end: | |
706 if (avctx->hwaccel) { | 706 if (avctx->hwaccel) { |
707 if (avctx->hwaccel->end_frame(avctx) < 0) | 707 if (avctx->hwaccel->end_frame(avctx) < 0) |
708 return -1; | 708 return -1; |
709 } | 709 } |
710 | 710 |
711 MPV_frame_end(s); | 711 MPV_frame_end(s); |
712 | 712 |
713 assert(s->current_picture.pict_type == s->current_picture_ptr->pict_type); | 713 assert(s->current_picture.pict_type == s->current_picture_ptr->pict_type); |
714 assert(s->current_picture.pict_type == s->pict_type); | 714 assert(s->current_picture.pict_type == s->pict_type); |
715 if (s->pict_type == FF_B_TYPE || s->low_delay) { | 715 if (s->pict_type == FF_B_TYPE || s->low_delay) { |
(...skipping 21 matching lines...) Expand all Loading... |
737 sizeof(MpegEncContext), | 737 sizeof(MpegEncContext), |
738 ff_h263_decode_init, | 738 ff_h263_decode_init, |
739 NULL, | 739 NULL, |
740 ff_h263_decode_end, | 740 ff_h263_decode_end, |
741 ff_h263_decode_frame, | 741 ff_h263_decode_frame, |
742 CODEC_CAP_DRAW_HORIZ_BAND | CODEC_CAP_DR1 | CODEC_CAP_TRUNCATED | CODEC_CAP_
DELAY, | 742 CODEC_CAP_DRAW_HORIZ_BAND | CODEC_CAP_DR1 | CODEC_CAP_TRUNCATED | CODEC_CAP_
DELAY, |
743 .flush= ff_mpeg_flush, | 743 .flush= ff_mpeg_flush, |
744 .long_name= NULL_IF_CONFIG_SMALL("H.263 / H.263-1996, H.263+ / H.263-1998 /
H.263 version 2"), | 744 .long_name= NULL_IF_CONFIG_SMALL("H.263 / H.263-1996, H.263+ / H.263-1998 /
H.263 version 2"), |
745 .pix_fmts= ff_hwaccel_pixfmt_list_420, | 745 .pix_fmts= ff_hwaccel_pixfmt_list_420, |
746 }; | 746 }; |
OLD | NEW |