Ticket #7470: libquicktime-1.2.4-ffmpeg3.patch
File libquicktime-1.2.4-ffmpeg3.patch, 33.2 KB (added by , 8 years ago) |
---|
-
plugins/ffmpeg/audio.c
a b 45 45 #define ENCODE_AUDIO 1 46 46 #endif 47 47 48 #ifndef AVCODEC_MAX_AUDIO_FRAME_SIZE 49 /* from libavcodec/avcodec.h dated Dec 23 2012 */ 50 #define AVCODEC_MAX_AUDIO_FRAME_SIZE 192000 // 1 second of 48khz 32bit audio 51 #endif 52 48 53 /* The following code was ported from gmerlin_avdecoder (http://gmerlin.sourceforge.net) */ 49 54 50 55 /* MPEG Audio header parsing code */ … … 626 631 { 627 632 /* If the codec is mp3, make sure to decode the very last frame */ 628 633 629 if((codec->avctx->codec_id == CODEC_ID_MP3) &&634 if((codec->avctx->codec_id == AV_CODEC_ID_MP3) && 630 635 (codec->bytes_in_chunk_buffer >= 4)) 631 636 { 632 637 if(!mpa_decode_header(&mph, codec->chunk_buffer, (const mpa_header*)0)) … … 695 700 696 701 /* Some really broken mp3 files have the header bytes split across 2 chunks */ 697 702 698 if(codec->avctx->codec_id == CODEC_ID_MP3)703 if(codec->avctx->codec_id == AV_CODEC_ID_MP3) 699 704 { 700 705 if(codec->bytes_in_chunk_buffer < 4) 701 706 { … … 806 811 807 812 if(bytes_decoded < 0) 808 813 { 809 if(codec->avctx->codec_id == CODEC_ID_MP3)814 if(codec->avctx->codec_id == AV_CODEC_ID_MP3) 810 815 { 811 816 /* For mp3, bytes_decoded < 0 means, that the frame should be muted */ 812 817 memset(&codec->sample_buffer[track_map->channels * (codec->sample_buffer_end - … … 866 871 quicktime_audio_map_t *track_map = &file->atracks[track]; 867 872 quicktime_ffmpeg_audio_codec_t *codec = track_map->codec->priv; 868 873 869 if((codec->decoder->id == CODEC_ID_MP2) ||870 (codec->decoder->id == CODEC_ID_MP3))874 if((codec->decoder->id == AV_CODEC_ID_MP2) || 875 (codec->decoder->id == AV_CODEC_ID_MP3)) 871 876 { 872 877 mpa_header h; 873 878 uint32_t header; … … 909 914 else 910 915 track_map->ci.bitrate = h.bitrate; 911 916 } 912 else if(codec->decoder->id == CODEC_ID_AC3)917 else if(codec->decoder->id == AV_CODEC_ID_AC3) 913 918 { 914 919 a52_header h; 915 920 uint8_t * ptr; … … 986 991 #endif 987 992 /* Some codecs need extra stuff */ 988 993 989 if(codec->decoder->id == CODEC_ID_ALAC)994 if(codec->decoder->id == AV_CODEC_ID_ALAC) 990 995 { 991 996 header = quicktime_wave_get_user_atom(track_map->track, "alac", &header_len); 992 997 if(header) … … 995 1000 codec->avctx->extradata_size = header_len; 996 1001 } 997 1002 } 998 if(codec->decoder->id == CODEC_ID_QDM2)1003 if(codec->decoder->id == AV_CODEC_ID_QDM2) 999 1004 { 1000 1005 header = quicktime_wave_get_user_atom(track_map->track, "QDCA", &header_len); 1001 1006 if(header) … … 1261 1266 pkt.data = codec->chunk_buffer; 1262 1267 pkt.size = codec->chunk_buffer_alloc; 1263 1268 1264 av codec_get_frame_defaults(&f);1269 av_frame_unref(&f); 1265 1270 f.nb_samples = codec->avctx->frame_size; 1266 1271 1267 1272 avcodec_fill_audio_frame(&f, channels, codec->avctx->sample_fmt, … … 1495 1500 codec_base->decode_audio = lqt_ffmpeg_decode_audio; 1496 1501 codec_base->set_parameter = set_parameter; 1497 1502 1498 if((decoder->id == CODEC_ID_MP3) || (decoder->id ==CODEC_ID_MP2))1503 if((decoder->id == AV_CODEC_ID_MP3) || (decoder->id == AV_CODEC_ID_MP2)) 1499 1504 codec_base->read_packet = read_packet_mpa; 1500 else if(decoder->id == CODEC_ID_AC3)1505 else if(decoder->id == AV_CODEC_ID_AC3) 1501 1506 { 1502 1507 codec_base->write_packet = write_packet_ac3; 1503 1508 codec_base->read_packet = read_packet_ac3; -
plugins/ffmpeg/ffmpeg.h
a b 27 27 28 28 #include <quicktime/qtprivate.h> 29 29 #include AVCODEC_HEADER 30 #include <libavutil/mem.h> 30 31 31 32 void quicktime_init_video_codec_ffmpeg(quicktime_codec_t * codec, 32 33 quicktime_video_map_t *vtrack, -
plugins/ffmpeg/lqt_ffmpeg.c
a b 386 386 struct CODECIDMAP codecidmap_v[] = 387 387 { 388 388 { 389 .id = CODEC_ID_MPEG1VIDEO,389 .id = AV_CODEC_ID_MPEG1VIDEO, 390 390 .index = -1, 391 391 .encoder = NULL, 392 392 .decoder = NULL, … … 397 397 .wav_ids = { LQT_WAV_ID_NONE } 398 398 }, 399 399 { 400 .id = CODEC_ID_MPEG4,400 .id = AV_CODEC_ID_MPEG4, 401 401 .index = -1, 402 402 .encoder = NULL, 403 403 .decoder = NULL, … … 415 415 .compression_id = LQT_COMPRESSION_MPEG4_ASP, 416 416 }, 417 417 { 418 .id = CODEC_ID_MSMPEG4V1,418 .id = AV_CODEC_ID_MSMPEG4V1, 419 419 .index = -1, 420 420 .encoder = NULL, 421 421 .decoder = NULL, … … 426 426 .wav_ids = { LQT_WAV_ID_NONE }, 427 427 }, 428 428 { 429 .id = CODEC_ID_MSMPEG4V2,429 .id = AV_CODEC_ID_MSMPEG4V2, 430 430 .index = -1, 431 431 .encoder = NULL, 432 432 .decoder = NULL, … … 437 437 .wav_ids = { LQT_WAV_ID_NONE }, 438 438 }, 439 439 { 440 .id = CODEC_ID_MSMPEG4V3,440 .id = AV_CODEC_ID_MSMPEG4V3, 441 441 .index = -1, 442 442 .encoder = NULL, 443 443 .decoder = NULL, … … 453 453 .do_encode = 1, 454 454 }, 455 455 { 456 .id = CODEC_ID_MSMPEG4V3,456 .id = AV_CODEC_ID_MSMPEG4V3, 457 457 .index = -1, 458 458 .encoder = NULL, 459 459 .decoder = NULL, … … 468 468 }, 469 469 #if 0 470 470 { 471 .id = CODEC_ID_WMV1,471 .id = AV_CODEC_ID_WMV1, 472 472 .index = -1, 473 473 .encoder = NULL, 474 474 .decoder = NULL, … … 481 481 }, 482 482 #endif 483 483 { 484 .id = CODEC_ID_H263,484 .id = AV_CODEC_ID_H263, 485 485 .index = -1, 486 486 .encoder = NULL, 487 487 .decoder = NULL, … … 493 493 .compatibility_flags = LQT_FILE_QT_OLD | LQT_FILE_QT | LQT_FILE_MP4 | LQT_FILE_3GP, 494 494 }, 495 495 { 496 .id = CODEC_ID_H263,496 .id = AV_CODEC_ID_H263, 497 497 .index = -1, 498 498 .encoder = NULL, 499 499 .decoder = NULL, … … 508 508 .do_encode = 1, 509 509 }, 510 510 { 511 .id = CODEC_ID_H264,511 .id = AV_CODEC_ID_H264, 512 512 .index = -1, 513 513 .encoder = NULL, 514 514 .decoder = NULL, … … 519 519 .wav_ids = { LQT_WAV_ID_NONE }, 520 520 }, 521 521 { 522 .id = CODEC_ID_H263P,522 .id = AV_CODEC_ID_H263P, 523 523 .index = -1, 524 524 .encoder = NULL, 525 525 .decoder = NULL, … … 533 533 .do_encode = 1, 534 534 }, 535 535 { 536 .id = CODEC_ID_H263I,536 .id = AV_CODEC_ID_H263I, 537 537 .index = -1, 538 538 .encoder = NULL, 539 539 .decoder = NULL, … … 544 544 .wav_ids = { LQT_WAV_ID_NONE }, 545 545 }, 546 546 { 547 .id = CODEC_ID_SVQ1,547 .id = AV_CODEC_ID_SVQ1, 548 548 .index = -1, 549 549 .encoder = NULL, 550 550 .decoder = NULL, … … 555 555 .wav_ids = { LQT_WAV_ID_NONE }, 556 556 }, 557 557 { 558 .id = CODEC_ID_SVQ3,558 .id = AV_CODEC_ID_SVQ3, 559 559 .index = -1, 560 560 .encoder = NULL, 561 561 .decoder = NULL, … … 566 566 .wav_ids = { LQT_WAV_ID_NONE }, 567 567 }, 568 568 { 569 .id = CODEC_ID_MJPEG,569 .id = AV_CODEC_ID_MJPEG, 570 570 .index = -1, 571 571 .encoder = NULL, 572 572 .decoder = NULL, … … 580 580 .do_encode = 1, 581 581 }, 582 582 { 583 .id = CODEC_ID_MJPEGB,583 .id = AV_CODEC_ID_MJPEGB, 584 584 .index = -1, 585 585 .encoder = NULL, 586 586 .decoder = NULL, … … 594 594 }, 595 595 #if LIBAVCODEC_BUILD >= 3346688 596 596 { 597 .id = CODEC_ID_TARGA,597 .id = AV_CODEC_ID_TARGA, 598 598 .index = -1, 599 599 .encoder = NULL, 600 600 .decoder = NULL, … … 606 606 #endif 607 607 #if LIBAVCODEC_BUILD >= 3347456 608 608 { 609 .id = CODEC_ID_TIFF,609 .id = AV_CODEC_ID_TIFF, 610 610 .index = -1, 611 611 .encoder = NULL, 612 612 .decoder = NULL, … … 617 617 }, 618 618 #endif 619 619 { 620 .id = CODEC_ID_8BPS,620 .id = AV_CODEC_ID_8BPS, 621 621 .index = -1, 622 622 .encoder = NULL, 623 623 .decoder = NULL, … … 627 627 .wav_ids = { LQT_WAV_ID_NONE }, 628 628 }, 629 629 { 630 .id = CODEC_ID_INDEO3,630 .id = AV_CODEC_ID_INDEO3, 631 631 .index = -1, 632 632 .encoder = NULL, 633 633 .decoder = NULL, … … 638 638 .wav_ids = { LQT_WAV_ID_NONE }, 639 639 }, 640 640 { 641 .id = CODEC_ID_RPZA,641 .id = AV_CODEC_ID_RPZA, 642 642 .index = -1, 643 643 .encoder = NULL, 644 644 .decoder = NULL, … … 648 648 .wav_ids = { LQT_WAV_ID_NONE }, 649 649 }, 650 650 { 651 .id = CODEC_ID_SMC,651 .id = AV_CODEC_ID_SMC, 652 652 .index = -1, 653 653 .encoder = NULL, 654 654 .decoder = NULL, … … 658 658 .wav_ids = { LQT_WAV_ID_NONE }, 659 659 }, 660 660 { 661 .id = CODEC_ID_CINEPAK,661 .id = AV_CODEC_ID_CINEPAK, 662 662 .index = -1, 663 663 .encoder = NULL, 664 664 .decoder = NULL, … … 669 669 .wav_ids = { LQT_WAV_ID_NONE }, 670 670 }, 671 671 { 672 .id = CODEC_ID_CYUV,672 .id = AV_CODEC_ID_CYUV, 673 673 .index = -1, 674 674 .encoder = NULL, 675 675 .decoder = NULL, … … 680 680 .wav_ids = { LQT_WAV_ID_NONE }, 681 681 }, 682 682 { 683 .id = CODEC_ID_QTRLE,683 .id = AV_CODEC_ID_QTRLE, 684 684 .index = -1, 685 685 .encoder = NULL, 686 686 .decoder = NULL, … … 693 693 .encoding_colormodels = (int[]){ BC_RGB888, BC_RGBA8888, LQT_COLORMODEL_NONE }, 694 694 }, 695 695 { 696 .id = CODEC_ID_MSRLE,696 .id = AV_CODEC_ID_MSRLE, 697 697 .index = -1, 698 698 .encoder = NULL, 699 699 .decoder = NULL, … … 703 703 .wav_ids = { LQT_WAV_ID_NONE }, 704 704 }, 705 705 { 706 .id = CODEC_ID_DVVIDEO,706 .id = AV_CODEC_ID_DVVIDEO, 707 707 .index = -1, 708 708 .encoder = NULL, 709 709 .decoder = NULL, … … 719 719 .image_sizes = image_sizes_dv, 720 720 }, 721 721 { 722 .id = CODEC_ID_DVVIDEO,722 .id = AV_CODEC_ID_DVVIDEO, 723 723 .index = -1, 724 724 .encoder = NULL, 725 725 .decoder = NULL, … … 735 735 .image_sizes = image_sizes_dv, 736 736 }, 737 737 { 738 .id = CODEC_ID_DVVIDEO,738 .id = AV_CODEC_ID_DVVIDEO, 739 739 .index = -1, 740 740 .encoder = NULL, 741 741 .decoder = NULL, … … 751 751 }, 752 752 /* DVCPRO HD (decoding only for now) */ 753 753 { 754 .id = CODEC_ID_DVVIDEO,754 .id = AV_CODEC_ID_DVVIDEO, 755 755 .index = -1, 756 756 .encoder = NULL, 757 757 .decoder = NULL, … … 772 772 // .do_encode = 1 773 773 }, 774 774 { 775 .id = CODEC_ID_FFVHUFF,775 .id = AV_CODEC_ID_FFVHUFF, 776 776 .index = -1, 777 777 .encoder = NULL, 778 778 .decoder = NULL, … … 785 785 .do_encode = 1 786 786 }, 787 787 { 788 .id = CODEC_ID_FFV1,788 .id = AV_CODEC_ID_FFV1, 789 789 .index = -1, 790 790 .encoder = NULL, 791 791 .decoder = NULL, … … 801 801 }, 802 802 #if LIBAVCODEC_BUILD >= 3352576 803 803 { 804 .id = CODEC_ID_DNXHD,804 .id = AV_CODEC_ID_DNXHD, 805 805 .index = -1, 806 806 .encoder = NULL, 807 807 .decoder = NULL, … … 817 817 }, 818 818 #endif 819 819 { 820 .id = CODEC_ID_MPEG2VIDEO,820 .id = AV_CODEC_ID_MPEG2VIDEO, 821 821 .index = -1, 822 822 .encoder = NULL, 823 823 .decoder = NULL, … … 839 839 struct CODECIDMAP codecidmap_a[] = 840 840 { 841 841 { 842 .id = CODEC_ID_MP3,842 .id = AV_CODEC_ID_MP3, 843 843 .index = -1, 844 844 .encoder = NULL, 845 845 .decoder = NULL, … … 851 851 .wav_ids = { 0x50, 0x55, LQT_WAV_ID_NONE }, 852 852 }, 853 853 { 854 .id = CODEC_ID_MP2,854 .id = AV_CODEC_ID_MP2, 855 855 .index = -1, 856 856 .encoder = NULL, 857 857 .decoder = NULL, … … 866 866 .compression_id = LQT_COMPRESSION_MP2, 867 867 }, 868 868 { 869 .id = CODEC_ID_AC3,869 .id = AV_CODEC_ID_AC3, 870 870 .index = -1, 871 871 .encoder = NULL, 872 872 .decoder = NULL, … … 881 881 .compression_id = LQT_COMPRESSION_AC3, 882 882 }, 883 883 { 884 .id = CODEC_ID_QDM2,884 .id = AV_CODEC_ID_QDM2, 885 885 .index = -1, 886 886 .encoder = NULL, 887 887 .decoder = NULL, … … 896 896 #if 1 897 897 /* Doesn't work as long as audio chunks are not split into VBR "Samples" */ 898 898 { 899 .id = CODEC_ID_ALAC,899 .id = AV_CODEC_ID_ALAC, 900 900 .index = -1, 901 901 .encoder = NULL, 902 902 .decoder = NULL, … … 909 909 #if 1 910 910 /* Sounds ugly */ 911 911 { 912 .id = CODEC_ID_ADPCM_MS,912 .id = AV_CODEC_ID_ADPCM_MS, 913 913 .index = -1, 914 914 .encoder = NULL, 915 915 .decoder = NULL, … … 922 922 #if 1 923 923 /* Sounds ugly */ 924 924 { 925 .id = CODEC_ID_ADPCM_IMA_WAV,925 .id = AV_CODEC_ID_ADPCM_IMA_WAV, 926 926 .index = -1, 927 927 .encoder = NULL, 928 928 .decoder = NULL, -
plugins/ffmpeg/params.c
a b 101 101 } \ 102 102 } 103 103 104 #define PARAM_DICT_INT(name, dict_name) \ 105 { \ 106 if(!strcasecmp(name, key)) \ 107 { \ 108 char buf[128]; \ 109 snprintf(buf, sizeof(buf), "%d", *(int*)value); \ 110 av_dict_set(options, dict_name, buf, 0); \ 111 found = 1; \ 112 } \ 113 } 114 104 115 #define PARAM_DICT_FLAG(name, dict_name) \ 105 116 { \ 106 117 if(!strcasecmp(name, key)) \ … … 202 213 PARAM_INT("ff_max_b_frames",max_b_frames); 203 214 PARAM_FLOAT("ff_b_quant_factor",b_quant_factor); 204 215 PARAM_INT("ff_b_frame_strategy",b_frame_strategy); 216 217 #if LIBAVCODEC_VERSION_MAJOR >= 55 218 PARAM_DICT_INT("ff_luma_elim_threshold","luma_elim_threshold"); 219 PARAM_DICT_INT("ff_chroma_elim_threshold","chroma_elim_threshold"); 220 #else 205 221 PARAM_INT("ff_luma_elim_threshold",luma_elim_threshold); 206 222 PARAM_INT("ff_chroma_elim_threshold",chroma_elim_threshold); 223 #endif 224 207 225 PARAM_INT("ff_strict_std_compliance",strict_std_compliance); 208 226 PARAM_QP2LAMBDA("ff_b_quant_offset",b_quant_offset); 209 227 PARAM_INT("ff_rc_min_rate",rc_min_rate); … … 241 259 PARAM_QP2LAMBDA("ff_lmax", lmax); 242 260 PARAM_INT("ff_noise_reduction",noise_reduction); 243 261 PARAM_INT_SCALE("ff_rc_initial_buffer_occupancy",rc_initial_buffer_occupancy,1000); 262 263 #if LIBAVCODEC_VERSION_MAJOR >= 55 264 PARAM_DICT_INT("ff_inter_threshold","inter_threshold"); 265 PARAM_DICT_INT("ff_quantizer_noise_shaping","quantizer_noise_shaping"); 266 #else 244 267 PARAM_INT("ff_inter_threshold",inter_threshold); 245 268 PARAM_INT("ff_quantizer_noise_shaping",quantizer_noise_shaping); 269 #endif 270 246 271 PARAM_INT("ff_thread_count",thread_count); 247 272 PARAM_INT("ff_me_threshold",me_threshold); 248 273 PARAM_INT("ff_mb_threshold",mb_threshold); … … 272 297 PARAM_FLAG("ff_flag_bitexact",CODEC_FLAG_BITEXACT); 273 298 PARAM_FLAG("ff_flag_ac_pred",CODEC_FLAG_AC_PRED); 274 299 // PARAM_FLAG("ff_flag_h263p_umv",CODEC_FLAG_H263P_UMV); // Unused 300 301 #if LIBAVCODEC_VERSION_MAJOR >= 55 302 PARAM_DICT_FLAG("ff_flag_cbp_rd","cbp_rd"); 303 PARAM_DICT_FLAG("ff_flag_qp_rd","qp_rd"); 304 PARAM_DICT_FLAG("ff_flag2_strict_gop","strict_gop"); 305 #else 275 306 PARAM_FLAG("ff_flag_cbp_rd",CODEC_FLAG_CBP_RD); 276 307 PARAM_FLAG("ff_flag_qp_rd",CODEC_FLAG_QP_RD); 308 PARAM_FLAG2("ff_flag2_strict_gop",CODEC_FLAG2_STRICT_GOP); 309 #endif 277 310 278 311 #if LIBAVCODEC_VERSION_MAJOR >= 54 279 312 PARAM_DICT_FLAG("ff_flag_h263p_aiv", "aiv"); … … 288 321 PARAM_FLAG("ff_flag_loop_filter",CODEC_FLAG_LOOP_FILTER); 289 322 PARAM_FLAG("ff_flag_closed_gop",CODEC_FLAG_CLOSED_GOP); 290 323 PARAM_FLAG2("ff_flag2_fast",CODEC_FLAG2_FAST); 291 PARAM_FLAG2("ff_flag2_strict_gop",CODEC_FLAG2_STRICT_GOP);292 324 PARAM_ENUM("ff_coder_type",coder_type,coder_type); 293 325 294 326 } -
plugins/ffmpeg/video.c
a b 37 37 #endif 38 38 39 39 40 #ifdef PIX_FMT_YUV422P1041 #define PIX_FMT_YUV422P10_OR_DUMMYPIX_FMT_YUV422P1040 #ifdef AV_PIX_FMT_YUV422P10 41 #define AV_PIX_FMT_YUV422P10_OR_DUMMY AV_PIX_FMT_YUV422P10 42 42 #else 43 #define PIX_FMT_YUV422P10_OR_DUMMY -123443 #define AV_PIX_FMT_YUV422P10_OR_DUMMY -1234 44 44 #endif 45 45 46 46 #if LIBAVCODEC_VERSION_INT >= ((54<<16)|(1<<8)|0) … … 90 90 int imx_bitrate; 91 91 int imx_strip_vbi; 92 92 93 /* In some cases FFMpeg would report something like PIX_FMT_YUV422P, while94 we would like to treat it as PIX_FMT_YUVJ422P. It's only used for decoding */95 enum PixelFormat reinterpret_pix_fmt;93 /* In some cases FFMpeg would report something like AV_PIX_FMT_YUV422P, while 94 we would like to treat it as AV_PIX_FMT_YUVJ422P. It's only used for decoding */ 95 enum AVPixelFormat reinterpret_pix_fmt; 96 96 97 97 int is_imx; 98 98 int y_offset; … … 137 137 138 138 static const struct 139 139 { 140 enum PixelFormat ffmpeg_id;140 enum AVPixelFormat ffmpeg_id; 141 141 int lqt_id; 142 142 int exact; 143 143 } 144 144 colormodels[] = 145 145 { 146 { PIX_FMT_YUV420P, BC_YUV420P, 1 }, ///< Planar YUV 4:2:0 (1 Cr & Cb sample per 2x2 Y samples)146 { AV_PIX_FMT_YUV420P, BC_YUV420P, 1 }, ///< Planar YUV 4:2:0 (1 Cr & Cb sample per 2x2 Y samples) 147 147 #if LIBAVUTIL_VERSION_INT < (50<<16) 148 { PIX_FMT_YUV422, BC_YUV422, 1 },148 { AV_PIX_FMT_YUV422, BC_YUV422, 1 }, 149 149 #else 150 { PIX_FMT_YUYV422, BC_YUV422, 1 },150 { AV_PIX_FMT_YUYV422, BC_YUV422, 1 }, 151 151 #endif 152 { PIX_FMT_RGB24, BC_RGB888, 1 }, ///< Packed pixel, 3 bytes per pixel, RGBRGB...153 { PIX_FMT_BGR24, BC_BGR888, 1 }, ///< Packed pixel, 3 bytes per pixel, BGRBGR...154 { PIX_FMT_YUV422P, BC_YUV422P, 1 }, ///< Planar YUV 4:2:2 (1 Cr & Cb sample per 2x1 Y samples)155 { PIX_FMT_YUV444P, BC_YUV444P, 1 }, ///< Planar YUV 4:4:4 (1 Cr & Cb sample per 1x1 Y samples)156 { PIX_FMT_YUV411P, BC_YUV411P, 1 }, ///< Planar YUV 4:1:1 (1 Cr & Cb sample per 4x1 Y samples)157 { PIX_FMT_YUV422P16, BC_YUV422P16, 1 }, ///< Planar 16 bit YUV 4:2:2 (1 Cr & Cb sample per 2x1 Y samples)158 #ifdef PIX_FMT_YUV422P10159 { PIX_FMT_YUV422P10, BC_YUV422P10, 1 }, ///< 10 bit samples in uint16_t containers, planar 4:2:2160 #endif 161 { PIX_FMT_RGB565, BC_RGB565, 1 }, ///< always stored in cpu endianness162 { PIX_FMT_YUVJ420P, BC_YUVJ420P, 1 }, ///< Planar YUV 4:2:0 full scale (jpeg)163 { PIX_FMT_YUVJ422P, BC_YUVJ422P, 1 }, ///< Planar YUV 4:2:2 full scale (jpeg)164 { PIX_FMT_YUVJ444P, BC_YUVJ444P, 1 }, ///< Planar YUV 4:4:4 full scale (jpeg)152 { AV_PIX_FMT_RGB24, BC_RGB888, 1 }, ///< Packed pixel, 3 bytes per pixel, RGBRGB... 153 { AV_PIX_FMT_BGR24, BC_BGR888, 1 }, ///< Packed pixel, 3 bytes per pixel, BGRBGR... 154 { AV_PIX_FMT_YUV422P, BC_YUV422P, 1 }, ///< Planar YUV 4:2:2 (1 Cr & Cb sample per 2x1 Y samples) 155 { AV_PIX_FMT_YUV444P, BC_YUV444P, 1 }, ///< Planar YUV 4:4:4 (1 Cr & Cb sample per 1x1 Y samples) 156 { AV_PIX_FMT_YUV411P, BC_YUV411P, 1 }, ///< Planar YUV 4:1:1 (1 Cr & Cb sample per 4x1 Y samples) 157 { AV_PIX_FMT_YUV422P16, BC_YUV422P16, 1 }, ///< Planar 16 bit YUV 4:2:2 (1 Cr & Cb sample per 2x1 Y samples) 158 #ifdef AV_PIX_FMT_YUV422P10 159 { AV_PIX_FMT_YUV422P10, BC_YUV422P10, 1 }, ///< 10 bit samples in uint16_t containers, planar 4:2:2 160 #endif 161 { AV_PIX_FMT_RGB565, BC_RGB565, 1 }, ///< always stored in cpu endianness 162 { AV_PIX_FMT_YUVJ420P, BC_YUVJ420P, 1 }, ///< Planar YUV 4:2:0 full scale (jpeg) 163 { AV_PIX_FMT_YUVJ422P, BC_YUVJ422P, 1 }, ///< Planar YUV 4:2:2 full scale (jpeg) 164 { AV_PIX_FMT_YUVJ444P, BC_YUVJ444P, 1 }, ///< Planar YUV 4:4:4 full scale (jpeg) 165 165 #if LIBAVUTIL_VERSION_INT < (50<<16) 166 { PIX_FMT_RGBA32, BC_RGBA8888, 0 }, ///< Packed pixel, 4 bytes per pixel, BGRABGRA...166 { AV_PIX_FMT_RGBA32, BC_RGBA8888, 0 }, ///< Packed pixel, 4 bytes per pixel, BGRABGRA... 167 167 #else 168 { PIX_FMT_RGB32, BC_RGBA8888, 0 }, ///< Packed pixel, 4 bytes per pixel, BGRABGRA...168 { AV_PIX_FMT_RGB32, BC_RGBA8888, 0 }, ///< Packed pixel, 4 bytes per pixel, BGRABGRA... 169 169 #endif 170 { PIX_FMT_RGB555, BC_RGB888, 0 }, ///< always stored in cpu endianness, most significant bit to 1171 { PIX_FMT_GRAY8, BC_RGB888, 0 },172 { PIX_FMT_MONOWHITE, BC_RGB888, 0 }, ///< 0 is white173 { PIX_FMT_MONOBLACK, BC_RGB888, 0 }, ///< 0 is black174 { PIX_FMT_PAL8, BC_RGB888, 0 }, ///< 8 bit with RGBA palette175 { PIX_FMT_YUV410P, BC_YUV420P, 0 }, ///< Planar YUV 4:1:0 (1 Cr & Cb sample per 4x4 Y samples)170 { AV_PIX_FMT_RGB555, BC_RGB888, 0 }, ///< always stored in cpu endianness, most significant bit to 1 171 { AV_PIX_FMT_GRAY8, BC_RGB888, 0 }, 172 { AV_PIX_FMT_MONOWHITE, BC_RGB888, 0 }, ///< 0 is white 173 { AV_PIX_FMT_MONOBLACK, BC_RGB888, 0 }, ///< 0 is black 174 { AV_PIX_FMT_PAL8, BC_RGB888, 0 }, ///< 8 bit with RGBA palette 175 { AV_PIX_FMT_YUV410P, BC_YUV420P, 0 }, ///< Planar YUV 4:1:0 (1 Cr & Cb sample per 4x4 Y samples) 176 176 }; 177 177 178 178 static const struct … … 343 343 if (!codec->pix_fmts) 344 344 return 0; 345 345 346 for (i = 0; codec->pix_fmts[i] != PIX_FMT_NONE; ++i)346 for (i = 0; codec->pix_fmts[i] != AV_PIX_FMT_NONE; ++i) 347 347 { 348 if (codec->pix_fmts[i] == PIX_FMT_YUV422P10_OR_DUMMY)348 if (codec->pix_fmts[i] == AV_PIX_FMT_YUV422P10_OR_DUMMY) 349 349 return 1; 350 350 } 351 351 352 352 return 0; 353 353 } 354 354 355 static enum PixelFormat lqt_ffmpeg_get_ffmpeg_colormodel(int id)355 static enum AVPixelFormat lqt_ffmpeg_get_ffmpeg_colormodel(int id) 356 356 { 357 357 int i; 358 358 … … 361 361 if(colormodels[i].lqt_id == id) 362 362 return colormodels[i].ffmpeg_id; 363 363 } 364 return PIX_FMT_NB;364 return AV_PIX_FMT_NB; 365 365 } 366 366 367 static int lqt_ffmpeg_get_lqt_colormodel(enum PixelFormat id, int * exact)367 static int lqt_ffmpeg_get_lqt_colormodel(enum AVPixelFormat id, int * exact) 368 368 { 369 369 int i; 370 370 … … 400 400 codec->reinterpret_pix_fmt = codec->avctx->pix_fmt; 401 401 402 402 /* First we try codec-specific colormodel matching. */ 403 if(codec->decoder->id == CODEC_ID_DNXHD)403 if(codec->decoder->id == AV_CODEC_ID_DNXHD) 404 404 { 405 /* FFMpeg supports PIX_FMT_YUV422P andPIX_FMT_YUV422P10 for DNxHD, which406 we sometimes interpret as PIX_FMT_YUVJ422P andPIX_FMT_YUVJ422P10. */407 if (codec->avctx->pix_fmt == PIX_FMT_YUV422P || codec->avctx->pix_fmt ==PIX_FMT_YUV422P10_OR_DUMMY)405 /* FFMpeg supports AV_PIX_FMT_YUV422P and AV_PIX_FMT_YUV422P10 for DNxHD, which 406 we sometimes interpret as AV_PIX_FMT_YUVJ422P and AV_PIX_FMT_YUVJ422P10. */ 407 if (codec->avctx->pix_fmt == AV_PIX_FMT_YUV422P || codec->avctx->pix_fmt == AV_PIX_FMT_YUV422P10_OR_DUMMY) 408 408 { 409 int p10 = (codec->avctx->pix_fmt == PIX_FMT_YUV422P10_OR_DUMMY);409 int p10 = (codec->avctx->pix_fmt == AV_PIX_FMT_YUV422P10_OR_DUMMY); 410 410 *exact = 1; 411 411 if (lqt_ffmpeg_get_avid_yuv_range(vtrack->track) == AVID_FULL_YUV_RANGE) 412 412 { 413 413 vtrack->stream_cmodel = p10 ? BC_YUVJ422P10 : BC_YUVJ422P; 414 codec->reinterpret_pix_fmt = p10 ? PIX_FMT_YUV422P10_OR_DUMMY :PIX_FMT_YUVJ422P;415 // Note: reinterpret_pix_fmt should really be PIX_FMT_YUVJ422P10, except414 codec->reinterpret_pix_fmt = p10 ? AV_PIX_FMT_YUV422P10_OR_DUMMY : AV_PIX_FMT_YUVJ422P; 415 // Note: reinterpret_pix_fmt should really be AV_PIX_FMT_YUVJ422P10, except 416 416 // there is no such colormodel in FFMpeg. Fortunately, it's not a problem 417 417 // in this case, as reinterpret_pix_fmt is only used when *exact == 0. 418 418 } 419 419 else 420 420 { 421 421 vtrack->stream_cmodel = p10 ? BC_YUV422P10 : BC_YUV422P; 422 codec->reinterpret_pix_fmt = p10 ? PIX_FMT_YUV422P10_OR_DUMMY :PIX_FMT_YUV422P;422 codec->reinterpret_pix_fmt = p10 ? AV_PIX_FMT_YUV422P10_OR_DUMMY : AV_PIX_FMT_YUV422P; 423 423 } 424 424 return; 425 425 } … … 438 438 quicktime_ffmpeg_video_codec_t *codec = vtrack->codec->priv; 439 439 codec->avctx->pix_fmt = lqt_ffmpeg_get_ffmpeg_colormodel(vtrack->stream_cmodel); 440 440 441 if (codec->encoder->id == CODEC_ID_DNXHD)441 if (codec->encoder->id == AV_CODEC_ID_DNXHD) 442 442 { 443 /* FFMpeg's DNxHD encoder only supports PIX_FMT_YUV422P andPIX_FMT_YUV422P10444 and doesn't know anything about PIX_FMT_YUVJ422P andPIX_FMT_YUVJ422P10443 /* FFMpeg's DNxHD encoder only supports AV_PIX_FMT_YUV422P and AV_PIX_FMT_YUV422P10 444 and doesn't know anything about AV_PIX_FMT_YUVJ422P and AV_PIX_FMT_YUVJ422P10 445 445 (in fact, the latter doesn't even exist) */ 446 codec->avctx->pix_fmt = PIX_FMT_YUV422P;446 codec->avctx->pix_fmt = AV_PIX_FMT_YUV422P; 447 447 if (vtrack->stream_cmodel == BC_YUV422P10 || vtrack->stream_cmodel == BC_YUVJ422P10) 448 448 { 449 449 if (lqt_tenbit_dnxhd_supported(codec->encoder)) 450 codec->avctx->pix_fmt = PIX_FMT_YUV422P10_OR_DUMMY;450 codec->avctx->pix_fmt = AV_PIX_FMT_YUV422P10_OR_DUMMY; 451 451 } 452 452 } 453 453 } … … 458 458 /* From avcodec.h: */ 459 459 460 460 /* 461 * PIX_FMT_RGBA32 is handled in an endian-specific manner. A RGBA461 * AV_PIX_FMT_RGBA32 is handled in an endian-specific manner. A RGBA 462 462 * color is put together as: 463 463 * (A << 24) | (R << 16) | (G << 8) | B 464 464 * This is stored as BGRA on little endian CPU architectures and ARGB on … … 530 530 */ 531 531 532 532 static void convert_image_decode(quicktime_ffmpeg_video_codec_t *codec, 533 AVFrame * in_frame, enum PixelFormat in_format,533 AVFrame * in_frame, enum AVPixelFormat in_format, 534 534 unsigned char ** out_frame, int out_format, 535 535 int width, int height, int row_span, int row_span_uv) 536 536 { … … 547 547 * RGBA format like in ffmpeg?? 548 548 */ 549 549 #if LIBAVUTIL_VERSION_INT < (50<<16) 550 if((in_format == PIX_FMT_RGBA32) && (out_format == BC_RGBA8888))550 if((in_format == AV_PIX_FMT_RGBA32) && (out_format == BC_RGBA8888)) 551 551 #else 552 if((in_format == PIX_FMT_RGB32) && (out_format == BC_RGBA8888))552 if((in_format == AV_PIX_FMT_RGB32) && (out_format == BC_RGBA8888)) 553 553 #endif 554 554 { 555 555 convert_image_decode_rgba(in_frame, out_frame, width, height, codec->y_offset); … … 728 728 729 729 /* Set extradata: It's done differently for each codec */ 730 730 731 if(codec->decoder->id == CODEC_ID_SVQ3)731 if(codec->decoder->id == AV_CODEC_ID_SVQ3) 732 732 { 733 733 extradata = trak->mdia.minf.stbl.stsd.table[0].table_raw + 4; 734 734 extradata_size = trak->mdia.minf.stbl.stsd.table[0].table_raw_size - 4; 735 735 736 736 } 737 else if(codec->decoder->id == CODEC_ID_H264)737 else if(codec->decoder->id == AV_CODEC_ID_H264) 738 738 { 739 739 user_atom = quicktime_stsd_get_user_atom(trak, "avcC", &user_atom_len); 740 740 … … 753 753 } 754 754 755 755 } 756 else if(codec->decoder->id == CODEC_ID_MPEG4)756 else if(codec->decoder->id == AV_CODEC_ID_MPEG4) 757 757 { 758 758 if(trak->mdia.minf.stbl.stsd.table[0].has_esds) 759 759 { … … 829 829 if(avcodec_open2(codec->avctx, codec->decoder, NULL) != 0) 830 830 return -1; 831 831 #endif 832 codec->frame = av codec_alloc_frame();832 codec->frame = av_frame_alloc(); 833 833 vtrack->stream_cmodel = LQT_COLORMODEL_NONE; 834 834 codec->initialized = 1; 835 835 } … … 929 929 #ifdef HAVE_LIBSWSCALE 930 930 931 931 #if LIBAVUTIL_VERSION_INT < (50<<16) 932 if(!((codec->avctx->pix_fmt == PIX_FMT_RGBA32) &&932 if(!((codec->avctx->pix_fmt == AV_PIX_FMT_RGBA32) && 933 933 (vtrack->stream_cmodel == BC_RGBA8888))) 934 934 #else 935 if(!((codec->avctx->pix_fmt == PIX_FMT_RGB32) &&935 if(!((codec->avctx->pix_fmt == AV_PIX_FMT_RGB32) && 936 936 (vtrack->stream_cmodel == BC_RGBA8888))) 937 937 #endif 938 938 { … … 947 947 } 948 948 #endif 949 949 } 950 if(codec->decoder->id == CODEC_ID_DVVIDEO)950 if(codec->decoder->id == AV_CODEC_ID_DVVIDEO) 951 951 { 952 952 if(vtrack->stream_cmodel == BC_YUV420P) 953 953 vtrack->chroma_placement = LQT_CHROMA_PLACEMENT_DVPAL; 954 954 vtrack->interlace_mode = LQT_INTERLACE_BOTTOM_FIRST; 955 955 vtrack->ci.id = LQT_COMPRESSION_DV; 956 956 } 957 else if((codec->decoder->id == CODEC_ID_MPEG4) ||958 (codec->decoder->id == CODEC_ID_H264))957 else if((codec->decoder->id == AV_CODEC_ID_MPEG4) || 958 (codec->decoder->id == AV_CODEC_ID_H264)) 959 959 { 960 960 if(vtrack->stream_cmodel == BC_YUV420P) 961 961 vtrack->chroma_placement = LQT_CHROMA_PLACEMENT_MPEG2; … … 1299 1299 { 1300 1300 if(vtrack->stream_cmodel == BC_YUV420P) 1301 1301 { 1302 if(codec->encoder->id == CODEC_ID_MPEG4)1302 if(codec->encoder->id == AV_CODEC_ID_MPEG4) 1303 1303 { 1304 1304 vtrack->chroma_placement = LQT_CHROMA_PLACEMENT_MPEG2; 1305 1305 /* enable interlaced encoding */ 1306 1306 vtrack->interlace_mode = LQT_INTERLACE_NONE; 1307 1307 } 1308 else if(codec->encoder->id == CODEC_ID_DVVIDEO)1308 else if(codec->encoder->id == AV_CODEC_ID_DVVIDEO) 1309 1309 { 1310 1310 vtrack->chroma_placement = LQT_CHROMA_PLACEMENT_DVPAL; 1311 1311 } … … 1318 1318 1319 1319 if(!codec->initialized) 1320 1320 { 1321 codec->frame = av codec_alloc_frame();1321 codec->frame = av_frame_alloc(); 1322 1322 1323 1323 /* time_base is 1/framerate for constant framerate */ 1324 1324 … … 1340 1340 codec->avctx->sample_aspect_ratio.num = pixel_width; 1341 1341 codec->avctx->sample_aspect_ratio.den = pixel_height; 1342 1342 /* Use global headers for mp4v */ 1343 if(codec->encoder->id == CODEC_ID_MPEG4)1343 if(codec->encoder->id == AV_CODEC_ID_MPEG4) 1344 1344 { 1345 1345 if(!(file->file_type & (LQT_FILE_AVI|LQT_FILE_AVI_ODML))) 1346 1346 { … … 1364 1364 } 1365 1365 #endif 1366 1366 } 1367 else if((codec->encoder->id == CODEC_ID_MSMPEG4V3) && (trak->strl) &&1367 else if((codec->encoder->id == AV_CODEC_ID_MSMPEG4V3) && (trak->strl) && 1368 1368 !strncmp(trak->strl->strf.bh.biCompression, "DIV3", 4)) 1369 1369 { 1370 1370 strncpy(trak->strl->strh.fccHandler, "div3", 4); 1371 1371 } 1372 else if((codec->encoder->id == CODEC_ID_H263) &&1372 else if((codec->encoder->id == AV_CODEC_ID_H263) && 1373 1373 (file->file_type & (LQT_FILE_MP4|LQT_FILE_3GP))) 1374 1374 { 1375 1375 uint8_t d263_data[] = … … 1383 1383 strncpy(trak->mdia.minf.stbl.stsd.table[0].format, 1384 1384 "s263", 4); 1385 1385 } 1386 else if(codec->encoder->id == CODEC_ID_FFVHUFF)1386 else if(codec->encoder->id == AV_CODEC_ID_FFVHUFF) 1387 1387 { 1388 1388 if(!(file->file_type & (LQT_FILE_AVI|LQT_FILE_AVI_ODML))) 1389 1389 { … … 1391 1391 codec->write_global_header = 1; 1392 1392 } 1393 1393 } 1394 else if(codec->encoder->id == CODEC_ID_QTRLE)1394 else if(codec->encoder->id == AV_CODEC_ID_QTRLE) 1395 1395 { 1396 1396 if(vtrack->stream_cmodel == BC_RGBA8888) 1397 1397 { 1398 1398 /* Libquicktime doesn't natively support a color model equivalent 1399 to PIX_FMT_ARGB, which is required for QTRLE with alpha channel.1399 to AV_PIX_FMT_ARGB, which is required for QTRLE with alpha channel. 1400 1400 So, we use BC_RGBA8888 and do ad hoc conversion below. */ 1401 codec->avctx->pix_fmt = PIX_FMT_ARGB;1401 codec->avctx->pix_fmt = AV_PIX_FMT_ARGB; 1402 1402 vtrack->track->mdia.minf.stbl.stsd.table[0].depth = 32; 1403 1403 } 1404 1404 } 1405 else if(codec->encoder->id == CODEC_ID_DVVIDEO)1405 else if(codec->encoder->id == AV_CODEC_ID_DVVIDEO) 1406 1406 { 1407 1407 set_dv_fourcc(width, height, vtrack->stream_cmodel, trak); 1408 1408 } 1409 else if(codec->encoder->id == CODEC_ID_DNXHD)1409 else if(codec->encoder->id == AV_CODEC_ID_DNXHD) 1410 1410 { 1411 1411 if(vtrack->interlace_mode != LQT_INTERLACE_NONE) 1412 1412 { … … 1467 1467 } 1468 1468 // codec->lqt_colormodel = ffmepg_2_lqt(codec->com.ffcodec_enc); 1469 1469 1470 if(codec->y_offset != 0 || codec->avctx->pix_fmt == PIX_FMT_ARGB)1470 if(codec->y_offset != 0 || codec->avctx->pix_fmt == AV_PIX_FMT_ARGB) 1471 1471 { 1472 1472 if(!codec->tmp_rows) 1473 1473 { … … 1492 1492 vtrack->stream_cmodel, 1493 1493 0, 0, 0, codec->y_offset); 1494 1494 } 1495 else if(codec->avctx->pix_fmt == PIX_FMT_ARGB)1495 else if(codec->avctx->pix_fmt == AV_PIX_FMT_ARGB) 1496 1496 { 1497 1497 convert_rgba_to_argb(row_pointers[0], vtrack->stream_row_span, 1498 1498 codec->tmp_rows[0], codec->tmp_row_span, … … 1558 1558 1559 1559 #endif 1560 1560 1561 if(!was_initialized && codec->encoder->id == CODEC_ID_DNXHD)1561 if(!was_initialized && codec->encoder->id == AV_CODEC_ID_DNXHD) 1562 1562 setup_avid_atoms(file, vtrack, codec->buffer, bytes_encoded); 1563 1563 1564 1564 if(bytes_encoded) 1565 1565 { 1566 if (pts == AV_NOPTS_VALUE || (codec->encoder->id == CODEC_ID_DNXHD && pts == 0))1566 if (pts == AV_NOPTS_VALUE || (codec->encoder->id == AV_CODEC_ID_DNXHD && pts == 0)) 1567 1567 { 1568 1568 /* Some codecs don't bother generating presentation timestamps. 1569 1569 FFMpeg's DNxHD encoder doesn't even bother to set it to AV_NOPTS_VALUE. */ … … 1590 1590 1591 1591 if(codec->write_global_header && !codec->global_header_written) 1592 1592 { 1593 if(codec->encoder->id == CODEC_ID_FFVHUFF)1593 if(codec->encoder->id == AV_CODEC_ID_FFVHUFF) 1594 1594 { 1595 1595 quicktime_user_atoms_add_atom(&trak->mdia.minf.stbl.stsd.table[0].user_atoms, 1596 1596 "glbl", 1597 1597 codec->avctx->extradata, codec->avctx->extradata_size ); 1598 1598 } 1599 else if(codec->encoder->id == CODEC_ID_MPEG4)1599 else if(codec->encoder->id == AV_CODEC_ID_MPEG4) 1600 1600 { 1601 1601 int advanced = 0; 1602 1602 if(codec->avctx->max_b_frames || … … 1903 1903 codec_base->encode_video = lqt_ffmpeg_encode_video; 1904 1904 codec_base->set_pass = set_pass_ffmpeg; 1905 1905 1906 if(encoder->id == CODEC_ID_MPEG4)1906 if(encoder->id == AV_CODEC_ID_MPEG4) 1907 1907 { 1908 1908 codec_base->writes_compressed = writes_compressed_mpeg4; 1909 1909 codec_base->init_compressed = init_compressed_mpeg4; 1910 1910 codec_base->write_packet = write_packet_mpeg4; 1911 1911 } 1912 else if(encoder->id == CODEC_ID_MPEG2VIDEO)1912 else if(encoder->id == AV_CODEC_ID_MPEG2VIDEO) 1913 1913 { 1914 1914 codec_base->writes_compressed = writes_compressed_imx; 1915 1915 codec_base->init_compressed = init_compressed_imx; 1916 1916 } 1917 else if(encoder->id == CODEC_ID_DVVIDEO)1917 else if(encoder->id == AV_CODEC_ID_DVVIDEO) 1918 1918 { 1919 1919 codec_base->init_compressed = init_compressed_dv; 1920 1920 } … … 1922 1922 } 1923 1923 if(decoder) 1924 1924 { 1925 if(decoder->id == CODEC_ID_H264)1925 if(decoder->id == AV_CODEC_ID_H264) 1926 1926 codec_base->read_packet = read_packet_h264; 1927 1927 codec_base->decode_video = lqt_ffmpeg_decode_video; 1928 1928 }