From 2ba45a602cbfa7b771effba9b11bb4245c21bc00 Mon Sep 17 00:00:00 2001 From: Doug McMahon Date: Fri, 7 Nov 2014 14:38:48 -0500 Subject: [PATCH 1/1] Imported Debian version 2.4.3~trusty1 --- Makefile | 20 + debian/changelog | 254 + debian/compat | 1 + debian/control | 51 + debian/copyright | 88 + debian/ffmpeg.links | 4 + debian/rules | 8 + debian/source/format | 1 + debian/source/lintian-overrides | 1 + debian/source/options | 2 + ffmpeg/COPYING.GPLv2 | 339 + ffmpeg/COPYING.GPLv3 | 674 + ffmpeg/COPYING.LGPLv2.1 | 502 + ffmpeg/COPYING.LGPLv3 | 165 + ffmpeg/CREDITS | 6 + ffmpeg/Changelog | 1356 ++ ffmpeg/INSTALL.md | 17 + ffmpeg/LICENSE.md | 105 + ffmpeg/MAINTAINERS | 580 + ffmpeg/Makefile | 198 + ffmpeg/README.md | 40 + ffmpeg/RELEASE | 1 + ffmpeg/RELEASE_NOTES | 83 + ffmpeg/VERSION | 1 + ffmpeg/arch.mak | 15 + ffmpeg/cmdutils.c | 2052 +++ ffmpeg/cmdutils.h | 586 + ffmpeg/cmdutils_common_opts.h | 29 + ffmpeg/cmdutils_opencl.c | 274 + ffmpeg/common.mak | 154 + ffmpeg/compat/aix/math.h | 31 + ffmpeg/compat/avisynth/avisynth_c.h | 880 + ffmpeg/compat/avisynth/avisynth_c_25.h | 68 + ffmpeg/compat/avisynth/avxsynth_c.h | 728 + .../windowsPorts/basicDataTypeConversions.h | 85 + .../avisynth/windowsPorts/windows2linux.h | 77 + ffmpeg/compat/float/float.h | 35 + ffmpeg/compat/float/limits.h | 22 + ffmpeg/compat/getopt.c | 84 + ffmpeg/compat/msvcrt/snprintf.c | 71 + ffmpeg/compat/msvcrt/snprintf.h | 38 + ffmpeg/compat/os2threads.h | 164 + ffmpeg/compat/plan9/head | 10 + ffmpeg/compat/plan9/main.c | 34 + ffmpeg/compat/plan9/printf | 2 + ffmpeg/compat/strtod.c | 93 + ffmpeg/compat/tms470/math.h | 30 + ffmpeg/compat/va_copy.h | 29 + ffmpeg/compat/w32pthreads.h | 296 + ffmpeg/compat/windows/makedef | 132 + ffmpeg/configure | 5723 ++++++ ffmpeg/doc/APIchanges | 2211 +++ ffmpeg/doc/Doxyfile | 1626 ++ ffmpeg/doc/Makefile | 182 + ffmpeg/doc/authors.texi | 11 + ffmpeg/doc/bitstream_filters.texi | 144 + ffmpeg/doc/bootstrap.min.css | 5 + ffmpeg/doc/build_system.txt | 56 + ffmpeg/doc/codecs.texi | 1126 ++ ffmpeg/doc/decoders.texi | 236 + ffmpeg/doc/default.css | 165 + ffmpeg/doc/demuxers.texi | 435 + ffmpeg/doc/developer.texi | 800 + ffmpeg/doc/devices.texi | 25 + ffmpeg/doc/doxy-wrapper.sh | 13 + ffmpeg/doc/encoders.texi | 2176 +++ ffmpeg/doc/errno.txt | 174 + ffmpeg/doc/examples/Makefile | 43 + ffmpeg/doc/examples/README | 23 + ffmpeg/doc/examples/avio_reading.c | 134 + ffmpeg/doc/examples/decoding_encoding.c | 664 + ffmpeg/doc/examples/demuxing_decoding.c | 386 + ffmpeg/doc/examples/extract_mvs.c | 185 + ffmpeg/doc/examples/filter_audio.c | 365 + ffmpeg/doc/examples/filtering_audio.c | 280 + ffmpeg/doc/examples/filtering_video.c | 261 + ffmpeg/doc/examples/metadata.c | 56 + ffmpeg/doc/examples/muxing.c | 670 + ffmpeg/doc/examples/remuxing.c | 165 + ffmpeg/doc/examples/resampling_audio.c | 214 + ffmpeg/doc/examples/scaling_video.c | 140 + ffmpeg/doc/examples/transcode_aac.c | 755 + ffmpeg/doc/examples/transcoding.c | 597 + ffmpeg/doc/faq.texi | 536 + ffmpeg/doc/fate.texi | 205 + ffmpeg/doc/fate_config.sh.template | 29 + ffmpeg/doc/ffmpeg-bitstream-filters.texi | 45 + ffmpeg/doc/ffmpeg-codecs.texi | 42 + ffmpeg/doc/ffmpeg-devices.texi | 42 + ffmpeg/doc/ffmpeg-filters.texi | 42 + ffmpeg/doc/ffmpeg-formats.texi | 42 + ffmpeg/doc/ffmpeg-protocols.texi | 42 + ffmpeg/doc/ffmpeg-resampler.texi | 44 + ffmpeg/doc/ffmpeg-scaler.texi | 43 + ffmpeg/doc/ffmpeg-utils.texi | 42 + ffmpeg/doc/ffmpeg.texi | 1553 ++ ffmpeg/doc/ffmpeg.txt | 47 + ffmpeg/doc/ffplay.texi | 293 + ffmpeg/doc/ffprobe.texi | 675 + ffmpeg/doc/ffprobe.xsd | 280 + ffmpeg/doc/ffserver.conf | 371 + ffmpeg/doc/ffserver.texi | 907 + ffmpeg/doc/fftools-common-opts.texi | 312 + ffmpeg/doc/filter_design.txt | 270 + ffmpeg/doc/filters.texi | 11232 +++++++++++ ffmpeg/doc/formats.texi | 212 + ffmpeg/doc/general.texi | 1120 ++ ffmpeg/doc/git-howto.texi | 415 + ffmpeg/doc/indevs.texi | 925 + ffmpeg/doc/issue_tracker.txt | 194 + ffmpeg/doc/libavcodec.texi | 48 + ffmpeg/doc/libavdevice.texi | 45 + ffmpeg/doc/libavfilter.texi | 44 + ffmpeg/doc/libavformat.texi | 48 + ffmpeg/doc/libavutil.texi | 62 + ffmpeg/doc/libswresample.texi | 70 + ffmpeg/doc/libswscale.texi | 63 + ffmpeg/doc/metadata.texi | 84 + ffmpeg/doc/mips.txt | 75 + ffmpeg/doc/multithreading.txt | 70 + ffmpeg/doc/muxers.texi | 1150 ++ ffmpeg/doc/nut.texi | 159 + ffmpeg/doc/optimization.txt | 271 + ffmpeg/doc/outdevs.texi | 450 + ffmpeg/doc/platform.texi | 391 + ffmpeg/doc/print_options.c | 126 + ffmpeg/doc/protocols.texi | 1280 ++ ffmpeg/doc/rate_distortion.txt | 61 + ffmpeg/doc/resampler.texi | 232 + ffmpeg/doc/scaler.texi | 127 + ffmpeg/doc/snow.txt | 637 + ffmpeg/doc/style.min.css | 23 + ffmpeg/doc/swresample.txt | 46 + ffmpeg/doc/swscale.txt | 98 + ffmpeg/doc/t2h.init | 128 + ffmpeg/doc/t2h.pm | 221 + ffmpeg/doc/tablegen.txt | 70 + ffmpeg/doc/texi2pod.pl | 464 + ffmpeg/doc/texidep.pl | 32 + ffmpeg/doc/utils.texi | 1067 ++ ffmpeg/doc/writing_filters.txt | 424 + ffmpeg/ffmpeg.c | 3869 ++++ ffmpeg/ffmpeg.h | 527 + ffmpeg/ffmpeg_dxva2.c | 620 + ffmpeg/ffmpeg_filter.c | 952 + ffmpeg/ffmpeg_opt.c | 3065 +++ ffmpeg/ffmpeg_vda.c | 134 + ffmpeg/ffmpeg_vdpau.c | 335 + ffmpeg/ffplay.c | 3738 ++++ ffmpeg/ffprobe.c | 3081 ++++ ffmpeg/ffserver.c | 4778 +++++ ffmpeg/libavcodec/012v.c | 159 + ffmpeg/libavcodec/4xm.c | 1026 ++ ffmpeg/libavcodec/8bps.c | 188 + ffmpeg/libavcodec/8svx.c | 216 + ffmpeg/libavcodec/Makefile | 927 + ffmpeg/libavcodec/a64colors.h | 52 + ffmpeg/libavcodec/a64multienc.c | 424 + ffmpeg/libavcodec/a64tables.h | 150 + ffmpeg/libavcodec/aac.h | 334 + ffmpeg/libavcodec/aac_ac3_parser.c | 114 + ffmpeg/libavcodec/aac_ac3_parser.h | 66 + ffmpeg/libavcodec/aac_adtstoasc_bsf.c | 119 + ffmpeg/libavcodec/aac_parser.c | 69 + ffmpeg/libavcodec/aac_tablegen.c | 37 + ffmpeg/libavcodec/aac_tablegen.h | 42 + ffmpeg/libavcodec/aac_tablegen_decl.h | 36 + ffmpeg/libavcodec/aacadtsdec.c | 70 + ffmpeg/libavcodec/aacadtsdec.h | 54 + ffmpeg/libavcodec/aaccoder.c | 1138 ++ ffmpeg/libavcodec/aacdec.c | 3481 ++++ ffmpeg/libavcodec/aacdectab.h | 104 + ffmpeg/libavcodec/aacenc.c | 831 + ffmpeg/libavcodec/aacenc.h | 97 + ffmpeg/libavcodec/aacps.c | 974 + ffmpeg/libavcodec/aacps.h | 84 + ffmpeg/libavcodec/aacps_tablegen.c | 93 + ffmpeg/libavcodec/aacps_tablegen.h | 217 + ffmpeg/libavcodec/aacpsdata.c | 163 + ffmpeg/libavcodec/aacpsdsp.c | 216 + ffmpeg/libavcodec/aacpsdsp.h | 54 + ffmpeg/libavcodec/aacpsy.c | 965 + ffmpeg/libavcodec/aacsbr.c | 1764 ++ ffmpeg/libavcodec/aacsbr.h | 51 + ffmpeg/libavcodec/aacsbr_tablegen.c | 39 + ffmpeg/libavcodec/aacsbr_tablegen.h | 129 + ffmpeg/libavcodec/aacsbrdata.h | 534 + ffmpeg/libavcodec/aactab.c | 1729 ++ ffmpeg/libavcodec/aactab.h | 81 + ffmpeg/libavcodec/aandcttab.c | 47 + ffmpeg/libavcodec/aandcttab.h | 32 + ffmpeg/libavcodec/aarch64/Makefile | 28 + ffmpeg/libavcodec/aarch64/asm-offsets.h | 30 + ffmpeg/libavcodec/aarch64/cabac.h | 104 + ffmpeg/libavcodec/aarch64/fft_init_aarch64.c | 47 + ffmpeg/libavcodec/aarch64/fft_neon.S | 442 + .../aarch64/h264chroma_init_aarch64.c | 59 + ffmpeg/libavcodec/aarch64/h264cmc_neon.S | 453 + .../libavcodec/aarch64/h264dsp_init_aarch64.c | 101 + ffmpeg/libavcodec/aarch64/h264dsp_neon.S | 498 + ffmpeg/libavcodec/aarch64/h264idct_neon.S | 408 + .../aarch64/h264qpel_init_aarch64.c | 172 + ffmpeg/libavcodec/aarch64/h264qpel_neon.S | 934 + .../libavcodec/aarch64/hpeldsp_init_aarch64.c | 123 + ffmpeg/libavcodec/aarch64/hpeldsp_neon.S | 397 + ffmpeg/libavcodec/aarch64/mdct_neon.S | 323 + ffmpeg/libavcodec/aarch64/mpegaudiodsp_init.c | 39 + ffmpeg/libavcodec/aarch64/mpegaudiodsp_neon.S | 226 + ffmpeg/libavcodec/aarch64/neon.S | 149 + ffmpeg/libavcodec/aarch64/neontest.c | 79 + ffmpeg/libavcodec/aarch64/opus_imdct_init.c | 45 + ffmpeg/libavcodec/aarch64/opus_imdct_neon.S | 647 + .../libavcodec/aarch64/rv40dsp_init_aarch64.c | 48 + .../libavcodec/aarch64/vc1dsp_init_aarch64.c | 47 + ffmpeg/libavcodec/aarch64/videodsp.S | 28 + ffmpeg/libavcodec/aarch64/videodsp_init.c | 32 + ffmpeg/libavcodec/aarch64/vorbisdsp_init.c | 34 + ffmpeg/libavcodec/aarch64/vorbisdsp_neon.S | 82 + ffmpeg/libavcodec/aasc.c | 162 + ffmpeg/libavcodec/ac3.c | 231 + ffmpeg/libavcodec/ac3.h | 267 + ffmpeg/libavcodec/ac3_parser.c | 213 + ffmpeg/libavcodec/ac3_parser.h | 44 + ffmpeg/libavcodec/ac3dec.c | 1646 ++ ffmpeg/libavcodec/ac3dec.h | 261 + ffmpeg/libavcodec/ac3dec_data.c | 60 + ffmpeg/libavcodec/ac3dec_data.h | 32 + ffmpeg/libavcodec/ac3dec_fixed.c | 195 + ffmpeg/libavcodec/ac3dec_float.c | 91 + ffmpeg/libavcodec/ac3dsp.c | 303 + ffmpeg/libavcodec/ac3dsp.h | 161 + ffmpeg/libavcodec/ac3enc.c | 2493 +++ ffmpeg/libavcodec/ac3enc.h | 313 + ffmpeg/libavcodec/ac3enc_fixed.c | 160 + ffmpeg/libavcodec/ac3enc_float.c | 160 + ffmpeg/libavcodec/ac3enc_opts_template.c | 80 + ffmpeg/libavcodec/ac3enc_template.c | 450 + ffmpeg/libavcodec/ac3tab.c | 316 + ffmpeg/libavcodec/ac3tab.h | 74 + ffmpeg/libavcodec/acelp_filters.c | 155 + ffmpeg/libavcodec/acelp_filters.h | 153 + ffmpeg/libavcodec/acelp_pitch_delay.c | 190 + ffmpeg/libavcodec/acelp_pitch_delay.h | 253 + ffmpeg/libavcodec/acelp_vectors.c | 272 + ffmpeg/libavcodec/acelp_vectors.h | 288 + ffmpeg/libavcodec/adpcm.c | 1583 ++ ffmpeg/libavcodec/adpcm.h | 48 + ffmpeg/libavcodec/adpcm_data.c | 112 + ffmpeg/libavcodec/adpcm_data.h | 45 + ffmpeg/libavcodec/adpcmenc.c | 726 + ffmpeg/libavcodec/adx.c | 82 + ffmpeg/libavcodec/adx.h | 80 + ffmpeg/libavcodec/adx_parser.c | 96 + ffmpeg/libavcodec/adxdec.c | 189 + ffmpeg/libavcodec/adxenc.c | 169 + ffmpeg/libavcodec/aic.c | 485 + ffmpeg/libavcodec/alac.c | 667 + ffmpeg/libavcodec/alac_data.c | 56 + ffmpeg/libavcodec/alac_data.h | 46 + ffmpeg/libavcodec/alacenc.c | 662 + ffmpeg/libavcodec/aliaspixdec.c | 128 + ffmpeg/libavcodec/aliaspixenc.c | 134 + ffmpeg/libavcodec/allcodecs.c | 591 + ffmpeg/libavcodec/alpha/Makefile | 10 + ffmpeg/libavcodec/alpha/asm.h | 186 + ffmpeg/libavcodec/alpha/blockdsp_alpha.c | 51 + ffmpeg/libavcodec/alpha/hpeldsp_alpha.c | 213 + ffmpeg/libavcodec/alpha/hpeldsp_alpha.h | 28 + ffmpeg/libavcodec/alpha/hpeldsp_alpha_asm.S | 125 + ffmpeg/libavcodec/alpha/idctdsp_alpha.c | 127 + ffmpeg/libavcodec/alpha/idctdsp_alpha.h | 34 + ffmpeg/libavcodec/alpha/idctdsp_alpha_asm.S | 167 + ffmpeg/libavcodec/alpha/me_cmp_alpha.c | 317 + ffmpeg/libavcodec/alpha/me_cmp_mvi_asm.S | 179 + ffmpeg/libavcodec/alpha/mpegvideo_alpha.c | 110 + ffmpeg/libavcodec/alpha/pixblockdsp_alpha.c | 78 + ffmpeg/libavcodec/alpha/regdef.h | 77 + ffmpeg/libavcodec/alpha/simple_idct_alpha.c | 303 + ffmpeg/libavcodec/alsdec.c | 1814 ++ ffmpeg/libavcodec/amr.h | 70 + ffmpeg/libavcodec/amrnbdata.h | 1671 ++ ffmpeg/libavcodec/amrnbdec.c | 1094 ++ ffmpeg/libavcodec/amrwbdata.h | 1890 ++ ffmpeg/libavcodec/amrwbdec.c | 1279 ++ ffmpeg/libavcodec/anm.c | 200 + ffmpeg/libavcodec/ansi.c | 480 + ffmpeg/libavcodec/apedec.c | 1595 ++ ffmpeg/libavcodec/arm/Makefile | 145 + ffmpeg/libavcodec/arm/aac.h | 143 + ffmpeg/libavcodec/arm/aacpsdsp_init_arm.c | 57 + ffmpeg/libavcodec/arm/aacpsdsp_neon.S | 272 + ffmpeg/libavcodec/arm/ac3dsp_arm.S | 36 + ffmpeg/libavcodec/arm/ac3dsp_armv6.S | 84 + ffmpeg/libavcodec/arm/ac3dsp_init_arm.c | 73 + ffmpeg/libavcodec/arm/ac3dsp_neon.S | 177 + ffmpeg/libavcodec/arm/asm-offsets.h | 32 + ffmpeg/libavcodec/arm/audiodsp_arm.h | 26 + ffmpeg/libavcodec/arm/audiodsp_init_arm.c | 33 + ffmpeg/libavcodec/arm/audiodsp_init_neon.c | 41 + ffmpeg/libavcodec/arm/audiodsp_neon.S | 64 + ffmpeg/libavcodec/arm/blockdsp_arm.h | 26 + ffmpeg/libavcodec/arm/blockdsp_init_arm.c | 33 + ffmpeg/libavcodec/arm/blockdsp_init_neon.c | 37 + ffmpeg/libavcodec/arm/blockdsp_neon.S | 38 + ffmpeg/libavcodec/arm/cabac.h | 108 + ffmpeg/libavcodec/arm/dca.h | 82 + ffmpeg/libavcodec/arm/dcadsp_init_arm.c | 82 + ffmpeg/libavcodec/arm/dcadsp_neon.S | 93 + ffmpeg/libavcodec/arm/dcadsp_vfp.S | 476 + ffmpeg/libavcodec/arm/dct-test.c | 40 + ffmpeg/libavcodec/arm/fft_fixed_init_arm.c | 48 + ffmpeg/libavcodec/arm/fft_fixed_neon.S | 261 + ffmpeg/libavcodec/arm/fft_init_arm.c | 72 + ffmpeg/libavcodec/arm/fft_neon.S | 375 + ffmpeg/libavcodec/arm/fft_vfp.S | 534 + ffmpeg/libavcodec/arm/flacdsp_arm.S | 146 + ffmpeg/libavcodec/arm/flacdsp_init_arm.c | 32 + ffmpeg/libavcodec/arm/fmtconvert_init_arm.c | 65 + ffmpeg/libavcodec/arm/fmtconvert_neon.S | 392 + ffmpeg/libavcodec/arm/fmtconvert_vfp.S | 221 + ffmpeg/libavcodec/arm/fmtconvert_vfp_armv6.S | 78 + ffmpeg/libavcodec/arm/h264chroma_init_arm.c | 51 + ffmpeg/libavcodec/arm/h264cmc_neon.S | 463 + ffmpeg/libavcodec/arm/h264dsp_init_arm.c | 116 + ffmpeg/libavcodec/arm/h264dsp_neon.S | 541 + ffmpeg/libavcodec/arm/h264idct_neon.S | 413 + ffmpeg/libavcodec/arm/h264pred_init_arm.c | 94 + ffmpeg/libavcodec/arm/h264pred_neon.S | 359 + ffmpeg/libavcodec/arm/h264qpel_init_arm.c | 171 + ffmpeg/libavcodec/arm/h264qpel_neon.S | 955 + ffmpeg/libavcodec/arm/hpeldsp_arm.S | 603 + ffmpeg/libavcodec/arm/hpeldsp_arm.h | 29 + ffmpeg/libavcodec/arm/hpeldsp_armv6.S | 261 + ffmpeg/libavcodec/arm/hpeldsp_init_arm.c | 71 + ffmpeg/libavcodec/arm/hpeldsp_init_armv6.c | 67 + ffmpeg/libavcodec/arm/hpeldsp_init_neon.c | 88 + ffmpeg/libavcodec/arm/hpeldsp_neon.S | 410 + ffmpeg/libavcodec/arm/idct.h | 40 + ffmpeg/libavcodec/arm/idctdsp_arm.S | 120 + ffmpeg/libavcodec/arm/idctdsp_arm.h | 34 + ffmpeg/libavcodec/arm/idctdsp_armv6.S | 48 + ffmpeg/libavcodec/arm/idctdsp_init_arm.c | 89 + ffmpeg/libavcodec/arm/idctdsp_init_armv5te.c | 41 + ffmpeg/libavcodec/arm/idctdsp_init_armv6.c | 45 + ffmpeg/libavcodec/arm/idctdsp_init_neon.c | 51 + ffmpeg/libavcodec/arm/idctdsp_neon.S | 128 + ffmpeg/libavcodec/arm/int_neon.S | 51 + ffmpeg/libavcodec/arm/jrevdct_arm.S | 383 + .../arm/lossless_audiodsp_init_arm.c | 38 + .../libavcodec/arm/lossless_audiodsp_neon.S | 62 + ffmpeg/libavcodec/arm/mathops.h | 108 + ffmpeg/libavcodec/arm/mdct_fixed_neon.S | 193 + ffmpeg/libavcodec/arm/mdct_neon.S | 301 + ffmpeg/libavcodec/arm/mdct_vfp.S | 347 + ffmpeg/libavcodec/arm/me_cmp_armv6.S | 244 + ffmpeg/libavcodec/arm/me_cmp_init_arm.c | 57 + ffmpeg/libavcodec/arm/mlpdsp_armv5te.S | 655 + ffmpeg/libavcodec/arm/mlpdsp_armv6.S | 533 + ffmpeg/libavcodec/arm/mlpdsp_init_arm.c | 146 + .../libavcodec/arm/mpegaudiodsp_fixed_armv6.S | 143 + ffmpeg/libavcodec/arm/mpegaudiodsp_init_arm.c | 38 + ffmpeg/libavcodec/arm/mpegvideo_arm.c | 54 + ffmpeg/libavcodec/arm/mpegvideo_arm.h | 26 + ffmpeg/libavcodec/arm/mpegvideo_armv5te.c | 102 + ffmpeg/libavcodec/arm/mpegvideo_armv5te_s.S | 114 + ffmpeg/libavcodec/arm/mpegvideo_neon.S | 107 + ffmpeg/libavcodec/arm/mpegvideoencdsp_armv6.S | 76 + .../libavcodec/arm/mpegvideoencdsp_init_arm.c | 38 + ffmpeg/libavcodec/arm/neon.S | 59 + ffmpeg/libavcodec/arm/neontest.c | 79 + ffmpeg/libavcodec/arm/pixblockdsp_armv6.S | 76 + ffmpeg/libavcodec/arm/pixblockdsp_init_arm.c | 42 + ffmpeg/libavcodec/arm/rdft_neon.S | 150 + ffmpeg/libavcodec/arm/rv34dsp_init_arm.c | 46 + ffmpeg/libavcodec/arm/rv34dsp_neon.S | 156 + ffmpeg/libavcodec/arm/rv40dsp_init_arm.c | 150 + ffmpeg/libavcodec/arm/rv40dsp_neon.S | 920 + ffmpeg/libavcodec/arm/sbrdsp_init_arm.c | 73 + ffmpeg/libavcodec/arm/sbrdsp_neon.S | 411 + ffmpeg/libavcodec/arm/simple_idct_arm.S | 480 + ffmpeg/libavcodec/arm/simple_idct_armv5te.S | 620 + ffmpeg/libavcodec/arm/simple_idct_armv6.S | 425 + ffmpeg/libavcodec/arm/simple_idct_neon.S | 375 + ffmpeg/libavcodec/arm/startcode.h | 26 + ffmpeg/libavcodec/arm/startcode_armv6.S | 253 + ffmpeg/libavcodec/arm/synth_filter_neon.S | 115 + ffmpeg/libavcodec/arm/synth_filter_vfp.S | 243 + ffmpeg/libavcodec/arm/vc1dsp.h | 26 + ffmpeg/libavcodec/arm/vc1dsp_init_arm.c | 37 + ffmpeg/libavcodec/arm/vc1dsp_init_neon.c | 123 + ffmpeg/libavcodec/arm/vc1dsp_neon.S | 1174 ++ ffmpeg/libavcodec/arm/videodsp_arm.h | 29 + ffmpeg/libavcodec/arm/videodsp_armv5te.S | 31 + ffmpeg/libavcodec/arm/videodsp_init_arm.c | 30 + ffmpeg/libavcodec/arm/videodsp_init_armv5te.c | 33 + ffmpeg/libavcodec/arm/vorbisdsp_init_arm.c | 37 + ffmpeg/libavcodec/arm/vorbisdsp_neon.S | 83 + ffmpeg/libavcodec/arm/vp3dsp_init_arm.c | 44 + ffmpeg/libavcodec/arm/vp3dsp_neon.S | 395 + ffmpeg/libavcodec/arm/vp56_arith.h | 121 + ffmpeg/libavcodec/arm/vp6dsp_init_arm.c | 39 + ffmpeg/libavcodec/arm/vp6dsp_neon.S | 121 + ffmpeg/libavcodec/arm/vp8.h | 35 + ffmpeg/libavcodec/arm/vp8_armv6.S | 248 + ffmpeg/libavcodec/arm/vp8dsp.h | 80 + ffmpeg/libavcodec/arm/vp8dsp_armv6.S | 1640 ++ ffmpeg/libavcodec/arm/vp8dsp_init_arm.c | 44 + ffmpeg/libavcodec/arm/vp8dsp_init_armv6.c | 123 + ffmpeg/libavcodec/arm/vp8dsp_init_neon.c | 119 + ffmpeg/libavcodec/arm/vp8dsp_neon.S | 1867 ++ ffmpeg/libavcodec/ass.c | 191 + ffmpeg/libavcodec/ass.h | 128 + ffmpeg/libavcodec/ass_split.c | 476 + ffmpeg/libavcodec/ass_split.h | 172 + ffmpeg/libavcodec/assdec.c | 120 + ffmpeg/libavcodec/assenc.c | 132 + ffmpeg/libavcodec/asv.c | 95 + ffmpeg/libavcodec/asv.h | 73 + ffmpeg/libavcodec/asvdec.c | 341 + ffmpeg/libavcodec/asvenc.c | 374 + ffmpeg/libavcodec/atrac.c | 165 + ffmpeg/libavcodec/atrac.h | 97 + ffmpeg/libavcodec/atrac1.c | 390 + ffmpeg/libavcodec/atrac1data.h | 64 + ffmpeg/libavcodec/atrac3.c | 942 + ffmpeg/libavcodec/atrac3data.h | 141 + ffmpeg/libavcodec/atrac3plus.c | 1818 ++ ffmpeg/libavcodec/atrac3plus.h | 240 + ffmpeg/libavcodec/atrac3plus_data.h | 1914 ++ ffmpeg/libavcodec/atrac3plusdec.c | 396 + ffmpeg/libavcodec/atrac3plusdsp.c | 638 + ffmpeg/libavcodec/audio_frame_queue.c | 113 + ffmpeg/libavcodec/audio_frame_queue.h | 83 + ffmpeg/libavcodec/audioconvert.c | 120 + ffmpeg/libavcodec/audioconvert.h | 84 + ffmpeg/libavcodec/audiodsp.c | 118 + ffmpeg/libavcodec/audiodsp.h | 59 + ffmpeg/libavcodec/aura.c | 108 + ffmpeg/libavcodec/avcodec.h | 5183 ++++++ ffmpeg/libavcodec/avcodecres.rc | 55 + ffmpeg/libavcodec/avdct.c | 134 + ffmpeg/libavcodec/avdct.h | 82 + ffmpeg/libavcodec/avfft.c | 145 + ffmpeg/libavcodec/avfft.h | 118 + ffmpeg/libavcodec/avpacket.c | 577 + ffmpeg/libavcodec/avpicture.c | 78 + ffmpeg/libavcodec/avr32/mathops.h | 101 + ffmpeg/libavcodec/avrndec.c | 131 + ffmpeg/libavcodec/avs.c | 191 + ffmpeg/libavcodec/avuidec.c | 130 + ffmpeg/libavcodec/avuienc.c | 113 + ffmpeg/libavcodec/bethsoftvideo.c | 166 + ffmpeg/libavcodec/bethsoftvideo.h | 36 + ffmpeg/libavcodec/bfi.c | 188 + ffmpeg/libavcodec/bfin/README | 6 + ffmpeg/libavcodec/bgmc.c | 560 + ffmpeg/libavcodec/bgmc.h | 56 + ffmpeg/libavcodec/bink.c | 1356 ++ ffmpeg/libavcodec/binkaudio.c | 360 + ffmpeg/libavcodec/binkdata.h | 655 + ffmpeg/libavcodec/binkdsp.c | 157 + ffmpeg/libavcodec/binkdsp.h | 41 + ffmpeg/libavcodec/bintext.c | 258 + ffmpeg/libavcodec/bintext.h | 37 + ffmpeg/libavcodec/bit_depth_template.c | 93 + ffmpeg/libavcodec/bitstream.c | 359 + ffmpeg/libavcodec/bitstream_filter.c | 82 + ffmpeg/libavcodec/blockdsp.c | 80 + ffmpeg/libavcodec/blockdsp.h | 53 + ffmpeg/libavcodec/bmp.c | 349 + ffmpeg/libavcodec/bmp.h | 34 + ffmpeg/libavcodec/bmp_parser.c | 104 + ffmpeg/libavcodec/bmpenc.c | 187 + ffmpeg/libavcodec/bmvaudio.c | 89 + ffmpeg/libavcodec/bmvvideo.c | 298 + ffmpeg/libavcodec/brenderpix.c | 292 + ffmpeg/libavcodec/bswapdsp.c | 56 + ffmpeg/libavcodec/bswapdsp.h | 32 + ffmpeg/libavcodec/bytestream.h | 374 + ffmpeg/libavcodec/c93.c | 272 + ffmpeg/libavcodec/cabac.c | 227 + ffmpeg/libavcodec/cabac.h | 62 + ffmpeg/libavcodec/cabac_functions.h | 198 + ffmpeg/libavcodec/cabac_tablegen.c | 41 + ffmpeg/libavcodec/cabac_tablegen.h | 108 + ffmpeg/libavcodec/cavs.c | 837 + ffmpeg/libavcodec/cavs.h | 279 + ffmpeg/libavcodec/cavs_parser.c | 106 + ffmpeg/libavcodec/cavsdata.c | 69 + ffmpeg/libavcodec/cavsdec.c | 1254 ++ ffmpeg/libavcodec/cavsdsp.c | 568 + ffmpeg/libavcodec/cavsdsp.h | 44 + ffmpeg/libavcodec/cbrt_tablegen.c | 37 + ffmpeg/libavcodec/cbrt_tablegen.h | 53 + ffmpeg/libavcodec/cdgraphics.c | 380 + ffmpeg/libavcodec/cdxl.c | 307 + ffmpeg/libavcodec/celp_filters.c | 219 + ffmpeg/libavcodec/celp_filters.h | 169 + ffmpeg/libavcodec/celp_math.c | 126 + ffmpeg/libavcodec/celp_math.h | 97 + ffmpeg/libavcodec/cga_data.c | 55 + ffmpeg/libavcodec/cga_data.h | 47 + ffmpeg/libavcodec/chomp_bsf.c | 46 + ffmpeg/libavcodec/cinepak.c | 488 + ffmpeg/libavcodec/cinepakenc.c | 1335 ++ ffmpeg/libavcodec/cljrdec.c | 94 + ffmpeg/libavcodec/cljrenc.c | 122 + ffmpeg/libavcodec/cllc.c | 494 + ffmpeg/libavcodec/cngdec.c | 171 + ffmpeg/libavcodec/cngenc.c | 116 + ffmpeg/libavcodec/codec_desc.c | 2873 +++ ffmpeg/libavcodec/cook.c | 1290 ++ ffmpeg/libavcodec/cook_parser.c | 60 + ffmpeg/libavcodec/cookdata.h | 580 + ffmpeg/libavcodec/copy_block.h | 89 + ffmpeg/libavcodec/cos_tablegen.c | 78 + ffmpeg/libavcodec/cpia.c | 233 + ffmpeg/libavcodec/crystalhd.c | 1226 ++ ffmpeg/libavcodec/cscd.c | 170 + ffmpeg/libavcodec/cyuv.c | 202 + ffmpeg/libavcodec/dca.c | 72 + ffmpeg/libavcodec/dca.h | 48 + ffmpeg/libavcodec/dca_parser.c | 172 + ffmpeg/libavcodec/dcadata.h | 7662 ++++++++ ffmpeg/libavcodec/dcadec.c | 2673 +++ ffmpeg/libavcodec/dcadsp.c | 112 + ffmpeg/libavcodec/dcadsp.h | 46 + ffmpeg/libavcodec/dcaenc.c | 975 + ffmpeg/libavcodec/dcaenc.h | 113 + ffmpeg/libavcodec/dcahuff.h | 1076 ++ ffmpeg/libavcodec/dct-test.c | 518 + ffmpeg/libavcodec/dct.c | 222 + ffmpeg/libavcodec/dct.h | 68 + ffmpeg/libavcodec/dct32.h | 25 + ffmpeg/libavcodec/dct32_fixed.c | 20 + ffmpeg/libavcodec/dct32_float.c | 20 + ffmpeg/libavcodec/dct32_template.c | 276 + ffmpeg/libavcodec/dctref.c | 123 + ffmpeg/libavcodec/dctref.h | 29 + ffmpeg/libavcodec/dfa.c | 422 + ffmpeg/libavcodec/dirac.c | 340 + ffmpeg/libavcodec/dirac.h | 60 + ffmpeg/libavcodec/dirac_arith.c | 116 + ffmpeg/libavcodec/dirac_arith.h | 195 + ffmpeg/libavcodec/dirac_dwt.c | 571 + ffmpeg/libavcodec/dirac_dwt.h | 123 + ffmpeg/libavcodec/dirac_parser.c | 258 + ffmpeg/libavcodec/diracdec.c | 2002 ++ ffmpeg/libavcodec/diracdsp.c | 201 + ffmpeg/libavcodec/diracdsp.h | 67 + ffmpeg/libavcodec/dnxhd_parser.c | 116 + ffmpeg/libavcodec/dnxhddata.c | 1101 ++ ffmpeg/libavcodec/dnxhddata.h | 57 + ffmpeg/libavcodec/dnxhddec.c | 501 + ffmpeg/libavcodec/dnxhdenc.c | 1159 ++ ffmpeg/libavcodec/dnxhdenc.h | 99 + ffmpeg/libavcodec/dpcm.c | 343 + ffmpeg/libavcodec/dpx.c | 365 + ffmpeg/libavcodec/dpx_parser.c | 114 + ffmpeg/libavcodec/dpxenc.c | 291 + ffmpeg/libavcodec/dsd_tablegen.c | 38 + ffmpeg/libavcodec/dsd_tablegen.h | 95 + ffmpeg/libavcodec/dsddec.c | 167 + ffmpeg/libavcodec/dsicinaudio.c | 133 + ffmpeg/libavcodec/dsicinvideo.c | 317 + ffmpeg/libavcodec/dsputil.h | 87 + ffmpeg/libavcodec/dsputil_compat.c | 56 + ffmpeg/libavcodec/dump_extradata_bsf.c | 52 + ffmpeg/libavcodec/dv.c | 306 + ffmpeg/libavcodec/dv.h | 124 + ffmpeg/libavcodec/dv_profile.c | 321 + ffmpeg/libavcodec/dv_profile.h | 80 + ffmpeg/libavcodec/dv_profile_internal.h | 27 + ffmpeg/libavcodec/dv_tablegen.c | 44 + ffmpeg/libavcodec/dv_tablegen.h | 98 + ffmpeg/libavcodec/dvbsub.c | 460 + ffmpeg/libavcodec/dvbsub_parser.c | 179 + ffmpeg/libavcodec/dvbsubdec.c | 1610 ++ ffmpeg/libavcodec/dvd_nav_parser.c | 115 + ffmpeg/libavcodec/dvdata.c | 360 + ffmpeg/libavcodec/dvdata.h | 43 + ffmpeg/libavcodec/dvdec.c | 431 + ffmpeg/libavcodec/dvdsub_parser.c | 91 + ffmpeg/libavcodec/dvdsubdec.c | 674 + ffmpeg/libavcodec/dvdsubenc.c | 475 + ffmpeg/libavcodec/dvenc.c | 766 + ffmpeg/libavcodec/dxa.c | 374 + ffmpeg/libavcodec/dxtory.c | 755 + ffmpeg/libavcodec/dxva2.c | 174 + ffmpeg/libavcodec/dxva2.h | 93 + ffmpeg/libavcodec/dxva2_h264.c | 472 + ffmpeg/libavcodec/dxva2_internal.h | 56 + ffmpeg/libavcodec/dxva2_mpeg2.c | 282 + ffmpeg/libavcodec/dxva2_vc1.c | 319 + ffmpeg/libavcodec/eac3_data.c | 1134 ++ ffmpeg/libavcodec/eac3_data.h | 36 + ffmpeg/libavcodec/eac3dec.c | 607 + ffmpeg/libavcodec/eac3enc.c | 268 + ffmpeg/libavcodec/eac3enc.h | 54 + ffmpeg/libavcodec/eacmv.c | 246 + ffmpeg/libavcodec/eaidct.c | 88 + ffmpeg/libavcodec/eaidct.h | 26 + ffmpeg/libavcodec/eamad.c | 346 + ffmpeg/libavcodec/eatgq.c | 253 + ffmpeg/libavcodec/eatgv.c | 367 + ffmpeg/libavcodec/eatqi.c | 166 + ffmpeg/libavcodec/elbg.c | 448 + ffmpeg/libavcodec/elbg.h | 55 + ffmpeg/libavcodec/error_resilience.c | 1313 ++ ffmpeg/libavcodec/error_resilience.h | 95 + ffmpeg/libavcodec/escape124.c | 376 + ffmpeg/libavcodec/escape130.c | 360 + ffmpeg/libavcodec/evrcdata.h | 1499 ++ ffmpeg/libavcodec/evrcdec.c | 917 + ffmpeg/libavcodec/exif.c | 142 + ffmpeg/libavcodec/exif.h | 170 + ffmpeg/libavcodec/exr.c | 1454 ++ ffmpeg/libavcodec/faandct.c | 232 + ffmpeg/libavcodec/faandct.h | 37 + ffmpeg/libavcodec/faanidct.c | 171 + ffmpeg/libavcodec/faanidct.h | 31 + ffmpeg/libavcodec/faxcompr.c | 340 + ffmpeg/libavcodec/faxcompr.h | 46 + ffmpeg/libavcodec/fdctdsp.c | 50 + ffmpeg/libavcodec/fdctdsp.h | 37 + ffmpeg/libavcodec/fft-fixed-test.c | 20 + ffmpeg/libavcodec/fft-fixed32-test.c | 21 + ffmpeg/libavcodec/fft-internal.h | 94 + ffmpeg/libavcodec/fft-test.c | 519 + ffmpeg/libavcodec/fft.h | 173 + ffmpeg/libavcodec/fft_fixed.c | 21 + ffmpeg/libavcodec/fft_fixed_32.c | 52 + ffmpeg/libavcodec/fft_float.c | 21 + ffmpeg/libavcodec/fft_init_table.c | 200 + ffmpeg/libavcodec/fft_table.h | 66 + ffmpeg/libavcodec/fft_template.c | 528 + ffmpeg/libavcodec/ffv1.c | 229 + ffmpeg/libavcodec/ffv1.h | 218 + ffmpeg/libavcodec/ffv1dec.c | 1096 ++ ffmpeg/libavcodec/ffv1enc.c | 1368 ++ ffmpeg/libavcodec/ffwavesynth.c | 481 + ffmpeg/libavcodec/fic.c | 464 + ffmpeg/libavcodec/file_open.c | 1 + ffmpeg/libavcodec/flac.c | 237 + ffmpeg/libavcodec/flac.h | 153 + ffmpeg/libavcodec/flac_parser.c | 736 + ffmpeg/libavcodec/flacdata.c | 33 + ffmpeg/libavcodec/flacdata.h | 31 + ffmpeg/libavcodec/flacdec.c | 616 + ffmpeg/libavcodec/flacdsp.c | 133 + ffmpeg/libavcodec/flacdsp.h | 38 + ffmpeg/libavcodec/flacdsp_lpc_template.c | 159 + ffmpeg/libavcodec/flacdsp_template.c | 103 + ffmpeg/libavcodec/flacenc.c | 1378 ++ ffmpeg/libavcodec/flashsv.c | 578 + ffmpeg/libavcodec/flashsv2enc.c | 920 + ffmpeg/libavcodec/flashsvenc.c | 291 + ffmpeg/libavcodec/flicvideo.c | 818 + ffmpeg/libavcodec/flv.h | 34 + ffmpeg/libavcodec/flvdec.c | 128 + ffmpeg/libavcodec/flvenc.c | 106 + ffmpeg/libavcodec/fmtconvert.c | 133 + ffmpeg/libavcodec/fmtconvert.h | 118 + ffmpeg/libavcodec/frame_thread_encoder.c | 303 + ffmpeg/libavcodec/frame_thread_encoder.h | 26 + ffmpeg/libavcodec/fraps.c | 326 + ffmpeg/libavcodec/frwu.c | 128 + ffmpeg/libavcodec/g2meet.c | 921 + ffmpeg/libavcodec/g722.c | 171 + ffmpeg/libavcodec/g722.h | 77 + ffmpeg/libavcodec/g722dec.c | 149 + ffmpeg/libavcodec/g722enc.c | 394 + ffmpeg/libavcodec/g723_1.c | 2484 +++ ffmpeg/libavcodec/g723_1_data.h | 1329 ++ ffmpeg/libavcodec/g726.c | 493 + ffmpeg/libavcodec/g729.h | 29 + ffmpeg/libavcodec/g729data.h | 382 + ffmpeg/libavcodec/g729dec.c | 726 + ffmpeg/libavcodec/g729postfilter.c | 610 + ffmpeg/libavcodec/g729postfilter.h | 116 + ffmpeg/libavcodec/get_bits.h | 696 + ffmpeg/libavcodec/gif.c | 321 + ffmpeg/libavcodec/gif.h | 49 + ffmpeg/libavcodec/gifdec.c | 558 + ffmpeg/libavcodec/golomb-test.c | 99 + ffmpeg/libavcodec/golomb.c | 173 + ffmpeg/libavcodec/golomb.h | 605 + ffmpeg/libavcodec/gsm.h | 45 + ffmpeg/libavcodec/gsm_parser.c | 93 + ffmpeg/libavcodec/gsmdec.c | 138 + ffmpeg/libavcodec/gsmdec_data.c | 120 + ffmpeg/libavcodec/gsmdec_data.h | 45 + ffmpeg/libavcodec/gsmdec_template.c | 160 + ffmpeg/libavcodec/h261.c | 92 + ffmpeg/libavcodec/h261.h | 72 + ffmpeg/libavcodec/h261_parser.c | 94 + ffmpeg/libavcodec/h261data.c | 156 + ffmpeg/libavcodec/h261dec.c | 685 + ffmpeg/libavcodec/h261enc.c | 391 + ffmpeg/libavcodec/h263.c | 382 + ffmpeg/libavcodec/h263.h | 219 + ffmpeg/libavcodec/h263_parser.c | 95 + ffmpeg/libavcodec/h263_parser.h | 29 + ffmpeg/libavcodec/h263data.h | 294 + ffmpeg/libavcodec/h263dec.c | 740 + ffmpeg/libavcodec/h263dsp.c | 124 + ffmpeg/libavcodec/h263dsp.h | 34 + ffmpeg/libavcodec/h264.c | 2020 ++ ffmpeg/libavcodec/h264.h | 1151 ++ ffmpeg/libavcodec/h264_cabac.c | 2434 +++ ffmpeg/libavcodec/h264_cavlc.c | 1172 ++ ffmpeg/libavcodec/h264_direct.c | 699 + ffmpeg/libavcodec/h264_loopfilter.c | 831 + ffmpeg/libavcodec/h264_mb.c | 827 + ffmpeg/libavcodec/h264_mb_template.c | 369 + ffmpeg/libavcodec/h264_mc_template.c | 161 + ffmpeg/libavcodec/h264_mp4toannexb_bsf.c | 221 + ffmpeg/libavcodec/h264_mvpred.h | 830 + ffmpeg/libavcodec/h264_parser.c | 568 + ffmpeg/libavcodec/h264_picture.c | 213 + ffmpeg/libavcodec/h264_ps.c | 740 + ffmpeg/libavcodec/h264_refs.c | 870 + ffmpeg/libavcodec/h264_sei.c | 402 + ffmpeg/libavcodec/h264_slice.c | 2602 +++ ffmpeg/libavcodec/h264addpx_template.c | 72 + ffmpeg/libavcodec/h264chroma.c | 57 + ffmpeg/libavcodec/h264chroma.h | 38 + ffmpeg/libavcodec/h264chroma_template.c | 205 + ffmpeg/libavcodec/h264data.h | 170 + ffmpeg/libavcodec/h264dsp.c | 160 + ffmpeg/libavcodec/h264dsp.h | 130 + ffmpeg/libavcodec/h264dsp_template.c | 328 + ffmpeg/libavcodec/h264idct.c | 48 + ffmpeg/libavcodec/h264idct.h | 44 + ffmpeg/libavcodec/h264idct_template.c | 324 + ffmpeg/libavcodec/h264pred.c | 597 + ffmpeg/libavcodec/h264pred.h | 121 + ffmpeg/libavcodec/h264pred_template.c | 1355 ++ ffmpeg/libavcodec/h264qpel.c | 107 + ffmpeg/libavcodec/h264qpel.h | 39 + ffmpeg/libavcodec/h264qpel_template.c | 552 + ffmpeg/libavcodec/hevc.c | 3464 ++++ ffmpeg/libavcodec/hevc.h | 1051 ++ ffmpeg/libavcodec/hevc_cabac.c | 1587 ++ ffmpeg/libavcodec/hevc_filter.c | 734 + ffmpeg/libavcodec/hevc_mvs.c | 773 + ffmpeg/libavcodec/hevc_parser.c | 350 + ffmpeg/libavcodec/hevc_ps.c | 1525 ++ ffmpeg/libavcodec/hevc_refs.c | 540 + ffmpeg/libavcodec/hevc_sei.c | 205 + ffmpeg/libavcodec/hevcdsp.c | 253 + ffmpeg/libavcodec/hevcdsp.h | 130 + ffmpeg/libavcodec/hevcdsp_template.c | 1740 ++ ffmpeg/libavcodec/hevcpred.c | 77 + ffmpeg/libavcodec/hevcpred.h | 45 + ffmpeg/libavcodec/hevcpred_template.c | 551 + ffmpeg/libavcodec/hnm4video.c | 508 + ffmpeg/libavcodec/hpel_template.c | 106 + ffmpeg/libavcodec/hpeldsp.c | 368 + ffmpeg/libavcodec/hpeldsp.h | 103 + ffmpeg/libavcodec/huffman.c | 197 + ffmpeg/libavcodec/huffman.h | 48 + ffmpeg/libavcodec/huffyuv.c | 95 + ffmpeg/libavcodec/huffyuv.h | 100 + ffmpeg/libavcodec/huffyuvdec.c | 1254 ++ ffmpeg/libavcodec/huffyuvdsp.c | 117 + ffmpeg/libavcodec/huffyuvdsp.h | 52 + ffmpeg/libavcodec/huffyuvenc.c | 1116 ++ ffmpeg/libavcodec/huffyuvencdsp.c | 84 + ffmpeg/libavcodec/huffyuvencdsp.h | 41 + ffmpeg/libavcodec/idcinvideo.c | 253 + ffmpeg/libavcodec/idctdsp.c | 314 + ffmpeg/libavcodec/idctdsp.h | 112 + ffmpeg/libavcodec/iff.c | 905 + ffmpeg/libavcodec/iirfilter.c | 354 + ffmpeg/libavcodec/iirfilter.h | 145 + ffmpeg/libavcodec/imc.c | 1105 ++ ffmpeg/libavcodec/imcdata.h | 169 + ffmpeg/libavcodec/imgconvert.c | 485 + ffmpeg/libavcodec/imgconvert.h | 47 + ffmpeg/libavcodec/imx_dump_header_bsf.c | 58 + ffmpeg/libavcodec/indeo2.c | 258 + ffmpeg/libavcodec/indeo2data.h | 141 + ffmpeg/libavcodec/indeo3.c | 1144 ++ ffmpeg/libavcodec/indeo3data.h | 362 + ffmpeg/libavcodec/indeo4.c | 707 + ffmpeg/libavcodec/indeo4data.h | 351 + ffmpeg/libavcodec/indeo5.c | 692 + ffmpeg/libavcodec/indeo5data.h | 162 + ffmpeg/libavcodec/intelh263dec.c | 144 + ffmpeg/libavcodec/internal.h | 267 + ffmpeg/libavcodec/interplayvideo.c | 1052 ++ ffmpeg/libavcodec/intrax8.c | 793 + ffmpeg/libavcodec/intrax8.h | 62 + ffmpeg/libavcodec/intrax8dsp.c | 432 + ffmpeg/libavcodec/intrax8dsp.h | 35 + ffmpeg/libavcodec/intrax8huf.h | 918 + ffmpeg/libavcodec/ituh263dec.c | 1162 ++ ffmpeg/libavcodec/ituh263enc.c | 833 + ffmpeg/libavcodec/ivi_common.c | 1597 ++ ffmpeg/libavcodec/ivi_common.h | 345 + ffmpeg/libavcodec/ivi_dsp.c | 846 + ffmpeg/libavcodec/ivi_dsp.h | 346 + ffmpeg/libavcodec/j2kenc.c | 1055 ++ ffmpeg/libavcodec/jacosub.h | 45 + ffmpeg/libavcodec/jacosubdec.c | 205 + ffmpeg/libavcodec/jfdctfst.c | 332 + ffmpeg/libavcodec/jfdctint.c | 25 + ffmpeg/libavcodec/jfdctint_template.c | 403 + ffmpeg/libavcodec/jpeg2000.c | 539 + ffmpeg/libavcodec/jpeg2000.h | 265 + ffmpeg/libavcodec/jpeg2000dec.c | 1738 ++ ffmpeg/libavcodec/jpeg2000dwt.c | 578 + ffmpeg/libavcodec/jpeg2000dwt.h | 65 + ffmpeg/libavcodec/jpegls.c | 100 + ffmpeg/libavcodec/jpegls.h | 124 + ffmpeg/libavcodec/jpeglsdec.c | 511 + ffmpeg/libavcodec/jpeglsdec.h | 42 + ffmpeg/libavcodec/jpeglsenc.c | 441 + ffmpeg/libavcodec/jrevdct.c | 1169 ++ ffmpeg/libavcodec/jvdec.c | 228 + ffmpeg/libavcodec/kbdwin.c | 57 + ffmpeg/libavcodec/kbdwin.h | 38 + ffmpeg/libavcodec/kgv1dec.c | 187 + ffmpeg/libavcodec/kmvc.c | 425 + ffmpeg/libavcodec/lagarith.c | 752 + ffmpeg/libavcodec/lagarithrac.c | 56 + ffmpeg/libavcodec/lagarithrac.h | 109 + ffmpeg/libavcodec/latm_parser.c | 112 + ffmpeg/libavcodec/lcl.h | 49 + ffmpeg/libavcodec/lcldec.c | 677 + ffmpeg/libavcodec/lclenc.c | 202 + ffmpeg/libavcodec/libaacplus.c | 141 + ffmpeg/libavcodec/libavcodec.v | 7 + ffmpeg/libavcodec/libcelt_dec.c | 140 + ffmpeg/libavcodec/libfaac.c | 248 + ffmpeg/libavcodec/libfdk-aacdec.c | 299 + ffmpeg/libavcodec/libfdk-aacenc.c | 428 + ffmpeg/libavcodec/libgsmdec.c | 153 + ffmpeg/libavcodec/libgsmenc.c | 143 + ffmpeg/libavcodec/libilbc.c | 196 + ffmpeg/libavcodec/libmp3lame.c | 318 + ffmpeg/libavcodec/libopencore-amr.c | 378 + ffmpeg/libavcodec/libopenjpegdec.c | 432 + ffmpeg/libavcodec/libopenjpegenc.c | 669 + ffmpeg/libavcodec/libopus.c | 48 + ffmpeg/libavcodec/libopus.h | 27 + ffmpeg/libavcodec/libopusdec.c | 198 + ffmpeg/libavcodec/libopusenc.c | 446 + ffmpeg/libavcodec/libschroedinger.c | 222 + ffmpeg/libavcodec/libschroedinger.h | 133 + ffmpeg/libavcodec/libschroedingerdec.c | 386 + ffmpeg/libavcodec/libschroedingerenc.c | 454 + ffmpeg/libavcodec/libshine.c | 149 + ffmpeg/libavcodec/libspeexdec.c | 194 + ffmpeg/libavcodec/libspeexenc.c | 368 + ffmpeg/libavcodec/libstagefright.cpp | 590 + ffmpeg/libavcodec/libtheoraenc.c | 377 + ffmpeg/libavcodec/libtwolame.c | 229 + ffmpeg/libavcodec/libutvideo.h | 70 + ffmpeg/libavcodec/libutvideodec.cpp | 212 + ffmpeg/libavcodec/libutvideoenc.cpp | 246 + ffmpeg/libavcodec/libvo-aacenc.c | 200 + ffmpeg/libavcodec/libvo-amrwbenc.c | 152 + ffmpeg/libavcodec/libvorbisdec.c | 199 + ffmpeg/libavcodec/libvorbisenc.c | 377 + ffmpeg/libavcodec/libvpx.c | 30 + ffmpeg/libavcodec/libvpx.h | 28 + ffmpeg/libavcodec/libvpxdec.c | 151 + ffmpeg/libavcodec/libvpxenc.c | 901 + ffmpeg/libavcodec/libwavpackenc.c | 194 + ffmpeg/libavcodec/libwebpenc.c | 289 + ffmpeg/libavcodec/libx264.c | 885 + ffmpeg/libavcodec/libx265.c | 320 + ffmpeg/libavcodec/libxavs.c | 436 + ffmpeg/libavcodec/libxvid.c | 851 + ffmpeg/libavcodec/libxvid.h | 31 + ffmpeg/libavcodec/libxvid_rc.c | 163 + ffmpeg/libavcodec/libzvbi-teletextdec.c | 570 + ffmpeg/libavcodec/ljpegenc.c | 330 + ffmpeg/libavcodec/loco.c | 312 + ffmpeg/libavcodec/log2_tab.c | 1 + ffmpeg/libavcodec/lossless_audiodsp.c | 49 + ffmpeg/libavcodec/lossless_audiodsp.h | 45 + ffmpeg/libavcodec/lossless_videodsp.c | 128 + ffmpeg/libavcodec/lossless_videodsp.h | 40 + ffmpeg/libavcodec/lpc.c | 293 + ffmpeg/libavcodec/lpc.h | 197 + ffmpeg/libavcodec/lsp.c | 235 + ffmpeg/libavcodec/lsp.h | 130 + ffmpeg/libavcodec/lzw.c | 225 + ffmpeg/libavcodec/lzw.h | 63 + ffmpeg/libavcodec/lzwenc.c | 273 + ffmpeg/libavcodec/mace.c | 311 + ffmpeg/libavcodec/mathops.h | 230 + ffmpeg/libavcodec/mathtables.c | 126 + ffmpeg/libavcodec/mdct_fixed.c | 65 + ffmpeg/libavcodec/mdct_fixed_32.c | 52 + ffmpeg/libavcodec/mdct_float.c | 21 + ffmpeg/libavcodec/mdct_template.c | 207 + ffmpeg/libavcodec/mdec.c | 261 + ffmpeg/libavcodec/me_cmp.c | 992 + ffmpeg/libavcodec/me_cmp.h | 94 + ffmpeg/libavcodec/metasound.c | 389 + ffmpeg/libavcodec/metasound_data.c | 15343 ++++++++++++++++ ffmpeg/libavcodec/metasound_data.h | 49 + ffmpeg/libavcodec/microdvddec.c | 377 + ffmpeg/libavcodec/mimic.c | 485 + ffmpeg/libavcodec/mips/Makefile | 20 + ffmpeg/libavcodec/mips/aaccoder_mips.c | 2498 +++ ffmpeg/libavcodec/mips/aacdec_mips.c | 831 + ffmpeg/libavcodec/mips/aacdec_mips.h | 249 + ffmpeg/libavcodec/mips/aacpsdsp_mips.c | 459 + ffmpeg/libavcodec/mips/aacpsy_mips.h | 230 + ffmpeg/libavcodec/mips/aacsbr_mips.c | 618 + ffmpeg/libavcodec/mips/aacsbr_mips.h | 493 + ffmpeg/libavcodec/mips/ac3dsp_mips.c | 412 + ffmpeg/libavcodec/mips/acelp_filters_mips.c | 216 + ffmpeg/libavcodec/mips/acelp_vectors_mips.c | 101 + ffmpeg/libavcodec/mips/amrwbdec_mips.c | 187 + ffmpeg/libavcodec/mips/amrwbdec_mips.h | 62 + ffmpeg/libavcodec/mips/celp_filters_mips.c | 288 + ffmpeg/libavcodec/mips/celp_math_mips.c | 89 + .../libavcodec/mips/compute_antialias_fixed.h | 250 + .../libavcodec/mips/compute_antialias_float.h | 182 + ffmpeg/libavcodec/mips/fft_mips.c | 534 + ffmpeg/libavcodec/mips/fmtconvert_mips.c | 342 + ffmpeg/libavcodec/mips/iirfilter_mips.c | 204 + ffmpeg/libavcodec/mips/lsp_mips.h | 109 + ffmpeg/libavcodec/mips/mathops.h | 82 + .../libavcodec/mips/mpegaudiodsp_mips_fixed.c | 907 + .../libavcodec/mips/mpegaudiodsp_mips_float.c | 1250 ++ ffmpeg/libavcodec/mips/sbrdsp_mips.c | 940 + ffmpeg/libavcodec/mjpeg.c | 145 + ffmpeg/libavcodec/mjpeg.h | 157 + ffmpeg/libavcodec/mjpeg2jpeg_bsf.c | 116 + ffmpeg/libavcodec/mjpeg_parser.c | 134 + ffmpeg/libavcodec/mjpega_dump_header_bsf.c | 93 + ffmpeg/libavcodec/mjpegbdec.c | 170 + ffmpeg/libavcodec/mjpegdec.c | 2314 +++ ffmpeg/libavcodec/mjpegdec.h | 150 + ffmpeg/libavcodec/mjpegenc.c | 247 + ffmpeg/libavcodec/mjpegenc.h | 56 + ffmpeg/libavcodec/mjpegenc_common.c | 383 + ffmpeg/libavcodec/mjpegenc_common.h | 43 + ffmpeg/libavcodec/mlp.c | 115 + ffmpeg/libavcodec/mlp.h | 137 + ffmpeg/libavcodec/mlp_parser.c | 416 + ffmpeg/libavcodec/mlp_parser.h | 70 + ffmpeg/libavcodec/mlpdec.c | 1333 ++ ffmpeg/libavcodec/mlpdsp.c | 138 + ffmpeg/libavcodec/mlpdsp.h | 83 + ffmpeg/libavcodec/mmvideo.c | 244 + ffmpeg/libavcodec/motion-test.c | 152 + ffmpeg/libavcodec/motion_est.c | 1777 ++ ffmpeg/libavcodec/motion_est_template.c | 1105 ++ ffmpeg/libavcodec/motionpixels.c | 355 + ffmpeg/libavcodec/motionpixels_tablegen.c | 41 + ffmpeg/libavcodec/motionpixels_tablegen.h | 92 + ffmpeg/libavcodec/movsub_bsf.c | 55 + ffmpeg/libavcodec/movtextdec.c | 116 + ffmpeg/libavcodec/movtextenc.c | 165 + ffmpeg/libavcodec/mp3_header_decompress_bsf.c | 97 + ffmpeg/libavcodec/mpc.c | 100 + ffmpeg/libavcodec/mpc.h | 77 + ffmpeg/libavcodec/mpc7.c | 343 + ffmpeg/libavcodec/mpc7data.h | 171 + ffmpeg/libavcodec/mpc8.c | 446 + ffmpeg/libavcodec/mpc8data.h | 121 + ffmpeg/libavcodec/mpc8huff.h | 578 + ffmpeg/libavcodec/mpcdata.h | 100 + ffmpeg/libavcodec/mpeg12.c | 244 + ffmpeg/libavcodec/mpeg12.h | 74 + ffmpeg/libavcodec/mpeg12data.c | 432 + ffmpeg/libavcodec/mpeg12data.h | 57 + ffmpeg/libavcodec/mpeg12dec.c | 2926 +++ ffmpeg/libavcodec/mpeg12enc.c | 1176 ++ ffmpeg/libavcodec/mpeg4audio.c | 190 + ffmpeg/libavcodec/mpeg4audio.h | 109 + ffmpeg/libavcodec/mpeg4data.h | 376 + ffmpeg/libavcodec/mpeg4video.c | 193 + ffmpeg/libavcodec/mpeg4video.h | 255 + ffmpeg/libavcodec/mpeg4video_parser.c | 161 + ffmpeg/libavcodec/mpeg4video_parser.h | 34 + ffmpeg/libavcodec/mpeg4videodec.c | 2806 +++ ffmpeg/libavcodec/mpeg4videoenc.c | 1422 ++ ffmpeg/libavcodec/mpeg_er.c | 60 + ffmpeg/libavcodec/mpeg_er.h | 26 + ffmpeg/libavcodec/mpegaudio.c | 50 + ffmpeg/libavcodec/mpegaudio.h | 77 + ffmpeg/libavcodec/mpegaudio_parser.c | 116 + ffmpeg/libavcodec/mpegaudio_tablegen.c | 42 + ffmpeg/libavcodec/mpegaudio_tablegen.h | 76 + ffmpeg/libavcodec/mpegaudiodata.c | 146 + ffmpeg/libavcodec/mpegaudiodata.h | 44 + ffmpeg/libavcodec/mpegaudiodec_fixed.c | 120 + ffmpeg/libavcodec/mpegaudiodec_float.c | 120 + ffmpeg/libavcodec/mpegaudiodec_template.c | 1985 ++ ffmpeg/libavcodec/mpegaudiodecheader.c | 154 + ffmpeg/libavcodec/mpegaudiodecheader.h | 78 + ffmpeg/libavcodec/mpegaudiodectab.h | 615 + ffmpeg/libavcodec/mpegaudiodsp.c | 50 + ffmpeg/libavcodec/mpegaudiodsp.h | 90 + ffmpeg/libavcodec/mpegaudiodsp_data.c | 56 + ffmpeg/libavcodec/mpegaudiodsp_fixed.c | 20 + ffmpeg/libavcodec/mpegaudiodsp_float.c | 20 + ffmpeg/libavcodec/mpegaudiodsp_template.c | 401 + ffmpeg/libavcodec/mpegaudioenc_fixed.c | 41 + ffmpeg/libavcodec/mpegaudioenc_float.c | 42 + ffmpeg/libavcodec/mpegaudioenc_template.c | 785 + ffmpeg/libavcodec/mpegaudiotab.h | 104 + ffmpeg/libavcodec/mpegutils.c | 80 + ffmpeg/libavcodec/mpegutils.h | 127 + ffmpeg/libavcodec/mpegvideo.c | 3410 ++++ ffmpeg/libavcodec/mpegvideo.h | 886 + ffmpeg/libavcodec/mpegvideo_enc.c | 4586 +++++ ffmpeg/libavcodec/mpegvideo_motion.c | 987 + ffmpeg/libavcodec/mpegvideo_parser.c | 218 + ffmpeg/libavcodec/mpegvideo_xvmc.c | 376 + ffmpeg/libavcodec/mpegvideodsp.c | 119 + ffmpeg/libavcodec/mpegvideodsp.h | 47 + ffmpeg/libavcodec/mpegvideoencdsp.c | 179 + ffmpeg/libavcodec/mpegvideoencdsp.h | 56 + ffmpeg/libavcodec/mpl2dec.c | 96 + ffmpeg/libavcodec/mqc.c | 117 + ffmpeg/libavcodec/mqc.h | 92 + ffmpeg/libavcodec/mqcdec.c | 93 + ffmpeg/libavcodec/mqcenc.c | 119 + ffmpeg/libavcodec/msgsmdec.c | 38 + ffmpeg/libavcodec/msgsmdec.h | 30 + ffmpeg/libavcodec/msmpeg4.c | 336 + ffmpeg/libavcodec/msmpeg4.h | 70 + ffmpeg/libavcodec/msmpeg4data.c | 1999 ++ ffmpeg/libavcodec/msmpeg4data.h | 90 + ffmpeg/libavcodec/msmpeg4dec.c | 980 + ffmpeg/libavcodec/msmpeg4enc.c | 691 + ffmpeg/libavcodec/msrle.c | 170 + ffmpeg/libavcodec/msrledec.c | 266 + ffmpeg/libavcodec/msrledec.h | 39 + ffmpeg/libavcodec/mss1.c | 226 + ffmpeg/libavcodec/mss12.c | 681 + ffmpeg/libavcodec/mss12.h | 133 + ffmpeg/libavcodec/mss2.c | 852 + ffmpeg/libavcodec/mss2dsp.c | 156 + ffmpeg/libavcodec/mss2dsp.h | 50 + ffmpeg/libavcodec/mss3.c | 873 + ffmpeg/libavcodec/mss34dsp.c | 114 + ffmpeg/libavcodec/mss34dsp.h | 45 + ffmpeg/libavcodec/mss4.c | 682 + ffmpeg/libavcodec/msvideo1.c | 350 + ffmpeg/libavcodec/msvideo1enc.c | 305 + ffmpeg/libavcodec/mvcdec.c | 293 + ffmpeg/libavcodec/mxpegdec.c | 348 + ffmpeg/libavcodec/nellymoser.c | 224 + ffmpeg/libavcodec/nellymoser.h | 57 + ffmpeg/libavcodec/nellymoserdec.c | 209 + ffmpeg/libavcodec/nellymoserenc.c | 419 + ffmpeg/libavcodec/neon/Makefile | 1 + ffmpeg/libavcodec/neon/mpegvideo.c | 134 + ffmpeg/libavcodec/noise_bsf.c | 55 + ffmpeg/libavcodec/nuv.c | 351 + ffmpeg/libavcodec/old_codec_ids.h | 397 + ffmpeg/libavcodec/on2avc.c | 1019 + ffmpeg/libavcodec/on2avcdata.c | 9383 ++++++++++ ffmpeg/libavcodec/on2avcdata.h | 82 + ffmpeg/libavcodec/options.c | 298 + ffmpeg/libavcodec/options_table.h | 482 + ffmpeg/libavcodec/opus.c | 428 + ffmpeg/libavcodec/opus.h | 411 + ffmpeg/libavcodec/opus_celt.c | 2221 +++ ffmpeg/libavcodec/opus_imdct.c | 272 + ffmpeg/libavcodec/opus_imdct.h | 57 + ffmpeg/libavcodec/opus_parser.c | 75 + ffmpeg/libavcodec/opus_silk.c | 1597 ++ ffmpeg/libavcodec/opusdec.c | 674 + ffmpeg/libavcodec/paf.h | 28 + ffmpeg/libavcodec/pafaudio.c | 82 + ffmpeg/libavcodec/pafvideo.c | 397 + ffmpeg/libavcodec/pamenc.c | 153 + ffmpeg/libavcodec/parser.c | 312 + ffmpeg/libavcodec/parser.h | 59 + ffmpeg/libavcodec/pcm-bluray.c | 314 + ffmpeg/libavcodec/pcm-dvd.c | 318 + ffmpeg/libavcodec/pcm.c | 571 + ffmpeg/libavcodec/pcm_tablegen.c | 39 + ffmpeg/libavcodec/pcm_tablegen.h | 119 + ffmpeg/libavcodec/pcx.c | 243 + ffmpeg/libavcodec/pcxenc.c | 228 + ffmpeg/libavcodec/pel_template.c | 80 + ffmpeg/libavcodec/pgssubdec.c | 699 + ffmpeg/libavcodec/pictordec.c | 267 + ffmpeg/libavcodec/pixblockdsp.c | 82 + ffmpeg/libavcodec/pixblockdsp.h | 46 + ffmpeg/libavcodec/pixblockdsp_template.c | 40 + ffmpeg/libavcodec/pixels.h | 37 + ffmpeg/libavcodec/png.c | 72 + ffmpeg/libavcodec/png.h | 69 + ffmpeg/libavcodec/png_parser.c | 117 + ffmpeg/libavcodec/pngdec.c | 959 + ffmpeg/libavcodec/pngdsp.c | 50 + ffmpeg/libavcodec/pngdsp.h | 40 + ffmpeg/libavcodec/pngenc.c | 540 + ffmpeg/libavcodec/pnm.c | 194 + ffmpeg/libavcodec/pnm.h | 37 + ffmpeg/libavcodec/pnm_parser.c | 92 + ffmpeg/libavcodec/pnmdec.c | 311 + ffmpeg/libavcodec/pnmenc.c | 196 + ffmpeg/libavcodec/ppc/Makefile | 31 + ffmpeg/libavcodec/ppc/asm.S | 141 + ffmpeg/libavcodec/ppc/audiodsp.c | 72 + ffmpeg/libavcodec/ppc/blockdsp.c | 169 + ffmpeg/libavcodec/ppc/dct-test.c | 32 + ffmpeg/libavcodec/ppc/fdct.h | 26 + ffmpeg/libavcodec/ppc/fdctdsp.c | 479 + ffmpeg/libavcodec/ppc/fft_altivec.S | 454 + ffmpeg/libavcodec/ppc/fft_init.c | 168 + ffmpeg/libavcodec/ppc/fft_vsx.c | 227 + ffmpeg/libavcodec/ppc/fft_vsx.h | 830 + ffmpeg/libavcodec/ppc/fmtconvert_altivec.c | 177 + ffmpeg/libavcodec/ppc/h264chroma_init.c | 64 + ffmpeg/libavcodec/ppc/h264chroma_template.c | 289 + ffmpeg/libavcodec/ppc/h264dsp.c | 771 + ffmpeg/libavcodec/ppc/h264qpel.c | 319 + ffmpeg/libavcodec/ppc/h264qpel_template.c | 517 + ffmpeg/libavcodec/ppc/hpeldsp_altivec.c | 468 + ffmpeg/libavcodec/ppc/hpeldsp_altivec.h | 34 + ffmpeg/libavcodec/ppc/huffyuvdsp_altivec.c | 62 + ffmpeg/libavcodec/ppc/idctdsp.c | 263 + .../ppc/lossless_audiodsp_altivec.c | 82 + ffmpeg/libavcodec/ppc/mathops.h | 79 + ffmpeg/libavcodec/ppc/me_cmp.c | 767 + ffmpeg/libavcodec/ppc/mpegaudiodsp_altivec.c | 141 + ffmpeg/libavcodec/ppc/mpegvideo_altivec.c | 130 + ffmpeg/libavcodec/ppc/mpegvideodsp.c | 133 + ffmpeg/libavcodec/ppc/mpegvideoencdsp.c | 103 + ffmpeg/libavcodec/ppc/pixblockdsp.c | 153 + ffmpeg/libavcodec/ppc/svq1enc_altivec.c | 85 + ffmpeg/libavcodec/ppc/vc1dsp_altivec.c | 356 + ffmpeg/libavcodec/ppc/videodsp_ppc.c | 36 + ffmpeg/libavcodec/ppc/vorbisdsp_altivec.c | 63 + ffmpeg/libavcodec/ppc/vp3dsp_altivec.c | 189 + ffmpeg/libavcodec/ppc/vp8dsp_altivec.c | 347 + ffmpeg/libavcodec/proresdata.c | 72 + ffmpeg/libavcodec/proresdata.h | 39 + ffmpeg/libavcodec/proresdec.h | 55 + ffmpeg/libavcodec/proresdec2.c | 689 + ffmpeg/libavcodec/proresdec_lgpl.c | 783 + ffmpeg/libavcodec/proresdsp.c | 68 + ffmpeg/libavcodec/proresdsp.h | 41 + ffmpeg/libavcodec/proresenc_anatoliy.c | 636 + ffmpeg/libavcodec/proresenc_kostya.c | 1357 ++ ffmpeg/libavcodec/psymodel.c | 147 + ffmpeg/libavcodec/psymodel.h | 189 + ffmpeg/libavcodec/pthread.c | 88 + ffmpeg/libavcodec/pthread_frame.c | 901 + ffmpeg/libavcodec/pthread_internal.h | 34 + ffmpeg/libavcodec/pthread_slice.c | 295 + ffmpeg/libavcodec/ptx.c | 92 + ffmpeg/libavcodec/put_bits.h | 240 + ffmpeg/libavcodec/qcelpdata.h | 552 + ffmpeg/libavcodec/qcelpdec.c | 801 + ffmpeg/libavcodec/qdm2.c | 2059 +++ ffmpeg/libavcodec/qdm2_tablegen.c | 44 + ffmpeg/libavcodec/qdm2_tablegen.h | 97 + ffmpeg/libavcodec/qdm2data.h | 531 + ffmpeg/libavcodec/qdrw.c | 151 + ffmpeg/libavcodec/qpeg.c | 354 + ffmpeg/libavcodec/qpel_template.c | 221 + ffmpeg/libavcodec/qpeldsp.c | 814 + ffmpeg/libavcodec/qpeldsp.h | 82 + ffmpeg/libavcodec/qtrle.c | 527 + ffmpeg/libavcodec/qtrleenc.c | 412 + ffmpeg/libavcodec/r210dec.c | 122 + ffmpeg/libavcodec/r210enc.c | 123 + ffmpeg/libavcodec/ra144.c | 1724 ++ ffmpeg/libavcodec/ra144.h | 89 + ffmpeg/libavcodec/ra144dec.c | 138 + ffmpeg/libavcodec/ra144enc.c | 559 + ffmpeg/libavcodec/ra288.c | 239 + ffmpeg/libavcodec/ra288.h | 148 + ffmpeg/libavcodec/ralf.c | 536 + ffmpeg/libavcodec/ralfdata.h | 9920 ++++++++++ ffmpeg/libavcodec/rangecoder.c | 160 + ffmpeg/libavcodec/rangecoder.h | 147 + ffmpeg/libavcodec/ratecontrol.c | 1067 ++ ffmpeg/libavcodec/ratecontrol.h | 103 + ffmpeg/libavcodec/raw.c | 266 + ffmpeg/libavcodec/raw.h | 47 + ffmpeg/libavcodec/rawdec.c | 373 + ffmpeg/libavcodec/rawenc.c | 85 + ffmpeg/libavcodec/rdft.c | 134 + ffmpeg/libavcodec/rdft.h | 74 + ffmpeg/libavcodec/realtextdec.c | 83 + ffmpeg/libavcodec/rectangle.h | 124 + ffmpeg/libavcodec/remove_extradata_bsf.c | 54 + ffmpeg/libavcodec/resample.c | 443 + ffmpeg/libavcodec/resample2.c | 319 + ffmpeg/libavcodec/rl.h | 82 + ffmpeg/libavcodec/rl2.c | 226 + ffmpeg/libavcodec/rle.c | 85 + ffmpeg/libavcodec/rle.h | 39 + ffmpeg/libavcodec/rnd_avg.h | 51 + ffmpeg/libavcodec/roqaudioenc.c | 206 + ffmpeg/libavcodec/roqvideo.c | 143 + ffmpeg/libavcodec/roqvideo.h | 96 + ffmpeg/libavcodec/roqvideodec.c | 248 + ffmpeg/libavcodec/roqvideoenc.c | 1115 ++ ffmpeg/libavcodec/rpza.c | 284 + ffmpeg/libavcodec/rtjpeg.c | 183 + ffmpeg/libavcodec/rtjpeg.h | 49 + ffmpeg/libavcodec/rv10.c | 822 + ffmpeg/libavcodec/rv10enc.c | 72 + ffmpeg/libavcodec/rv20enc.c | 73 + ffmpeg/libavcodec/rv30.c | 303 + ffmpeg/libavcodec/rv30data.h | 181 + ffmpeg/libavcodec/rv30dsp.c | 315 + ffmpeg/libavcodec/rv34.c | 1842 ++ ffmpeg/libavcodec/rv34.h | 140 + ffmpeg/libavcodec/rv34_parser.c | 93 + ffmpeg/libavcodec/rv34data.h | 126 + ffmpeg/libavcodec/rv34dsp.c | 143 + ffmpeg/libavcodec/rv34dsp.h | 88 + ffmpeg/libavcodec/rv34vlc.h | 4055 ++++ ffmpeg/libavcodec/rv40.c | 585 + ffmpeg/libavcodec/rv40data.h | 101 + ffmpeg/libavcodec/rv40dsp.c | 709 + ffmpeg/libavcodec/rv40vlc2.h | 706 + ffmpeg/libavcodec/s302m.c | 161 + ffmpeg/libavcodec/s302menc.c | 178 + ffmpeg/libavcodec/s3tc.c | 97 + ffmpeg/libavcodec/s3tc.h | 55 + ffmpeg/libavcodec/samidec.c | 158 + ffmpeg/libavcodec/sanm.c | 1528 ++ ffmpeg/libavcodec/sbr.h | 213 + ffmpeg/libavcodec/sbrdsp.c | 295 + ffmpeg/libavcodec/sbrdsp.h | 52 + ffmpeg/libavcodec/sgi.h | 36 + ffmpeg/libavcodec/sgidec.c | 300 + ffmpeg/libavcodec/sgienc.c | 230 + ffmpeg/libavcodec/sgirledec.c | 160 + ffmpeg/libavcodec/sh4/README | 6 + ffmpeg/libavcodec/shorten.c | 682 + ffmpeg/libavcodec/simple_idct.c | 239 + ffmpeg/libavcodec/simple_idct.h | 58 + ffmpeg/libavcodec/simple_idct_template.c | 340 + ffmpeg/libavcodec/sinewin.c | 20 + ffmpeg/libavcodec/sinewin.h | 60 + ffmpeg/libavcodec/sinewin_tablegen.c | 46 + ffmpeg/libavcodec/sinewin_tablegen.h | 67 + ffmpeg/libavcodec/sipr.c | 574 + ffmpeg/libavcodec/sipr.h | 109 + ffmpeg/libavcodec/sipr16k.c | 282 + ffmpeg/libavcodec/sipr16kdata.h | 533 + ffmpeg/libavcodec/siprdata.h | 263 + ffmpeg/libavcodec/smacker.c | 826 + ffmpeg/libavcodec/smc.c | 476 + ffmpeg/libavcodec/smvjpegdec.c | 209 + ffmpeg/libavcodec/snow.c | 723 + ffmpeg/libavcodec/snow.h | 717 + ffmpeg/libavcodec/snow_dwt.c | 865 + ffmpeg/libavcodec/snow_dwt.h | 127 + ffmpeg/libavcodec/snowdata.h | 132 + ffmpeg/libavcodec/snowdec.c | 606 + ffmpeg/libavcodec/snowenc.c | 2024 ++ ffmpeg/libavcodec/sonic.c | 1094 ++ ffmpeg/libavcodec/sp5x.h | 238 + ffmpeg/libavcodec/sp5xdec.c | 122 + ffmpeg/libavcodec/sparc/README | 6 + ffmpeg/libavcodec/srtdec.c | 283 + ffmpeg/libavcodec/srtenc.c | 332 + ffmpeg/libavcodec/startcode.c | 57 + ffmpeg/libavcodec/startcode.h | 32 + ffmpeg/libavcodec/subviewerdec.c | 83 + ffmpeg/libavcodec/sunrast.c | 215 + ffmpeg/libavcodec/sunrast.h | 56 + ffmpeg/libavcodec/sunrastenc.c | 227 + ffmpeg/libavcodec/svq1.c | 43 + ffmpeg/libavcodec/svq1.h | 59 + ffmpeg/libavcodec/svq13.c | 69 + ffmpeg/libavcodec/svq1_cb.h | 1525 ++ ffmpeg/libavcodec/svq1_vlc.h | 268 + ffmpeg/libavcodec/svq1dec.c | 847 + ffmpeg/libavcodec/svq1enc.c | 638 + ffmpeg/libavcodec/svq1enc.h | 78 + ffmpeg/libavcodec/svq1enc_cb.h | 86 + ffmpeg/libavcodec/svq3.c | 1384 ++ ffmpeg/libavcodec/svq3.h | 27 + ffmpeg/libavcodec/synth_filter.c | 65 + ffmpeg/libavcodec/synth_filter.h | 38 + ffmpeg/libavcodec/tableprint.h | 131 + ffmpeg/libavcodec/tak.c | 158 + ffmpeg/libavcodec/tak.h | 163 + ffmpeg/libavcodec/tak_parser.c | 122 + ffmpeg/libavcodec/takdec.c | 947 + ffmpeg/libavcodec/targa.c | 307 + ffmpeg/libavcodec/targa.h | 48 + ffmpeg/libavcodec/targa_y216dec.c | 83 + ffmpeg/libavcodec/targaenc.c | 203 + ffmpeg/libavcodec/textdec.c | 149 + ffmpeg/libavcodec/thread.h | 143 + ffmpeg/libavcodec/tiertexseqv.c | 269 + ffmpeg/libavcodec/tiff.c | 1377 ++ ffmpeg/libavcodec/tiff.h | 192 + ffmpeg/libavcodec/tiff_common.c | 313 + ffmpeg/libavcodec/tiff_common.h | 152 + ffmpeg/libavcodec/tiff_data.c | 1870 ++ ffmpeg/libavcodec/tiff_data.h | 92 + ffmpeg/libavcodec/tiffenc.c | 562 + ffmpeg/libavcodec/tmv.c | 97 + ffmpeg/libavcodec/tpeldsp.c | 333 + ffmpeg/libavcodec/tpeldsp.h | 59 + ffmpeg/libavcodec/truemotion1.c | 916 + ffmpeg/libavcodec/truemotion1data.h | 832 + ffmpeg/libavcodec/truemotion2.c | 1026 ++ ffmpeg/libavcodec/truespeech.c | 366 + ffmpeg/libavcodec/truespeech_data.h | 159 + ffmpeg/libavcodec/tscc.c | 188 + ffmpeg/libavcodec/tscc2.c | 388 + ffmpeg/libavcodec/tscc2data.h | 935 + ffmpeg/libavcodec/tta.c | 430 + ffmpeg/libavcodec/ttadata.c | 52 + ffmpeg/libavcodec/ttadata.h | 50 + ffmpeg/libavcodec/ttadsp.c | 57 + ffmpeg/libavcodec/ttadsp.h | 34 + ffmpeg/libavcodec/ttaenc.c | 232 + ffmpeg/libavcodec/twinvq.c | 803 + ffmpeg/libavcodec/twinvq.h | 203 + ffmpeg/libavcodec/twinvq_data.h | 11144 +++++++++++ ffmpeg/libavcodec/twinvqdec.c | 427 + ffmpeg/libavcodec/txd.c | 141 + ffmpeg/libavcodec/ulti.c | 429 + ffmpeg/libavcodec/ulti_cb.h | 4124 +++++ ffmpeg/libavcodec/unary.h | 56 + ffmpeg/libavcodec/utils.c | 3654 ++++ ffmpeg/libavcodec/utvideo.c | 39 + ffmpeg/libavcodec/utvideo.h | 93 + ffmpeg/libavcodec/utvideodec.c | 558 + ffmpeg/libavcodec/utvideoenc.c | 651 + ffmpeg/libavcodec/v210dec.c | 185 + ffmpeg/libavcodec/v210dec.h | 36 + ffmpeg/libavcodec/v210enc.c | 126 + ffmpeg/libavcodec/v210x.c | 131 + ffmpeg/libavcodec/v308dec.c | 83 + ffmpeg/libavcodec/v308enc.c | 94 + ffmpeg/libavcodec/v408dec.c | 103 + ffmpeg/libavcodec/v408enc.c | 113 + ffmpeg/libavcodec/v410dec.c | 98 + ffmpeg/libavcodec/v410enc.c | 98 + ffmpeg/libavcodec/vaapi.c | 200 + ffmpeg/libavcodec/vaapi.h | 173 + ffmpeg/libavcodec/vaapi_h264.c | 362 + ffmpeg/libavcodec/vaapi_internal.h | 72 + ffmpeg/libavcodec/vaapi_mpeg.c | 48 + ffmpeg/libavcodec/vaapi_mpeg2.c | 144 + ffmpeg/libavcodec/vaapi_mpeg4.c | 160 + ffmpeg/libavcodec/vaapi_vc1.c | 356 + ffmpeg/libavcodec/vb.c | 277 + ffmpeg/libavcodec/vble.c | 214 + ffmpeg/libavcodec/vc1.c | 1722 ++ ffmpeg/libavcodec/vc1.h | 416 + ffmpeg/libavcodec/vc1_common.h | 92 + ffmpeg/libavcodec/vc1_parser.c | 287 + ffmpeg/libavcodec/vc1acdata.h | 367 + ffmpeg/libavcodec/vc1data.c | 1135 ++ ffmpeg/libavcodec/vc1data.h | 208 + ffmpeg/libavcodec/vc1dec.c | 6378 +++++++ ffmpeg/libavcodec/vc1dsp.c | 1038 ++ ffmpeg/libavcodec/vc1dsp.h | 92 + ffmpeg/libavcodec/vcr1.c | 133 + ffmpeg/libavcodec/vda.c | 72 + ffmpeg/libavcodec/vda.h | 213 + ffmpeg/libavcodec/vda_h264.c | 531 + ffmpeg/libavcodec/vda_h264_dec.c | 273 + ffmpeg/libavcodec/vda_internal.h | 33 + ffmpeg/libavcodec/vdpau.c | 505 + ffmpeg/libavcodec/vdpau.h | 215 + ffmpeg/libavcodec/vdpau_h264.c | 238 + ffmpeg/libavcodec/vdpau_internal.h | 104 + ffmpeg/libavcodec/vdpau_mpeg12.c | 121 + ffmpeg/libavcodec/vdpau_mpeg4.c | 115 + ffmpeg/libavcodec/vdpau_vc1.c | 138 + ffmpeg/libavcodec/version.h | 182 + ffmpeg/libavcodec/videodsp.c | 55 + ffmpeg/libavcodec/videodsp.h | 87 + ffmpeg/libavcodec/videodsp_template.c | 100 + ffmpeg/libavcodec/vima.c | 228 + ffmpeg/libavcodec/vmdaudio.c | 235 + ffmpeg/libavcodec/vmdvideo.c | 472 + ffmpeg/libavcodec/vmnc.c | 577 + ffmpeg/libavcodec/vorbis.c | 241 + ffmpeg/libavcodec/vorbis.h | 50 + ffmpeg/libavcodec/vorbis_data.c | 2193 +++ ffmpeg/libavcodec/vorbis_enc_data.h | 504 + ffmpeg/libavcodec/vorbis_parser.c | 293 + ffmpeg/libavcodec/vorbis_parser.h | 86 + ffmpeg/libavcodec/vorbisdec.c | 1850 ++ ffmpeg/libavcodec/vorbisdsp.c | 36 + ffmpeg/libavcodec/vorbisdsp.h | 38 + ffmpeg/libavcodec/vorbisenc.c | 1210 ++ ffmpeg/libavcodec/vp3.c | 2534 +++ ffmpeg/libavcodec/vp3_parser.c | 44 + ffmpeg/libavcodec/vp3data.h | 3181 ++++ ffmpeg/libavcodec/vp3dsp.c | 296 + ffmpeg/libavcodec/vp3dsp.h | 53 + ffmpeg/libavcodec/vp5.c | 294 + ffmpeg/libavcodec/vp56.c | 760 + ffmpeg/libavcodec/vp56.h | 400 + ffmpeg/libavcodec/vp56data.c | 254 + ffmpeg/libavcodec/vp56data.h | 51 + ffmpeg/libavcodec/vp56dsp.c | 98 + ffmpeg/libavcodec/vp56dsp.h | 42 + ffmpeg/libavcodec/vp56rac.c | 47 + ffmpeg/libavcodec/vp5data.h | 177 + ffmpeg/libavcodec/vp6.c | 709 + ffmpeg/libavcodec/vp6data.h | 312 + ffmpeg/libavcodec/vp6dsp.c | 61 + ffmpeg/libavcodec/vp8.c | 2826 +++ ffmpeg/libavcodec/vp8.h | 310 + ffmpeg/libavcodec/vp8_parser.c | 39 + ffmpeg/libavcodec/vp8data.h | 838 + ffmpeg/libavcodec/vp8dsp.c | 739 + ffmpeg/libavcodec/vp8dsp.h | 105 + ffmpeg/libavcodec/vp9.c | 4072 ++++ ffmpeg/libavcodec/vp9.h | 72 + ffmpeg/libavcodec/vp9_parser.c | 118 + ffmpeg/libavcodec/vp9data.h | 2155 +++ ffmpeg/libavcodec/vp9dsp.c | 2064 +++ ffmpeg/libavcodec/vp9dsp.h | 118 + ffmpeg/libavcodec/vqavideo.c | 648 + ffmpeg/libavcodec/wavpack.c | 1117 ++ ffmpeg/libavcodec/wavpack.h | 194 + ffmpeg/libavcodec/wavpackenc.c | 2995 +++ ffmpeg/libavcodec/wavpackenc.h | 664 + ffmpeg/libavcodec/webp.c | 1513 ++ ffmpeg/libavcodec/webvttdec.c | 100 + ffmpeg/libavcodec/webvttenc.c | 219 + ffmpeg/libavcodec/wma.c | 481 + ffmpeg/libavcodec/wma.h | 159 + ffmpeg/libavcodec/wma_common.c | 59 + ffmpeg/libavcodec/wma_common.h | 27 + ffmpeg/libavcodec/wma_freqs.c | 28 + ffmpeg/libavcodec/wma_freqs.h | 26 + ffmpeg/libavcodec/wmadata.h | 1384 ++ ffmpeg/libavcodec/wmadec.c | 982 + ffmpeg/libavcodec/wmaenc.c | 440 + ffmpeg/libavcodec/wmalosslessdec.c | 1330 ++ ffmpeg/libavcodec/wmaprodata.h | 604 + ffmpeg/libavcodec/wmaprodec.c | 1666 ++ ffmpeg/libavcodec/wmavoice.c | 2075 +++ ffmpeg/libavcodec/wmavoice_data.h | 3259 ++++ ffmpeg/libavcodec/wmv2.c | 184 + ffmpeg/libavcodec/wmv2.h | 59 + ffmpeg/libavcodec/wmv2dec.c | 495 + ffmpeg/libavcodec/wmv2dsp.c | 265 + ffmpeg/libavcodec/wmv2dsp.h | 37 + ffmpeg/libavcodec/wmv2enc.c | 236 + ffmpeg/libavcodec/wnv1.c | 157 + ffmpeg/libavcodec/ws-snd1.c | 181 + ffmpeg/libavcodec/x86/Makefile | 156 + ffmpeg/libavcodec/x86/ac3dsp.asm | 552 + ffmpeg/libavcodec/x86/ac3dsp_init.c | 257 + ffmpeg/libavcodec/x86/audiodsp.asm | 177 + ffmpeg/libavcodec/x86/audiodsp_init.c | 67 + ffmpeg/libavcodec/x86/blockdsp.asm | 86 + ffmpeg/libavcodec/x86/blockdsp_init.c | 60 + ffmpeg/libavcodec/x86/bswapdsp.asm | 140 + ffmpeg/libavcodec/x86/bswapdsp_init.c | 37 + ffmpeg/libavcodec/x86/cabac.h | 301 + ffmpeg/libavcodec/x86/cavsdsp.c | 595 + ffmpeg/libavcodec/x86/constants.c | 60 + ffmpeg/libavcodec/x86/constants.h | 60 + ffmpeg/libavcodec/x86/dcadsp.asm | 431 + ffmpeg/libavcodec/x86/dcadsp_init.c | 113 + ffmpeg/libavcodec/x86/dct-test.c | 110 + ffmpeg/libavcodec/x86/dct32.asm | 492 + ffmpeg/libavcodec/x86/dct_init.c | 39 + ffmpeg/libavcodec/x86/deinterlace.asm | 82 + ffmpeg/libavcodec/x86/dirac_dwt.c | 202 + ffmpeg/libavcodec/x86/dirac_dwt.h | 30 + ffmpeg/libavcodec/x86/diracdsp_mmx.c | 156 + ffmpeg/libavcodec/x86/diracdsp_mmx.h | 47 + ffmpeg/libavcodec/x86/diracdsp_yasm.asm | 265 + ffmpeg/libavcodec/x86/dnxhdenc.asm | 49 + ffmpeg/libavcodec/x86/dnxhdenc_init.c | 37 + ffmpeg/libavcodec/x86/dwt_yasm.asm | 307 + ffmpeg/libavcodec/x86/fdct.c | 594 + ffmpeg/libavcodec/x86/fdct.h | 28 + ffmpeg/libavcodec/x86/fdctdsp_init.c | 44 + ffmpeg/libavcodec/x86/fft.asm | 1093 ++ ffmpeg/libavcodec/x86/fft.h | 38 + ffmpeg/libavcodec/x86/fft_init.c | 57 + ffmpeg/libavcodec/x86/flac_dsp_gpl.asm | 101 + ffmpeg/libavcodec/x86/flacdsp.asm | 74 + ffmpeg/libavcodec/x86/flacdsp_init.c | 49 + ffmpeg/libavcodec/x86/fmtconvert.asm | 432 + ffmpeg/libavcodec/x86/fmtconvert_init.c | 147 + ffmpeg/libavcodec/x86/fpel.asm | 107 + ffmpeg/libavcodec/x86/fpel.h | 45 + ffmpeg/libavcodec/x86/h263_loopfilter.asm | 189 + ffmpeg/libavcodec/x86/h263dsp_init.c | 39 + ffmpeg/libavcodec/x86/h264_chromamc.asm | 679 + ffmpeg/libavcodec/x86/h264_chromamc_10bit.asm | 272 + ffmpeg/libavcodec/x86/h264_deblock.asm | 1084 ++ ffmpeg/libavcodec/x86/h264_deblock_10bit.asm | 930 + ffmpeg/libavcodec/x86/h264_i386.h | 206 + ffmpeg/libavcodec/x86/h264_idct.asm | 1083 ++ ffmpeg/libavcodec/x86/h264_idct_10bit.asm | 597 + ffmpeg/libavcodec/x86/h264_intrapred.asm | 2717 +++ .../libavcodec/x86/h264_intrapred_10bit.asm | 1191 ++ ffmpeg/libavcodec/x86/h264_intrapred_init.c | 403 + ffmpeg/libavcodec/x86/h264_qpel.c | 635 + ffmpeg/libavcodec/x86/h264_qpel_10bit.asm | 884 + ffmpeg/libavcodec/x86/h264_qpel_8bit.asm | 862 + ffmpeg/libavcodec/x86/h264_weight.asm | 317 + ffmpeg/libavcodec/x86/h264_weight_10bit.asm | 283 + ffmpeg/libavcodec/x86/h264chroma_init.c | 117 + ffmpeg/libavcodec/x86/h264dsp_init.c | 370 + ffmpeg/libavcodec/x86/hevc_deblock.asm | 875 + ffmpeg/libavcodec/x86/hevc_idct.asm | 122 + ffmpeg/libavcodec/x86/hevc_mc.asm | 1383 ++ ffmpeg/libavcodec/x86/hevc_res_add.asm | 388 + ffmpeg/libavcodec/x86/hevcdsp.h | 156 + ffmpeg/libavcodec/x86/hevcdsp_init.c | 660 + ffmpeg/libavcodec/x86/hpeldsp.asm | 680 + ffmpeg/libavcodec/x86/hpeldsp.h | 53 + ffmpeg/libavcodec/x86/hpeldsp_init.c | 332 + ffmpeg/libavcodec/x86/hpeldsp_rnd_template.c | 201 + ffmpeg/libavcodec/x86/huffyuvdsp.asm | 253 + ffmpeg/libavcodec/x86/huffyuvdsp_init.c | 117 + ffmpeg/libavcodec/x86/huffyuvencdsp_mmx.c | 114 + ffmpeg/libavcodec/x86/idctdsp.asm | 80 + ffmpeg/libavcodec/x86/idctdsp.h | 33 + ffmpeg/libavcodec/x86/idctdsp_init.c | 87 + ffmpeg/libavcodec/x86/idctdsp_mmx.c | 133 + ffmpeg/libavcodec/x86/imdct36.asm | 735 + ffmpeg/libavcodec/x86/inline_asm.h | 100 + ffmpeg/libavcodec/x86/lossless_audiodsp.asm | 157 + .../libavcodec/x86/lossless_audiodsp_init.c | 47 + ffmpeg/libavcodec/x86/lossless_videodsp.asm | 294 + .../libavcodec/x86/lossless_videodsp_init.c | 62 + ffmpeg/libavcodec/x86/lpc.c | 162 + ffmpeg/libavcodec/x86/mathops.h | 131 + ffmpeg/libavcodec/x86/me_cmp.asm | 467 + ffmpeg/libavcodec/x86/me_cmp_init.c | 845 + ffmpeg/libavcodec/x86/mlpdsp.c | 186 + ffmpeg/libavcodec/x86/mpegaudiodsp.c | 287 + ffmpeg/libavcodec/x86/mpegvideo.c | 462 + ffmpeg/libavcodec/x86/mpegvideodsp.c | 161 + ffmpeg/libavcodec/x86/mpegvideoenc.c | 235 + .../x86/mpegvideoenc_qns_template.c | 109 + ffmpeg/libavcodec/x86/mpegvideoenc_template.c | 371 + ffmpeg/libavcodec/x86/mpegvideoencdsp.asm | 137 + ffmpeg/libavcodec/x86/mpegvideoencdsp_init.c | 265 + ffmpeg/libavcodec/x86/pixblockdsp.asm | 133 + ffmpeg/libavcodec/x86/pixblockdsp_init.c | 50 + ffmpeg/libavcodec/x86/pngdsp.asm | 173 + ffmpeg/libavcodec/x86/pngdsp_init.c | 50 + ffmpeg/libavcodec/x86/proresdsp.asm | 326 + ffmpeg/libavcodec/x86/proresdsp_init.c | 55 + ffmpeg/libavcodec/x86/qpel.asm | 179 + ffmpeg/libavcodec/x86/qpeldsp.asm | 560 + ffmpeg/libavcodec/x86/qpeldsp_init.c | 544 + ffmpeg/libavcodec/x86/rnd_template.c | 175 + ffmpeg/libavcodec/x86/rv34dsp.asm | 196 + ffmpeg/libavcodec/x86/rv34dsp_init.c | 46 + ffmpeg/libavcodec/x86/rv40dsp.asm | 501 + ffmpeg/libavcodec/x86/rv40dsp_init.c | 278 + ffmpeg/libavcodec/x86/sbrdsp.asm | 447 + ffmpeg/libavcodec/x86/sbrdsp_init.c | 79 + ffmpeg/libavcodec/x86/simple_idct.c | 1173 ++ ffmpeg/libavcodec/x86/simple_idct.h | 28 + ffmpeg/libavcodec/x86/snowdsp.c | 908 + ffmpeg/libavcodec/x86/svq1enc.asm | 61 + ffmpeg/libavcodec/x86/svq1enc_init.c | 42 + ffmpeg/libavcodec/x86/ttadsp.asm | 119 + ffmpeg/libavcodec/x86/ttadsp_init.c | 42 + ffmpeg/libavcodec/x86/v210-init.c | 48 + ffmpeg/libavcodec/x86/v210.asm | 90 + ffmpeg/libavcodec/x86/vc1dsp.asm | 317 + ffmpeg/libavcodec/x86/vc1dsp.h | 29 + ffmpeg/libavcodec/x86/vc1dsp_init.c | 139 + ffmpeg/libavcodec/x86/vc1dsp_mmx.c | 810 + ffmpeg/libavcodec/x86/videodsp.asm | 444 + ffmpeg/libavcodec/x86/videodsp_init.c | 271 + ffmpeg/libavcodec/x86/vorbisdsp.asm | 83 + ffmpeg/libavcodec/x86/vorbisdsp_init.c | 42 + ffmpeg/libavcodec/x86/vp3dsp.asm | 709 + ffmpeg/libavcodec/x86/vp3dsp_init.c | 129 + ffmpeg/libavcodec/x86/vp56_arith.h | 51 + ffmpeg/libavcodec/x86/vp6dsp.asm | 170 + ffmpeg/libavcodec/x86/vp6dsp_init.c | 46 + ffmpeg/libavcodec/x86/vp8dsp.asm | 1225 ++ ffmpeg/libavcodec/x86/vp8dsp_init.c | 465 + ffmpeg/libavcodec/x86/vp8dsp_loopfilter.asm | 1584 ++ ffmpeg/libavcodec/x86/vp9dsp_init.c | 413 + ffmpeg/libavcodec/x86/vp9intrapred.asm | 1554 ++ ffmpeg/libavcodec/x86/vp9itxfm.asm | 1670 ++ ffmpeg/libavcodec/x86/vp9lpf.asm | 816 + ffmpeg/libavcodec/x86/vp9mc.asm | 395 + ffmpeg/libavcodec/x86/w64xmmtest.c | 86 + ffmpeg/libavcodec/x86/xvididct.h | 43 + ffmpeg/libavcodec/x86/xvididct_init.c | 59 + ffmpeg/libavcodec/x86/xvididct_mmx.c | 548 + ffmpeg/libavcodec/x86/xvididct_sse2.c | 404 + ffmpeg/libavcodec/xan.c | 648 + ffmpeg/libavcodec/xbmdec.c | 137 + ffmpeg/libavcodec/xbmenc.c | 66 + ffmpeg/libavcodec/xface.c | 381 + ffmpeg/libavcodec/xface.h | 95 + ffmpeg/libavcodec/xfacedec.c | 188 + ffmpeg/libavcodec/xfaceenc.c | 238 + ffmpeg/libavcodec/xiph.c | 63 + ffmpeg/libavcodec/xiph.h | 43 + ffmpeg/libavcodec/xl.c | 138 + ffmpeg/libavcodec/xsubdec.c | 145 + ffmpeg/libavcodec/xsubenc.c | 221 + ffmpeg/libavcodec/xvididct.c | 353 + ffmpeg/libavcodec/xvididct.h | 34 + ffmpeg/libavcodec/xvmc.h | 170 + ffmpeg/libavcodec/xvmc_internal.h | 31 + ffmpeg/libavcodec/xwd.h | 41 + ffmpeg/libavcodec/xwddec.c | 253 + ffmpeg/libavcodec/xwdenc.c | 239 + ffmpeg/libavcodec/xxan.c | 451 + ffmpeg/libavcodec/y41pdec.c | 92 + ffmpeg/libavcodec/y41penc.c | 102 + ffmpeg/libavcodec/yop.c | 275 + ffmpeg/libavcodec/yuv4dec.c | 84 + ffmpeg/libavcodec/yuv4enc.c | 91 + ffmpeg/libavcodec/zerocodec.c | 152 + ffmpeg/libavcodec/zmbv.c | 633 + ffmpeg/libavcodec/zmbvenc.c | 346 + ffmpeg/libavdevice/Makefile | 70 + ffmpeg/libavdevice/alldevices.c | 77 + ffmpeg/libavdevice/alsa-audio-common.c | 345 + ffmpeg/libavdevice/alsa-audio-dec.c | 158 + ffmpeg/libavdevice/alsa-audio-enc.c | 165 + ffmpeg/libavdevice/alsa-audio.h | 102 + ffmpeg/libavdevice/avdevice.c | 229 + ffmpeg/libavdevice/avdevice.h | 487 + ffmpeg/libavdevice/avdeviceres.rc | 55 + ffmpeg/libavdevice/avfoundation.m | 466 + ffmpeg/libavdevice/bktr.c | 349 + ffmpeg/libavdevice/caca.c | 241 + ffmpeg/libavdevice/decklink_enc.cpp | 588 + ffmpeg/libavdevice/decklink_enc.h | 43 + ffmpeg/libavdevice/decklink_enc_c.c | 56 + ffmpeg/libavdevice/dshow.c | 1100 ++ ffmpeg/libavdevice/dshow_capture.h | 279 + ffmpeg/libavdevice/dshow_common.c | 190 + ffmpeg/libavdevice/dshow_enummediatypes.c | 103 + ffmpeg/libavdevice/dshow_enumpins.c | 105 + ffmpeg/libavdevice/dshow_filter.c | 202 + ffmpeg/libavdevice/dshow_pin.c | 362 + ffmpeg/libavdevice/dv1394.c | 239 + ffmpeg/libavdevice/dv1394.h | 357 + ffmpeg/libavdevice/fbdev_common.c | 129 + ffmpeg/libavdevice/fbdev_common.h | 38 + ffmpeg/libavdevice/fbdev_dec.c | 238 + ffmpeg/libavdevice/fbdev_enc.c | 220 + ffmpeg/libavdevice/file_open.c | 1 + ffmpeg/libavdevice/gdigrab.c | 636 + ffmpeg/libavdevice/iec61883.c | 498 + ffmpeg/libavdevice/jack_audio.c | 348 + ffmpeg/libavdevice/lavfi.c | 436 + ffmpeg/libavdevice/libavdevice.v | 4 + ffmpeg/libavdevice/libcdio.c | 192 + ffmpeg/libavdevice/libdc1394.c | 421 + ffmpeg/libavdevice/openal-dec.c | 253 + ffmpeg/libavdevice/opengl_enc.c | 1306 ++ ffmpeg/libavdevice/opengl_enc_shaders.h | 188 + ffmpeg/libavdevice/oss_audio.c | 144 + ffmpeg/libavdevice/oss_audio.h | 45 + ffmpeg/libavdevice/oss_audio_dec.c | 149 + ffmpeg/libavdevice/oss_audio_enc.c | 118 + ffmpeg/libavdevice/pulse_audio_common.c | 249 + ffmpeg/libavdevice/pulse_audio_common.h | 38 + ffmpeg/libavdevice/pulse_audio_dec.c | 373 + ffmpeg/libavdevice/pulse_audio_enc.c | 796 + ffmpeg/libavdevice/qtkit.m | 358 + ffmpeg/libavdevice/sdl.c | 375 + ffmpeg/libavdevice/sndio_common.c | 120 + ffmpeg/libavdevice/sndio_common.h | 48 + ffmpeg/libavdevice/sndio_dec.c | 119 + ffmpeg/libavdevice/sndio_enc.c | 100 + ffmpeg/libavdevice/timefilter.c | 168 + ffmpeg/libavdevice/timefilter.h | 110 + ffmpeg/libavdevice/v4l.c | 363 + ffmpeg/libavdevice/v4l2-common.c | 102 + ffmpeg/libavdevice/v4l2-common.h | 62 + ffmpeg/libavdevice/v4l2.c | 1041 ++ ffmpeg/libavdevice/v4l2enc.c | 119 + ffmpeg/libavdevice/version.h | 50 + ffmpeg/libavdevice/vfwcap.c | 483 + ffmpeg/libavdevice/x11grab.c | 679 + ffmpeg/libavdevice/xv.c | 383 + ffmpeg/libavfilter/Makefile | 257 + ffmpeg/libavfilter/aeval.c | 466 + ffmpeg/libavfilter/af_aconvert.c | 196 + ffmpeg/libavfilter/af_adelay.c | 282 + ffmpeg/libavfilter/af_aecho.c | 359 + ffmpeg/libavfilter/af_afade.c | 300 + ffmpeg/libavfilter/af_aformat.c | 147 + ffmpeg/libavfilter/af_amerge.c | 351 + ffmpeg/libavfilter/af_amix.c | 560 + ffmpeg/libavfilter/af_anull.c | 52 + ffmpeg/libavfilter/af_apad.c | 161 + ffmpeg/libavfilter/af_aphaser.c | 294 + ffmpeg/libavfilter/af_aresample.c | 318 + ffmpeg/libavfilter/af_asetnsamples.c | 196 + ffmpeg/libavfilter/af_asetrate.c | 119 + ffmpeg/libavfilter/af_ashowinfo.c | 236 + ffmpeg/libavfilter/af_astats.c | 274 + ffmpeg/libavfilter/af_astreamsync.c | 240 + ffmpeg/libavfilter/af_asyncts.c | 323 + ffmpeg/libavfilter/af_atempo.c | 1202 ++ ffmpeg/libavfilter/af_biquads.c | 620 + ffmpeg/libavfilter/af_bs2b.c | 222 + ffmpeg/libavfilter/af_channelmap.c | 411 + ffmpeg/libavfilter/af_channelsplit.c | 149 + ffmpeg/libavfilter/af_compand.c | 584 + ffmpeg/libavfilter/af_earwax.c | 172 + ffmpeg/libavfilter/af_flanger.c | 241 + ffmpeg/libavfilter/af_join.c | 516 + ffmpeg/libavfilter/af_ladspa.c | 705 + ffmpeg/libavfilter/af_pan.c | 431 + ffmpeg/libavfilter/af_replaygain.c | 613 + ffmpeg/libavfilter/af_resample.c | 338 + ffmpeg/libavfilter/af_silencedetect.c | 212 + ffmpeg/libavfilter/af_silenceremove.c | 479 + ffmpeg/libavfilter/af_volume.c | 484 + ffmpeg/libavfilter/af_volume.h | 93 + ffmpeg/libavfilter/af_volumedetect.c | 159 + ffmpeg/libavfilter/all_channel_layouts.inc | 68 + ffmpeg/libavfilter/allfilters.c | 263 + ffmpeg/libavfilter/asink_anullsink.c | 48 + ffmpeg/libavfilter/asrc_abuffer.h | 91 + ffmpeg/libavfilter/asrc_anullsrc.c | 146 + ffmpeg/libavfilter/asrc_flite.c | 283 + ffmpeg/libavfilter/asrc_sine.c | 223 + ffmpeg/libavfilter/audio.c | 170 + ffmpeg/libavfilter/audio.h | 83 + ffmpeg/libavfilter/avcodec.c | 157 + ffmpeg/libavfilter/avcodec.h | 110 + ffmpeg/libavfilter/avf_avectorscope.c | 274 + ffmpeg/libavfilter/avf_concat.c | 426 + ffmpeg/libavfilter/avf_showcqt.c | 807 + ffmpeg/libavfilter/avf_showspectrum.c | 532 + ffmpeg/libavfilter/avf_showwaves.c | 333 + ffmpeg/libavfilter/avfilter.c | 1168 ++ ffmpeg/libavfilter/avfilter.h | 1531 ++ ffmpeg/libavfilter/avfiltergraph.c | 1339 ++ ffmpeg/libavfilter/avfiltergraph.h | 28 + ffmpeg/libavfilter/avfilterres.rc | 55 + ffmpeg/libavfilter/bbox.c | 75 + ffmpeg/libavfilter/bbox.h | 44 + ffmpeg/libavfilter/buffer.c | 173 + ffmpeg/libavfilter/bufferqueue.h | 121 + ffmpeg/libavfilter/buffersink.c | 608 + ffmpeg/libavfilter/buffersink.h | 204 + ffmpeg/libavfilter/buffersrc.c | 559 + ffmpeg/libavfilter/buffersrc.h | 160 + ffmpeg/libavfilter/deshake.h | 107 + ffmpeg/libavfilter/deshake_opencl.c | 200 + ffmpeg/libavfilter/deshake_opencl.h | 45 + ffmpeg/libavfilter/deshake_opencl_kernel.h | 225 + ffmpeg/libavfilter/drawutils.c | 568 + ffmpeg/libavfilter/drawutils.h | 155 + ffmpeg/libavfilter/dualinput.c | 83 + ffmpeg/libavfilter/dualinput.h | 46 + ffmpeg/libavfilter/f_ebur128.c | 933 + ffmpeg/libavfilter/f_interleave.c | 259 + ffmpeg/libavfilter/f_perms.c | 178 + ffmpeg/libavfilter/f_select.c | 507 + ffmpeg/libavfilter/f_sendcmd.c | 576 + ffmpeg/libavfilter/f_zmq.c | 275 + ffmpeg/libavfilter/fifo.c | 313 + ffmpeg/libavfilter/filtfmts.c | 138 + ffmpeg/libavfilter/formats.c | 668 + ffmpeg/libavfilter/formats.h | 270 + ffmpeg/libavfilter/framesync.c | 329 + ffmpeg/libavfilter/framesync.h | 296 + ffmpeg/libavfilter/generate_wave_table.c | 84 + ffmpeg/libavfilter/generate_wave_table.h | 33 + ffmpeg/libavfilter/gradfun.h | 47 + ffmpeg/libavfilter/graphdump.c | 165 + ffmpeg/libavfilter/graphparser.c | 607 + ffmpeg/libavfilter/internal.h | 377 + ffmpeg/libavfilter/lavfutils.c | 104 + ffmpeg/libavfilter/lavfutils.h | 43 + ffmpeg/libavfilter/libavfilter.v | 4 + ffmpeg/libavfilter/libmpcodecs/av_helpers.h | 27 + ffmpeg/libavfilter/libmpcodecs/cpudetect.h | 60 + ffmpeg/libavfilter/libmpcodecs/img_format.c | 244 + ffmpeg/libavfilter/libmpcodecs/img_format.h | 309 + .../libmpcodecs/libvo/fastmemcpy.h | 99 + .../libavfilter/libmpcodecs/libvo/video_out.h | 300 + ffmpeg/libavfilter/libmpcodecs/mp_image.c | 257 + ffmpeg/libavfilter/libmpcodecs/mp_image.h | 159 + ffmpeg/libavfilter/libmpcodecs/mp_msg.h | 166 + ffmpeg/libavfilter/libmpcodecs/mpc_info.h | 43 + ffmpeg/libavfilter/libmpcodecs/vf.h | 169 + ffmpeg/libavfilter/libmpcodecs/vf_eq.c | 240 + ffmpeg/libavfilter/libmpcodecs/vf_eq2.c | 519 + ffmpeg/libavfilter/libmpcodecs/vf_fspp.c | 2124 +++ ffmpeg/libavfilter/libmpcodecs/vf_ilpack.c | 458 + ffmpeg/libavfilter/libmpcodecs/vf_pp7.c | 491 + .../libavfilter/libmpcodecs/vf_softpulldown.c | 163 + ffmpeg/libavfilter/libmpcodecs/vf_uspp.c | 394 + ffmpeg/libavfilter/libmpcodecs/vfcap.h | 56 + ffmpeg/libavfilter/log2_tab.c | 1 + ffmpeg/libavfilter/lswsutils.c | 50 + ffmpeg/libavfilter/lswsutils.h | 38 + ffmpeg/libavfilter/opencl_allkernels.c | 41 + ffmpeg/libavfilter/opencl_allkernels.h | 29 + ffmpeg/libavfilter/pthread.c | 237 + ffmpeg/libavfilter/setpts.c | 298 + ffmpeg/libavfilter/settb.c | 187 + ffmpeg/libavfilter/split.c | 147 + ffmpeg/libavfilter/src_movie.c | 609 + ffmpeg/libavfilter/thread.h | 29 + ffmpeg/libavfilter/transform.c | 201 + ffmpeg/libavfilter/transform.h | 127 + ffmpeg/libavfilter/trim.c | 395 + ffmpeg/libavfilter/unsharp.h | 81 + ffmpeg/libavfilter/unsharp_opencl.c | 389 + ffmpeg/libavfilter/unsharp_opencl.h | 34 + ffmpeg/libavfilter/unsharp_opencl_kernel.h | 286 + ffmpeg/libavfilter/version.h | 92 + ffmpeg/libavfilter/vf_alphamerge.c | 207 + ffmpeg/libavfilter/vf_aspect.c | 303 + ffmpeg/libavfilter/vf_bbox.c | 132 + ffmpeg/libavfilter/vf_blackdetect.c | 209 + ffmpeg/libavfilter/vf_blackframe.c | 141 + ffmpeg/libavfilter/vf_blend.c | 465 + ffmpeg/libavfilter/vf_boxblur.c | 386 + ffmpeg/libavfilter/vf_codecview.c | 244 + ffmpeg/libavfilter/vf_colorbalance.c | 213 + ffmpeg/libavfilter/vf_colorchannelmixer.c | 360 + ffmpeg/libavfilter/vf_colormatrix.c | 411 + ffmpeg/libavfilter/vf_copy.c | 67 + ffmpeg/libavfilter/vf_crop.c | 344 + ffmpeg/libavfilter/vf_cropdetect.c | 250 + ffmpeg/libavfilter/vf_curves.c | 570 + ffmpeg/libavfilter/vf_dctdnoiz.c | 776 + ffmpeg/libavfilter/vf_decimate.c | 403 + ffmpeg/libavfilter/vf_dejudder.c | 187 + ffmpeg/libavfilter/vf_delogo.c | 290 + ffmpeg/libavfilter/vf_deshake.c | 575 + ffmpeg/libavfilter/vf_drawbox.c | 392 + ffmpeg/libavfilter/vf_drawtext.c | 1383 ++ ffmpeg/libavfilter/vf_edgedetect.c | 394 + ffmpeg/libavfilter/vf_elbg.c | 212 + ffmpeg/libavfilter/vf_extractplanes.c | 335 + ffmpeg/libavfilter/vf_fade.c | 409 + ffmpeg/libavfilter/vf_field.c | 111 + ffmpeg/libavfilter/vf_fieldmatch.c | 984 + ffmpeg/libavfilter/vf_fieldorder.c | 197 + ffmpeg/libavfilter/vf_format.c | 222 + ffmpeg/libavfilter/vf_fps.c | 300 + ffmpeg/libavfilter/vf_framepack.c | 363 + ffmpeg/libavfilter/vf_framestep.c | 101 + ffmpeg/libavfilter/vf_frei0r.c | 537 + ffmpeg/libavfilter/vf_geq.c | 280 + ffmpeg/libavfilter/vf_gradfun.c | 265 + ffmpeg/libavfilter/vf_hflip.c | 201 + ffmpeg/libavfilter/vf_histeq.c | 281 + ffmpeg/libavfilter/vf_histogram.c | 376 + ffmpeg/libavfilter/vf_hqdn3d.c | 364 + ffmpeg/libavfilter/vf_hqdn3d.h | 49 + ffmpeg/libavfilter/vf_hqx.c | 562 + ffmpeg/libavfilter/vf_hue.c | 453 + ffmpeg/libavfilter/vf_idet.c | 285 + ffmpeg/libavfilter/vf_idet.h | 61 + ffmpeg/libavfilter/vf_il.c | 212 + ffmpeg/libavfilter/vf_interlace.c | 249 + ffmpeg/libavfilter/vf_kerndeint.c | 318 + ffmpeg/libavfilter/vf_lenscorrection.c | 229 + ffmpeg/libavfilter/vf_libopencv.c | 416 + ffmpeg/libavfilter/vf_lut.c | 439 + ffmpeg/libavfilter/vf_lut3d.c | 815 + ffmpeg/libavfilter/vf_mcdeint.c | 315 + ffmpeg/libavfilter/vf_mergeplanes.c | 313 + ffmpeg/libavfilter/vf_mp.c | 792 + ffmpeg/libavfilter/vf_mpdecimate.c | 249 + ffmpeg/libavfilter/vf_noise.c | 490 + ffmpeg/libavfilter/vf_null.c | 50 + ffmpeg/libavfilter/vf_overlay.c | 679 + ffmpeg/libavfilter/vf_owdenoise.c | 342 + ffmpeg/libavfilter/vf_pad.c | 402 + ffmpeg/libavfilter/vf_perspective.c | 438 + ffmpeg/libavfilter/vf_phase.c | 329 + ffmpeg/libavfilter/vf_pixdesctest.c | 135 + ffmpeg/libavfilter/vf_pp.c | 186 + ffmpeg/libavfilter/vf_psnr.c | 386 + ffmpeg/libavfilter/vf_pullup.c | 780 + ffmpeg/libavfilter/vf_pullup.h | 71 + ffmpeg/libavfilter/vf_removelogo.c | 585 + ffmpeg/libavfilter/vf_rotate.c | 567 + ffmpeg/libavfilter/vf_sab.c | 339 + ffmpeg/libavfilter/vf_scale.c | 608 + ffmpeg/libavfilter/vf_separatefields.c | 146 + ffmpeg/libavfilter/vf_setfield.c | 94 + ffmpeg/libavfilter/vf_showinfo.c | 187 + ffmpeg/libavfilter/vf_shuffleplanes.c | 172 + ffmpeg/libavfilter/vf_signalstats.c | 478 + ffmpeg/libavfilter/vf_smartblur.c | 304 + ffmpeg/libavfilter/vf_spp.c | 469 + ffmpeg/libavfilter/vf_spp.h | 59 + ffmpeg/libavfilter/vf_stereo3d.c | 664 + ffmpeg/libavfilter/vf_subtitles.c | 436 + ffmpeg/libavfilter/vf_super2xsai.c | 352 + ffmpeg/libavfilter/vf_swapuv.c | 110 + ffmpeg/libavfilter/vf_telecine.c | 285 + ffmpeg/libavfilter/vf_thumbnail.c | 239 + ffmpeg/libavfilter/vf_tile.c | 245 + ffmpeg/libavfilter/vf_tinterlace.c | 398 + ffmpeg/libavfilter/vf_transpose.c | 307 + ffmpeg/libavfilter/vf_unsharp.c | 313 + ffmpeg/libavfilter/vf_vflip.c | 111 + ffmpeg/libavfilter/vf_vidstabdetect.c | 218 + ffmpeg/libavfilter/vf_vidstabtransform.c | 319 + ffmpeg/libavfilter/vf_vignette.c | 346 + ffmpeg/libavfilter/vf_w3fdif.c | 394 + ffmpeg/libavfilter/vf_yadif.c | 549 + ffmpeg/libavfilter/vf_zoompan.c | 309 + ffmpeg/libavfilter/video.c | 122 + ffmpeg/libavfilter/video.h | 41 + ffmpeg/libavfilter/vidstabutils.c | 85 + ffmpeg/libavfilter/vidstabutils.h | 47 + ffmpeg/libavfilter/vsink_nullsink.c | 46 + ffmpeg/libavfilter/vsrc_cellauto.c | 337 + ffmpeg/libavfilter/vsrc_life.c | 450 + ffmpeg/libavfilter/vsrc_mandelbrot.c | 430 + ffmpeg/libavfilter/vsrc_mptestsrc.c | 361 + ffmpeg/libavfilter/vsrc_testsrc.c | 1071 ++ ffmpeg/libavfilter/x86/Makefile | 14 + ffmpeg/libavfilter/x86/af_volume.asm | 140 + ffmpeg/libavfilter/x86/af_volume_init.c | 60 + ffmpeg/libavfilter/x86/vf_gradfun.asm | 110 + ffmpeg/libavfilter/x86/vf_gradfun_init.c | 106 + ffmpeg/libavfilter/x86/vf_hqdn3d.asm | 106 + ffmpeg/libavfilter/x86/vf_hqdn3d_init.c | 49 + ffmpeg/libavfilter/x86/vf_idet.asm | 170 + ffmpeg/libavfilter/x86/vf_idet_init.c | 87 + ffmpeg/libavfilter/x86/vf_pullup.asm | 178 + ffmpeg/libavfilter/x86/vf_pullup_init.c | 41 + ffmpeg/libavfilter/x86/vf_spp.c | 233 + ffmpeg/libavfilter/x86/vf_yadif.asm | 243 + ffmpeg/libavfilter/x86/vf_yadif_init.c | 97 + ffmpeg/libavfilter/x86/yadif-10.asm | 255 + ffmpeg/libavfilter/x86/yadif-16.asm | 317 + ffmpeg/libavfilter/yadif.h | 74 + ffmpeg/libavformat/4xm.c | 387 + ffmpeg/libavformat/Makefile | 531 + ffmpeg/libavformat/a64.c | 68 + ffmpeg/libavformat/aacdec.c | 115 + ffmpeg/libavformat/ac3dec.c | 124 + ffmpeg/libavformat/act.c | 207 + ffmpeg/libavformat/adp.c | 98 + ffmpeg/libavformat/adtsenc.c | 211 + ffmpeg/libavformat/adxdec.c | 105 + ffmpeg/libavformat/aea.c | 105 + ffmpeg/libavformat/afc.c | 79 + ffmpeg/libavformat/aiff.h | 58 + ffmpeg/libavformat/aiffdec.c | 379 + ffmpeg/libavformat/aiffenc.c | 334 + ffmpeg/libavformat/allformats.c | 384 + ffmpeg/libavformat/amr.c | 189 + ffmpeg/libavformat/anm.c | 229 + ffmpeg/libavformat/apc.c | 92 + ffmpeg/libavformat/ape.c | 472 + ffmpeg/libavformat/apetag.c | 239 + ffmpeg/libavformat/apetag.h | 44 + ffmpeg/libavformat/aqtitledec.c | 148 + ffmpeg/libavformat/asf.c | 166 + ffmpeg/libavformat/asf.h | 192 + ffmpeg/libavformat/asfcrypt.c | 185 + ffmpeg/libavformat/asfcrypt.h | 29 + ffmpeg/libavformat/asfdec.c | 1612 ++ ffmpeg/libavformat/asfenc.c | 1041 ++ ffmpeg/libavformat/assdec.c | 176 + ffmpeg/libavformat/assenc.c | 215 + ffmpeg/libavformat/ast.c | 29 + ffmpeg/libavformat/ast.h | 30 + ffmpeg/libavformat/astdec.c | 122 + ffmpeg/libavformat/astenc.c | 214 + ffmpeg/libavformat/au.c | 226 + ffmpeg/libavformat/audiointerleave.c | 145 + ffmpeg/libavformat/audiointerleave.h | 55 + ffmpeg/libavformat/avc.c | 193 + ffmpeg/libavformat/avc.h | 34 + ffmpeg/libavformat/avformat.h | 2713 +++ ffmpeg/libavformat/avformatres.rc | 55 + ffmpeg/libavformat/avi.h | 38 + ffmpeg/libavformat/avidec.c | 1872 ++ ffmpeg/libavformat/avienc.c | 728 + ffmpeg/libavformat/avio.c | 469 + ffmpeg/libavformat/avio.h | 521 + ffmpeg/libavformat/avio_internal.h | 153 + ffmpeg/libavformat/aviobuf.c | 1146 ++ ffmpeg/libavformat/avisynth.c | 683 + ffmpeg/libavformat/avlanguage.c | 765 + ffmpeg/libavformat/avlanguage.h | 39 + ffmpeg/libavformat/avr.c | 99 + ffmpeg/libavformat/avs.c | 234 + ffmpeg/libavformat/bethsoftvid.c | 299 + ffmpeg/libavformat/bfi.c | 180 + ffmpeg/libavformat/bink.c | 297 + ffmpeg/libavformat/bintext.c | 388 + ffmpeg/libavformat/bit.c | 156 + ffmpeg/libavformat/bluray.c | 235 + ffmpeg/libavformat/bmv.c | 136 + ffmpeg/libavformat/boadec.c | 78 + ffmpeg/libavformat/brstm.c | 297 + ffmpeg/libavformat/c93.c | 202 + ffmpeg/libavformat/cache.c | 140 + ffmpeg/libavformat/caf.c | 66 + ffmpeg/libavformat/caf.h | 34 + ffmpeg/libavformat/cafdec.c | 431 + ffmpeg/libavformat/cafenc.c | 286 + ffmpeg/libavformat/cavsvideodec.c | 68 + ffmpeg/libavformat/cdg.c | 92 + ffmpeg/libavformat/cdxl.c | 231 + ffmpeg/libavformat/cinedec.c | 311 + ffmpeg/libavformat/concat.c | 190 + ffmpeg/libavformat/concatdec.c | 631 + ffmpeg/libavformat/crcenc.c | 69 + ffmpeg/libavformat/crypto.c | 170 + ffmpeg/libavformat/cutils.c | 57 + ffmpeg/libavformat/data_uri.c | 118 + ffmpeg/libavformat/dauddec.c | 59 + ffmpeg/libavformat/daudenc.c | 54 + ffmpeg/libavformat/dfa.c | 132 + ffmpeg/libavformat/diracdec.c | 43 + ffmpeg/libavformat/dnxhddec.c | 45 + ffmpeg/libavformat/dsfdec.c | 159 + ffmpeg/libavformat/dsicin.c | 234 + ffmpeg/libavformat/dtsdec.c | 116 + ffmpeg/libavformat/dtshddec.c | 139 + ffmpeg/libavformat/dump.c | 496 + ffmpeg/libavformat/dv.c | 639 + ffmpeg/libavformat/dv.h | 41 + ffmpeg/libavformat/dvenc.c | 449 + ffmpeg/libavformat/dxa.c | 234 + ffmpeg/libavformat/eacdata.c | 105 + ffmpeg/libavformat/electronicarts.c | 702 + ffmpeg/libavformat/epafdec.c | 104 + ffmpeg/libavformat/ffm.h | 60 + ffmpeg/libavformat/ffmdec.c | 643 + ffmpeg/libavformat/ffmenc.c | 281 + ffmpeg/libavformat/ffmeta.h | 29 + ffmpeg/libavformat/ffmetadec.c | 175 + ffmpeg/libavformat/ffmetaenc.c | 99 + ffmpeg/libavformat/file.c | 243 + ffmpeg/libavformat/file_open.c | 1 + ffmpeg/libavformat/filmstripdec.c | 110 + ffmpeg/libavformat/filmstripenc.c | 85 + ffmpeg/libavformat/flac_picture.c | 152 + ffmpeg/libavformat/flac_picture.h | 31 + ffmpeg/libavformat/flacdec.c | 241 + ffmpeg/libavformat/flacenc.c | 212 + ffmpeg/libavformat/flacenc.h | 34 + ffmpeg/libavformat/flacenc_header.c | 62 + ffmpeg/libavformat/flic.c | 269 + ffmpeg/libavformat/flv.h | 138 + ffmpeg/libavformat/flvdec.c | 1093 ++ ffmpeg/libavformat/flvenc.c | 623 + ffmpeg/libavformat/format.c | 347 + ffmpeg/libavformat/framecrcenc.c | 88 + ffmpeg/libavformat/framehash.c | 35 + ffmpeg/libavformat/frmdec.c | 110 + ffmpeg/libavformat/ftp.c | 801 + ffmpeg/libavformat/g722.c | 57 + ffmpeg/libavformat/g723_1.c | 86 + ffmpeg/libavformat/g729dec.c | 103 + ffmpeg/libavformat/gif.c | 230 + ffmpeg/libavformat/gifdec.c | 334 + ffmpeg/libavformat/golomb_tab.c | 1 + ffmpeg/libavformat/gopher.c | 125 + ffmpeg/libavformat/gsmdec.c | 100 + ffmpeg/libavformat/gxf.c | 608 + ffmpeg/libavformat/gxf.h | 52 + ffmpeg/libavformat/gxfenc.c | 1033 ++ ffmpeg/libavformat/h261dec.c | 62 + ffmpeg/libavformat/h263dec.c | 78 + ffmpeg/libavformat/h264dec.c | 78 + ffmpeg/libavformat/hdsenc.c | 604 + ffmpeg/libavformat/hevc.c | 1140 ++ ffmpeg/libavformat/hevc.h | 98 + ffmpeg/libavformat/hevcdec.c | 64 + ffmpeg/libavformat/hls.c | 1714 ++ ffmpeg/libavformat/hlsenc.c | 373 + ffmpeg/libavformat/hlsproto.c | 323 + ffmpeg/libavformat/hnm.c | 207 + ffmpeg/libavformat/http.c | 1293 ++ ffmpeg/libavformat/http.h | 50 + ffmpeg/libavformat/httpauth.c | 290 + ffmpeg/libavformat/httpauth.h | 79 + ffmpeg/libavformat/icecast.c | 215 + ffmpeg/libavformat/icodec.c | 182 + ffmpeg/libavformat/icoenc.c | 203 + ffmpeg/libavformat/id3v1.c | 244 + ffmpeg/libavformat/id3v1.h | 41 + ffmpeg/libavformat/id3v2.c | 985 + ffmpeg/libavformat/id3v2.h | 185 + ffmpeg/libavformat/id3v2enc.c | 361 + ffmpeg/libavformat/idcin.c | 382 + ffmpeg/libavformat/idroqdec.c | 244 + ffmpeg/libavformat/idroqenc.c | 72 + ffmpeg/libavformat/iff.c | 754 + ffmpeg/libavformat/ilbc.c | 140 + ffmpeg/libavformat/img2.c | 104 + ffmpeg/libavformat/img2.h | 63 + ffmpeg/libavformat/img2_alias_pix.c | 73 + ffmpeg/libavformat/img2_brender_pix.c | 57 + ffmpeg/libavformat/img2dec.c | 730 + ffmpeg/libavformat/img2enc.c | 216 + ffmpeg/libavformat/ingenientdec.c | 66 + ffmpeg/libavformat/internal.h | 416 + ffmpeg/libavformat/ipmovie.c | 659 + ffmpeg/libavformat/ircam.c | 47 + ffmpeg/libavformat/ircam.h | 30 + ffmpeg/libavformat/ircamdec.c | 115 + ffmpeg/libavformat/ircamenc.c | 62 + ffmpeg/libavformat/isom.c | 592 + ffmpeg/libavformat/isom.h | 240 + ffmpeg/libavformat/iss.c | 153 + ffmpeg/libavformat/iv8.c | 118 + ffmpeg/libavformat/ivfdec.c | 91 + ffmpeg/libavformat/ivfenc.c | 69 + ffmpeg/libavformat/jacosubdec.c | 271 + ffmpeg/libavformat/jacosubenc.c | 42 + ffmpeg/libavformat/jvdec.c | 263 + ffmpeg/libavformat/latmenc.c | 231 + ffmpeg/libavformat/libavformat.v | 20 + ffmpeg/libavformat/libgme.c | 201 + ffmpeg/libavformat/libmodplug.c | 382 + ffmpeg/libavformat/libnut.c | 324 + ffmpeg/libavformat/libquvi.c | 146 + ffmpeg/libavformat/librtmp.c | 398 + ffmpeg/libavformat/libsmbclient.c | 207 + ffmpeg/libavformat/libssh.c | 318 + ffmpeg/libavformat/lmlm4.c | 127 + ffmpeg/libavformat/loasdec.c | 94 + ffmpeg/libavformat/log2_tab.c | 1 + ffmpeg/libavformat/lrc.c | 34 + ffmpeg/libavformat/lrc.h | 29 + ffmpeg/libavformat/lrcdec.c | 248 + ffmpeg/libavformat/lrcenc.c | 152 + ffmpeg/libavformat/lvfdec.c | 152 + ffmpeg/libavformat/lxfdec.c | 345 + ffmpeg/libavformat/m4vdec.c | 54 + ffmpeg/libavformat/matroska.c | 207 + ffmpeg/libavformat/matroska.h | 301 + ffmpeg/libavformat/matroskadec.c | 3366 ++++ ffmpeg/libavformat/matroskaenc.c | 2108 +++ ffmpeg/libavformat/md5enc.c | 170 + ffmpeg/libavformat/md5proto.c | 95 + ffmpeg/libavformat/metadata.c | 70 + ffmpeg/libavformat/metadata.h | 44 + ffmpeg/libavformat/mgsts.c | 106 + ffmpeg/libavformat/microdvddec.c | 203 + ffmpeg/libavformat/microdvdenc.c | 67 + ffmpeg/libavformat/mkvtimestamp_v2.c | 50 + ffmpeg/libavformat/mlvdec.c | 463 + ffmpeg/libavformat/mm.c | 197 + ffmpeg/libavformat/mmf.c | 326 + ffmpeg/libavformat/mms.c | 149 + ffmpeg/libavformat/mms.h | 64 + ffmpeg/libavformat/mmsh.c | 413 + ffmpeg/libavformat/mmst.c | 638 + ffmpeg/libavformat/mov.c | 3890 ++++ ffmpeg/libavformat/mov_chan.c | 592 + ffmpeg/libavformat/mov_chan.h | 68 + ffmpeg/libavformat/movenc.c | 4686 +++++ ffmpeg/libavformat/movenc.h | 204 + ffmpeg/libavformat/movenchint.c | 474 + ffmpeg/libavformat/mp3dec.c | 503 + ffmpeg/libavformat/mp3enc.c | 545 + ffmpeg/libavformat/mpc.c | 236 + ffmpeg/libavformat/mpc8.c | 323 + ffmpeg/libavformat/mpeg.c | 985 + ffmpeg/libavformat/mpeg.h | 73 + ffmpeg/libavformat/mpegenc.c | 1293 ++ ffmpeg/libavformat/mpegts.c | 2713 +++ ffmpeg/libavformat/mpegts.h | 115 + ffmpeg/libavformat/mpegtsenc.c | 1494 ++ ffmpeg/libavformat/mpegvideodec.c | 89 + ffmpeg/libavformat/mpjpeg.c | 69 + ffmpeg/libavformat/mpl2dec.c | 146 + ffmpeg/libavformat/mpsubdec.c | 144 + ffmpeg/libavformat/msnwc_tcp.c | 140 + ffmpeg/libavformat/mtv.c | 233 + ffmpeg/libavformat/mux.c | 1044 ++ ffmpeg/libavformat/mvdec.c | 468 + ffmpeg/libavformat/mvi.c | 146 + ffmpeg/libavformat/mxf.c | 153 + ffmpeg/libavformat/mxf.h | 122 + ffmpeg/libavformat/mxfdec.c | 2681 +++ ffmpeg/libavformat/mxfenc.c | 2217 +++ ffmpeg/libavformat/mxg.c | 265 + ffmpeg/libavformat/ncdec.c | 101 + ffmpeg/libavformat/network.c | 387 + ffmpeg/libavformat/network.h | 272 + ffmpeg/libavformat/nistspheredec.c | 131 + ffmpeg/libavformat/noproxy-test.c | 43 + ffmpeg/libavformat/nsvdec.c | 761 + ffmpeg/libavformat/nullenc.c | 36 + ffmpeg/libavformat/nut.c | 306 + ffmpeg/libavformat/nut.h | 143 + ffmpeg/libavformat/nutdec.c | 1230 ++ ffmpeg/libavformat/nutenc.c | 1233 ++ ffmpeg/libavformat/nuv.c | 389 + ffmpeg/libavformat/oggdec.c | 908 + ffmpeg/libavformat/oggdec.h | 168 + ffmpeg/libavformat/oggenc.c | 724 + ffmpeg/libavformat/oggparsecelt.c | 90 + ffmpeg/libavformat/oggparsedirac.c | 117 + ffmpeg/libavformat/oggparseflac.c | 120 + ffmpeg/libavformat/oggparseogm.c | 216 + ffmpeg/libavformat/oggparseopus.c | 182 + ffmpeg/libavformat/oggparseskeleton.c | 101 + ffmpeg/libavformat/oggparsespeex.c | 138 + ffmpeg/libavformat/oggparsetheora.c | 214 + ffmpeg/libavformat/oggparsevorbis.c | 494 + ffmpeg/libavformat/oggparsevp8.c | 137 + ffmpeg/libavformat/oma.c | 48 + ffmpeg/libavformat/oma.h | 47 + ffmpeg/libavformat/omadec.c | 500 + ffmpeg/libavformat/omaenc.c | 107 + ffmpeg/libavformat/options.c | 131 + ffmpeg/libavformat/options_table.h | 107 + ffmpeg/libavformat/os_support.c | 341 + ffmpeg/libavformat/os_support.h | 131 + ffmpeg/libavformat/paf.c | 268 + ffmpeg/libavformat/pcm.c | 74 + ffmpeg/libavformat/pcm.h | 31 + ffmpeg/libavformat/pcmdec.c | 172 + ffmpeg/libavformat/pcmenc.c | 94 + ffmpeg/libavformat/pjsdec.c | 138 + ffmpeg/libavformat/pmpdec.c | 195 + ffmpeg/libavformat/psxstr.c | 321 + ffmpeg/libavformat/pva.c | 234 + ffmpeg/libavformat/pvfdec.c | 75 + ffmpeg/libavformat/qcp.c | 196 + ffmpeg/libavformat/qtpalette.h | 313 + ffmpeg/libavformat/r3d.c | 408 + ffmpeg/libavformat/rawdec.c | 245 + ffmpeg/libavformat/rawdec.h | 70 + ffmpeg/libavformat/rawenc.c | 331 + ffmpeg/libavformat/rawenc.h | 29 + ffmpeg/libavformat/rawvideodec.c | 115 + ffmpeg/libavformat/rdt.c | 577 + ffmpeg/libavformat/rdt.h | 112 + ffmpeg/libavformat/realtextdec.c | 156 + ffmpeg/libavformat/redspark.c | 170 + ffmpeg/libavformat/replaygain.c | 125 + ffmpeg/libavformat/replaygain.h | 38 + ffmpeg/libavformat/riff.c | 474 + ffmpeg/libavformat/riff.h | 114 + ffmpeg/libavformat/riffdec.c | 243 + ffmpeg/libavformat/riffenc.c | 341 + ffmpeg/libavformat/rl2.c | 296 + ffmpeg/libavformat/rm.c | 47 + ffmpeg/libavformat/rm.h | 95 + ffmpeg/libavformat/rmdec.c | 1093 ++ ffmpeg/libavformat/rmenc.c | 481 + ffmpeg/libavformat/rmsipr.c | 61 + ffmpeg/libavformat/rmsipr.h | 35 + ffmpeg/libavformat/rpl.c | 360 + ffmpeg/libavformat/rsd.c | 168 + ffmpeg/libavformat/rso.c | 30 + ffmpeg/libavformat/rso.h | 32 + ffmpeg/libavformat/rsodec.c | 83 + ffmpeg/libavformat/rsoenc.c | 112 + ffmpeg/libavformat/rtmp.h | 71 + ffmpeg/libavformat/rtmpcrypt.c | 336 + ffmpeg/libavformat/rtmpcrypt.h | 69 + ffmpeg/libavformat/rtmpdh.c | 339 + ffmpeg/libavformat/rtmpdh.h | 102 + ffmpeg/libavformat/rtmphttp.c | 277 + ffmpeg/libavformat/rtmppkt.c | 659 + ffmpeg/libavformat/rtmppkt.h | 330 + ffmpeg/libavformat/rtmpproto.c | 2924 +++ ffmpeg/libavformat/rtp.c | 152 + ffmpeg/libavformat/rtp.h | 115 + ffmpeg/libavformat/rtpdec.c | 890 + ffmpeg/libavformat/rtpdec.h | 217 + ffmpeg/libavformat/rtpdec_amr.c | 210 + ffmpeg/libavformat/rtpdec_asf.c | 309 + ffmpeg/libavformat/rtpdec_formats.h | 76 + ffmpeg/libavformat/rtpdec_g726.c | 48 + ffmpeg/libavformat/rtpdec_h261.c | 205 + ffmpeg/libavformat/rtpdec_h263.c | 115 + ffmpeg/libavformat/rtpdec_h263_rfc2190.c | 215 + ffmpeg/libavformat/rtpdec_h264.c | 406 + ffmpeg/libavformat/rtpdec_hevc.c | 372 + ffmpeg/libavformat/rtpdec_ilbc.c | 74 + ffmpeg/libavformat/rtpdec_jpeg.c | 409 + ffmpeg/libavformat/rtpdec_latm.c | 187 + ffmpeg/libavformat/rtpdec_mpeg12.c | 73 + ffmpeg/libavformat/rtpdec_mpeg4.c | 280 + ffmpeg/libavformat/rtpdec_mpegts.c | 108 + ffmpeg/libavformat/rtpdec_qcelp.c | 230 + ffmpeg/libavformat/rtpdec_qdm2.c | 318 + ffmpeg/libavformat/rtpdec_qt.c | 262 + ffmpeg/libavformat/rtpdec_svq3.c | 133 + ffmpeg/libavformat/rtpdec_vp8.c | 298 + ffmpeg/libavformat/rtpdec_xiph.c | 412 + ffmpeg/libavformat/rtpenc.c | 632 + ffmpeg/libavformat/rtpenc.h | 99 + ffmpeg/libavformat/rtpenc_aac.c | 85 + ffmpeg/libavformat/rtpenc_amr.c | 65 + ffmpeg/libavformat/rtpenc_chain.c | 109 + ffmpeg/libavformat/rtpenc_chain.h | 32 + ffmpeg/libavformat/rtpenc_h261.c | 57 + ffmpeg/libavformat/rtpenc_h263.c | 81 + ffmpeg/libavformat/rtpenc_h263_rfc2190.c | 195 + ffmpeg/libavformat/rtpenc_h264.c | 109 + ffmpeg/libavformat/rtpenc_jpeg.c | 142 + ffmpeg/libavformat/rtpenc_latm.c | 61 + ffmpeg/libavformat/rtpenc_mpv.c | 117 + ffmpeg/libavformat/rtpenc_vp8.c | 55 + ffmpeg/libavformat/rtpenc_xiph.c | 127 + ffmpeg/libavformat/rtpproto.c | 563 + ffmpeg/libavformat/rtpproto.h | 31 + ffmpeg/libavformat/rtsp.c | 2384 +++ ffmpeg/libavformat/rtsp.h | 633 + ffmpeg/libavformat/rtspcodes.h | 142 + ffmpeg/libavformat/rtspdec.c | 942 + ffmpeg/libavformat/rtspenc.c | 253 + ffmpeg/libavformat/samidec.c | 140 + ffmpeg/libavformat/sapdec.c | 238 + ffmpeg/libavformat/sapenc.c | 272 + ffmpeg/libavformat/sauce.c | 104 + ffmpeg/libavformat/sauce.h | 40 + ffmpeg/libavformat/sbgdec.c | 1511 ++ ffmpeg/libavformat/sctp.c | 332 + ffmpeg/libavformat/sdp.c | 726 + ffmpeg/libavformat/sdr2.c | 121 + ffmpeg/libavformat/seek-test.c | 154 + ffmpeg/libavformat/seek.c | 508 + ffmpeg/libavformat/seek.h | 122 + ffmpeg/libavformat/segafilm.c | 290 + ffmpeg/libavformat/segment.c | 914 + ffmpeg/libavformat/sierravmd.c | 323 + ffmpeg/libavformat/siff.c | 255 + ffmpeg/libavformat/smacker.c | 396 + ffmpeg/libavformat/smjpeg.c | 40 + ffmpeg/libavformat/smjpeg.h | 45 + ffmpeg/libavformat/smjpegdec.c | 185 + ffmpeg/libavformat/smjpegenc.c | 146 + ffmpeg/libavformat/smoothstreamingenc.c | 644 + ffmpeg/libavformat/smush.c | 252 + ffmpeg/libavformat/sol.c | 151 + ffmpeg/libavformat/sox.h | 29 + ffmpeg/libavformat/soxdec.c | 134 + ffmpeg/libavformat/soxenc.c | 122 + ffmpeg/libavformat/spdif.c | 42 + ffmpeg/libavformat/spdif.h | 65 + ffmpeg/libavformat/spdifdec.c | 240 + ffmpeg/libavformat/spdifenc.c | 558 + ffmpeg/libavformat/srtdec.c | 169 + ffmpeg/libavformat/srtenc.c | 115 + ffmpeg/libavformat/srtp.c | 472 + ffmpeg/libavformat/srtp.h | 52 + ffmpeg/libavformat/srtpproto.c | 145 + ffmpeg/libavformat/subfile.c | 147 + ffmpeg/libavformat/subtitles.c | 395 + ffmpeg/libavformat/subtitles.h | 208 + ffmpeg/libavformat/subviewer1dec.c | 124 + ffmpeg/libavformat/subviewerdec.c | 194 + ffmpeg/libavformat/swf.c | 29 + ffmpeg/libavformat/swf.h | 147 + ffmpeg/libavformat/swfdec.c | 520 + ffmpeg/libavformat/swfenc.c | 546 + ffmpeg/libavformat/takdec.c | 211 + ffmpeg/libavformat/tcp.c | 233 + ffmpeg/libavformat/tedcaptionsdec.c | 366 + ffmpeg/libavformat/tee.c | 497 + ffmpeg/libavformat/thp.c | 210 + ffmpeg/libavformat/tiertexseq.c | 317 + ffmpeg/libavformat/tls.c | 396 + ffmpeg/libavformat/tmv.c | 199 + ffmpeg/libavformat/tta.c | 189 + ffmpeg/libavformat/tty.c | 160 + ffmpeg/libavformat/txd.c | 101 + ffmpeg/libavformat/udp.c | 895 + ffmpeg/libavformat/uncodedframecrcenc.c | 172 + ffmpeg/libavformat/unix.c | 155 + ffmpeg/libavformat/url-test.c | 55 + ffmpeg/libavformat/url.c | 147 + ffmpeg/libavformat/url.h | 286 + ffmpeg/libavformat/urldecode.c | 86 + ffmpeg/libavformat/urldecode.h | 35 + ffmpeg/libavformat/utils.c | 4334 +++++ ffmpeg/libavformat/vc1test.c | 118 + ffmpeg/libavformat/vc1testenc.c | 94 + ffmpeg/libavformat/version.h | 85 + ffmpeg/libavformat/vivo.c | 313 + ffmpeg/libavformat/voc.c | 37 + ffmpeg/libavformat/voc.h | 51 + ffmpeg/libavformat/vocdec.c | 175 + ffmpeg/libavformat/vocenc.c | 111 + ffmpeg/libavformat/vorbiscomment.c | 74 + ffmpeg/libavformat/vorbiscomment.h | 54 + ffmpeg/libavformat/vplayerdec.c | 128 + ffmpeg/libavformat/vqf.c | 294 + ffmpeg/libavformat/w64.c | 50 + ffmpeg/libavformat/w64.h | 31 + ffmpeg/libavformat/wavdec.c | 745 + ffmpeg/libavformat/wavenc.c | 626 + ffmpeg/libavformat/wc3movie.c | 311 + ffmpeg/libavformat/webmdashenc.c | 317 + ffmpeg/libavformat/webvttdec.c | 223 + ffmpeg/libavformat/webvttenc.c | 100 + ffmpeg/libavformat/westwood_aud.c | 181 + ffmpeg/libavformat/westwood_vqa.c | 270 + ffmpeg/libavformat/wtv.h | 60 + ffmpeg/libavformat/wtv_common.c | 84 + ffmpeg/libavformat/wtvdec.c | 1123 ++ ffmpeg/libavformat/wtvenc.c | 845 + ffmpeg/libavformat/wv.c | 52 + ffmpeg/libavformat/wv.h | 56 + ffmpeg/libavformat/wvdec.c | 354 + ffmpeg/libavformat/wvenc.c | 91 + ffmpeg/libavformat/xa.c | 131 + ffmpeg/libavformat/xmv.c | 578 + ffmpeg/libavformat/xwma.c | 287 + ffmpeg/libavformat/yop.c | 230 + ffmpeg/libavformat/yuv4mpeg.h | 27 + ffmpeg/libavformat/yuv4mpegdec.c | 320 + ffmpeg/libavformat/yuv4mpegenc.c | 307 + ffmpeg/libavresample/Makefile | 18 + ffmpeg/libavresample/aarch64/Makefile | 7 + ffmpeg/libavresample/aarch64/asm-offsets.h | 28 + .../aarch64/audio_convert_init.c | 49 + .../aarch64/audio_convert_neon.S | 363 + ffmpeg/libavresample/aarch64/neontest.c | 31 + ffmpeg/libavresample/aarch64/resample_init.c | 71 + ffmpeg/libavresample/aarch64/resample_neon.S | 233 + ffmpeg/libavresample/arm/Makefile | 5 + ffmpeg/libavresample/arm/audio_convert_init.c | 49 + ffmpeg/libavresample/arm/audio_convert_neon.S | 363 + ffmpeg/libavresample/arm/neontest.c | 31 + ffmpeg/libavresample/audio_convert.c | 416 + ffmpeg/libavresample/audio_convert.h | 103 + ffmpeg/libavresample/audio_data.c | 380 + ffmpeg/libavresample/audio_data.h | 177 + ffmpeg/libavresample/audio_mix.c | 742 + ffmpeg/libavresample/audio_mix.h | 94 + ffmpeg/libavresample/audio_mix_matrix.c | 294 + ffmpeg/libavresample/avresample-test.c | 341 + ffmpeg/libavresample/avresample.h | 498 + ffmpeg/libavresample/avresampleres.rc | 55 + ffmpeg/libavresample/dither.c | 440 + ffmpeg/libavresample/dither.h | 93 + ffmpeg/libavresample/internal.h | 113 + ffmpeg/libavresample/libavresample.v | 4 + ffmpeg/libavresample/options.c | 113 + ffmpeg/libavresample/resample.c | 501 + ffmpeg/libavresample/resample.h | 96 + ffmpeg/libavresample/resample_template.c | 118 + ffmpeg/libavresample/utils.c | 789 + ffmpeg/libavresample/version.h | 54 + ffmpeg/libavresample/x86/Makefile | 9 + ffmpeg/libavresample/x86/audio_convert.asm | 1261 ++ ffmpeg/libavresample/x86/audio_convert_init.c | 263 + ffmpeg/libavresample/x86/audio_mix.asm | 511 + ffmpeg/libavresample/x86/audio_mix_init.c | 213 + ffmpeg/libavresample/x86/dither.asm | 117 + ffmpeg/libavresample/x86/dither_init.c | 60 + ffmpeg/libavresample/x86/util.asm | 41 + ffmpeg/libavresample/x86/w64xmmtest.c | 31 + ffmpeg/libavutil/Makefile | 191 + ffmpeg/libavutil/aarch64/Makefile | 4 + ffmpeg/libavutil/aarch64/asm.S | 83 + ffmpeg/libavutil/aarch64/bswap.h | 50 + ffmpeg/libavutil/aarch64/cpu.c | 28 + ffmpeg/libavutil/aarch64/cpu.h | 30 + ffmpeg/libavutil/aarch64/float_dsp_init.c | 69 + ffmpeg/libavutil/aarch64/float_dsp_neon.S | 202 + ffmpeg/libavutil/aarch64/neontest.h | 65 + ffmpeg/libavutil/adler32.c | 132 + ffmpeg/libavutil/adler32.h | 55 + ffmpeg/libavutil/aes.c | 342 + ffmpeg/libavutil/aes.h | 65 + ffmpeg/libavutil/arm/Makefile | 8 + ffmpeg/libavutil/arm/asm.S | 321 + ffmpeg/libavutil/arm/bswap.h | 67 + ffmpeg/libavutil/arm/cpu.c | 156 + ffmpeg/libavutil/arm/cpu.h | 34 + ffmpeg/libavutil/arm/float_dsp_arm.h | 29 + ffmpeg/libavutil/arm/float_dsp_init_arm.c | 32 + ffmpeg/libavutil/arm/float_dsp_init_neon.c | 59 + ffmpeg/libavutil/arm/float_dsp_init_vfp.c | 46 + ffmpeg/libavutil/arm/float_dsp_neon.S | 271 + ffmpeg/libavutil/arm/float_dsp_vfp.S | 457 + ffmpeg/libavutil/arm/intmath.h | 110 + ffmpeg/libavutil/arm/intreadwrite.h | 91 + ffmpeg/libavutil/arm/neontest.h | 62 + ffmpeg/libavutil/arm/timer.h | 40 + ffmpeg/libavutil/atomic.c | 127 + ffmpeg/libavutil/atomic.h | 79 + ffmpeg/libavutil/atomic_gcc.h | 61 + ffmpeg/libavutil/atomic_suncc.h | 55 + ffmpeg/libavutil/atomic_win32.h | 53 + ffmpeg/libavutil/attributes.h | 160 + ffmpeg/libavutil/audio_fifo.c | 194 + ffmpeg/libavutil/audio_fifo.h | 153 + ffmpeg/libavutil/audioconvert.h | 6 + ffmpeg/libavutil/avassert.h | 66 + ffmpeg/libavutil/avr32/bswap.h | 44 + ffmpeg/libavutil/avr32/intreadwrite.h | 182 + ffmpeg/libavutil/avstring.c | 453 + ffmpeg/libavutil/avstring.h | 364 + ffmpeg/libavutil/avutil.h | 344 + ffmpeg/libavutil/avutilres.rc | 55 + ffmpeg/libavutil/base64.c | 281 + ffmpeg/libavutil/base64.h | 67 + ffmpeg/libavutil/bfin/bswap.h | 45 + ffmpeg/libavutil/bfin/timer.h | 41 + ffmpeg/libavutil/blowfish.c | 588 + ffmpeg/libavutil/blowfish.h | 77 + ffmpeg/libavutil/bprint.c | 381 + ffmpeg/libavutil/bprint.h | 216 + ffmpeg/libavutil/bswap.h | 109 + ffmpeg/libavutil/buffer.c | 358 + ffmpeg/libavutil/buffer.h | 274 + ffmpeg/libavutil/buffer_internal.h | 94 + ffmpeg/libavutil/channel_layout.c | 299 + ffmpeg/libavutil/channel_layout.h | 222 + ffmpeg/libavutil/colorspace.h | 111 + ffmpeg/libavutil/common.h | 469 + ffmpeg/libavutil/cpu.c | 405 + ffmpeg/libavutil/cpu.h | 116 + ffmpeg/libavutil/cpu_internal.h | 34 + ffmpeg/libavutil/crc.c | 404 + ffmpeg/libavutil/crc.h | 86 + ffmpeg/libavutil/des.c | 443 + ffmpeg/libavutil/des.h | 61 + ffmpeg/libavutil/dict.c | 209 + ffmpeg/libavutil/dict.h | 178 + ffmpeg/libavutil/display.c | 73 + ffmpeg/libavutil/display.h | 86 + ffmpeg/libavutil/downmix_info.c | 38 + ffmpeg/libavutil/downmix_info.h | 115 + ffmpeg/libavutil/dynarray.h | 70 + ffmpeg/libavutil/error.c | 100 + ffmpeg/libavutil/error.h | 119 + ffmpeg/libavutil/eval.c | 882 + ffmpeg/libavutil/eval.h | 113 + ffmpeg/libavutil/fifo.c | 211 + ffmpeg/libavutil/fifo.h | 158 + ffmpeg/libavutil/file.c | 205 + ffmpeg/libavutil/file.h | 66 + ffmpeg/libavutil/file_open.c | 129 + ffmpeg/libavutil/fixed_dsp.c | 98 + ffmpeg/libavutil/fixed_dsp.h | 144 + ffmpeg/libavutil/float_dsp.c | 425 + ffmpeg/libavutil/float_dsp.h | 188 + ffmpeg/libavutil/frame.c | 689 + ffmpeg/libavutil/frame.h | 759 + ffmpeg/libavutil/hash.c | 239 + ffmpeg/libavutil/hash.h | 112 + ffmpeg/libavutil/hmac.c | 259 + ffmpeg/libavutil/hmac.h | 99 + ffmpeg/libavutil/imgutils.c | 391 + ffmpeg/libavutil/imgutils.h | 213 + ffmpeg/libavutil/integer.c | 196 + ffmpeg/libavutil/integer.h | 86 + ffmpeg/libavutil/internal.h | 266 + ffmpeg/libavutil/intfloat.h | 77 + ffmpeg/libavutil/intfloat_readwrite.c | 101 + ffmpeg/libavutil/intfloat_readwrite.h | 44 + ffmpeg/libavutil/intmath.c | 39 + ffmpeg/libavutil/intmath.h | 146 + ffmpeg/libavutil/intreadwrite.h | 629 + ffmpeg/libavutil/lfg.c | 102 + ffmpeg/libavutil/lfg.h | 62 + ffmpeg/libavutil/libavutil.v | 4 + ffmpeg/libavutil/libm.h | 199 + ffmpeg/libavutil/lls.c | 160 + ffmpeg/libavutil/lls.h | 64 + ffmpeg/libavutil/log.c | 441 + ffmpeg/libavutil/log.h | 350 + ffmpeg/libavutil/log2_tab.c | 32 + ffmpeg/libavutil/lzo.c | 259 + ffmpeg/libavutil/lzo.h | 66 + ffmpeg/libavutil/macros.h | 48 + ffmpeg/libavutil/mathematics.c | 209 + ffmpeg/libavutil/mathematics.h | 164 + ffmpeg/libavutil/md5.c | 236 + ffmpeg/libavutil/md5.h | 81 + ffmpeg/libavutil/mem.c | 506 + ffmpeg/libavutil/mem.h | 389 + ffmpeg/libavutil/mips/Makefile | 1 + ffmpeg/libavutil/mips/float_dsp_mips.c | 383 + ffmpeg/libavutil/mips/intreadwrite.h | 46 + ffmpeg/libavutil/mips/libm_mips.h | 73 + ffmpeg/libavutil/motion_vector.h | 50 + ffmpeg/libavutil/murmur3.c | 192 + ffmpeg/libavutil/murmur3.h | 32 + ffmpeg/libavutil/old_pix_fmts.h | 177 + ffmpeg/libavutil/opencl.c | 837 + ffmpeg/libavutil/opencl.h | 330 + ffmpeg/libavutil/opencl_internal.c | 59 + ffmpeg/libavutil/opencl_internal.h | 33 + ffmpeg/libavutil/opt.c | 1882 ++ ffmpeg/libavutil/opt.h | 859 + ffmpeg/libavutil/parseutils.c | 892 + ffmpeg/libavutil/parseutils.h | 187 + ffmpeg/libavutil/pca.c | 248 + ffmpeg/libavutil/pca.h | 35 + ffmpeg/libavutil/pixdesc.c | 2334 +++ ffmpeg/libavutil/pixdesc.h | 359 + ffmpeg/libavutil/pixelutils.c | 219 + ffmpeg/libavutil/pixelutils.h | 52 + ffmpeg/libavutil/pixfmt.h | 518 + ffmpeg/libavutil/ppc/Makefile | 4 + ffmpeg/libavutil/ppc/cpu.c | 84 + ffmpeg/libavutil/ppc/cpu.h | 28 + ffmpeg/libavutil/ppc/float_dsp_altivec.c | 122 + ffmpeg/libavutil/ppc/float_dsp_altivec.h | 38 + ffmpeg/libavutil/ppc/float_dsp_init.c | 40 + ffmpeg/libavutil/ppc/intreadwrite.h | 124 + ffmpeg/libavutil/ppc/timer.h | 48 + ffmpeg/libavutil/ppc/types_altivec.h | 47 + ffmpeg/libavutil/ppc/util_altivec.h | 114 + ffmpeg/libavutil/qsort.h | 117 + ffmpeg/libavutil/random_seed.c | 155 + ffmpeg/libavutil/random_seed.h | 43 + ffmpeg/libavutil/rational.c | 206 + ffmpeg/libavutil/rational.h | 166 + ffmpeg/libavutil/rc4.c | 61 + ffmpeg/libavutil/rc4.h | 50 + ffmpeg/libavutil/replaygain.h | 51 + ffmpeg/libavutil/ripemd.c | 515 + ffmpeg/libavutil/ripemd.h | 75 + ffmpeg/libavutil/samplefmt.c | 268 + ffmpeg/libavutil/samplefmt.h | 279 + ffmpeg/libavutil/sh4/bswap.h | 48 + ffmpeg/libavutil/sha.c | 404 + ffmpeg/libavutil/sha.h | 74 + ffmpeg/libavutil/sha512.c | 345 + ffmpeg/libavutil/sha512.h | 75 + ffmpeg/libavutil/softfloat.c | 71 + ffmpeg/libavutil/softfloat.h | 126 + ffmpeg/libavutil/stereo3d.c | 43 + ffmpeg/libavutil/stereo3d.h | 152 + ffmpeg/libavutil/threadmessage.c | 184 + ffmpeg/libavutil/threadmessage.h | 91 + ffmpeg/libavutil/time.c | 90 + ffmpeg/libavutil/time.h | 56 + ffmpeg/libavutil/timecode.c | 218 + ffmpeg/libavutil/timecode.h | 140 + ffmpeg/libavutil/timer.h | 90 + ffmpeg/libavutil/timestamp.h | 78 + ffmpeg/libavutil/tomi/intreadwrite.h | 150 + ffmpeg/libavutil/tree.c | 257 + ffmpeg/libavutil/tree.h | 132 + ffmpeg/libavutil/utf8.c | 73 + ffmpeg/libavutil/utils.c | 120 + ffmpeg/libavutil/version.h | 155 + ffmpeg/libavutil/x86/Makefile | 12 + ffmpeg/libavutil/x86/asm.h | 153 + ffmpeg/libavutil/x86/bswap.h | 61 + ffmpeg/libavutil/x86/cpu.c | 218 + ffmpeg/libavutil/x86/cpu.h | 81 + ffmpeg/libavutil/x86/cpuid.asm | 91 + ffmpeg/libavutil/x86/emms.asm | 30 + ffmpeg/libavutil/x86/emms.h | 47 + ffmpeg/libavutil/x86/float_dsp.asm | 381 + ffmpeg/libavutil/x86/float_dsp_init.c | 99 + ffmpeg/libavutil/x86/intreadwrite.h | 97 + ffmpeg/libavutil/x86/lls.asm | 235 + ffmpeg/libavutil/x86/lls_init.c | 41 + ffmpeg/libavutil/x86/pixelutils.asm | 165 + ffmpeg/libavutil/x86/pixelutils.h | 26 + ffmpeg/libavutil/x86/pixelutils_init.c | 58 + ffmpeg/libavutil/x86/timer.h | 45 + ffmpeg/libavutil/x86/w64xmmtest.h | 73 + ffmpeg/libavutil/x86/x86inc.asm | 1468 ++ ffmpeg/libavutil/x86/x86util.asm | 772 + ffmpeg/libavutil/x86_cpu.h | 1 + ffmpeg/libavutil/xga_font_data.c | 417 + ffmpeg/libavutil/xga_font_data.h | 35 + ffmpeg/libavutil/xtea.c | 280 + ffmpeg/libavutil/xtea.h | 64 + ffmpeg/libpostproc/Makefile | 12 + ffmpeg/libpostproc/libpostproc.v | 4 + ffmpeg/libpostproc/postprocess.c | 1049 ++ ffmpeg/libpostproc/postprocess.h | 106 + .../postprocess_altivec_template.c | 1210 ++ ffmpeg/libpostproc/postprocess_internal.h | 179 + ffmpeg/libpostproc/postprocess_template.c | 3721 ++++ ffmpeg/libpostproc/postprocres.rc | 55 + ffmpeg/libpostproc/version.h | 45 + ffmpeg/library.mak | 111 + ffmpeg/libswresample/Makefile | 24 + ffmpeg/libswresample/aarch64/Makefile | 5 + .../aarch64/audio_convert_init.c | 67 + .../aarch64/audio_convert_neon.S | 363 + ffmpeg/libswresample/aarch64/neontest.c | 29 + ffmpeg/libswresample/arm/Makefile | 5 + ffmpeg/libswresample/arm/audio_convert_init.c | 67 + ffmpeg/libswresample/arm/audio_convert_neon.S | 363 + ffmpeg/libswresample/arm/neontest.c | 29 + ffmpeg/libswresample/audioconvert.c | 225 + ffmpeg/libswresample/audioconvert.h | 78 + ffmpeg/libswresample/dither.c | 148 + ffmpeg/libswresample/dither_template.c | 67 + ffmpeg/libswresample/libswresample.v | 4 + ffmpeg/libswresample/log2_tab.c | 1 + ffmpeg/libswresample/noise_shaping_data.c | 224 + ffmpeg/libswresample/options.c | 155 + ffmpeg/libswresample/rematrix.c | 509 + ffmpeg/libswresample/rematrix_template.c | 106 + ffmpeg/libswresample/resample.c | 417 + ffmpeg/libswresample/resample.h | 64 + ffmpeg/libswresample/resample_dsp.c | 68 + ffmpeg/libswresample/resample_template.c | 187 + ffmpeg/libswresample/soxr_resample.c | 100 + ffmpeg/libswresample/swresample-test.c | 416 + ffmpeg/libswresample/swresample.c | 846 + ffmpeg/libswresample/swresample.h | 534 + ffmpeg/libswresample/swresample_frame.c | 158 + ffmpeg/libswresample/swresample_internal.h | 203 + ffmpeg/libswresample/swresampleres.rc | 55 + ffmpeg/libswresample/version.h | 45 + ffmpeg/libswresample/x86/Makefile | 9 + ffmpeg/libswresample/x86/audio_convert.asm | 465 + ffmpeg/libswresample/x86/audio_convert_init.c | 141 + ffmpeg/libswresample/x86/rematrix.asm | 250 + ffmpeg/libswresample/x86/rematrix_init.c | 83 + ffmpeg/libswresample/x86/resample.asm | 600 + ffmpeg/libswresample/x86/resample_init.c | 90 + ffmpeg/libswresample/x86/w64xmmtest.c | 29 + ffmpeg/libswscale/Makefile | 24 + ffmpeg/libswscale/arm/Makefile | 4 + ffmpeg/libswscale/arm/rgb2yuv_neon_16.S | 80 + ffmpeg/libswscale/arm/rgb2yuv_neon_32.S | 119 + ffmpeg/libswscale/arm/rgb2yuv_neon_common.S | 291 + ffmpeg/libswscale/arm/swscale_unscaled.c | 79 + ffmpeg/libswscale/bayer_template.c | 236 + ffmpeg/libswscale/colorspace-test.c | 170 + ffmpeg/libswscale/hscale_fast_bilinear.c | 55 + ffmpeg/libswscale/input.c | 1383 ++ ffmpeg/libswscale/libswscale.v | 4 + ffmpeg/libswscale/log2_tab.c | 1 + ffmpeg/libswscale/options.c | 93 + ffmpeg/libswscale/output.c | 2225 +++ ffmpeg/libswscale/ppc/Makefile | 3 + ffmpeg/libswscale/ppc/swscale_altivec.c | 332 + ffmpeg/libswscale/ppc/yuv2rgb_altivec.c | 868 + ffmpeg/libswscale/ppc/yuv2rgb_altivec.h | 51 + ffmpeg/libswscale/ppc/yuv2yuv_altivec.c | 204 + ffmpeg/libswscale/rgb2rgb.c | 393 + ffmpeg/libswscale/rgb2rgb.h | 171 + ffmpeg/libswscale/rgb2rgb_template.c | 951 + ffmpeg/libswscale/swscale-test.c | 417 + ffmpeg/libswscale/swscale.c | 1088 ++ ffmpeg/libswscale/swscale.h | 359 + ffmpeg/libswscale/swscale_internal.h | 901 + ffmpeg/libswscale/swscale_unscaled.c | 1782 ++ ffmpeg/libswscale/swscaleres.rc | 55 + ffmpeg/libswscale/utils.c | 1953 ++ ffmpeg/libswscale/version.h | 59 + ffmpeg/libswscale/x86/Makefile | 13 + .../x86/hscale_fast_bilinear_simd.c | 374 + ffmpeg/libswscale/x86/input.asm | 740 + ffmpeg/libswscale/x86/output.asm | 413 + ffmpeg/libswscale/x86/rgb2rgb.c | 164 + ffmpeg/libswscale/x86/rgb2rgb_template.c | 2585 +++ ffmpeg/libswscale/x86/scale.asm | 431 + ffmpeg/libswscale/x86/swscale.c | 578 + ffmpeg/libswscale/x86/swscale_template.c | 1546 ++ ffmpeg/libswscale/x86/w64xmmtest.c | 31 + ffmpeg/libswscale/x86/yuv2rgb.c | 119 + ffmpeg/libswscale/x86/yuv2rgb_template.c | 467 + ffmpeg/libswscale/yuv2rgb.c | 916 + ffmpeg/presets/libvpx-1080p.ffpreset | 19 + ffmpeg/presets/libvpx-1080p50_60.ffpreset | 19 + ffmpeg/presets/libvpx-360p.ffpreset | 18 + ffmpeg/presets/libvpx-720p.ffpreset | 19 + ffmpeg/presets/libvpx-720p50_60.ffpreset | 19 + ffmpeg/tests/Makefile | 224 + ffmpeg/tests/audiogen.c | 248 + ffmpeg/tests/base64.c | 54 + ffmpeg/tests/copycooker.sh | 30 + ffmpeg/tests/fate-run.sh | 255 + ffmpeg/tests/fate-valgrind.supp | 31 + ffmpeg/tests/fate.sh | 122 + ffmpeg/tests/fate/aac.mak | 123 + ffmpeg/tests/fate/ac3.mak | 83 + ffmpeg/tests/fate/acodec.mak | 148 + ffmpeg/tests/fate/adpcm.mak | 92 + ffmpeg/tests/fate/alac.mak | 24 + ffmpeg/tests/fate/als.mak | 11 + ffmpeg/tests/fate/amrnb.mak | 36 + ffmpeg/tests/fate/amrwb.mak | 47 + ffmpeg/tests/fate/atrac.mak | 26 + ffmpeg/tests/fate/audio.mak | 69 + ffmpeg/tests/fate/avformat.mak | 74 + ffmpeg/tests/fate/bmp.mak | 43 + ffmpeg/tests/fate/cdxl.mak | 19 + ffmpeg/tests/fate/cover-art.mak | 38 + ffmpeg/tests/fate/demux.mak | 117 + ffmpeg/tests/fate/dfa.mak | 37 + ffmpeg/tests/fate/dpcm.mak | 14 + ffmpeg/tests/fate/ea.mak | 26 + ffmpeg/tests/fate/exif.mak | 18 + ffmpeg/tests/fate/ffmpeg.mak | 48 + ffmpeg/tests/fate/ffprobe.mak | 33 + ffmpeg/tests/fate/fft.mak | 59 + ffmpeg/tests/fate/filter-audio.mak | 96 + ffmpeg/tests/fate/filter-video.mak | 407 + ffmpeg/tests/fate/flac.mak | 28 + ffmpeg/tests/fate/gif.mak | 27 + ffmpeg/tests/fate/h264.mak | 397 + ffmpeg/tests/fate/hevc.mak | 229 + ffmpeg/tests/fate/image.mak | 194 + ffmpeg/tests/fate/indeo.mak | 17 + ffmpeg/tests/fate/libavcodec.mak | 23 + ffmpeg/tests/fate/libavdevice.mak | 6 + ffmpeg/tests/fate/libavformat.mak | 14 + ffmpeg/tests/fate/libavresample.mak | 68 + ffmpeg/tests/fate/libavutil.mak | 107 + ffmpeg/tests/fate/libswresample.mak | 401 + ffmpeg/tests/fate/lossless-audio.mak | 29 + ffmpeg/tests/fate/lossless-video.mak | 58 + ffmpeg/tests/fate/microsoft.mak | 69 + ffmpeg/tests/fate/monkeysaudio.mak | 20 + ffmpeg/tests/fate/mp3.mak | 43 + ffmpeg/tests/fate/mpc.mak | 13 + ffmpeg/tests/fate/opus.mak | 47 + ffmpeg/tests/fate/pcm.mak | 32 + ffmpeg/tests/fate/probe.mak | 20 + ffmpeg/tests/fate/prores.mak | 20 + ffmpeg/tests/fate/qt.mak | 55 + ffmpeg/tests/fate/qtrle.mak | 23 + ffmpeg/tests/fate/real.mak | 47 + ffmpeg/tests/fate/screen.mak | 71 + ffmpeg/tests/fate/seek.mak | 247 + ffmpeg/tests/fate/subtitles.mak | 65 + ffmpeg/tests/fate/utvideo.mak | 72 + ffmpeg/tests/fate/vcodec.mak | 327 + ffmpeg/tests/fate/video.mak | 311 + ffmpeg/tests/fate/voice.mak | 78 + ffmpeg/tests/fate/vorbis.mak | 85 + ffmpeg/tests/fate/vpx.mak | 103 + ffmpeg/tests/fate/vqf.mak | 12 + ffmpeg/tests/fate/wavpack.mak | 102 + ffmpeg/tests/fate/wma.mak | 54 + ffmpeg/tests/fate/xvid.mak | 8 + ffmpeg/tests/ffserver-regression.sh | 39 + ffmpeg/tests/ffserver.conf | 311 + ffmpeg/tests/ffserver.regression.ref | 10 + .../filtergraphs/alphamerge_alphaextract_rgb | 4 + .../filtergraphs/alphamerge_alphaextract_yuv | 4 + ffmpeg/tests/filtergraphs/channelmap_one_int | 1 + ffmpeg/tests/filtergraphs/channelmap_one_str | 1 + ffmpeg/tests/filtergraphs/concat | 8 + ffmpeg/tests/filtergraphs/gradfun | 2 + ffmpeg/tests/filtergraphs/hqdn3d | 1 + .../tests/filtergraphs/lavr_mix_output_zero | 1 + ffmpeg/tests/filtergraphs/overlay | 3 + ffmpeg/tests/filtergraphs/overlay_rgb | 4 + ffmpeg/tests/filtergraphs/overlay_yuv420 | 4 + ffmpeg/tests/filtergraphs/overlay_yuv422 | 4 + ffmpeg/tests/filtergraphs/overlay_yuv444 | 4 + ffmpeg/tests/filtergraphs/scalenorm | 4 + ffmpeg/tests/filtergraphs/select-alternate | 1 + ffmpeg/tests/filtergraphs/setpts | 2 + ffmpeg/tests/lavf-regression.sh | 361 + ffmpeg/tests/md5.sh | 13 + ffmpeg/tests/ref/acodec/adpcm-adx | 4 + ffmpeg/tests/ref/acodec/adpcm-adx-trellis | 4 + ffmpeg/tests/ref/acodec/adpcm-ima_qt | 4 + ffmpeg/tests/ref/acodec/adpcm-ima_qt-trellis | 4 + ffmpeg/tests/ref/acodec/adpcm-ima_wav | 4 + ffmpeg/tests/ref/acodec/adpcm-ima_wav-trellis | 4 + ffmpeg/tests/ref/acodec/adpcm-ms | 4 + ffmpeg/tests/ref/acodec/adpcm-ms-trellis | 4 + ffmpeg/tests/ref/acodec/adpcm-swf | 4 + ffmpeg/tests/ref/acodec/adpcm-swf-trellis | 4 + ffmpeg/tests/ref/acodec/adpcm-yamaha | 4 + ffmpeg/tests/ref/acodec/adpcm-yamaha-trellis | 4 + ffmpeg/tests/ref/acodec/adpcm_ima_qt | 4 + ffmpeg/tests/ref/acodec/alac | 4 + ffmpeg/tests/ref/acodec/flac | 4 + ffmpeg/tests/ref/acodec/g723_1 | 4 + ffmpeg/tests/ref/acodec/mp2 | 4 + ffmpeg/tests/ref/acodec/mp2fixed | 4 + ffmpeg/tests/ref/acodec/pcm-alaw | 4 + ffmpeg/tests/ref/acodec/pcm-f32be | 4 + ffmpeg/tests/ref/acodec/pcm-f32le | 4 + ffmpeg/tests/ref/acodec/pcm-f64be | 4 + ffmpeg/tests/ref/acodec/pcm-f64le | 4 + ffmpeg/tests/ref/acodec/pcm-mulaw | 4 + ffmpeg/tests/ref/acodec/pcm-s16be | 4 + ffmpeg/tests/ref/acodec/pcm-s16be_planar | 4 + ffmpeg/tests/ref/acodec/pcm-s16le | 4 + ffmpeg/tests/ref/acodec/pcm-s16le_planar | 4 + ffmpeg/tests/ref/acodec/pcm-s24be | 4 + ffmpeg/tests/ref/acodec/pcm-s24le | 4 + ffmpeg/tests/ref/acodec/pcm-s24le_planar | 4 + ffmpeg/tests/ref/acodec/pcm-s32be | 4 + ffmpeg/tests/ref/acodec/pcm-s32le | 4 + ffmpeg/tests/ref/acodec/pcm-s32le_planar | 4 + ffmpeg/tests/ref/acodec/pcm-s8 | 4 + ffmpeg/tests/ref/acodec/pcm-s8_planar | 4 + ffmpeg/tests/ref/acodec/pcm-u16be | 4 + ffmpeg/tests/ref/acodec/pcm-u16le | 4 + ffmpeg/tests/ref/acodec/pcm-u24be | 4 + ffmpeg/tests/ref/acodec/pcm-u24le | 4 + ffmpeg/tests/ref/acodec/pcm-u32be | 4 + ffmpeg/tests/ref/acodec/pcm-u32le | 4 + ffmpeg/tests/ref/acodec/pcm-u8 | 4 + ffmpeg/tests/ref/acodec/roqaudio | 4 + ffmpeg/tests/ref/fate/4xm-1 | 16 + ffmpeg/tests/ref/fate/4xm-2 | 175 + ffmpeg/tests/ref/fate/8bps | 37 + ffmpeg/tests/ref/fate/aasc | 25 + ffmpeg/tests/ref/fate/acodec-aref | 4 + ffmpeg/tests/ref/fate/adpcm-4xm | 27 + ffmpeg/tests/ref/fate/adpcm-afc | 13 + ffmpeg/tests/ref/fate/adpcm-creative | 1 + ffmpeg/tests/ref/fate/adpcm-creative-8-2.6bit | 1 + ffmpeg/tests/ref/fate/adpcm-creative-8-2bit | 1 + ffmpeg/tests/ref/fate/adpcm-creative-8-4bit | 1 + ffmpeg/tests/ref/fate/adpcm-dtk | 33 + ffmpeg/tests/ref/fate/adpcm-ea-1 | 26 + ffmpeg/tests/ref/fate/adpcm-ea-2 | 134 + ffmpeg/tests/ref/fate/adpcm-ea-maxis-xa | 31 + ffmpeg/tests/ref/fate/adpcm-ea-r1 | 96 + ffmpeg/tests/ref/fate/adpcm-ea-r2 | 1 + ffmpeg/tests/ref/fate/adpcm-ea-r3 | 1 + ffmpeg/tests/ref/fate/adpcm-ima-amv | 161 + ffmpeg/tests/ref/fate/adpcm-ima-apc | 1 + ffmpeg/tests/ref/fate/adpcm-ima-dk3 | 1 + ffmpeg/tests/ref/fate/adpcm-ima-dk4 | 1 + ffmpeg/tests/ref/fate/adpcm-ima-ea-eacs | 48 + ffmpeg/tests/ref/fate/adpcm-ima-ea-sead | 50 + ffmpeg/tests/ref/fate/adpcm-ima-iss | 1 + ffmpeg/tests/ref/fate/adpcm-ima-oki | 1 + ffmpeg/tests/ref/fate/adpcm-ima-rad | 1 + ffmpeg/tests/ref/fate/adpcm-ima-smjpeg | 351 + ffmpeg/tests/ref/fate/adpcm-ima-ws | 41 + ffmpeg/tests/ref/fate/adpcm-ima_wav-stereo | 1 + ffmpeg/tests/ref/fate/adpcm-ms-mono | 46 + ffmpeg/tests/ref/fate/adpcm-thp | 72 + ffmpeg/tests/ref/fate/adpcm-vima | 17 + ffmpeg/tests/ref/fate/adpcm-xa | 38 + ffmpeg/tests/ref/fate/adpcm_ms-stereo | 1 + ffmpeg/tests/ref/fate/adts-demux | 1 + ffmpeg/tests/ref/fate/aea-demux | 1 + ffmpeg/tests/ref/fate/aic | 16 + ffmpeg/tests/ref/fate/alg-mm | 32 + ffmpeg/tests/ref/fate/aliaspix-bgr | 2 + ffmpeg/tests/ref/fate/aliaspix-gray | 2 + ffmpeg/tests/ref/fate/amv | 161 + ffmpeg/tests/ref/fate/ansi | 18 + ffmpeg/tests/ref/fate/ansi256 | 9 + ffmpeg/tests/ref/fate/armovie-escape124 | 106 + ffmpeg/tests/ref/fate/armovie-escape130 | 360 + ffmpeg/tests/ref/fate/ast | 1 + ffmpeg/tests/ref/fate/auravision-v1 | 25 + ffmpeg/tests/ref/fate/auravision-v2 | 3 + ffmpeg/tests/ref/fate/avio-direct | 59 + ffmpeg/tests/ref/fate/avstring | 27 + ffmpeg/tests/ref/fate/base64 | 9 + ffmpeg/tests/ref/fate/bethsoft-vid | 143 + ffmpeg/tests/ref/fate/bfi | 116 + ffmpeg/tests/ref/fate/bink-demux | 1 + ffmpeg/tests/ref/fate/bink-video-b | 31 + ffmpeg/tests/ref/fate/bink-video-f | 21 + ffmpeg/tests/ref/fate/bink-video-i | 32 + ffmpeg/tests/ref/fate/blowfish | 1 + ffmpeg/tests/ref/fate/bmp-15bit | 2 + ffmpeg/tests/ref/fate/bmp-15bit-mask | 2 + ffmpeg/tests/ref/fate/bmp-16bit-mask | 2 + ffmpeg/tests/ref/fate/bmp-1bit | 2 + ffmpeg/tests/ref/fate/bmp-24bit | 2 + ffmpeg/tests/ref/fate/bmp-32bit | 2 + ffmpeg/tests/ref/fate/bmp-32bit-mask | 2 + ffmpeg/tests/ref/fate/bmp-4bit | 2 + ffmpeg/tests/ref/fate/bmp-4bit-os2 | 2 + ffmpeg/tests/ref/fate/bmp-8bit | 2 + ffmpeg/tests/ref/fate/bmp-8bit-os2 | 2 + ffmpeg/tests/ref/fate/bmp-rle4 | 2 + ffmpeg/tests/ref/fate/bmp-rle8 | 2 + ffmpeg/tests/ref/fate/bmpparser | 5 + ffmpeg/tests/ref/fate/bmv-audio | 22 + ffmpeg/tests/ref/fate/bmv-video | 22 + ffmpeg/tests/ref/fate/bprint | 16 + ffmpeg/tests/ref/fate/brenderpix-24 | 2 + ffmpeg/tests/ref/fate/brenderpix-565 | 2 + ffmpeg/tests/ref/fate/brenderpix-defpal | 2 + ffmpeg/tests/ref/fate/brenderpix-intpal | 2 + ffmpeg/tests/ref/fate/brenderpix-y400a | 2 + ffmpeg/tests/ref/fate/brstm | 1 + ffmpeg/tests/ref/fate/caf | 1 + ffmpeg/tests/ref/fate/cavs | 172 + ffmpeg/tests/ref/fate/cdgraphics | 213 + ffmpeg/tests/ref/fate/cdxl-bitline-ham6 | 11 + ffmpeg/tests/ref/fate/cdxl-demux | 21 + ffmpeg/tests/ref/fate/cdxl-ham6 | 17 + ffmpeg/tests/ref/fate/cdxl-ham8 | 2 + ffmpeg/tests/ref/fate/cdxl-pal8 | 12 + ffmpeg/tests/ref/fate/cdxl-pal8-small | 47 + ffmpeg/tests/ref/fate/cine-demux | 1 + ffmpeg/tests/ref/fate/cljr | 37 + ffmpeg/tests/ref/fate/cllc-argb | 6 + ffmpeg/tests/ref/fate/cllc-rgb | 16 + ffmpeg/tests/ref/fate/cllc-yuy2-noblock | 17 + ffmpeg/tests/ref/fate/corepng | 39 + ffmpeg/tests/ref/fate/crc | 6 + ffmpeg/tests/ref/fate/creatureshock-avs | 94 + ffmpeg/tests/ref/fate/cscd | 209 + ffmpeg/tests/ref/fate/cvid-grayscale | 153 + ffmpeg/tests/ref/fate/cvid-palette | 57 + ffmpeg/tests/ref/fate/cvid-partial | 80 + ffmpeg/tests/ref/fate/cyberia-c93 | 44 + ffmpeg/tests/ref/fate/cyuv | 151 + ffmpeg/tests/ref/fate/d-cinema-demux | 5 + ffmpeg/tests/ref/fate/dcinema-encode | 1 + ffmpeg/tests/ref/fate/delphine-cin-audio | 92 + ffmpeg/tests/ref/fate/delphine-cin-video | 93 + ffmpeg/tests/ref/fate/deluxepaint-anm | 124 + ffmpeg/tests/ref/fate/dfa1 | 26 + ffmpeg/tests/ref/fate/dfa10 | 9 + ffmpeg/tests/ref/fate/dfa11 | 10 + ffmpeg/tests/ref/fate/dfa2 | 18 + ffmpeg/tests/ref/fate/dfa3 | 11 + ffmpeg/tests/ref/fate/dfa4 | 15 + ffmpeg/tests/ref/fate/dfa5 | 16 + ffmpeg/tests/ref/fate/dfa6 | 13 + ffmpeg/tests/ref/fate/dfa7 | 13 + ffmpeg/tests/ref/fate/dfa8 | 37 + ffmpeg/tests/ref/fate/dfa9 | 7 + ffmpeg/tests/ref/fate/dirac | 3 + ffmpeg/tests/ref/fate/dpcm-idroq | 168 + ffmpeg/tests/ref/fate/dpcm-interplay | 125 + ffmpeg/tests/ref/fate/dpcm-sierra | 1 + ffmpeg/tests/ref/fate/dpcm-xan | 1 + ffmpeg/tests/ref/fate/dpx | 2 + ffmpeg/tests/ref/fate/dxa-feeble | 21 + ffmpeg/tests/ref/fate/dxa-scummvm | 13 + ffmpeg/tests/ref/fate/dxtory | 3 + ffmpeg/tests/ref/fate/ea-cdata | 1 + ffmpeg/tests/ref/fate/ea-cmv | 195 + ffmpeg/tests/ref/fate/ea-mad | 97 + ffmpeg/tests/ref/fate/ea-tgq | 279 + ffmpeg/tests/ref/fate/ea-tgv-1 | 48 + ffmpeg/tests/ref/fate/ea-tgv-2 | 39 + ffmpeg/tests/ref/fate/ea-tqi | 27 + ffmpeg/tests/ref/fate/eval | 281 + ffmpeg/tests/ref/fate/exif-image-embedded | 404 + ffmpeg/tests/ref/fate/exif-image-jpg | 226 + ffmpeg/tests/ref/fate/exif-image-tiff | 27 + ffmpeg/tests/ref/fate/exif-image-webp | 226 + ffmpeg/tests/ref/fate/exr-slice-pxr24 | 2 + ffmpeg/tests/ref/fate/exr-slice-raw | 2 + ffmpeg/tests/ref/fate/exr-slice-rle | 2 + ffmpeg/tests/ref/fate/exr-slice-zip1 | 2 + ffmpeg/tests/ref/fate/exr-slice-zip16 | 2 + ffmpeg/tests/ref/fate/ffmpeg-filter_complex | 6 + ffmpeg/tests/ref/fate/ffmpeg-lavfi | 6 + ffmpeg/tests/ref/fate/ffprobe_compact | 32 + ffmpeg/tests/ref/fate/ffprobe_csv | 32 + ffmpeg/tests/ref/fate/ffprobe_default | 657 + ffmpeg/tests/ref/fate/ffprobe_flat | 593 + ffmpeg/tests/ref/fate/ffprobe_ini | 672 + ffmpeg/tests/ref/fate/ffprobe_json | 641 + ffmpeg/tests/ref/fate/ffprobe_xml | 57 + ffmpeg/tests/ref/fate/fic-avi | 122 + ffmpeg/tests/ref/fate/fifo | 27 + ffmpeg/tests/ref/fate/film-cvid | 111 + ffmpeg/tests/ref/fate/filter-adelay | 261 + .../fate/filter-alphaextract_alphamerge_rgb | 51 + .../fate/filter-alphaextract_alphamerge_yuv | 51 + ffmpeg/tests/ref/fate/filter-atrim-duration | 2 + ffmpeg/tests/ref/fate/filter-atrim-mixed | 5 + ffmpeg/tests/ref/fate/filter-atrim-samples | 2 + ffmpeg/tests/ref/fate/filter-atrim-time | 6 + ffmpeg/tests/ref/fate/filter-boxblur | 51 + ffmpeg/tests/ref/fate/filter-codecview-mvs | 61 + .../tests/ref/fate/filter-colorchannelmixer | 51 + ffmpeg/tests/ref/fate/filter-colormatrix1 | 1 + ffmpeg/tests/ref/fate/filter-colormatrix2 | 1 + ffmpeg/tests/ref/fate/filter-concat | 202 + ffmpeg/tests/ref/fate/filter-crop | 1 + ffmpeg/tests/ref/fate/filter-crop_scale | 1 + ffmpeg/tests/ref/fate/filter-crop_scale_vflip | 1 + ffmpeg/tests/ref/fate/filter-crop_vflip | 1 + ffmpeg/tests/ref/fate/filter-curves | 6 + ffmpeg/tests/ref/fate/filter-delogo | 110 + ffmpeg/tests/ref/fate/filter-drawbox | 51 + ffmpeg/tests/ref/fate/filter-edgedetect | 1 + .../tests/ref/fate/filter-edgedetect-colormix | 1 + ffmpeg/tests/ref/fate/filter-fade | 51 + ffmpeg/tests/ref/fate/filter-fieldorder | 26 + .../tests/ref/fate/filter-framepack-columns | 16 + .../tests/ref/fate/filter-framepack-frameseq | 16 + ffmpeg/tests/ref/fate/filter-framepack-lines | 16 + ffmpeg/tests/ref/fate/filter-framepack-sbs | 16 + ffmpeg/tests/ref/fate/filter-framepack-tab | 16 + ffmpeg/tests/ref/fate/filter-gradfun | 51 + ffmpeg/tests/ref/fate/filter-gradfun-sample | 21 + ffmpeg/tests/ref/fate/filter-histogram-levels | 51 + .../tests/ref/fate/filter-histogram-waveform | 51 + ffmpeg/tests/ref/fate/filter-hq2x | 3 + ffmpeg/tests/ref/fate/filter-hq3x | 3 + ffmpeg/tests/ref/fate/filter-hq4x | 3 + ffmpeg/tests/ref/fate/filter-hqdn3d | 51 + ffmpeg/tests/ref/fate/filter-hqdn3d-sample | 74 + ffmpeg/tests/ref/fate/filter-hue | 1 + ffmpeg/tests/ref/fate/filter-idet | 1 + ffmpeg/tests/ref/fate/filter-interlace | 26 + ffmpeg/tests/ref/fate/filter-lavd-life | 11 + ffmpeg/tests/ref/fate/filter-lavd-scalenorm | 11 + ffmpeg/tests/ref/fate/filter-lavd-testsrc | 71 + ffmpeg/tests/ref/fate/filter-mcdeint-fast | 31 + ffmpeg/tests/ref/fate/filter-mcdeint-medium | 31 + ffmpeg/tests/ref/fate/filter-metadata-ebur128 | 280 + .../ref/fate/filter-metadata-scenedetect | 10 + .../ref/fate/filter-metadata-silencedetect | 512 + ffmpeg/tests/ref/fate/filter-negate | 51 + ffmpeg/tests/ref/fate/filter-null | 1 + ffmpeg/tests/ref/fate/filter-overlay | 51 + ffmpeg/tests/ref/fate/filter-overlay_rgb | 51 + ffmpeg/tests/ref/fate/filter-overlay_yuv420 | 51 + ffmpeg/tests/ref/fate/filter-overlay_yuv422 | 51 + ffmpeg/tests/ref/fate/filter-overlay_yuv444 | 51 + ffmpeg/tests/ref/fate/filter-pad | 1 + ffmpeg/tests/ref/fate/filter-phase | 51 + ffmpeg/tests/ref/fate/filter-pixdesc-0bgr | 1 + ffmpeg/tests/ref/fate/filter-pixdesc-0rgb | 1 + ffmpeg/tests/ref/fate/filter-pixdesc-abgr | 1 + ffmpeg/tests/ref/fate/filter-pixdesc-argb | 1 + ffmpeg/tests/ref/fate/filter-pixdesc-bgr0 | 1 + ffmpeg/tests/ref/fate/filter-pixdesc-bgr24 | 1 + ffmpeg/tests/ref/fate/filter-pixdesc-bgr444be | 1 + ffmpeg/tests/ref/fate/filter-pixdesc-bgr444le | 1 + ffmpeg/tests/ref/fate/filter-pixdesc-bgr48be | 1 + ffmpeg/tests/ref/fate/filter-pixdesc-bgr48le | 1 + .../tests/ref/fate/filter-pixdesc-bgr4_byte | 1 + ffmpeg/tests/ref/fate/filter-pixdesc-bgr555be | 1 + ffmpeg/tests/ref/fate/filter-pixdesc-bgr555le | 1 + ffmpeg/tests/ref/fate/filter-pixdesc-bgr565be | 1 + ffmpeg/tests/ref/fate/filter-pixdesc-bgr565le | 1 + ffmpeg/tests/ref/fate/filter-pixdesc-bgr8 | 1 + ffmpeg/tests/ref/fate/filter-pixdesc-bgra | 1 + ffmpeg/tests/ref/fate/filter-pixdesc-bgra64be | 1 + ffmpeg/tests/ref/fate/filter-pixdesc-bgra64le | 1 + ffmpeg/tests/ref/fate/filter-pixdesc-gbrap | 1 + ffmpeg/tests/ref/fate/filter-pixdesc-gbrp | 1 + ffmpeg/tests/ref/fate/filter-pixdesc-gbrp10be | 1 + ffmpeg/tests/ref/fate/filter-pixdesc-gbrp10le | 1 + ffmpeg/tests/ref/fate/filter-pixdesc-gbrp12be | 1 + ffmpeg/tests/ref/fate/filter-pixdesc-gbrp12le | 1 + ffmpeg/tests/ref/fate/filter-pixdesc-gbrp14be | 1 + ffmpeg/tests/ref/fate/filter-pixdesc-gbrp14le | 1 + ffmpeg/tests/ref/fate/filter-pixdesc-gbrp9be | 1 + ffmpeg/tests/ref/fate/filter-pixdesc-gbrp9le | 1 + ffmpeg/tests/ref/fate/filter-pixdesc-gray | 1 + ffmpeg/tests/ref/fate/filter-pixdesc-gray16be | 1 + ffmpeg/tests/ref/fate/filter-pixdesc-gray16le | 1 + ffmpeg/tests/ref/fate/filter-pixdesc-monob | 1 + ffmpeg/tests/ref/fate/filter-pixdesc-monow | 1 + ffmpeg/tests/ref/fate/filter-pixdesc-nv12 | 1 + ffmpeg/tests/ref/fate/filter-pixdesc-nv21 | 1 + ffmpeg/tests/ref/fate/filter-pixdesc-rgb0 | 1 + ffmpeg/tests/ref/fate/filter-pixdesc-rgb24 | 1 + ffmpeg/tests/ref/fate/filter-pixdesc-rgb444be | 1 + ffmpeg/tests/ref/fate/filter-pixdesc-rgb444le | 1 + ffmpeg/tests/ref/fate/filter-pixdesc-rgb48be | 1 + ffmpeg/tests/ref/fate/filter-pixdesc-rgb48le | 1 + .../tests/ref/fate/filter-pixdesc-rgb4_byte | 1 + ffmpeg/tests/ref/fate/filter-pixdesc-rgb555be | 1 + ffmpeg/tests/ref/fate/filter-pixdesc-rgb555le | 1 + ffmpeg/tests/ref/fate/filter-pixdesc-rgb565be | 1 + ffmpeg/tests/ref/fate/filter-pixdesc-rgb565le | 1 + ffmpeg/tests/ref/fate/filter-pixdesc-rgb8 | 1 + ffmpeg/tests/ref/fate/filter-pixdesc-rgba | 1 + ffmpeg/tests/ref/fate/filter-pixdesc-rgba64be | 1 + ffmpeg/tests/ref/fate/filter-pixdesc-rgba64le | 1 + ffmpeg/tests/ref/fate/filter-pixdesc-uyvy422 | 1 + ffmpeg/tests/ref/fate/filter-pixdesc-xyz12be | 1 + ffmpeg/tests/ref/fate/filter-pixdesc-xyz12le | 1 + ffmpeg/tests/ref/fate/filter-pixdesc-yuv410p | 1 + ffmpeg/tests/ref/fate/filter-pixdesc-yuv411p | 1 + ffmpeg/tests/ref/fate/filter-pixdesc-yuv420p | 1 + .../tests/ref/fate/filter-pixdesc-yuv420p10be | 1 + .../tests/ref/fate/filter-pixdesc-yuv420p10le | 1 + .../tests/ref/fate/filter-pixdesc-yuv420p12be | 1 + .../tests/ref/fate/filter-pixdesc-yuv420p12le | 1 + .../tests/ref/fate/filter-pixdesc-yuv420p14be | 1 + .../tests/ref/fate/filter-pixdesc-yuv420p14le | 1 + .../tests/ref/fate/filter-pixdesc-yuv420p16be | 1 + .../tests/ref/fate/filter-pixdesc-yuv420p16le | 1 + .../tests/ref/fate/filter-pixdesc-yuv420p9be | 1 + .../tests/ref/fate/filter-pixdesc-yuv420p9le | 1 + ffmpeg/tests/ref/fate/filter-pixdesc-yuv422p | 1 + .../tests/ref/fate/filter-pixdesc-yuv422p10be | 1 + .../tests/ref/fate/filter-pixdesc-yuv422p10le | 1 + .../tests/ref/fate/filter-pixdesc-yuv422p12be | 1 + .../tests/ref/fate/filter-pixdesc-yuv422p12le | 1 + .../tests/ref/fate/filter-pixdesc-yuv422p14be | 1 + .../tests/ref/fate/filter-pixdesc-yuv422p14le | 1 + .../tests/ref/fate/filter-pixdesc-yuv422p16be | 1 + .../tests/ref/fate/filter-pixdesc-yuv422p16le | 1 + .../tests/ref/fate/filter-pixdesc-yuv422p9be | 1 + .../tests/ref/fate/filter-pixdesc-yuv422p9le | 1 + ffmpeg/tests/ref/fate/filter-pixdesc-yuv440p | 1 + ffmpeg/tests/ref/fate/filter-pixdesc-yuv444p | 1 + .../tests/ref/fate/filter-pixdesc-yuv444p10be | 1 + .../tests/ref/fate/filter-pixdesc-yuv444p10le | 1 + .../tests/ref/fate/filter-pixdesc-yuv444p12be | 1 + .../tests/ref/fate/filter-pixdesc-yuv444p12le | 1 + .../tests/ref/fate/filter-pixdesc-yuv444p14be | 1 + .../tests/ref/fate/filter-pixdesc-yuv444p14le | 1 + .../tests/ref/fate/filter-pixdesc-yuv444p16be | 1 + .../tests/ref/fate/filter-pixdesc-yuv444p16le | 1 + .../tests/ref/fate/filter-pixdesc-yuv444p9be | 1 + .../tests/ref/fate/filter-pixdesc-yuv444p9le | 1 + ffmpeg/tests/ref/fate/filter-pixdesc-yuva420p | 1 + .../ref/fate/filter-pixdesc-yuva420p10be | 1 + .../ref/fate/filter-pixdesc-yuva420p10le | 1 + .../ref/fate/filter-pixdesc-yuva420p16be | 1 + .../ref/fate/filter-pixdesc-yuva420p16le | 1 + .../tests/ref/fate/filter-pixdesc-yuva420p9be | 1 + .../tests/ref/fate/filter-pixdesc-yuva420p9le | 1 + ffmpeg/tests/ref/fate/filter-pixdesc-yuva422p | 1 + .../ref/fate/filter-pixdesc-yuva422p10be | 1 + .../ref/fate/filter-pixdesc-yuva422p10le | 1 + .../ref/fate/filter-pixdesc-yuva422p16be | 1 + .../ref/fate/filter-pixdesc-yuva422p16le | 1 + .../tests/ref/fate/filter-pixdesc-yuva422p9be | 1 + .../tests/ref/fate/filter-pixdesc-yuva422p9le | 1 + ffmpeg/tests/ref/fate/filter-pixdesc-yuva444p | 1 + .../ref/fate/filter-pixdesc-yuva444p10be | 1 + .../ref/fate/filter-pixdesc-yuva444p10le | 1 + .../ref/fate/filter-pixdesc-yuva444p16be | 1 + .../ref/fate/filter-pixdesc-yuva444p16le | 1 + .../tests/ref/fate/filter-pixdesc-yuva444p9be | 1 + .../tests/ref/fate/filter-pixdesc-yuva444p9le | 1 + ffmpeg/tests/ref/fate/filter-pixdesc-yuvj411p | 1 + ffmpeg/tests/ref/fate/filter-pixdesc-yuvj420p | 1 + ffmpeg/tests/ref/fate/filter-pixdesc-yuvj422p | 1 + ffmpeg/tests/ref/fate/filter-pixdesc-yuvj440p | 1 + ffmpeg/tests/ref/fate/filter-pixdesc-yuvj444p | 1 + ffmpeg/tests/ref/fate/filter-pixdesc-yuyv422 | 1 + ffmpeg/tests/ref/fate/filter-pixdesc-yvyu422 | 1 + ffmpeg/tests/ref/fate/filter-pixfmts-copy | 119 + ffmpeg/tests/ref/fate/filter-pixfmts-crop | 114 + ffmpeg/tests/ref/fate/filter-pixfmts-field | 119 + .../tests/ref/fate/filter-pixfmts-fieldmatch | 5 + .../tests/ref/fate/filter-pixfmts-fieldorder | 92 + ffmpeg/tests/ref/fate/filter-pixfmts-hflip | 114 + ffmpeg/tests/ref/fate/filter-pixfmts-histeq | 6 + ffmpeg/tests/ref/fate/filter-pixfmts-il | 118 + .../tests/ref/fate/filter-pixfmts-kerndeint | 10 + ffmpeg/tests/ref/fate/filter-pixfmts-lut | 19 + ffmpeg/tests/ref/fate/filter-pixfmts-null | 119 + ffmpeg/tests/ref/fate/filter-pixfmts-pad | 27 + ffmpeg/tests/ref/fate/filter-pixfmts-pullup | 12 + ffmpeg/tests/ref/fate/filter-pixfmts-rotate | 20 + ffmpeg/tests/ref/fate/filter-pixfmts-scale | 119 + .../tests/ref/fate/filter-pixfmts-super2xsai | 14 + ffmpeg/tests/ref/fate/filter-pixfmts-swapuv | 62 + .../ref/fate/filter-pixfmts-tinterlace_merge | 14 + .../ref/fate/filter-pixfmts-tinterlace_pad | 14 + ffmpeg/tests/ref/fate/filter-pixfmts-vflip | 119 + ffmpeg/tests/ref/fate/filter-pp | 1 + ffmpeg/tests/ref/fate/filter-pp2 | 1 + ffmpeg/tests/ref/fate/filter-pp3 | 1 + ffmpeg/tests/ref/fate/filter-pp4 | 1 + ffmpeg/tests/ref/fate/filter-pp5 | 1 + ffmpeg/tests/ref/fate/filter-pp6 | 1 + ffmpeg/tests/ref/fate/filter-scale200 | 1 + ffmpeg/tests/ref/fate/filter-scale500 | 1 + ffmpeg/tests/ref/fate/filter-select | 1 + ffmpeg/tests/ref/fate/filter-select-alternate | 26 + ffmpeg/tests/ref/fate/filter-separatefields | 101 + ffmpeg/tests/ref/fate/filter-setdar | 1 + ffmpeg/tests/ref/fate/filter-setpts | 38 + ffmpeg/tests/ref/fate/filter-setsar | 1 + .../ref/fate/filter-shuffleplanes-dup-luma | 51 + .../ref/fate/filter-shuffleplanes-swapuv | 51 + ffmpeg/tests/ref/fate/filter-stereo3d-abr-ml | 6 + ffmpeg/tests/ref/fate/filter-stereo3d-abr-mr | 6 + ffmpeg/tests/ref/fate/filter-stereo3d-al-sbsl | 6 + ffmpeg/tests/ref/fate/filter-stereo3d-ar-abl | 6 + .../tests/ref/fate/filter-stereo3d-sbsl-abl | 6 + .../tests/ref/fate/filter-stereo3d-sbsl-abr | 6 + ffmpeg/tests/ref/fate/filter-stereo3d-sbsl-al | 6 + .../tests/ref/fate/filter-stereo3d-sbsl-sbsr | 6 + ffmpeg/tests/ref/fate/filter-telecine | 63 + ffmpeg/tests/ref/fate/filter-thumbnail | 1 + ffmpeg/tests/ref/fate/filter-tile | 1 + ffmpeg/tests/ref/fate/filter-transpose | 51 + ffmpeg/tests/ref/fate/filter-trim-duration | 2 + ffmpeg/tests/ref/fate/filter-trim-frame | 8 + ffmpeg/tests/ref/fate/filter-trim-mixed | 10 + ffmpeg/tests/ref/fate/filter-trim-time | 3 + ffmpeg/tests/ref/fate/filter-unsharp | 51 + ffmpeg/tests/ref/fate/filter-vflip | 1 + ffmpeg/tests/ref/fate/filter-vflip_crop | 1 + ffmpeg/tests/ref/fate/filter-vflip_vflip | 1 + ffmpeg/tests/ref/fate/filter-yadif-mode0 | 31 + ffmpeg/tests/ref/fate/filter-yadif-mode1 | 60 + ffmpeg/tests/ref/fate/filter-yadif10 | 31 + ffmpeg/tests/ref/fate/filter-yadif16 | 31 + .../tests/ref/fate/flic-af11-palette-change | 117 + ffmpeg/tests/ref/fate/flic-af12 | 28 + ffmpeg/tests/ref/fate/flic-magiccarpet | 43 + ffmpeg/tests/ref/fate/force_key_frames | 4 + ffmpeg/tests/ref/fate/fraps-v0 | 21 + ffmpeg/tests/ref/fate/fraps-v1 | 2 + ffmpeg/tests/ref/fate/fraps-v2 | 3 + ffmpeg/tests/ref/fate/fraps-v3 | 8 + ffmpeg/tests/ref/fate/fraps-v4 | 8 + ffmpeg/tests/ref/fate/fraps-v5 | 59 + ffmpeg/tests/ref/fate/frwu | 11 + ffmpeg/tests/ref/fate/g722-encode | 1 + ffmpeg/tests/ref/fate/g722dec-1 | 168 + ffmpeg/tests/ref/fate/g723_1-dec-1 | 3 + ffmpeg/tests/ref/fate/g723_1-dec-2 | 27 + ffmpeg/tests/ref/fate/g723_1-dec-3 | 34 + ffmpeg/tests/ref/fate/g723_1-dec-4 | 5 + ffmpeg/tests/ref/fate/g723_1-dec-5 | 101 + ffmpeg/tests/ref/fate/g723_1-dec-6 | 101 + ffmpeg/tests/ref/fate/g723_1-dec-7 | 12 + ffmpeg/tests/ref/fate/g723_1-dec-8 | 121 + ffmpeg/tests/ref/fate/g726-encode-2bit | 1 + ffmpeg/tests/ref/fate/g726-encode-3bit | 1 + ffmpeg/tests/ref/fate/g726-encode-4bit | 1 + ffmpeg/tests/ref/fate/g726-encode-5bit | 1 + ffmpeg/tests/ref/fate/g729-0 | 1000 + ffmpeg/tests/ref/fate/g729-1 | 1000 + ffmpeg/tests/ref/fate/gif-color | 174 + ffmpeg/tests/ref/fate/gif-demux | 37 + ffmpeg/tests/ref/fate/gif-disposal-background | 6 + ffmpeg/tests/ref/fate/gif-disposal-restore | 3 + ffmpeg/tests/ref/fate/gif-gray | 37 + ffmpeg/tests/ref/fate/gifenc-bgr4_byte | 174 + ffmpeg/tests/ref/fate/gifenc-bgr8 | 174 + ffmpeg/tests/ref/fate/gifenc-gray | 174 + ffmpeg/tests/ref/fate/gifenc-pal8 | 174 + ffmpeg/tests/ref/fate/gifenc-rgb4_byte | 174 + ffmpeg/tests/ref/fate/gifenc-rgb8 | 174 + ffmpeg/tests/ref/fate/gsm-ms | 90 + ffmpeg/tests/ref/fate/gsm-toast | 501 + ffmpeg/tests/ref/fate/h264-bsf-mp4toannexb | 1 + .../tests/ref/fate/h264-conformance-aud_mw_e | 101 + .../tests/ref/fate/h264-conformance-ba1_ft_c | 300 + .../ref/fate/h264-conformance-ba1_sony_d | 18 + .../ref/fate/h264-conformance-ba2_sony_f | 301 + .../tests/ref/fate/h264-conformance-ba3_sva_c | 34 + .../tests/ref/fate/h264-conformance-ba_mw_d | 101 + .../ref/fate/h264-conformance-bamq1_jvc_c | 31 + .../ref/fate/h264-conformance-bamq2_jvc_c | 31 + .../tests/ref/fate/h264-conformance-banm_mw_d | 101 + .../ref/fate/h264-conformance-basqp1_sony_c | 5 + .../ref/fate/h264-conformance-caba1_sony_d | 51 + .../ref/fate/h264-conformance-caba1_sva_b | 18 + .../ref/fate/h264-conformance-caba2_sony_e | 301 + .../ref/fate/h264-conformance-caba2_sva_b | 18 + .../ref/fate/h264-conformance-caba3_sony_c | 301 + .../ref/fate/h264-conformance-caba3_sva_b | 34 + .../ref/fate/h264-conformance-caba3_toshiba_e | 301 + .../fate/h264-conformance-cabac_mot_fld0_full | 31 + .../fate/h264-conformance-cabac_mot_frm0_full | 31 + .../h264-conformance-cabac_mot_mbaff0_full | 31 + .../h264-conformance-cabac_mot_picaff0_full | 31 + .../ref/fate/h264-conformance-cabaci3_sony_b | 301 + .../ref/fate/h264-conformance-cabast3_sony_e | 26 + .../fate/h264-conformance-cabastbr3_sony_b | 26 + .../ref/fate/h264-conformance-cabref3_sand_d | 51 + .../ref/fate/h264-conformance-cacqp3_sony_d | 51 + .../ref/fate/h264-conformance-cafi1_sva_c | 34 + .../ref/fate/h264-conformance-cama1_sony_c | 6 + .../ref/fate/h264-conformance-cama1_toshiba_b | 91 + .../ref/fate/h264-conformance-cama1_vtc_c | 5 + .../ref/fate/h264-conformance-cama2_vtc_b | 5 + .../ref/fate/h264-conformance-cama3_sand_e | 51 + .../ref/fate/h264-conformance-cama3_vtc_b | 5 + .../ref/fate/h264-conformance-camaci3_sony_c | 18 + .../fate/h264-conformance-camanl1_toshiba_b | 91 + .../fate/h264-conformance-camanl2_toshiba_b | 91 + .../ref/fate/h264-conformance-camanl3_sand_e | 51 + .../ref/fate/h264-conformance-camasl3_sony_b | 18 + .../fate/h264-conformance-camp_mot_mbaff_l30 | 31 + .../fate/h264-conformance-camp_mot_mbaff_l31 | 31 + .../ref/fate/h264-conformance-canl1_sony_e | 51 + .../ref/fate/h264-conformance-canl1_sva_b | 18 + .../ref/fate/h264-conformance-canl1_toshiba_g | 301 + .../ref/fate/h264-conformance-canl2_sony_e | 301 + .../ref/fate/h264-conformance-canl2_sva_b | 18 + .../ref/fate/h264-conformance-canl3_sony_c | 301 + .../ref/fate/h264-conformance-canl3_sva_b | 18 + .../ref/fate/h264-conformance-canl4_sva_b | 34 + .../ref/fate/h264-conformance-canlma2_sony_c | 18 + .../ref/fate/h264-conformance-canlma3_sony_c | 18 + .../ref/fate/h264-conformance-capa1_toshiba_b | 91 + .../ref/fate/h264-conformance-capama3_sand_f | 51 + .../ref/fate/h264-conformance-capcm1_sand_e | 31 + .../ref/fate/h264-conformance-capcmnl1_sand_e | 31 + .../ref/fate/h264-conformance-capm3_sony_d | 301 + .../ref/fate/h264-conformance-caqp1_sony_b | 51 + .../h264-conformance-cavlc_mot_fld0_full_b | 31 + .../h264-conformance-cavlc_mot_frm0_full_b | 31 + .../h264-conformance-cavlc_mot_mbaff0_full_b | 31 + .../h264-conformance-cavlc_mot_picaff0_full_b | 31 + .../ref/fate/h264-conformance-cawp1_toshiba_e | 91 + .../ref/fate/h264-conformance-cawp5_toshiba_e | 91 + .../tests/ref/fate/h264-conformance-ci1_ft_b | 292 + .../tests/ref/fate/h264-conformance-ci_mw_d | 101 + .../ref/fate/h264-conformance-cvbs3_sony_c | 301 + .../fate/h264-conformance-cvcanlma2_sony_c | 18 + .../ref/fate/h264-conformance-cvfc1_sony_c | 51 + .../ref/fate/h264-conformance-cvfi1_sony_d | 18 + .../ref/fate/h264-conformance-cvfi1_sva_c | 8 + .../ref/fate/h264-conformance-cvfi2_sony_h | 18 + .../ref/fate/h264-conformance-cvfi2_sva_c | 14 + .../ref/fate/h264-conformance-cvma1_sony_d | 6 + .../ref/fate/h264-conformance-cvma1_toshiba_b | 91 + .../fate/h264-conformance-cvmanl1_toshiba_b | 91 + .../fate/h264-conformance-cvmanl2_toshiba_b | 91 + .../fate/h264-conformance-cvmapaqp3_sony_e | 9 + .../ref/fate/h264-conformance-cvmaqp2_sony_g | 18 + .../ref/fate/h264-conformance-cvmaqp3_sony_d | 18 + .../fate/h264-conformance-cvmp_mot_fld_l30_b | 31 + .../fate/h264-conformance-cvmp_mot_frm_l31_b | 31 + .../ref/fate/h264-conformance-cvnlfi1_sony_c | 18 + .../ref/fate/h264-conformance-cvnlfi2_sony_h | 18 + .../ref/fate/h264-conformance-cvpa1_toshiba_b | 91 + .../ref/fate/h264-conformance-cvpcmnl1_sva_c | 31 + .../ref/fate/h264-conformance-cvpcmnl2_sva_c | 3 + .../ref/fate/h264-conformance-cvwp1_toshiba_e | 91 + .../ref/fate/h264-conformance-cvwp2_toshiba_e | 91 + .../ref/fate/h264-conformance-cvwp3_toshiba_e | 91 + .../ref/fate/h264-conformance-cvwp5_toshiba_e | 91 + .../ref/fate/h264-conformance-fi1_sony_e | 18 + .../h264-conformance-frext-alphaconformanceg | 44 + .../fate/h264-conformance-frext-bcrm_freh10 | 101 + .../fate/h264-conformance-frext-brcm_freh11 | 101 + .../fate/h264-conformance-frext-brcm_freh3 | 101 + .../fate/h264-conformance-frext-brcm_freh4 | 101 + .../fate/h264-conformance-frext-brcm_freh5 | 101 + .../fate/h264-conformance-frext-brcm_freh8 | 101 + .../fate/h264-conformance-frext-brcm_freh9 | 101 + .../ref/fate/h264-conformance-frext-freh12_b | 101 + .../ref/fate/h264-conformance-frext-freh1_b | 101 + .../ref/fate/h264-conformance-frext-freh2_b | 101 + .../ref/fate/h264-conformance-frext-freh6 | 101 + .../ref/fate/h264-conformance-frext-freh7_b | 101 + .../fate/h264-conformance-frext-frext01_jvc_d | 17 + .../fate/h264-conformance-frext-frext02_jvc_c | 17 + .../h264-conformance-frext-frext1_panasonic_c | 9 + .../h264-conformance-frext-frext2_panasonic_b | 16 + .../h264-conformance-frext-frext3_panasonic_d | 12 + .../h264-conformance-frext-frext4_panasonic_a | 11 + .../h264-conformance-frext-frext_mmco4_sony_b | 61 + .../fate/h264-conformance-frext-hcaff1_hhi_b | 11 + .../fate/h264-conformance-frext-hcafr1_hhi_c | 11 + .../fate/h264-conformance-frext-hcafr2_hhi_a | 11 + .../fate/h264-conformance-frext-hcafr3_hhi_a | 11 + .../fate/h264-conformance-frext-hcafr4_hhi_a | 11 + .../fate/h264-conformance-frext-hcamff1_hhi_b | 11 + .../h264-conformance-frext-hi422fr10_sony_b | 6 + .../h264-conformance-frext-hi422fr13_sony_b | 6 + .../h264-conformance-frext-hi422fr1_sony_a | 6 + .../h264-conformance-frext-hi422fr6_sony_a | 6 + .../fate/h264-conformance-frext-hpca_brcm_c | 301 + .../fate/h264-conformance-frext-hpcadq_brcm_b | 301 + .../fate/h264-conformance-frext-hpcafl_bcrm_c | 301 + .../h264-conformance-frext-hpcaflnl_bcrm_c | 301 + .../fate/h264-conformance-frext-hpcalq_brcm_b | 301 + .../h264-conformance-frext-hpcamapalq_bcrm_b | 301 + .../h264-conformance-frext-hpcamolq_brcm_b | 101 + .../fate/h264-conformance-frext-hpcanl_brcm_c | 301 + .../h264-conformance-frext-hpcaq2lq_brcm_b | 101 + .../fate/h264-conformance-frext-hpcv_brcm_a | 301 + .../fate/h264-conformance-frext-hpcvfl_bcrm_a | 301 + .../h264-conformance-frext-hpcvflnl_bcrm_a | 301 + .../h264-conformance-frext-hpcvmolq_brcm_b | 101 + .../fate/h264-conformance-frext-hpcvnl_brcm_a | 301 + ...h264-conformance-frext-pph10i1_panasonic_a | 11 + ...h264-conformance-frext-pph10i2_panasonic_a | 11 + ...h264-conformance-frext-pph10i3_panasonic_a | 11 + ...h264-conformance-frext-pph10i4_panasonic_a | 11 + ...h264-conformance-frext-pph10i5_panasonic_a | 11 + ...h264-conformance-frext-pph10i6_panasonic_a | 11 + ...h264-conformance-frext-pph10i7_panasonic_a | 11 + ...264-conformance-frext-pph422i1_panasonic_a | 11 + ...264-conformance-frext-pph422i2_panasonic_a | 11 + ...264-conformance-frext-pph422i3_panasonic_a | 11 + ...264-conformance-frext-pph422i4_panasonic_a | 11 + ...264-conformance-frext-pph422i5_panasonic_a | 11 + ...264-conformance-frext-pph422i6_panasonic_a | 11 + ...264-conformance-frext-pph422i7_panasonic_a | 11 + .../ref/fate/h264-conformance-hcbp2_hhi_a | 251 + .../ref/fate/h264-conformance-hcmp1_hhi_a | 251 + .../tests/ref/fate/h264-conformance-ls_sva_d | 1701 ++ .../tests/ref/fate/h264-conformance-midr_mw_d | 101 + .../tests/ref/fate/h264-conformance-mps_mw_a | 151 + .../tests/ref/fate/h264-conformance-mr1_bt_a | 63 + .../tests/ref/fate/h264-conformance-mr1_mw_a | 151 + .../tests/ref/fate/h264-conformance-mr2_mw_a | 301 + .../ref/fate/h264-conformance-mr2_tandberg_e | 301 + .../ref/fate/h264-conformance-mr3_tandberg_b | 301 + .../ref/fate/h264-conformance-mr4_tandberg_c | 301 + .../ref/fate/h264-conformance-mr5_tandberg_c | 301 + .../tests/ref/fate/h264-conformance-mr6_bt_b | 61 + .../tests/ref/fate/h264-conformance-mr7_bt_b | 61 + .../tests/ref/fate/h264-conformance-mr8_bt_b | 59 + .../tests/ref/fate/h264-conformance-mr9_bt_b | 59 + .../ref/fate/h264-conformance-mv1_brcm_d | 258 + .../ref/fate/h264-conformance-nl1_sony_d | 18 + .../ref/fate/h264-conformance-nl2_sony_h | 301 + .../tests/ref/fate/h264-conformance-nl3_sva_e | 34 + .../ref/fate/h264-conformance-nlmq1_jvc_c | 31 + .../ref/fate/h264-conformance-nlmq2_jvc_c | 31 + .../tests/ref/fate/h264-conformance-nrf_mw_e | 101 + .../fate/h264-conformance-sharp_mp_field_1_b | 16 + .../fate/h264-conformance-sharp_mp_field_2_b | 16 + .../fate/h264-conformance-sharp_mp_field_3_b | 16 + .../fate/h264-conformance-sharp_mp_paff_1r2 | 16 + .../fate/h264-conformance-sharp_mp_paff_2r | 16 + .../tests/ref/fate/h264-conformance-sl1_sva_b | 34 + .../tests/ref/fate/h264-conformance-sva_ba1_b | 18 + .../tests/ref/fate/h264-conformance-sva_ba2_d | 18 + .../ref/fate/h264-conformance-sva_base_b | 18 + .../tests/ref/fate/h264-conformance-sva_cl1_e | 51 + .../tests/ref/fate/h264-conformance-sva_fm1_e | 18 + .../tests/ref/fate/h264-conformance-sva_nl1_b | 18 + .../tests/ref/fate/h264-conformance-sva_nl2_e | 18 + ffmpeg/tests/ref/fate/h264-crop-to-container | 6 + ffmpeg/tests/ref/fate/h264-direct-bff | 12 + ffmpeg/tests/ref/fate/h264-extreme-plane-pred | 105 + ffmpeg/tests/ref/fate/h264-interlace-crop | 4 + ffmpeg/tests/ref/fate/h264-lossless | 11 + .../h264-reinit-large_420_8-to-small_420_8 | 101 + .../h264-reinit-small_420_8-to-large_444_10 | 101 + .../h264-reinit-small_420_9-to-small_420_8 | 101 + .../h264-reinit-small_422_9-to-small_420_9 | 101 + ...nce-ADJUST_IPRED_ANGLE_A_RExt_Mitsubishi_1 | 4 + .../ref/fate/hevc-conformance-AMP_A_Samsung_4 | 61 + .../ref/fate/hevc-conformance-AMP_A_Samsung_6 | 61 + .../ref/fate/hevc-conformance-AMP_B_Samsung_4 | 61 + .../ref/fate/hevc-conformance-AMP_B_Samsung_6 | 61 + .../ref/fate/hevc-conformance-AMP_D_Hisilicon | 101 + .../ref/fate/hevc-conformance-AMP_E_Hisilicon | 101 + .../fate/hevc-conformance-AMP_F_Hisilicon_3 | 101 + .../ref/fate/hevc-conformance-AMVP_A_MTK_4 | 31 + .../ref/fate/hevc-conformance-AMVP_B_MTK_4 | 42 + .../fate/hevc-conformance-AMVP_C_Samsung_4 | 61 + .../fate/hevc-conformance-AMVP_C_Samsung_6 | 61 + .../hevc-conformance-BUMPING_A_ericsson_1 | 50 + .../fate/hevc-conformance-CAINIT_A_SHARP_4 | 51 + .../fate/hevc-conformance-CAINIT_B_SHARP_4 | 51 + .../fate/hevc-conformance-CAINIT_C_SHARP_3 | 51 + .../fate/hevc-conformance-CAINIT_D_SHARP_3 | 51 + .../fate/hevc-conformance-CAINIT_E_SHARP_3 | 51 + .../fate/hevc-conformance-CAINIT_F_SHARP_3 | 51 + .../fate/hevc-conformance-CAINIT_G_SHARP_3 | 51 + .../fate/hevc-conformance-CAINIT_H_SHARP_3 | 51 + .../fate/hevc-conformance-CIP_A_Panasonic_3 | 3 + .../fate/hevc-conformance-CIP_C_Panasonic_2 | 3 + .../fate/hevc-conformance-CONFWIN_A_Sony_1 | 61 + .../hevc-conformance-DBLK_A_MAIN10_VIXS_3 | 9 + .../ref/fate/hevc-conformance-DBLK_A_SONY_3 | 31 + .../ref/fate/hevc-conformance-DBLK_B_SONY_3 | 31 + .../ref/fate/hevc-conformance-DBLK_C_SONY_3 | 31 + .../ref/fate/hevc-conformance-DBLK_D_VIXS_2 | 9 + .../ref/fate/hevc-conformance-DBLK_E_VIXS_2 | 9 + .../ref/fate/hevc-conformance-DBLK_F_VIXS_2 | 9 + .../ref/fate/hevc-conformance-DBLK_G_VIXS_2 | 9 + .../fate/hevc-conformance-DELTAQP_A_BRCM_4 | 97 + .../fate/hevc-conformance-DELTAQP_B_SONY_3 | 31 + .../fate/hevc-conformance-DELTAQP_C_SONY_3 | 31 + .../ref/fate/hevc-conformance-DSLICE_A_HHI_5 | 51 + .../ref/fate/hevc-conformance-DSLICE_B_HHI_5 | 51 + .../ref/fate/hevc-conformance-DSLICE_C_HHI_5 | 51 + .../fate/hevc-conformance-ENTP_A_Qualcomm_1 | 25 + .../fate/hevc-conformance-ENTP_B_Qualcomm_1 | 25 + .../fate/hevc-conformance-ENTP_C_Qualcomm_1 | 25 + .../fate/hevc-conformance-EXT_A_ericsson_4 | 4 + .../ref/fate/hevc-conformance-FILLER_A_Sony_1 | 61 + .../ref/fate/hevc-conformance-HRD_A_Fujitsu_2 | 97 + .../ref/fate/hevc-conformance-HRD_A_Fujitsu_3 | 97 + .../ref/fate/hevc-conformance-INITQP_A_Sony_1 | 61 + .../ref/fate/hevc-conformance-INITQP_B_Sony_1 | 91 + .../ref/fate/hevc-conformance-IPCM_A_RExt_NEC | 2 + .../ref/fate/hevc-conformance-IPCM_B_RExt_NEC | 2 + .../fate/hevc-conformance-IPRED_A_docomo_2 | 21 + .../ref/fate/hevc-conformance-IPRED_B_Nokia_3 | 2 + .../hevc-conformance-IPRED_C_Mitsubishi_3 | 5 + .../ref/fate/hevc-conformance-LS_A_Orange_2 | 10 + .../ref/fate/hevc-conformance-LS_B_ORANGE_4 | 26 + .../hevc-conformance-LTRPSPS_A_Qualcomm_1 | 501 + .../ref/fate/hevc-conformance-MAXBINS_A_TI_4 | 3 + .../ref/fate/hevc-conformance-MAXBINS_B_TI_4 | 4 + .../ref/fate/hevc-conformance-MAXBINS_C_TI_4 | 4 + .../ref/fate/hevc-conformance-MERGE_A_TI_3 | 9 + .../ref/fate/hevc-conformance-MERGE_B_TI_3 | 9 + .../ref/fate/hevc-conformance-MERGE_C_TI_3 | 9 + .../ref/fate/hevc-conformance-MERGE_D_TI_3 | 9 + .../ref/fate/hevc-conformance-MERGE_E_TI_3 | 9 + .../ref/fate/hevc-conformance-MERGE_F_MTK_4 | 42 + .../ref/fate/hevc-conformance-MERGE_G_HHI_4 | 3 + .../fate/hevc-conformance-MVCLIP_A_qualcomm_3 | 6 + .../hevc-conformance-MVDL1ZERO_A_docomo_3 | 501 + .../fate/hevc-conformance-MVEDGE_A_qualcomm_3 | 18 + ...hevc-conformance-Main_422_10_A_RExt_Sony_1 | 25 + ...hevc-conformance-Main_422_10_B_RExt_Sony_1 | 18 + .../fate/hevc-conformance-NUT_A_ericsson_5 | 35 + .../hevc-conformance-NoOutPrior_A_Qualcomm_1 | 41 + .../hevc-conformance-NoOutPrior_B_Qualcomm_1 | 48 + .../fate/hevc-conformance-OPFLAG_A_Qualcomm_1 | 501 + .../fate/hevc-conformance-OPFLAG_B_Qualcomm_1 | 99 + .../fate/hevc-conformance-OPFLAG_C_Qualcomm_1 | 97 + ...c-conformance-PERSIST_RPARAM_A_RExt_Sony_1 | 3 + .../fate/hevc-conformance-PICSIZE_A_Bossen_1 | 11 + .../fate/hevc-conformance-PICSIZE_B_Bossen_1 | 11 + .../fate/hevc-conformance-PICSIZE_C_Bossen_1 | 11 + .../fate/hevc-conformance-PICSIZE_D_Bossen_1 | 11 + .../ref/fate/hevc-conformance-PMERGE_A_TI_3 | 9 + .../ref/fate/hevc-conformance-PMERGE_B_TI_3 | 9 + .../ref/fate/hevc-conformance-PMERGE_C_TI_3 | 9 + .../ref/fate/hevc-conformance-PMERGE_D_TI_3 | 9 + .../ref/fate/hevc-conformance-PMERGE_E_TI_3 | 9 + .../ref/fate/hevc-conformance-POC_A_Bossen_3 | 6 + .../fate/hevc-conformance-PPS_A_qualcomm_7 | 82 + .../ref/fate/hevc-conformance-PS_A_VIDYO_3 | 26 + .../ref/fate/hevc-conformance-PS_B_VIDYO_3 | 26 + .../hevc-conformance-QMATRIX_A_RExt_Sony_1 | 21 + .../ref/fate/hevc-conformance-RAP_A_docomo_4 | 87 + .../ref/fate/hevc-conformance-RAP_B_Bossen_1 | 81 + .../fate/hevc-conformance-RPLM_A_qualcomm_4 | 301 + .../fate/hevc-conformance-RPLM_B_qualcomm_4 | 301 + .../ref/fate/hevc-conformance-RPS_A_docomo_4 | 45 + .../fate/hevc-conformance-RPS_B_qualcomm_5 | 301 + .../fate/hevc-conformance-RPS_C_ericsson_5 | 41 + .../fate/hevc-conformance-RPS_D_ericsson_6 | 69 + .../fate/hevc-conformance-RPS_E_qualcomm_5 | 301 + .../ref/fate/hevc-conformance-RPS_F_docomo_1 | 51 + .../ref/fate/hevc-conformance-RQT_A_HHI_4 | 3 + .../ref/fate/hevc-conformance-RQT_B_HHI_4 | 3 + .../ref/fate/hevc-conformance-RQT_C_HHI_4 | 3 + .../ref/fate/hevc-conformance-RQT_D_HHI_4 | 3 + .../ref/fate/hevc-conformance-RQT_E_HHI_4 | 3 + .../ref/fate/hevc-conformance-RQT_F_HHI_4 | 3 + .../ref/fate/hevc-conformance-RQT_G_HHI_4 | 3 + .../fate/hevc-conformance-SAO_A_MediaTek_4 | 61 + .../hevc-conformance-SAO_A_RExt_MediaTek_1 | 9 + .../fate/hevc-conformance-SAO_B_MediaTek_5 | 61 + .../ref/fate/hevc-conformance-SAO_C_Samsung_4 | 61 + .../ref/fate/hevc-conformance-SAO_C_Samsung_5 | 6 + .../ref/fate/hevc-conformance-SAO_D_Samsung_4 | 61 + .../ref/fate/hevc-conformance-SAO_D_Samsung_5 | 6 + .../ref/fate/hevc-conformance-SAO_E_Canon_4 | 17 + .../ref/fate/hevc-conformance-SAO_F_Canon_3 | 17 + .../ref/fate/hevc-conformance-SAO_G_Canon_3 | 17 + .../ref/fate/hevc-conformance-SDH_A_Orange_3 | 3 + .../ref/fate/hevc-conformance-SLICES_A_Rovi_3 | 10 + .../ref/fate/hevc-conformance-SLIST_A_Sony_4 | 66 + .../ref/fate/hevc-conformance-SLIST_B_Sony_8 | 66 + .../ref/fate/hevc-conformance-SLIST_C_Sony_3 | 66 + .../ref/fate/hevc-conformance-SLIST_D_Sony_9 | 66 + .../fate/hevc-conformance-SLPPLP_A_VIDYO_1 | 34 + .../fate/hevc-conformance-SLPPLP_A_VIDYO_2 | 34 + .../fate/hevc-conformance-STRUCT_A_Samsung_5 | 61 + .../fate/hevc-conformance-STRUCT_B_Samsung_4 | 61 + .../fate/hevc-conformance-STRUCT_B_Samsung_6 | 61 + .../ref/fate/hevc-conformance-TILES_A_Cisco_2 | 101 + .../ref/fate/hevc-conformance-TILES_B_Cisco_1 | 101 + .../ref/fate/hevc-conformance-TMVP_A_MS_3 | 18 + .../ref/fate/hevc-conformance-TSCL_A_VIDYO_5 | 74 + .../ref/fate/hevc-conformance-TSCL_B_VIDYO_4 | 74 + .../ref/fate/hevc-conformance-TSKIP_A_MS_3 | 18 + .../fate/hevc-conformance-TUSIZE_A_Samsung_1 | 6 + .../ref/fate/hevc-conformance-VPSID_A_VIDYO_1 | 34 + .../ref/fate/hevc-conformance-VPSID_A_VIDYO_2 | 34 + .../hevc-conformance-WPP_A_ericsson_MAIN10_2 | 49 + .../hevc-conformance-WPP_A_ericsson_MAIN_2 | 49 + .../hevc-conformance-WPP_B_ericsson_MAIN10_2 | 49 + .../hevc-conformance-WPP_B_ericsson_MAIN_2 | 49 + .../hevc-conformance-WPP_C_ericsson_MAIN10_2 | 49 + .../hevc-conformance-WPP_C_ericsson_MAIN_2 | 49 + .../hevc-conformance-WPP_D_ericsson_MAIN10_2 | 49 + .../hevc-conformance-WPP_D_ericsson_MAIN_2 | 49 + .../hevc-conformance-WPP_E_ericsson_MAIN10_2 | 49 + .../hevc-conformance-WPP_E_ericsson_MAIN_2 | 49 + .../hevc-conformance-WPP_F_ericsson_MAIN10_2 | 49 + .../hevc-conformance-WPP_F_ericsson_MAIN_2 | 49 + .../hevc-conformance-WP_A_MAIN10_Toshiba_3 | 257 + .../ref/fate/hevc-conformance-WP_A_Toshiba_3 | 257 + .../ref/fate/hevc-conformance-WP_B_Toshiba_3 | 257 + .../hevc-conformance-WP_MAIN10_B_Toshiba_3 | 257 + .../ref/fate/hevc-conformance-cip_B_NEC_3 | 6 + .../ref/fate/hevc-conformance-ipcm_A_NEC_3 | 2 + .../ref/fate/hevc-conformance-ipcm_B_NEC_3 | 2 + .../ref/fate/hevc-conformance-ipcm_C_NEC_3 | 2 + .../ref/fate/hevc-conformance-ipcm_D_NEC_3 | 2 + .../ref/fate/hevc-conformance-ipcm_E_NEC_2 | 2 + ffmpeg/tests/ref/fate/hmac | 30 + ffmpeg/tests/ref/fate/id-cin-video | 106 + ffmpeg/tests/ref/fate/idroq-video-encode | 1 + ffmpeg/tests/ref/fate/iff-byterun1 | 2 + ffmpeg/tests/ref/fate/iff-fibonacci | 1 + ffmpeg/tests/ref/fate/iff-ilbm | 2 + ffmpeg/tests/ref/fate/iff-pcm | 1 + ffmpeg/tests/ref/fate/iirfilter | 1024 ++ ffmpeg/tests/ref/fate/indeo2 | 131 + ffmpeg/tests/ref/fate/indeo3 | 41 + ffmpeg/tests/ref/fate/indeo3-2 | 101 + ffmpeg/tests/ref/fate/indeo4 | 101 + ffmpeg/tests/ref/fate/indeo5 | 134 + ffmpeg/tests/ref/fate/interplay-mve-16bit | 51 + ffmpeg/tests/ref/fate/interplay-mve-8bit | 111 + ffmpeg/tests/ref/fate/iv8-demux | 27 + ffmpeg/tests/ref/fate/jpeg2000-dcinema | 3 + ffmpeg/tests/ref/fate/jv | 8 + ffmpeg/tests/ref/fate/jv-demux | 20 + ffmpeg/tests/ref/fate/kgv1 | 314 + ffmpeg/tests/ref/fate/kmvc | 76 + ffmpeg/tests/ref/fate/lagarith-red | 26 + ffmpeg/tests/ref/fate/lagarith-rgb24 | 5 + ffmpeg/tests/ref/fate/lagarith-rgb32 | 26 + ffmpeg/tests/ref/fate/lagarith-yuy2 | 2 + ffmpeg/tests/ref/fate/lagarith-yv12 | 3 + ffmpeg/tests/ref/fate/lmlm4-demux | 218 + ffmpeg/tests/ref/fate/loco-rgb | 6 + ffmpeg/tests/ref/fate/loco-yuy2 | 4 + ffmpeg/tests/ref/fate/lossless-alac | 1 + ffmpeg/tests/ref/fate/lossless-meridianaudio | 1 + .../tests/ref/fate/lossless-monkeysaudio-399 | 1 + ffmpeg/tests/ref/fate/lossless-shorten | 1 + ffmpeg/tests/ref/fate/lossless-tak | 1 + ffmpeg/tests/ref/fate/lossless-tta | 1 + ffmpeg/tests/ref/fate/lossless-tta-encrypted | 1 + ffmpeg/tests/ref/fate/lossless-wma | 1 + ffmpeg/tests/ref/fate/mapchan-6ch-extract-2 | 2 + .../fate/mapchan-6ch-extract-2-downmix-mono | 1 + ffmpeg/tests/ref/fate/mapchan-silent-mono | 1 + ffmpeg/tests/ref/fate/maxis-xa | 31 + ffmpeg/tests/ref/fate/md5 | 5 + ffmpeg/tests/ref/fate/mdec | 135 + ffmpeg/tests/ref/fate/mdec-v3 | 60 + ffmpeg/tests/ref/fate/mimic | 77 + ffmpeg/tests/ref/fate/mjpegb | 11 + ffmpeg/tests/ref/fate/mkv | 219 + ffmpeg/tests/ref/fate/mlv-demux | 1 + ffmpeg/tests/ref/fate/motionpixels | 112 + ffmpeg/tests/ref/fate/mpc7-demux | 1 + ffmpeg/tests/ref/fate/mpc8-demux | 1 + ffmpeg/tests/ref/fate/mpeg2-field-enc | 31 + .../tests/ref/fate/mpeg4-als-conformance-00 | 1 + .../tests/ref/fate/mpeg4-als-conformance-01 | 1 + .../tests/ref/fate/mpeg4-als-conformance-02 | 1 + .../tests/ref/fate/mpeg4-als-conformance-03 | 1 + .../tests/ref/fate/mpeg4-als-conformance-04 | 1 + .../tests/ref/fate/mpeg4-als-conformance-05 | 1 + ffmpeg/tests/ref/fate/msmpeg4v1 | 51 + ffmpeg/tests/ref/fate/msrle-8bit | 30 + ffmpeg/tests/ref/fate/mss2-pal | 3 + ffmpeg/tests/ref/fate/mss2-pals | 3 + ffmpeg/tests/ref/fate/mss2-rgb555 | 3 + ffmpeg/tests/ref/fate/mss2-rgb555s | 3 + ffmpeg/tests/ref/fate/mss2-wmv | 101 + ffmpeg/tests/ref/fate/msvideo1-16bit | 31 + ffmpeg/tests/ref/fate/msvideo1-8bit | 31 + ffmpeg/tests/ref/fate/mszh | 2 + ffmpeg/tests/ref/fate/mtv | 139 + ffmpeg/tests/ref/fate/murmur3 | 1 + ffmpeg/tests/ref/fate/mv-mvc1 | 26 + ffmpeg/tests/ref/fate/mv-mvc2 | 31 + ffmpeg/tests/ref/fate/mv-sgirle | 32 + ffmpeg/tests/ref/fate/mxf-demux | 100 + ffmpeg/tests/ref/fate/mxpeg | 31 + ffmpeg/tests/ref/fate/nc-demux | 93 + ffmpeg/tests/ref/fate/nistsphere-demux | 1 + ffmpeg/tests/ref/fate/noproxy | 9 + ffmpeg/tests/ref/fate/nsv-demux | 173 + ffmpeg/tests/ref/fate/nuv-rtjpeg | 9 + ffmpeg/tests/ref/fate/nuv-rtjpeg-fh | 51 + ffmpeg/tests/ref/fate/oggvp8-demux | 71 + ffmpeg/tests/ref/fate/oma-demux | 1 + ffmpeg/tests/ref/fate/on2avc | 31 + ffmpeg/tests/ref/fate/paf-audio | 7 + ffmpeg/tests/ref/fate/paf-demux | 160 + ffmpeg/tests/ref/fate/paf-video | 153 + ffmpeg/tests/ref/fate/parseutils | 82 + ffmpeg/tests/ref/fate/pcm-planar | 143 + ffmpeg/tests/ref/fate/pcm_dvd | 124 + ffmpeg/tests/ref/fate/pcm_s16be-stereo | 1 + ffmpeg/tests/ref/fate/pcm_s16le-stereo | 1 + ffmpeg/tests/ref/fate/pcm_u8-mono | 1 + ffmpeg/tests/ref/fate/pcm_u8-stereo | 1 + ffmpeg/tests/ref/fate/pictor | 2 + ffmpeg/tests/ref/fate/pixelutils | 48 + ffmpeg/tests/ref/fate/pmp-demux | 106 + ffmpeg/tests/ref/fate/png-gray16 | 2 + ffmpeg/tests/ref/fate/png-gray8 | 2 + ffmpeg/tests/ref/fate/png-rgb24 | 2 + ffmpeg/tests/ref/fate/png-rgb48 | 2 + ffmpeg/tests/ref/fate/png-rgba | 2 + ffmpeg/tests/ref/fate/png-ya16 | 2 + ffmpeg/tests/ref/fate/png-ya8 | 2 + ffmpeg/tests/ref/fate/pngparser | 5 + ffmpeg/tests/ref/fate/prores-422 | 3 + ffmpeg/tests/ref/fate/prores-422_hq | 3 + ffmpeg/tests/ref/fate/prores-422_lt | 3 + ffmpeg/tests/ref/fate/prores-422_proxy | 3 + ffmpeg/tests/ref/fate/prores-alpha | 3 + ffmpeg/tests/ref/fate/prores-alpha_skip | 3 + ffmpeg/tests/ref/fate/prores-transparency | 5 + .../tests/ref/fate/prores-transparency_skip | 5 + ffmpeg/tests/ref/fate/psx-str-demux | 202 + ffmpeg/tests/ref/fate/ptx | 2 + ffmpeg/tests/ref/fate/pva-demux | 27 + ffmpeg/tests/ref/fate/qcp-demux | 1 + ffmpeg/tests/ref/fate/qpeg | 101 + ffmpeg/tests/ref/fate/qt-alaw-mono | 1 + ffmpeg/tests/ref/fate/qt-alaw-stereo | 1 + ffmpeg/tests/ref/fate/qt-ima4-mono | 1 + ffmpeg/tests/ref/fate/qt-ima4-stereo | 1 + ffmpeg/tests/ref/fate/qt-mac3-mono | 1 + ffmpeg/tests/ref/fate/qt-mac3-stereo | 1 + ffmpeg/tests/ref/fate/qt-mac6-mono | 1 + ffmpeg/tests/ref/fate/qt-mac6-stereo | 1 + ffmpeg/tests/ref/fate/qt-ulaw-mono | 1 + ffmpeg/tests/ref/fate/qt-ulaw-stereo | 1 + ffmpeg/tests/ref/fate/qtrle-16bit | 84 + ffmpeg/tests/ref/fate/qtrle-1bit | 39 + ffmpeg/tests/ref/fate/qtrle-24bit | 35 + ffmpeg/tests/ref/fate/qtrle-2bit | 39 + ffmpeg/tests/ref/fate/qtrle-32bit | 27 + ffmpeg/tests/ref/fate/qtrle-4bit | 39 + ffmpeg/tests/ref/fate/qtrle-8bit | 168 + ffmpeg/tests/ref/fate/quickdraw | 3 + ffmpeg/tests/ref/fate/r210 | 4 + ffmpeg/tests/ref/fate/ra-144 | 1 + ffmpeg/tests/ref/fate/ralf | 1 + ffmpeg/tests/ref/fate/random_seed | 1 + ffmpeg/tests/ref/fate/redcode-demux | 7 + ffmpeg/tests/ref/fate/redspark-demux | 1 + ffmpeg/tests/ref/fate/ripemd | 28 + ffmpeg/tests/ref/fate/rl2 | 109 + ffmpeg/tests/ref/fate/roqvideo | 211 + ffmpeg/tests/ref/fate/rpza | 31 + ffmpeg/tests/ref/fate/rsd-demux | 1 + ffmpeg/tests/ref/fate/rv30 | 110 + ffmpeg/tests/ref/fate/rv40 | 241 + ffmpeg/tests/ref/fate/sanm | 16 + ffmpeg/tests/ref/fate/sgi-gray | 2 + ffmpeg/tests/ref/fate/sgi-gray16 | 2 + ffmpeg/tests/ref/fate/sgi-rgb24 | 2 + ffmpeg/tests/ref/fate/sgi-rgb24-rle | 2 + ffmpeg/tests/ref/fate/sgi-rgb48 | 2 + ffmpeg/tests/ref/fate/sgi-rgb48-rle | 2 + ffmpeg/tests/ref/fate/sgi-rgba | 2 + ffmpeg/tests/ref/fate/sgi-rgba64 | 2 + ffmpeg/tests/ref/fate/sgi-rgba64-rle | 2 + ffmpeg/tests/ref/fate/sha | 21 + ffmpeg/tests/ref/fate/sha512 | 28 + ffmpeg/tests/ref/fate/sierra-vmd-audio | 216 + ffmpeg/tests/ref/fate/sierra-vmd-video | 118 + ffmpeg/tests/ref/fate/siff-demux | 112 + ffmpeg/tests/ref/fate/smacker-audio | 87 + ffmpeg/tests/ref/fate/smacker-video | 101 + ffmpeg/tests/ref/fate/smc | 121 + ffmpeg/tests/ref/fate/smjpeg | 425 + ffmpeg/tests/ref/fate/smjpeg-demux | 425 + ffmpeg/tests/ref/fate/smvjpeg | 13 + ffmpeg/tests/ref/fate/sp5x | 21 + ffmpeg/tests/ref/fate/srtp | 12 + ffmpeg/tests/ref/fate/sub-aqtitle | 1 + ffmpeg/tests/ref/fate/sub-charenc | 1 + ffmpeg/tests/ref/fate/sub-jacosub | 1 + ffmpeg/tests/ref/fate/sub-microdvd | 1 + ffmpeg/tests/ref/fate/sub-microdvd-remux | 1 + ffmpeg/tests/ref/fate/sub-movtext | 1 + ffmpeg/tests/ref/fate/sub-movtextenc | 1 + ffmpeg/tests/ref/fate/sub-mpl2 | 1 + ffmpeg/tests/ref/fate/sub-mpsub | 1 + ffmpeg/tests/ref/fate/sub-mpsub-frames | 1 + ffmpeg/tests/ref/fate/sub-pjs | 1 + ffmpeg/tests/ref/fate/sub-realtext | 1 + ffmpeg/tests/ref/fate/sub-sami | 1 + ffmpeg/tests/ref/fate/sub-srt | 1 + ffmpeg/tests/ref/fate/sub-subripenc | 1 + ffmpeg/tests/ref/fate/sub-subviewer | 1 + ffmpeg/tests/ref/fate/sub-subviewer1 | 1 + ffmpeg/tests/ref/fate/sub-vplayer | 1 + ffmpeg/tests/ref/fate/sub-webvtt | 1 + ffmpeg/tests/ref/fate/sub-webvttenc | 1 + ffmpeg/tests/ref/fate/sub2video | 96 + ffmpeg/tests/ref/fate/sunraster-1bit-raw | 2 + ffmpeg/tests/ref/fate/sunraster-1bit-rle | 2 + ffmpeg/tests/ref/fate/sunraster-24bit-raw | 2 + ffmpeg/tests/ref/fate/sunraster-24bit-rle | 2 + ffmpeg/tests/ref/fate/sunraster-8bit-raw | 2 + ffmpeg/tests/ref/fate/sunraster-8bit-rle | 2 + ffmpeg/tests/ref/fate/sunraster-8bit_gray-raw | 2 + ffmpeg/tests/ref/fate/svq1 | 151 + ffmpeg/tests/ref/fate/svq3 | 181 + ffmpeg/tests/ref/fate/targa-conformance-CBW8 | 2 + ffmpeg/tests/ref/fate/targa-conformance-CCM8 | 2 + ffmpeg/tests/ref/fate/targa-conformance-CTC16 | 2 + ffmpeg/tests/ref/fate/targa-conformance-CTC24 | 2 + ffmpeg/tests/ref/fate/targa-conformance-CTC32 | 2 + ffmpeg/tests/ref/fate/targa-conformance-UBW8 | 2 + ffmpeg/tests/ref/fate/targa-conformance-UCM8 | 2 + ffmpeg/tests/ref/fate/targa-conformance-UTC16 | 2 + ffmpeg/tests/ref/fate/targa-conformance-UTC24 | 2 + ffmpeg/tests/ref/fate/targa-conformance-UTC32 | 2 + ffmpeg/tests/ref/fate/targa-top-to-bottom | 2 + ffmpeg/tests/ref/fate/theora-coeff-level64 | 9 + ffmpeg/tests/ref/fate/thp | 73 + ffmpeg/tests/ref/fate/tiertex-seq | 100 + ffmpeg/tests/ref/fate/tiff-fax-g3 | 2 + ffmpeg/tests/ref/fate/tiff-fax-g3s | 2 + ffmpeg/tests/ref/fate/timefilter | 6 + ffmpeg/tests/ref/fate/tmv | 222 + ffmpeg/tests/ref/fate/truemotion1-15 | 106 + ffmpeg/tests/ref/fate/truemotion1-24 | 17 + ffmpeg/tests/ref/fate/truemotion2 | 31 + ffmpeg/tests/ref/fate/tscc-15bit | 242 + ffmpeg/tests/ref/fate/tscc-32bit | 157 + ffmpeg/tests/ref/fate/tscc2 | 33 + ffmpeg/tests/ref/fate/txd-16bpp | 12 + ffmpeg/tests/ref/fate/txd-pal8 | 2 + ffmpeg/tests/ref/fate/ulti | 63 + ffmpeg/tests/ref/fate/unknown_layout-ac3 | 1 + ffmpeg/tests/ref/fate/unknown_layout-pcm | 1 + ffmpeg/tests/ref/fate/url | 13 + ffmpeg/tests/ref/fate/utvideo_rgb_left | 5 + ffmpeg/tests/ref/fate/utvideo_rgb_median | 6 + ffmpeg/tests/ref/fate/utvideo_rgba_left | 6 + ffmpeg/tests/ref/fate/utvideo_rgba_median | 6 + .../tests/ref/fate/utvideo_rgba_single_symbol | 2 + ffmpeg/tests/ref/fate/utvideo_yuv420_left | 8 + ffmpeg/tests/ref/fate/utvideo_yuv420_median | 5 + ffmpeg/tests/ref/fate/utvideo_yuv422_left | 5 + ffmpeg/tests/ref/fate/utvideo_yuv422_median | 5 + ffmpeg/tests/ref/fate/utvideoenc_rgb_left | 55 + ffmpeg/tests/ref/fate/utvideoenc_rgb_median | 55 + ffmpeg/tests/ref/fate/utvideoenc_rgb_none | 55 + ffmpeg/tests/ref/fate/utvideoenc_rgba_left | 55 + ffmpeg/tests/ref/fate/utvideoenc_rgba_median | 55 + ffmpeg/tests/ref/fate/utvideoenc_rgba_none | 55 + ffmpeg/tests/ref/fate/utvideoenc_yuv420_left | 55 + .../tests/ref/fate/utvideoenc_yuv420_median | 55 + ffmpeg/tests/ref/fate/utvideoenc_yuv420_none | 55 + ffmpeg/tests/ref/fate/utvideoenc_yuv422_left | 55 + .../tests/ref/fate/utvideoenc_yuv422_median | 55 + ffmpeg/tests/ref/fate/utvideoenc_yuv422_none | 55 + ffmpeg/tests/ref/fate/v210 | 2 + ffmpeg/tests/ref/fate/v410dec | 2 + ffmpeg/tests/ref/fate/v410enc | 1 + ffmpeg/tests/ref/fate/vb | 37 + ffmpeg/tests/ref/fate/vble | 5 + ffmpeg/tests/ref/fate/vc1-ism | 121 + ffmpeg/tests/ref/fate/vc1_sa00040 | 16 + ffmpeg/tests/ref/fate/vc1_sa00050 | 31 + ffmpeg/tests/ref/fate/vc1_sa10091 | 31 + ffmpeg/tests/ref/fate/vc1_sa10143 | 31 + ffmpeg/tests/ref/fate/vc1_sa20021 | 61 + ffmpeg/tests/ref/fate/vcr1 | 129 + ffmpeg/tests/ref/fate/vcr2 | 158 + ffmpeg/tests/ref/fate/videoxl | 41 + ffmpeg/tests/ref/fate/vmnc-16bit | 193 + ffmpeg/tests/ref/fate/vmnc-32bit | 50 + ffmpeg/tests/ref/fate/vp31 | 115 + ffmpeg/tests/ref/fate/vp5 | 248 + ffmpeg/tests/ref/fate/vp60 | 134 + ffmpeg/tests/ref/fate/vp61 | 121 + ffmpeg/tests/ref/fate/vp6a | 94 + ffmpeg/tests/ref/fate/vp6a-skip_alpha | 94 + ffmpeg/tests/ref/fate/vp6f | 175 + ffmpeg/tests/ref/fate/vp7 | 31 + ffmpeg/tests/ref/fate/vp8-alpha | 121 + ffmpeg/tests/ref/fate/vp8-sign-bias | 14 + ffmpeg/tests/ref/fate/vp8-size-change | 35 + ffmpeg/tests/ref/fate/vp8-test-vector-001 | 34 + ffmpeg/tests/ref/fate/vp8-test-vector-002 | 54 + ffmpeg/tests/ref/fate/vp8-test-vector-003 | 54 + ffmpeg/tests/ref/fate/vp8-test-vector-004 | 34 + ffmpeg/tests/ref/fate/vp8-test-vector-005 | 54 + ffmpeg/tests/ref/fate/vp8-test-vector-006 | 53 + ffmpeg/tests/ref/fate/vp8-test-vector-007 | 34 + ffmpeg/tests/ref/fate/vp8-test-vector-008 | 7 + ffmpeg/tests/ref/fate/vp8-test-vector-009 | 54 + ffmpeg/tests/ref/fate/vp8-test-vector-010 | 62 + ffmpeg/tests/ref/fate/vp8-test-vector-011 | 34 + ffmpeg/tests/ref/fate/vp8-test-vector-012 | 34 + ffmpeg/tests/ref/fate/vp8-test-vector-013 | 34 + ffmpeg/tests/ref/fate/vp8-test-vector-014 | 54 + ffmpeg/tests/ref/fate/vp8-test-vector-015 | 265 + ffmpeg/tests/ref/fate/vp8-test-vector-016 | 34 + ffmpeg/tests/ref/fate/vp8-test-vector-017 | 34 + ffmpeg/tests/ref/fate/vp9-00-quantizer-00 | 7 + ffmpeg/tests/ref/fate/vp9-00-quantizer-01 | 7 + ffmpeg/tests/ref/fate/vp9-00-quantizer-02 | 7 + ffmpeg/tests/ref/fate/vp9-00-quantizer-03 | 7 + ffmpeg/tests/ref/fate/vp9-00-quantizer-04 | 7 + ffmpeg/tests/ref/fate/vp9-00-quantizer-05 | 7 + ffmpeg/tests/ref/fate/vp9-00-quantizer-06 | 7 + ffmpeg/tests/ref/fate/vp9-00-quantizer-07 | 7 + ffmpeg/tests/ref/fate/vp9-00-quantizer-08 | 7 + ffmpeg/tests/ref/fate/vp9-00-quantizer-09 | 7 + ffmpeg/tests/ref/fate/vp9-00-quantizer-10 | 7 + ffmpeg/tests/ref/fate/vp9-00-quantizer-11 | 7 + ffmpeg/tests/ref/fate/vp9-00-quantizer-12 | 7 + ffmpeg/tests/ref/fate/vp9-00-quantizer-13 | 7 + ffmpeg/tests/ref/fate/vp9-00-quantizer-14 | 7 + ffmpeg/tests/ref/fate/vp9-00-quantizer-15 | 7 + ffmpeg/tests/ref/fate/vp9-00-quantizer-16 | 7 + ffmpeg/tests/ref/fate/vp9-00-quantizer-17 | 7 + ffmpeg/tests/ref/fate/vp9-00-quantizer-18 | 7 + ffmpeg/tests/ref/fate/vp9-00-quantizer-19 | 7 + ffmpeg/tests/ref/fate/vp9-00-quantizer-20 | 7 + ffmpeg/tests/ref/fate/vp9-00-quantizer-21 | 7 + ffmpeg/tests/ref/fate/vp9-00-quantizer-22 | 7 + ffmpeg/tests/ref/fate/vp9-00-quantizer-23 | 7 + ffmpeg/tests/ref/fate/vp9-00-quantizer-24 | 7 + ffmpeg/tests/ref/fate/vp9-00-quantizer-25 | 7 + ffmpeg/tests/ref/fate/vp9-00-quantizer-26 | 7 + ffmpeg/tests/ref/fate/vp9-00-quantizer-27 | 7 + ffmpeg/tests/ref/fate/vp9-00-quantizer-28 | 7 + ffmpeg/tests/ref/fate/vp9-00-quantizer-29 | 7 + ffmpeg/tests/ref/fate/vp9-00-quantizer-30 | 7 + ffmpeg/tests/ref/fate/vp9-00-quantizer-31 | 7 + ffmpeg/tests/ref/fate/vp9-00-quantizer-32 | 7 + ffmpeg/tests/ref/fate/vp9-00-quantizer-33 | 7 + ffmpeg/tests/ref/fate/vp9-00-quantizer-34 | 7 + ffmpeg/tests/ref/fate/vp9-00-quantizer-35 | 7 + ffmpeg/tests/ref/fate/vp9-00-quantizer-36 | 7 + ffmpeg/tests/ref/fate/vp9-00-quantizer-37 | 7 + ffmpeg/tests/ref/fate/vp9-00-quantizer-38 | 7 + ffmpeg/tests/ref/fate/vp9-00-quantizer-39 | 7 + ffmpeg/tests/ref/fate/vp9-00-quantizer-40 | 7 + ffmpeg/tests/ref/fate/vp9-00-quantizer-41 | 7 + ffmpeg/tests/ref/fate/vp9-00-quantizer-42 | 7 + ffmpeg/tests/ref/fate/vp9-00-quantizer-43 | 7 + ffmpeg/tests/ref/fate/vp9-00-quantizer-44 | 7 + ffmpeg/tests/ref/fate/vp9-00-quantizer-45 | 7 + ffmpeg/tests/ref/fate/vp9-00-quantizer-46 | 7 + ffmpeg/tests/ref/fate/vp9-00-quantizer-47 | 7 + ffmpeg/tests/ref/fate/vp9-00-quantizer-48 | 7 + ffmpeg/tests/ref/fate/vp9-00-quantizer-49 | 7 + ffmpeg/tests/ref/fate/vp9-00-quantizer-50 | 7 + ffmpeg/tests/ref/fate/vp9-00-quantizer-51 | 7 + ffmpeg/tests/ref/fate/vp9-00-quantizer-52 | 7 + ffmpeg/tests/ref/fate/vp9-00-quantizer-53 | 7 + ffmpeg/tests/ref/fate/vp9-00-quantizer-54 | 7 + ffmpeg/tests/ref/fate/vp9-00-quantizer-55 | 7 + ffmpeg/tests/ref/fate/vp9-00-quantizer-56 | 7 + ffmpeg/tests/ref/fate/vp9-00-quantizer-57 | 7 + ffmpeg/tests/ref/fate/vp9-00-quantizer-58 | 7 + ffmpeg/tests/ref/fate/vp9-00-quantizer-59 | 7 + ffmpeg/tests/ref/fate/vp9-00-quantizer-60 | 7 + ffmpeg/tests/ref/fate/vp9-00-quantizer-61 | 7 + ffmpeg/tests/ref/fate/vp9-00-quantizer-62 | 7 + ffmpeg/tests/ref/fate/vp9-00-quantizer-63 | 7 + ffmpeg/tests/ref/fate/vp9-01-sharpness-1 | 15 + ffmpeg/tests/ref/fate/vp9-01-sharpness-2 | 15 + ffmpeg/tests/ref/fate/vp9-01-sharpness-3 | 15 + ffmpeg/tests/ref/fate/vp9-01-sharpness-4 | 15 + ffmpeg/tests/ref/fate/vp9-01-sharpness-5 | 15 + ffmpeg/tests/ref/fate/vp9-01-sharpness-6 | 15 + ffmpeg/tests/ref/fate/vp9-01-sharpness-7 | 15 + ffmpeg/tests/ref/fate/vp9-02-size-08x08 | 15 + ffmpeg/tests/ref/fate/vp9-02-size-08x10 | 15 + ffmpeg/tests/ref/fate/vp9-02-size-08x16 | 15 + ffmpeg/tests/ref/fate/vp9-02-size-08x18 | 15 + ffmpeg/tests/ref/fate/vp9-02-size-08x32 | 15 + ffmpeg/tests/ref/fate/vp9-02-size-08x34 | 15 + ffmpeg/tests/ref/fate/vp9-02-size-08x64 | 15 + ffmpeg/tests/ref/fate/vp9-02-size-08x66 | 15 + ffmpeg/tests/ref/fate/vp9-02-size-10x08 | 15 + ffmpeg/tests/ref/fate/vp9-02-size-10x10 | 15 + ffmpeg/tests/ref/fate/vp9-02-size-10x16 | 15 + ffmpeg/tests/ref/fate/vp9-02-size-10x18 | 15 + ffmpeg/tests/ref/fate/vp9-02-size-10x32 | 15 + ffmpeg/tests/ref/fate/vp9-02-size-10x34 | 15 + ffmpeg/tests/ref/fate/vp9-02-size-10x64 | 15 + ffmpeg/tests/ref/fate/vp9-02-size-10x66 | 15 + ffmpeg/tests/ref/fate/vp9-02-size-16x08 | 15 + ffmpeg/tests/ref/fate/vp9-02-size-16x10 | 15 + ffmpeg/tests/ref/fate/vp9-02-size-16x16 | 15 + ffmpeg/tests/ref/fate/vp9-02-size-16x18 | 15 + ffmpeg/tests/ref/fate/vp9-02-size-16x32 | 15 + ffmpeg/tests/ref/fate/vp9-02-size-16x34 | 15 + ffmpeg/tests/ref/fate/vp9-02-size-16x64 | 15 + ffmpeg/tests/ref/fate/vp9-02-size-16x66 | 15 + ffmpeg/tests/ref/fate/vp9-02-size-18x08 | 15 + ffmpeg/tests/ref/fate/vp9-02-size-18x10 | 15 + ffmpeg/tests/ref/fate/vp9-02-size-18x16 | 15 + ffmpeg/tests/ref/fate/vp9-02-size-18x18 | 15 + ffmpeg/tests/ref/fate/vp9-02-size-18x32 | 15 + ffmpeg/tests/ref/fate/vp9-02-size-18x34 | 15 + ffmpeg/tests/ref/fate/vp9-02-size-18x64 | 15 + ffmpeg/tests/ref/fate/vp9-02-size-18x66 | 15 + ffmpeg/tests/ref/fate/vp9-02-size-32x08 | 15 + ffmpeg/tests/ref/fate/vp9-02-size-32x10 | 15 + ffmpeg/tests/ref/fate/vp9-02-size-32x16 | 15 + ffmpeg/tests/ref/fate/vp9-02-size-32x18 | 15 + ffmpeg/tests/ref/fate/vp9-02-size-32x32 | 15 + ffmpeg/tests/ref/fate/vp9-02-size-32x34 | 15 + ffmpeg/tests/ref/fate/vp9-02-size-32x64 | 15 + ffmpeg/tests/ref/fate/vp9-02-size-32x66 | 15 + ffmpeg/tests/ref/fate/vp9-02-size-34x08 | 15 + ffmpeg/tests/ref/fate/vp9-02-size-34x10 | 15 + ffmpeg/tests/ref/fate/vp9-02-size-34x16 | 15 + ffmpeg/tests/ref/fate/vp9-02-size-34x18 | 15 + ffmpeg/tests/ref/fate/vp9-02-size-34x32 | 15 + ffmpeg/tests/ref/fate/vp9-02-size-34x34 | 15 + ffmpeg/tests/ref/fate/vp9-02-size-34x64 | 15 + ffmpeg/tests/ref/fate/vp9-02-size-34x66 | 15 + ffmpeg/tests/ref/fate/vp9-02-size-64x08 | 15 + ffmpeg/tests/ref/fate/vp9-02-size-64x10 | 15 + ffmpeg/tests/ref/fate/vp9-02-size-64x16 | 15 + ffmpeg/tests/ref/fate/vp9-02-size-64x18 | 15 + ffmpeg/tests/ref/fate/vp9-02-size-64x32 | 15 + ffmpeg/tests/ref/fate/vp9-02-size-64x34 | 15 + ffmpeg/tests/ref/fate/vp9-02-size-64x64 | 15 + ffmpeg/tests/ref/fate/vp9-02-size-64x66 | 15 + ffmpeg/tests/ref/fate/vp9-02-size-66x08 | 15 + ffmpeg/tests/ref/fate/vp9-02-size-66x10 | 15 + ffmpeg/tests/ref/fate/vp9-02-size-66x16 | 15 + ffmpeg/tests/ref/fate/vp9-02-size-66x18 | 15 + ffmpeg/tests/ref/fate/vp9-02-size-66x32 | 15 + ffmpeg/tests/ref/fate/vp9-02-size-66x34 | 15 + ffmpeg/tests/ref/fate/vp9-02-size-66x64 | 15 + ffmpeg/tests/ref/fate/vp9-02-size-66x66 | 15 + ffmpeg/tests/ref/fate/vp9-03-deltaq | 7 + ffmpeg/tests/ref/fate/vp9-03-size-196x196 | 15 + ffmpeg/tests/ref/fate/vp9-03-size-196x198 | 15 + ffmpeg/tests/ref/fate/vp9-03-size-196x200 | 15 + ffmpeg/tests/ref/fate/vp9-03-size-196x202 | 15 + ffmpeg/tests/ref/fate/vp9-03-size-196x208 | 15 + ffmpeg/tests/ref/fate/vp9-03-size-196x210 | 15 + ffmpeg/tests/ref/fate/vp9-03-size-196x224 | 15 + ffmpeg/tests/ref/fate/vp9-03-size-196x226 | 15 + ffmpeg/tests/ref/fate/vp9-03-size-198x196 | 15 + ffmpeg/tests/ref/fate/vp9-03-size-198x198 | 15 + ffmpeg/tests/ref/fate/vp9-03-size-198x200 | 15 + ffmpeg/tests/ref/fate/vp9-03-size-198x202 | 15 + ffmpeg/tests/ref/fate/vp9-03-size-198x208 | 15 + ffmpeg/tests/ref/fate/vp9-03-size-198x210 | 15 + ffmpeg/tests/ref/fate/vp9-03-size-198x224 | 15 + ffmpeg/tests/ref/fate/vp9-03-size-198x226 | 15 + ffmpeg/tests/ref/fate/vp9-03-size-200x196 | 15 + ffmpeg/tests/ref/fate/vp9-03-size-200x198 | 15 + ffmpeg/tests/ref/fate/vp9-03-size-200x200 | 15 + ffmpeg/tests/ref/fate/vp9-03-size-200x202 | 15 + ffmpeg/tests/ref/fate/vp9-03-size-200x208 | 15 + ffmpeg/tests/ref/fate/vp9-03-size-200x210 | 15 + ffmpeg/tests/ref/fate/vp9-03-size-200x224 | 15 + ffmpeg/tests/ref/fate/vp9-03-size-200x226 | 15 + ffmpeg/tests/ref/fate/vp9-03-size-202x196 | 15 + ffmpeg/tests/ref/fate/vp9-03-size-202x198 | 15 + ffmpeg/tests/ref/fate/vp9-03-size-202x200 | 15 + ffmpeg/tests/ref/fate/vp9-03-size-202x202 | 15 + ffmpeg/tests/ref/fate/vp9-03-size-202x208 | 15 + ffmpeg/tests/ref/fate/vp9-03-size-202x210 | 15 + ffmpeg/tests/ref/fate/vp9-03-size-202x224 | 15 + ffmpeg/tests/ref/fate/vp9-03-size-202x226 | 15 + ffmpeg/tests/ref/fate/vp9-03-size-208x196 | 15 + ffmpeg/tests/ref/fate/vp9-03-size-208x198 | 15 + ffmpeg/tests/ref/fate/vp9-03-size-208x200 | 15 + ffmpeg/tests/ref/fate/vp9-03-size-208x202 | 15 + ffmpeg/tests/ref/fate/vp9-03-size-208x208 | 15 + ffmpeg/tests/ref/fate/vp9-03-size-208x210 | 15 + ffmpeg/tests/ref/fate/vp9-03-size-208x224 | 15 + ffmpeg/tests/ref/fate/vp9-03-size-208x226 | 15 + ffmpeg/tests/ref/fate/vp9-03-size-210x196 | 15 + ffmpeg/tests/ref/fate/vp9-03-size-210x198 | 15 + ffmpeg/tests/ref/fate/vp9-03-size-210x200 | 15 + ffmpeg/tests/ref/fate/vp9-03-size-210x202 | 15 + ffmpeg/tests/ref/fate/vp9-03-size-210x208 | 15 + ffmpeg/tests/ref/fate/vp9-03-size-210x210 | 15 + ffmpeg/tests/ref/fate/vp9-03-size-210x224 | 15 + ffmpeg/tests/ref/fate/vp9-03-size-210x226 | 15 + ffmpeg/tests/ref/fate/vp9-03-size-224x196 | 15 + ffmpeg/tests/ref/fate/vp9-03-size-224x198 | 15 + ffmpeg/tests/ref/fate/vp9-03-size-224x200 | 15 + ffmpeg/tests/ref/fate/vp9-03-size-224x202 | 15 + ffmpeg/tests/ref/fate/vp9-03-size-224x208 | 15 + ffmpeg/tests/ref/fate/vp9-03-size-224x210 | 15 + ffmpeg/tests/ref/fate/vp9-03-size-224x224 | 15 + ffmpeg/tests/ref/fate/vp9-03-size-224x226 | 15 + ffmpeg/tests/ref/fate/vp9-03-size-226x196 | 15 + ffmpeg/tests/ref/fate/vp9-03-size-226x198 | 15 + ffmpeg/tests/ref/fate/vp9-03-size-226x200 | 15 + ffmpeg/tests/ref/fate/vp9-03-size-226x202 | 15 + ffmpeg/tests/ref/fate/vp9-03-size-226x208 | 15 + ffmpeg/tests/ref/fate/vp9-03-size-226x210 | 15 + ffmpeg/tests/ref/fate/vp9-03-size-226x224 | 15 + ffmpeg/tests/ref/fate/vp9-03-size-226x226 | 15 + ffmpeg/tests/ref/fate/vp9-2pass-akiyo | 55 + ffmpeg/tests/ref/fate/vp9-parallelmode-akiyo | 30 + .../tests/ref/fate/vp9-segmentation-aq-akiyo | 30 + .../tests/ref/fate/vp9-segmentation-sf-akiyo | 30 + ffmpeg/tests/ref/fate/vp9-tiling-pedestrian | 7 + ffmpeg/tests/ref/fate/vqa-cc | 39 + ffmpeg/tests/ref/fate/vqf-demux | 1 + ffmpeg/tests/ref/fate/w64 | 1 + ffmpeg/tests/ref/fate/wavpack-channels-4.0 | 1 + ffmpeg/tests/ref/fate/wavpack-channels-5.1 | 1 + ffmpeg/tests/ref/fate/wavpack-channels-6.1 | 1 + ffmpeg/tests/ref/fate/wavpack-channels-7.1 | 1 + .../tests/ref/fate/wavpack-channels-monofloat | 1 + .../tests/ref/fate/wavpack-channels-monoint | 1 + ffmpeg/tests/ref/fate/wavpack-clipping | 1 + ffmpeg/tests/ref/fate/wavpack-cuesheet | 1 + ffmpeg/tests/ref/fate/wavpack-falsestereo | 1 + ffmpeg/tests/ref/fate/wavpack-lossless-12bit | 1 + ffmpeg/tests/ref/fate/wavpack-lossless-16bit | 1 + ffmpeg/tests/ref/fate/wavpack-lossless-24bit | 1 + ffmpeg/tests/ref/fate/wavpack-lossless-32bit | 1 + ffmpeg/tests/ref/fate/wavpack-lossless-8bit | 1 + ffmpeg/tests/ref/fate/wavpack-lossless-float | 1 + ffmpeg/tests/ref/fate/wavpack-lossy-16bit | 1 + ffmpeg/tests/ref/fate/wavpack-lossy-24bit | 1 + ffmpeg/tests/ref/fate/wavpack-lossy-32bit | 1 + ffmpeg/tests/ref/fate/wavpack-lossy-8bit | 1 + ffmpeg/tests/ref/fate/wavpack-lossy-float | 1 + ffmpeg/tests/ref/fate/wavpack-matroskamode | 1 + ffmpeg/tests/ref/fate/wavpack-speed-default | 1 + ffmpeg/tests/ref/fate/wavpack-speed-fast | 1 + ffmpeg/tests/ref/fate/wavpack-speed-high | 1 + ffmpeg/tests/ref/fate/wavpack-speed-vhigh | 1 + ffmpeg/tests/ref/fate/wavpack-zerolsbs | 1 + ffmpeg/tests/ref/fate/wc3movie-xan | 72 + ffmpeg/tests/ref/fate/webm-dash-manifest | 48 + ...webm-dash-manifest-unaligned-audio-streams | 30 + ...webm-dash-manifest-unaligned-video-streams | 30 + ffmpeg/tests/ref/fate/westwood-aud | 12 + ffmpeg/tests/ref/fate/wmv8-drm | 130 + ffmpeg/tests/ref/fate/wmv8-drm-nodec | 154 + ffmpeg/tests/ref/fate/wmv8-x8intra | 474 + ffmpeg/tests/ref/fate/wnv1 | 87 + ffmpeg/tests/ref/fate/ws_snd | 1 + ffmpeg/tests/ref/fate/wtv-demux | 143 + ffmpeg/tests/ref/fate/xbm10 | 2 + ffmpeg/tests/ref/fate/xbm11 | 2 + ffmpeg/tests/ref/fate/xface | 2 + ffmpeg/tests/ref/fate/xmv-demux | 184 + ffmpeg/tests/ref/fate/xtea | 1 + ffmpeg/tests/ref/fate/xvid-custom-matrix | 25 + ffmpeg/tests/ref/fate/xvid-idct | 25 + ffmpeg/tests/ref/fate/xwma-demux | 1 + ffmpeg/tests/ref/fate/xxan-wc4 | 22 + ffmpeg/tests/ref/fate/yop | 7 + ffmpeg/tests/ref/fate/zerocodec | 39 + ffmpeg/tests/ref/fate/zlib | 2 + ffmpeg/tests/ref/fate/zmbv-15bit | 160 + ffmpeg/tests/ref/fate/zmbv-16bit | 160 + ffmpeg/tests/ref/fate/zmbv-32bit | 160 + ffmpeg/tests/ref/fate/zmbv-8bit | 277 + ffmpeg/tests/ref/lavf-fate/latm | 3 + ffmpeg/tests/ref/lavf-fate/mp3 | 3 + ffmpeg/tests/ref/lavf-fate/ogg_vp3 | 3 + ffmpeg/tests/ref/lavf/aiff | 3 + ffmpeg/tests/ref/lavf/alaw | 3 + ffmpeg/tests/ref/lavf/asf | 3 + ffmpeg/tests/ref/lavf/ast | 3 + ffmpeg/tests/ref/lavf/au | 3 + ffmpeg/tests/ref/lavf/avi | 3 + ffmpeg/tests/ref/lavf/bmp | 3 + ffmpeg/tests/ref/lavf/caf | 3 + ffmpeg/tests/ref/lavf/dpx | 18 + ffmpeg/tests/ref/lavf/dv_fmt | 9 + ffmpeg/tests/ref/lavf/ffm | 3 + ffmpeg/tests/ref/lavf/flm | 3 + ffmpeg/tests/ref/lavf/flv_fmt | 3 + ffmpeg/tests/ref/lavf/gif | 3 + ffmpeg/tests/ref/lavf/gxf | 9 + ffmpeg/tests/ref/lavf/ircam | 3 + ffmpeg/tests/ref/lavf/ismv | 9 + ffmpeg/tests/ref/lavf/jpg | 3 + ffmpeg/tests/ref/lavf/mkv | 6 + ffmpeg/tests/ref/lavf/mmf | 3 + ffmpeg/tests/ref/lavf/mov | 12 + ffmpeg/tests/ref/lavf/mpg | 9 + ffmpeg/tests/ref/lavf/mulaw | 3 + ffmpeg/tests/ref/lavf/mxf | 9 + ffmpeg/tests/ref/lavf/mxf_d10 | 3 + ffmpeg/tests/ref/lavf/nut | 3 + ffmpeg/tests/ref/lavf/ogg | 3 + ffmpeg/tests/ref/lavf/pam | 18 + ffmpeg/tests/ref/lavf/pbmpipe | 3 + ffmpeg/tests/ref/lavf/pcx | 3 + ffmpeg/tests/ref/lavf/pgm | 3 + ffmpeg/tests/ref/lavf/pgmpipe | 3 + ffmpeg/tests/ref/lavf/pixfmt | 38 + ffmpeg/tests/ref/lavf/png | 9 + ffmpeg/tests/ref/lavf/ppm | 3 + ffmpeg/tests/ref/lavf/ppmpipe | 3 + ffmpeg/tests/ref/lavf/rm | 2 + ffmpeg/tests/ref/lavf/rso | 3 + ffmpeg/tests/ref/lavf/sgi | 3 + ffmpeg/tests/ref/lavf/smjpeg | 3 + ffmpeg/tests/ref/lavf/sox | 3 + ffmpeg/tests/ref/lavf/sunrast | 3 + ffmpeg/tests/ref/lavf/swf | 3 + ffmpeg/tests/ref/lavf/tga | 3 + ffmpeg/tests/ref/lavf/tiff | 3 + ffmpeg/tests/ref/lavf/ts | 3 + ffmpeg/tests/ref/lavf/voc | 3 + ffmpeg/tests/ref/lavf/voc_s16 | 3 + ffmpeg/tests/ref/lavf/w64 | 3 + ffmpeg/tests/ref/lavf/wav | 3 + ffmpeg/tests/ref/lavf/wav_peak | 3 + ffmpeg/tests/ref/lavf/wav_peak_only | 2 + ffmpeg/tests/ref/lavf/wtv | 3 + ffmpeg/tests/ref/lavf/xbm | 3 + ffmpeg/tests/ref/lavf/xwd | 24 + ffmpeg/tests/ref/lavf/yuv4mpeg | 2 + ffmpeg/tests/ref/seek/acodec-adpcm-ima_qt | 53 + .../ref/seek/acodec-adpcm-ima_qt-trellis | 53 + ffmpeg/tests/ref/seek/acodec-adpcm-ima_wav | 53 + .../ref/seek/acodec-adpcm-ima_wav-trellis | 53 + ffmpeg/tests/ref/seek/acodec-adpcm-ms | 53 + ffmpeg/tests/ref/seek/acodec-adpcm-ms-trellis | 53 + ffmpeg/tests/ref/seek/acodec-adpcm-swf | 49 + .../tests/ref/seek/acodec-adpcm-swf-trellis | 49 + ffmpeg/tests/ref/seek/acodec-adpcm-yamaha | 53 + .../ref/seek/acodec-adpcm-yamaha-trellis | 53 + ffmpeg/tests/ref/seek/acodec-alac | 53 + ffmpeg/tests/ref/seek/acodec-flac | 53 + ffmpeg/tests/ref/seek/acodec-mp2 | 49 + ffmpeg/tests/ref/seek/acodec-pcm-alaw | 53 + ffmpeg/tests/ref/seek/acodec-pcm-f32be | 53 + ffmpeg/tests/ref/seek/acodec-pcm-f32le | 53 + ffmpeg/tests/ref/seek/acodec-pcm-f64be | 53 + ffmpeg/tests/ref/seek/acodec-pcm-f64le | 53 + ffmpeg/tests/ref/seek/acodec-pcm-mulaw | 53 + ffmpeg/tests/ref/seek/acodec-pcm-s16be | 53 + ffmpeg/tests/ref/seek/acodec-pcm-s16le | 53 + ffmpeg/tests/ref/seek/acodec-pcm-s24be | 53 + ffmpeg/tests/ref/seek/acodec-pcm-s24le | 53 + ffmpeg/tests/ref/seek/acodec-pcm-s32be | 53 + ffmpeg/tests/ref/seek/acodec-pcm-s32le | 53 + ffmpeg/tests/ref/seek/acodec-pcm-s8 | 53 + ffmpeg/tests/ref/seek/acodec-pcm-u8 | 53 + ffmpeg/tests/ref/seek/lavf-aiff | 53 + ffmpeg/tests/ref/seek/lavf-alaw | 53 + ffmpeg/tests/ref/seek/lavf-asf | 53 + ffmpeg/tests/ref/seek/lavf-au | 53 + ffmpeg/tests/ref/seek/lavf-avi | 44 + ffmpeg/tests/ref/seek/lavf-bmp | 30 + ffmpeg/tests/ref/seek/lavf-dv_fmt | 53 + ffmpeg/tests/ref/seek/lavf-ffm | 53 + ffmpeg/tests/ref/seek/lavf-flv_fmt | 44 + ffmpeg/tests/ref/seek/lavf-gif | 40 + ffmpeg/tests/ref/seek/lavf-gxf | 53 + ffmpeg/tests/ref/seek/lavf-jpg | 30 + ffmpeg/tests/ref/seek/lavf-mkv | 48 + ffmpeg/tests/ref/seek/lavf-mmf | 44 + ffmpeg/tests/ref/seek/lavf-mov | 48 + ffmpeg/tests/ref/seek/lavf-mpg | 53 + ffmpeg/tests/ref/seek/lavf-mulaw | 53 + ffmpeg/tests/ref/seek/lavf-mxf | 48 + ffmpeg/tests/ref/seek/lavf-mxf_d10 | 53 + ffmpeg/tests/ref/seek/lavf-nut | 53 + ffmpeg/tests/ref/seek/lavf-ogg | 53 + ffmpeg/tests/ref/seek/lavf-pbmpipe | 27 + ffmpeg/tests/ref/seek/lavf-pcx | 30 + ffmpeg/tests/ref/seek/lavf-pgm | 30 + ffmpeg/tests/ref/seek/lavf-pgmpipe | 27 + ffmpeg/tests/ref/seek/lavf-ppm | 30 + ffmpeg/tests/ref/seek/lavf-ppmpipe | 27 + ffmpeg/tests/ref/seek/lavf-rm | 53 + ffmpeg/tests/ref/seek/lavf-sgi | 30 + ffmpeg/tests/ref/seek/lavf-swf | 27 + ffmpeg/tests/ref/seek/lavf-tga | 30 + ffmpeg/tests/ref/seek/lavf-tiff | 30 + ffmpeg/tests/ref/seek/lavf-ts | 53 + ffmpeg/tests/ref/seek/lavf-voc | 27 + ffmpeg/tests/ref/seek/lavf-wav | 53 + ffmpeg/tests/ref/seek/lavf-wtv | 48 + ffmpeg/tests/ref/seek/lavf-yuv4mpeg | 27 + ffmpeg/tests/ref/seek/vsynth2-asv1 | 46 + ffmpeg/tests/ref/seek/vsynth2-asv2 | 46 + ffmpeg/tests/ref/seek/vsynth2-dnxhd-1080i | 44 + ffmpeg/tests/ref/seek/vsynth2-dnxhd-720p | 40 + ffmpeg/tests/ref/seek/vsynth2-dnxhd-720p-rd | 40 + ffmpeg/tests/ref/seek/vsynth2-dv | 53 + ffmpeg/tests/ref/seek/vsynth2-dv-411 | 53 + ffmpeg/tests/ref/seek/vsynth2-dv-50 | 53 + ffmpeg/tests/ref/seek/vsynth2-ffv1 | 46 + ffmpeg/tests/ref/seek/vsynth2-flashsv | 46 + ffmpeg/tests/ref/seek/vsynth2-flv | 46 + ffmpeg/tests/ref/seek/vsynth2-h261 | 46 + ffmpeg/tests/ref/seek/vsynth2-h263 | 46 + ffmpeg/tests/ref/seek/vsynth2-h263p | 46 + ffmpeg/tests/ref/seek/vsynth2-huffyuv | 46 + ffmpeg/tests/ref/seek/vsynth2-jpegls | 46 + ffmpeg/tests/ref/seek/vsynth2-ljpeg | 46 + ffmpeg/tests/ref/seek/vsynth2-mjpeg | 46 + ffmpeg/tests/ref/seek/vsynth2-mpeg1 | 46 + ffmpeg/tests/ref/seek/vsynth2-mpeg1b | 46 + ffmpeg/tests/ref/seek/vsynth2-mpeg2-422 | 46 + ffmpeg/tests/ref/seek/vsynth2-mpeg2-idct-int | 46 + ffmpeg/tests/ref/seek/vsynth2-mpeg2-ilace | 46 + ffmpeg/tests/ref/seek/vsynth2-mpeg2-ivlc-qprd | 46 + ffmpeg/tests/ref/seek/vsynth2-mpeg2-thread | 46 + .../tests/ref/seek/vsynth2-mpeg2-thread-ivlc | 46 + ffmpeg/tests/ref/seek/vsynth2-mpeg4 | 50 + ffmpeg/tests/ref/seek/vsynth2-mpeg4-adap | 46 + ffmpeg/tests/ref/seek/vsynth2-mpeg4-adv | 46 + ffmpeg/tests/ref/seek/vsynth2-mpeg4-error | 46 + ffmpeg/tests/ref/seek/vsynth2-mpeg4-nr | 46 + ffmpeg/tests/ref/seek/vsynth2-mpeg4-nsse | 46 + ffmpeg/tests/ref/seek/vsynth2-mpeg4-qpel | 46 + ffmpeg/tests/ref/seek/vsynth2-mpeg4-qprd | 46 + ffmpeg/tests/ref/seek/vsynth2-mpeg4-rc | 46 + ffmpeg/tests/ref/seek/vsynth2-mpeg4-thread | 46 + ffmpeg/tests/ref/seek/vsynth2-msmpeg4 | 46 + ffmpeg/tests/ref/seek/vsynth2-msmpeg4v2 | 46 + ffmpeg/tests/ref/seek/vsynth2-rgb | 46 + ffmpeg/tests/ref/seek/vsynth2-roqvideo | 27 + ffmpeg/tests/ref/seek/vsynth2-rv10 | 52 + ffmpeg/tests/ref/seek/vsynth2-rv20 | 53 + ffmpeg/tests/ref/seek/vsynth2-snow | 46 + ffmpeg/tests/ref/seek/vsynth2-snow-ll | 46 + ffmpeg/tests/ref/seek/vsynth2-svq1 | 50 + ffmpeg/tests/ref/seek/vsynth2-wmv1 | 46 + ffmpeg/tests/ref/seek/vsynth2-wmv2 | 46 + ffmpeg/tests/ref/seek/vsynth2-yuv | 46 + ffmpeg/tests/ref/vsynth/vsynth1-amv | 4 + ffmpeg/tests/ref/vsynth/vsynth1-asv1 | 4 + ffmpeg/tests/ref/vsynth/vsynth1-asv2 | 4 + ffmpeg/tests/ref/vsynth/vsynth1-avui | 4 + ffmpeg/tests/ref/vsynth/vsynth1-cljr | 4 + ffmpeg/tests/ref/vsynth/vsynth1-dnxhd-1080i | 4 + ffmpeg/tests/ref/vsynth/vsynth1-dnxhd-720p | 4 + .../tests/ref/vsynth/vsynth1-dnxhd-720p-10bit | 4 + ffmpeg/tests/ref/vsynth/vsynth1-dnxhd-720p-rd | 4 + ffmpeg/tests/ref/vsynth/vsynth1-dnxhd_1080i | 4 + ffmpeg/tests/ref/vsynth/vsynth1-dv | 4 + ffmpeg/tests/ref/vsynth/vsynth1-dv-411 | 4 + ffmpeg/tests/ref/vsynth/vsynth1-dv-50 | 4 + ffmpeg/tests/ref/vsynth/vsynth1-dv_411 | 4 + ffmpeg/tests/ref/vsynth/vsynth1-ffv1 | 4 + ffmpeg/tests/ref/vsynth/vsynth1-ffv1.0 | 4 + ffmpeg/tests/ref/vsynth/vsynth1-ffvhuff | 4 + ffmpeg/tests/ref/vsynth/vsynth1-ffvhuff420p12 | 4 + .../ref/vsynth/vsynth1-ffvhuff422p10left | 4 + ffmpeg/tests/ref/vsynth/vsynth1-ffvhuff444 | 4 + ffmpeg/tests/ref/vsynth/vsynth1-ffvhuff444p16 | 4 + ffmpeg/tests/ref/vsynth/vsynth1-flashsv | 4 + ffmpeg/tests/ref/vsynth/vsynth1-flashsv2 | 4 + ffmpeg/tests/ref/vsynth/vsynth1-flv | 4 + ffmpeg/tests/ref/vsynth/vsynth1-h261 | 4 + ffmpeg/tests/ref/vsynth/vsynth1-h261-trellis | 4 + ffmpeg/tests/ref/vsynth/vsynth1-h263 | 4 + ffmpeg/tests/ref/vsynth/vsynth1-h263-obmc | 4 + ffmpeg/tests/ref/vsynth/vsynth1-h263p | 4 + ffmpeg/tests/ref/vsynth/vsynth1-huffyuv | 4 + ffmpeg/tests/ref/vsynth/vsynth1-huffyuvbgr24 | 4 + ffmpeg/tests/ref/vsynth/vsynth1-huffyuvbgra | 4 + ffmpeg/tests/ref/vsynth/vsynth1-jpeg2000 | 4 + ffmpeg/tests/ref/vsynth/vsynth1-jpeg2000-97 | 4 + ffmpeg/tests/ref/vsynth/vsynth1-jpegls | 4 + ffmpeg/tests/ref/vsynth/vsynth1-ljpeg | 4 + ffmpeg/tests/ref/vsynth/vsynth1-mjpeg | 4 + ffmpeg/tests/ref/vsynth/vsynth1-mjpeg-422 | 4 + ffmpeg/tests/ref/vsynth/vsynth1-mjpeg-444 | 4 + ffmpeg/tests/ref/vsynth/vsynth1-mpeg1 | 4 + ffmpeg/tests/ref/vsynth/vsynth1-mpeg1b | 4 + ffmpeg/tests/ref/vsynth/vsynth1-mpeg2 | 4 + ffmpeg/tests/ref/vsynth/vsynth1-mpeg2-422 | 4 + .../tests/ref/vsynth/vsynth1-mpeg2-idct-int | 4 + ffmpeg/tests/ref/vsynth/vsynth1-mpeg2-ilace | 4 + .../tests/ref/vsynth/vsynth1-mpeg2-ivlc-qprd | 4 + ffmpeg/tests/ref/vsynth/vsynth1-mpeg2-thread | 4 + .../ref/vsynth/vsynth1-mpeg2-thread-ivlc | 4 + ffmpeg/tests/ref/vsynth/vsynth1-mpeg4 | 4 + ffmpeg/tests/ref/vsynth/vsynth1-mpeg4-adap | 4 + ffmpeg/tests/ref/vsynth/vsynth1-mpeg4-adv | 4 + ffmpeg/tests/ref/vsynth/vsynth1-mpeg4-error | 4 + ffmpeg/tests/ref/vsynth/vsynth1-mpeg4-nr | 4 + ffmpeg/tests/ref/vsynth/vsynth1-mpeg4-nsse | 4 + ffmpeg/tests/ref/vsynth/vsynth1-mpeg4-qpel | 4 + ffmpeg/tests/ref/vsynth/vsynth1-mpeg4-qprd | 4 + ffmpeg/tests/ref/vsynth/vsynth1-mpeg4-rc | 4 + ffmpeg/tests/ref/vsynth/vsynth1-mpeg4-thread | 4 + ffmpeg/tests/ref/vsynth/vsynth1-mpng | 4 + ffmpeg/tests/ref/vsynth/vsynth1-msmpeg4 | 4 + ffmpeg/tests/ref/vsynth/vsynth1-msmpeg4v2 | 4 + ffmpeg/tests/ref/vsynth/vsynth1-msvideo1 | 4 + ffmpeg/tests/ref/vsynth/vsynth1-prores | 4 + ffmpeg/tests/ref/vsynth/vsynth1-prores_ks | 4 + ffmpeg/tests/ref/vsynth/vsynth1-qtrle | 4 + ffmpeg/tests/ref/vsynth/vsynth1-qtrlegray | 4 + ffmpeg/tests/ref/vsynth/vsynth1-r210 | 4 + ffmpeg/tests/ref/vsynth/vsynth1-rgb | 4 + ffmpeg/tests/ref/vsynth/vsynth1-roqvideo | 4 + ffmpeg/tests/ref/vsynth/vsynth1-rv10 | 4 + ffmpeg/tests/ref/vsynth/vsynth1-rv20 | 4 + ffmpeg/tests/ref/vsynth/vsynth1-snow | 4 + ffmpeg/tests/ref/vsynth/vsynth1-snow-hpel | 4 + ffmpeg/tests/ref/vsynth/vsynth1-snow-ll | 4 + ffmpeg/tests/ref/vsynth/vsynth1-svq1 | 4 + ffmpeg/tests/ref/vsynth/vsynth1-v210 | 4 + ffmpeg/tests/ref/vsynth/vsynth1-v308 | 4 + ffmpeg/tests/ref/vsynth/vsynth1-v408 | 4 + ffmpeg/tests/ref/vsynth/vsynth1-wmv1 | 4 + ffmpeg/tests/ref/vsynth/vsynth1-wmv2 | 4 + ffmpeg/tests/ref/vsynth/vsynth1-y41p | 4 + ffmpeg/tests/ref/vsynth/vsynth1-yuv | 4 + ffmpeg/tests/ref/vsynth/vsynth1-yuv4 | 4 + ffmpeg/tests/ref/vsynth/vsynth1-zlib | 4 + ffmpeg/tests/ref/vsynth/vsynth1-zmbv | 4 + ffmpeg/tests/ref/vsynth/vsynth2-amv | 4 + ffmpeg/tests/ref/vsynth/vsynth2-asv1 | 4 + ffmpeg/tests/ref/vsynth/vsynth2-asv2 | 4 + ffmpeg/tests/ref/vsynth/vsynth2-avui | 4 + ffmpeg/tests/ref/vsynth/vsynth2-cljr | 4 + ffmpeg/tests/ref/vsynth/vsynth2-dnxhd-1080i | 4 + ffmpeg/tests/ref/vsynth/vsynth2-dnxhd-720p | 4 + .../tests/ref/vsynth/vsynth2-dnxhd-720p-10bit | 4 + ffmpeg/tests/ref/vsynth/vsynth2-dnxhd-720p-rd | 4 + ffmpeg/tests/ref/vsynth/vsynth2-dnxhd_1080i | 4 + ffmpeg/tests/ref/vsynth/vsynth2-dv | 4 + ffmpeg/tests/ref/vsynth/vsynth2-dv-411 | 4 + ffmpeg/tests/ref/vsynth/vsynth2-dv-50 | 4 + ffmpeg/tests/ref/vsynth/vsynth2-dv_411 | 4 + ffmpeg/tests/ref/vsynth/vsynth2-ffv1 | 4 + ffmpeg/tests/ref/vsynth/vsynth2-ffv1.0 | 4 + ffmpeg/tests/ref/vsynth/vsynth2-ffvhuff | 4 + ffmpeg/tests/ref/vsynth/vsynth2-ffvhuff420p12 | 4 + .../ref/vsynth/vsynth2-ffvhuff422p10left | 4 + ffmpeg/tests/ref/vsynth/vsynth2-ffvhuff444 | 4 + ffmpeg/tests/ref/vsynth/vsynth2-ffvhuff444p16 | 4 + ffmpeg/tests/ref/vsynth/vsynth2-flashsv | 4 + ffmpeg/tests/ref/vsynth/vsynth2-flashsv2 | 4 + ffmpeg/tests/ref/vsynth/vsynth2-flv | 4 + ffmpeg/tests/ref/vsynth/vsynth2-h261 | 4 + ffmpeg/tests/ref/vsynth/vsynth2-h261-trellis | 4 + ffmpeg/tests/ref/vsynth/vsynth2-h263 | 4 + ffmpeg/tests/ref/vsynth/vsynth2-h263-obmc | 4 + ffmpeg/tests/ref/vsynth/vsynth2-h263p | 4 + ffmpeg/tests/ref/vsynth/vsynth2-huffyuv | 4 + ffmpeg/tests/ref/vsynth/vsynth2-huffyuvbgr24 | 4 + ffmpeg/tests/ref/vsynth/vsynth2-huffyuvbgra | 4 + ffmpeg/tests/ref/vsynth/vsynth2-jpeg2000 | 4 + ffmpeg/tests/ref/vsynth/vsynth2-jpeg2000-97 | 4 + ffmpeg/tests/ref/vsynth/vsynth2-jpegls | 4 + ffmpeg/tests/ref/vsynth/vsynth2-ljpeg | 4 + ffmpeg/tests/ref/vsynth/vsynth2-mjpeg | 4 + ffmpeg/tests/ref/vsynth/vsynth2-mjpeg-422 | 4 + ffmpeg/tests/ref/vsynth/vsynth2-mjpeg-444 | 4 + ffmpeg/tests/ref/vsynth/vsynth2-mpeg1 | 4 + ffmpeg/tests/ref/vsynth/vsynth2-mpeg1b | 4 + ffmpeg/tests/ref/vsynth/vsynth2-mpeg2 | 4 + ffmpeg/tests/ref/vsynth/vsynth2-mpeg2-422 | 4 + .../tests/ref/vsynth/vsynth2-mpeg2-idct-int | 4 + ffmpeg/tests/ref/vsynth/vsynth2-mpeg2-ilace | 4 + .../tests/ref/vsynth/vsynth2-mpeg2-ivlc-qprd | 4 + ffmpeg/tests/ref/vsynth/vsynth2-mpeg2-thread | 4 + .../ref/vsynth/vsynth2-mpeg2-thread-ivlc | 4 + ffmpeg/tests/ref/vsynth/vsynth2-mpeg4 | 4 + ffmpeg/tests/ref/vsynth/vsynth2-mpeg4-adap | 4 + ffmpeg/tests/ref/vsynth/vsynth2-mpeg4-adv | 4 + ffmpeg/tests/ref/vsynth/vsynth2-mpeg4-error | 4 + ffmpeg/tests/ref/vsynth/vsynth2-mpeg4-nr | 4 + ffmpeg/tests/ref/vsynth/vsynth2-mpeg4-nsse | 4 + ffmpeg/tests/ref/vsynth/vsynth2-mpeg4-qpel | 4 + ffmpeg/tests/ref/vsynth/vsynth2-mpeg4-qprd | 4 + ffmpeg/tests/ref/vsynth/vsynth2-mpeg4-rc | 4 + ffmpeg/tests/ref/vsynth/vsynth2-mpeg4-thread | 4 + ffmpeg/tests/ref/vsynth/vsynth2-mpng | 4 + ffmpeg/tests/ref/vsynth/vsynth2-msmpeg4 | 4 + ffmpeg/tests/ref/vsynth/vsynth2-msmpeg4v2 | 4 + ffmpeg/tests/ref/vsynth/vsynth2-msvideo1 | 4 + ffmpeg/tests/ref/vsynth/vsynth2-prores | 4 + ffmpeg/tests/ref/vsynth/vsynth2-prores_ks | 4 + ffmpeg/tests/ref/vsynth/vsynth2-qtrle | 4 + ffmpeg/tests/ref/vsynth/vsynth2-qtrlegray | 4 + ffmpeg/tests/ref/vsynth/vsynth2-r210 | 4 + ffmpeg/tests/ref/vsynth/vsynth2-rgb | 4 + ffmpeg/tests/ref/vsynth/vsynth2-roqvideo | 4 + ffmpeg/tests/ref/vsynth/vsynth2-rv10 | 4 + ffmpeg/tests/ref/vsynth/vsynth2-rv20 | 4 + ffmpeg/tests/ref/vsynth/vsynth2-snow | 4 + ffmpeg/tests/ref/vsynth/vsynth2-snow-hpel | 4 + ffmpeg/tests/ref/vsynth/vsynth2-snow-ll | 4 + ffmpeg/tests/ref/vsynth/vsynth2-svq1 | 4 + ffmpeg/tests/ref/vsynth/vsynth2-v210 | 4 + ffmpeg/tests/ref/vsynth/vsynth2-v308 | 4 + ffmpeg/tests/ref/vsynth/vsynth2-v408 | 4 + ffmpeg/tests/ref/vsynth/vsynth2-wmv1 | 4 + ffmpeg/tests/ref/vsynth/vsynth2-wmv2 | 4 + ffmpeg/tests/ref/vsynth/vsynth2-y41p | 4 + ffmpeg/tests/ref/vsynth/vsynth2-yuv | 4 + ffmpeg/tests/ref/vsynth/vsynth2-yuv4 | 4 + ffmpeg/tests/ref/vsynth/vsynth2-zlib | 4 + ffmpeg/tests/ref/vsynth/vsynth2-zmbv | 4 + ffmpeg/tests/ref/vsynth/vsynth3-amv | 4 + ffmpeg/tests/ref/vsynth/vsynth3-asv1 | 4 + ffmpeg/tests/ref/vsynth/vsynth3-asv2 | 4 + ffmpeg/tests/ref/vsynth/vsynth3-cljr | 4 + ffmpeg/tests/ref/vsynth/vsynth3-ffv1 | 4 + ffmpeg/tests/ref/vsynth/vsynth3-ffv1.0 | 4 + ffmpeg/tests/ref/vsynth/vsynth3-ffvhuff | 4 + ffmpeg/tests/ref/vsynth/vsynth3-ffvhuff420p12 | 4 + .../ref/vsynth/vsynth3-ffvhuff422p10left | 4 + ffmpeg/tests/ref/vsynth/vsynth3-ffvhuff444 | 4 + ffmpeg/tests/ref/vsynth/vsynth3-ffvhuff444p16 | 4 + ffmpeg/tests/ref/vsynth/vsynth3-flashsv | 4 + ffmpeg/tests/ref/vsynth/vsynth3-flashsv2 | 4 + ffmpeg/tests/ref/vsynth/vsynth3-flv | 4 + ffmpeg/tests/ref/vsynth/vsynth3-huffyuv | 4 + ffmpeg/tests/ref/vsynth/vsynth3-huffyuvbgr24 | 4 + ffmpeg/tests/ref/vsynth/vsynth3-huffyuvbgra | 4 + ffmpeg/tests/ref/vsynth/vsynth3-jpeg2000 | 4 + ffmpeg/tests/ref/vsynth/vsynth3-jpeg2000-97 | 4 + ffmpeg/tests/ref/vsynth/vsynth3-jpegls | 4 + ffmpeg/tests/ref/vsynth/vsynth3-ljpeg | 4 + ffmpeg/tests/ref/vsynth/vsynth3-mjpeg | 4 + ffmpeg/tests/ref/vsynth/vsynth3-mjpeg-422 | 4 + ffmpeg/tests/ref/vsynth/vsynth3-mjpeg-444 | 4 + ffmpeg/tests/ref/vsynth/vsynth3-mpeg1 | 4 + ffmpeg/tests/ref/vsynth/vsynth3-mpeg1b | 4 + ffmpeg/tests/ref/vsynth/vsynth3-mpeg2 | 4 + ffmpeg/tests/ref/vsynth/vsynth3-mpeg2-422 | 4 + .../tests/ref/vsynth/vsynth3-mpeg2-idct-int | 4 + ffmpeg/tests/ref/vsynth/vsynth3-mpeg2-ilace | 4 + .../tests/ref/vsynth/vsynth3-mpeg2-ivlc-qprd | 4 + ffmpeg/tests/ref/vsynth/vsynth3-mpeg2-thread | 4 + .../ref/vsynth/vsynth3-mpeg2-thread-ivlc | 4 + ffmpeg/tests/ref/vsynth/vsynth3-mpeg4 | 4 + ffmpeg/tests/ref/vsynth/vsynth3-mpeg4-adap | 4 + ffmpeg/tests/ref/vsynth/vsynth3-mpeg4-adv | 4 + ffmpeg/tests/ref/vsynth/vsynth3-mpeg4-error | 4 + ffmpeg/tests/ref/vsynth/vsynth3-mpeg4-nr | 4 + ffmpeg/tests/ref/vsynth/vsynth3-mpeg4-nsse | 4 + ffmpeg/tests/ref/vsynth/vsynth3-mpeg4-qpel | 4 + ffmpeg/tests/ref/vsynth/vsynth3-mpeg4-qprd | 4 + ffmpeg/tests/ref/vsynth/vsynth3-mpeg4-rc | 4 + ffmpeg/tests/ref/vsynth/vsynth3-mpeg4-thread | 4 + ffmpeg/tests/ref/vsynth/vsynth3-mpng | 4 + ffmpeg/tests/ref/vsynth/vsynth3-msmpeg4 | 4 + ffmpeg/tests/ref/vsynth/vsynth3-msmpeg4v2 | 4 + ffmpeg/tests/ref/vsynth/vsynth3-prores | 4 + ffmpeg/tests/ref/vsynth/vsynth3-prores_ks | 4 + ffmpeg/tests/ref/vsynth/vsynth3-qtrle | 4 + ffmpeg/tests/ref/vsynth/vsynth3-r210 | 4 + ffmpeg/tests/ref/vsynth/vsynth3-rgb | 4 + ffmpeg/tests/ref/vsynth/vsynth3-svq1 | 4 + ffmpeg/tests/ref/vsynth/vsynth3-v210 | 4 + ffmpeg/tests/ref/vsynth/vsynth3-v308 | 4 + ffmpeg/tests/ref/vsynth/vsynth3-v408 | 4 + ffmpeg/tests/ref/vsynth/vsynth3-wmv1 | 4 + ffmpeg/tests/ref/vsynth/vsynth3-wmv2 | 4 + ffmpeg/tests/ref/vsynth/vsynth3-yuv | 4 + ffmpeg/tests/ref/vsynth/vsynth3-yuv4 | 4 + ffmpeg/tests/ref/vsynth/vsynth3-zlib | 4 + ffmpeg/tests/ref/vsynth1/cljr | 4 + ffmpeg/tests/ref/vsynth1/yuv | 4 + ffmpeg/tests/ref/vsynth2/cljr | 4 + ffmpeg/tests/ref/vsynth2/huffyuv | 4 + ffmpeg/tests/ref/vsynth2/yuv | 4 + ffmpeg/tests/regression-funcs.sh | 88 + ffmpeg/tests/rotozoom.c | 195 + ffmpeg/tests/test.ffmeta | 9 + ffmpeg/tests/tiny_psnr.c | 319 + ffmpeg/tests/tiny_ssim.c | 246 + ffmpeg/tests/utils.c | 172 + ffmpeg/tests/videogen.c | 193 + ffmpeg/tools/aviocat.c | 108 + ffmpeg/tools/bisect-create | 46 + ffmpeg/tools/bookmarklets.html | 55 + ffmpeg/tools/build_libstagefright | 58 + ffmpeg/tools/clean-diff | 11 + ffmpeg/tools/crypto_bench.c | 362 + ffmpeg/tools/cws2fws.c | 145 + ffmpeg/tools/dvd2concat | 127 + ffmpeg/tools/enum_options.c | 143 + ffmpeg/tools/ffescape.c | 180 + ffmpeg/tools/ffeval.c | 139 + ffmpeg/tools/ffhash.c | 151 + ffmpeg/tools/fourcc2pixfmt.c | 124 + ffmpeg/tools/gen-rc | 121 + ffmpeg/tools/graph2dot.c | 193 + ffmpeg/tools/ismindex.c | 702 + ffmpeg/tools/make_chlayout_test | 114 + ffmpeg/tools/missing_codec_desc | 36 + ffmpeg/tools/normalize.py | 33 + ffmpeg/tools/patcheck | 181 + ffmpeg/tools/pktdumper.c | 137 + ffmpeg/tools/plotframes | 164 + ffmpeg/tools/probetest.c | 178 + ffmpeg/tools/qt-faststart.c | 365 + ffmpeg/tools/seek_print.c | 105 + ffmpeg/tools/trasher.c | 81 + ffmpeg/tools/uncoded_frame.c | 279 + ffmpeg/tools/unwrap-diff | 2 + ffmpeg/tools/yuvcmp.c | 184 + ffmpeg/tools/zmqsend.c | 167 + ffmpeg/tools/zmqshell.py | 26 + ffmpeg/version.sh | 62 + scripts/ffmpeg-config | 18 + 4714 files changed, 1111297 insertions(+) create mode 100644 Makefile create mode 100644 debian/changelog create mode 100644 debian/compat create mode 100644 debian/control create mode 100644 debian/copyright create mode 100644 debian/ffmpeg.links create mode 100755 debian/rules create mode 100644 debian/source/format create mode 100644 debian/source/lintian-overrides create mode 100644 debian/source/options create mode 100644 ffmpeg/COPYING.GPLv2 create mode 100644 ffmpeg/COPYING.GPLv3 create mode 100644 ffmpeg/COPYING.LGPLv2.1 create mode 100644 ffmpeg/COPYING.LGPLv3 create mode 100644 ffmpeg/CREDITS create mode 100644 ffmpeg/Changelog create mode 100644 ffmpeg/INSTALL.md create mode 100644 ffmpeg/LICENSE.md create mode 100644 ffmpeg/MAINTAINERS create mode 100644 ffmpeg/Makefile create mode 100644 ffmpeg/README.md create mode 100644 ffmpeg/RELEASE create mode 100644 ffmpeg/RELEASE_NOTES create mode 100644 ffmpeg/VERSION create mode 100644 ffmpeg/arch.mak create mode 100644 ffmpeg/cmdutils.c create mode 100644 ffmpeg/cmdutils.h create mode 100644 ffmpeg/cmdutils_common_opts.h create mode 100644 ffmpeg/cmdutils_opencl.c create mode 100644 ffmpeg/common.mak create mode 100644 ffmpeg/compat/aix/math.h create mode 100644 ffmpeg/compat/avisynth/avisynth_c.h create mode 100644 ffmpeg/compat/avisynth/avisynth_c_25.h create mode 100644 ffmpeg/compat/avisynth/avxsynth_c.h create mode 100644 ffmpeg/compat/avisynth/windowsPorts/basicDataTypeConversions.h create mode 100644 ffmpeg/compat/avisynth/windowsPorts/windows2linux.h create mode 100644 ffmpeg/compat/float/float.h create mode 100644 ffmpeg/compat/float/limits.h create mode 100644 ffmpeg/compat/getopt.c create mode 100644 ffmpeg/compat/msvcrt/snprintf.c create mode 100644 ffmpeg/compat/msvcrt/snprintf.h create mode 100644 ffmpeg/compat/os2threads.h create mode 100755 ffmpeg/compat/plan9/head create mode 100644 ffmpeg/compat/plan9/main.c create mode 100755 ffmpeg/compat/plan9/printf create mode 100644 ffmpeg/compat/strtod.c create mode 100644 ffmpeg/compat/tms470/math.h create mode 100644 ffmpeg/compat/va_copy.h create mode 100644 ffmpeg/compat/w32pthreads.h create mode 100755 ffmpeg/compat/windows/makedef create mode 100755 ffmpeg/configure create mode 100644 ffmpeg/doc/APIchanges create mode 100644 ffmpeg/doc/Doxyfile create mode 100644 ffmpeg/doc/Makefile create mode 100644 ffmpeg/doc/authors.texi create mode 100644 ffmpeg/doc/bitstream_filters.texi create mode 100644 ffmpeg/doc/bootstrap.min.css create mode 100644 ffmpeg/doc/build_system.txt create mode 100644 ffmpeg/doc/codecs.texi create mode 100644 ffmpeg/doc/decoders.texi create mode 100644 ffmpeg/doc/default.css create mode 100644 ffmpeg/doc/demuxers.texi create mode 100644 ffmpeg/doc/developer.texi create mode 100644 ffmpeg/doc/devices.texi create mode 100755 ffmpeg/doc/doxy-wrapper.sh create mode 100644 ffmpeg/doc/encoders.texi create mode 100644 ffmpeg/doc/errno.txt create mode 100644 ffmpeg/doc/examples/Makefile create mode 100644 ffmpeg/doc/examples/README create mode 100644 ffmpeg/doc/examples/avio_reading.c create mode 100644 ffmpeg/doc/examples/decoding_encoding.c create mode 100644 ffmpeg/doc/examples/demuxing_decoding.c create mode 100644 ffmpeg/doc/examples/extract_mvs.c create mode 100644 ffmpeg/doc/examples/filter_audio.c create mode 100644 ffmpeg/doc/examples/filtering_audio.c create mode 100644 ffmpeg/doc/examples/filtering_video.c create mode 100644 ffmpeg/doc/examples/metadata.c create mode 100644 ffmpeg/doc/examples/muxing.c create mode 100644 ffmpeg/doc/examples/remuxing.c create mode 100644 ffmpeg/doc/examples/resampling_audio.c create mode 100644 ffmpeg/doc/examples/scaling_video.c create mode 100644 ffmpeg/doc/examples/transcode_aac.c create mode 100644 ffmpeg/doc/examples/transcoding.c create mode 100644 ffmpeg/doc/faq.texi create mode 100644 ffmpeg/doc/fate.texi create mode 100644 ffmpeg/doc/fate_config.sh.template create mode 100644 ffmpeg/doc/ffmpeg-bitstream-filters.texi create mode 100644 ffmpeg/doc/ffmpeg-codecs.texi create mode 100644 ffmpeg/doc/ffmpeg-devices.texi create mode 100644 ffmpeg/doc/ffmpeg-filters.texi create mode 100644 ffmpeg/doc/ffmpeg-formats.texi create mode 100644 ffmpeg/doc/ffmpeg-protocols.texi create mode 100644 ffmpeg/doc/ffmpeg-resampler.texi create mode 100644 ffmpeg/doc/ffmpeg-scaler.texi create mode 100644 ffmpeg/doc/ffmpeg-utils.texi create mode 100644 ffmpeg/doc/ffmpeg.texi create mode 100644 ffmpeg/doc/ffmpeg.txt create mode 100644 ffmpeg/doc/ffplay.texi create mode 100644 ffmpeg/doc/ffprobe.texi create mode 100644 ffmpeg/doc/ffprobe.xsd create mode 100644 ffmpeg/doc/ffserver.conf create mode 100644 ffmpeg/doc/ffserver.texi create mode 100644 ffmpeg/doc/fftools-common-opts.texi create mode 100644 ffmpeg/doc/filter_design.txt create mode 100644 ffmpeg/doc/filters.texi create mode 100644 ffmpeg/doc/formats.texi create mode 100644 ffmpeg/doc/general.texi create mode 100644 ffmpeg/doc/git-howto.texi create mode 100644 ffmpeg/doc/indevs.texi create mode 100644 ffmpeg/doc/issue_tracker.txt create mode 100644 ffmpeg/doc/libavcodec.texi create mode 100644 ffmpeg/doc/libavdevice.texi create mode 100644 ffmpeg/doc/libavfilter.texi create mode 100644 ffmpeg/doc/libavformat.texi create mode 100644 ffmpeg/doc/libavutil.texi create mode 100644 ffmpeg/doc/libswresample.texi create mode 100644 ffmpeg/doc/libswscale.texi create mode 100644 ffmpeg/doc/metadata.texi create mode 100644 ffmpeg/doc/mips.txt create mode 100644 ffmpeg/doc/multithreading.txt create mode 100644 ffmpeg/doc/muxers.texi create mode 100644 ffmpeg/doc/nut.texi create mode 100644 ffmpeg/doc/optimization.txt create mode 100644 ffmpeg/doc/outdevs.texi create mode 100644 ffmpeg/doc/platform.texi create mode 100644 ffmpeg/doc/print_options.c create mode 100644 ffmpeg/doc/protocols.texi create mode 100644 ffmpeg/doc/rate_distortion.txt create mode 100644 ffmpeg/doc/resampler.texi create mode 100644 ffmpeg/doc/scaler.texi create mode 100644 ffmpeg/doc/snow.txt create mode 100644 ffmpeg/doc/style.min.css create mode 100644 ffmpeg/doc/swresample.txt create mode 100644 ffmpeg/doc/swscale.txt create mode 100644 ffmpeg/doc/t2h.init create mode 100644 ffmpeg/doc/t2h.pm create mode 100644 ffmpeg/doc/tablegen.txt create mode 100644 ffmpeg/doc/texi2pod.pl create mode 100644 ffmpeg/doc/texidep.pl create mode 100644 ffmpeg/doc/utils.texi create mode 100644 ffmpeg/doc/writing_filters.txt create mode 100644 ffmpeg/ffmpeg.c create mode 100644 ffmpeg/ffmpeg.h create mode 100644 ffmpeg/ffmpeg_dxva2.c create mode 100644 ffmpeg/ffmpeg_filter.c create mode 100644 ffmpeg/ffmpeg_opt.c create mode 100644 ffmpeg/ffmpeg_vda.c create mode 100644 ffmpeg/ffmpeg_vdpau.c create mode 100644 ffmpeg/ffplay.c create mode 100644 ffmpeg/ffprobe.c create mode 100644 ffmpeg/ffserver.c create mode 100644 ffmpeg/libavcodec/012v.c create mode 100644 ffmpeg/libavcodec/4xm.c create mode 100644 ffmpeg/libavcodec/8bps.c create mode 100644 ffmpeg/libavcodec/8svx.c create mode 100644 ffmpeg/libavcodec/Makefile create mode 100644 ffmpeg/libavcodec/a64colors.h create mode 100644 ffmpeg/libavcodec/a64multienc.c create mode 100644 ffmpeg/libavcodec/a64tables.h create mode 100644 ffmpeg/libavcodec/aac.h create mode 100644 ffmpeg/libavcodec/aac_ac3_parser.c create mode 100644 ffmpeg/libavcodec/aac_ac3_parser.h create mode 100644 ffmpeg/libavcodec/aac_adtstoasc_bsf.c create mode 100644 ffmpeg/libavcodec/aac_parser.c create mode 100644 ffmpeg/libavcodec/aac_tablegen.c create mode 100644 ffmpeg/libavcodec/aac_tablegen.h create mode 100644 ffmpeg/libavcodec/aac_tablegen_decl.h create mode 100644 ffmpeg/libavcodec/aacadtsdec.c create mode 100644 ffmpeg/libavcodec/aacadtsdec.h create mode 100644 ffmpeg/libavcodec/aaccoder.c create mode 100644 ffmpeg/libavcodec/aacdec.c create mode 100644 ffmpeg/libavcodec/aacdectab.h create mode 100644 ffmpeg/libavcodec/aacenc.c create mode 100644 ffmpeg/libavcodec/aacenc.h create mode 100644 ffmpeg/libavcodec/aacps.c create mode 100644 ffmpeg/libavcodec/aacps.h create mode 100644 ffmpeg/libavcodec/aacps_tablegen.c create mode 100644 ffmpeg/libavcodec/aacps_tablegen.h create mode 100644 ffmpeg/libavcodec/aacpsdata.c create mode 100644 ffmpeg/libavcodec/aacpsdsp.c create mode 100644 ffmpeg/libavcodec/aacpsdsp.h create mode 100644 ffmpeg/libavcodec/aacpsy.c create mode 100644 ffmpeg/libavcodec/aacsbr.c create mode 100644 ffmpeg/libavcodec/aacsbr.h create mode 100644 ffmpeg/libavcodec/aacsbr_tablegen.c create mode 100644 ffmpeg/libavcodec/aacsbr_tablegen.h create mode 100644 ffmpeg/libavcodec/aacsbrdata.h create mode 100644 ffmpeg/libavcodec/aactab.c create mode 100644 ffmpeg/libavcodec/aactab.h create mode 100644 ffmpeg/libavcodec/aandcttab.c create mode 100644 ffmpeg/libavcodec/aandcttab.h create mode 100644 ffmpeg/libavcodec/aarch64/Makefile create mode 100644 ffmpeg/libavcodec/aarch64/asm-offsets.h create mode 100644 ffmpeg/libavcodec/aarch64/cabac.h create mode 100644 ffmpeg/libavcodec/aarch64/fft_init_aarch64.c create mode 100644 ffmpeg/libavcodec/aarch64/fft_neon.S create mode 100644 ffmpeg/libavcodec/aarch64/h264chroma_init_aarch64.c create mode 100644 ffmpeg/libavcodec/aarch64/h264cmc_neon.S create mode 100644 ffmpeg/libavcodec/aarch64/h264dsp_init_aarch64.c create mode 100644 ffmpeg/libavcodec/aarch64/h264dsp_neon.S create mode 100644 ffmpeg/libavcodec/aarch64/h264idct_neon.S create mode 100644 ffmpeg/libavcodec/aarch64/h264qpel_init_aarch64.c create mode 100644 ffmpeg/libavcodec/aarch64/h264qpel_neon.S create mode 100644 ffmpeg/libavcodec/aarch64/hpeldsp_init_aarch64.c create mode 100644 ffmpeg/libavcodec/aarch64/hpeldsp_neon.S create mode 100644 ffmpeg/libavcodec/aarch64/mdct_neon.S create mode 100644 ffmpeg/libavcodec/aarch64/mpegaudiodsp_init.c create mode 100644 ffmpeg/libavcodec/aarch64/mpegaudiodsp_neon.S create mode 100644 ffmpeg/libavcodec/aarch64/neon.S create mode 100644 ffmpeg/libavcodec/aarch64/neontest.c create mode 100644 ffmpeg/libavcodec/aarch64/opus_imdct_init.c create mode 100644 ffmpeg/libavcodec/aarch64/opus_imdct_neon.S create mode 100644 ffmpeg/libavcodec/aarch64/rv40dsp_init_aarch64.c create mode 100644 ffmpeg/libavcodec/aarch64/vc1dsp_init_aarch64.c create mode 100644 ffmpeg/libavcodec/aarch64/videodsp.S create mode 100644 ffmpeg/libavcodec/aarch64/videodsp_init.c create mode 100644 ffmpeg/libavcodec/aarch64/vorbisdsp_init.c create mode 100644 ffmpeg/libavcodec/aarch64/vorbisdsp_neon.S create mode 100644 ffmpeg/libavcodec/aasc.c create mode 100644 ffmpeg/libavcodec/ac3.c create mode 100644 ffmpeg/libavcodec/ac3.h create mode 100644 ffmpeg/libavcodec/ac3_parser.c create mode 100644 ffmpeg/libavcodec/ac3_parser.h create mode 100644 ffmpeg/libavcodec/ac3dec.c create mode 100644 ffmpeg/libavcodec/ac3dec.h create mode 100644 ffmpeg/libavcodec/ac3dec_data.c create mode 100644 ffmpeg/libavcodec/ac3dec_data.h create mode 100644 ffmpeg/libavcodec/ac3dec_fixed.c create mode 100644 ffmpeg/libavcodec/ac3dec_float.c create mode 100644 ffmpeg/libavcodec/ac3dsp.c create mode 100644 ffmpeg/libavcodec/ac3dsp.h create mode 100644 ffmpeg/libavcodec/ac3enc.c create mode 100644 ffmpeg/libavcodec/ac3enc.h create mode 100644 ffmpeg/libavcodec/ac3enc_fixed.c create mode 100644 ffmpeg/libavcodec/ac3enc_float.c create mode 100644 ffmpeg/libavcodec/ac3enc_opts_template.c create mode 100644 ffmpeg/libavcodec/ac3enc_template.c create mode 100644 ffmpeg/libavcodec/ac3tab.c create mode 100644 ffmpeg/libavcodec/ac3tab.h create mode 100644 ffmpeg/libavcodec/acelp_filters.c create mode 100644 ffmpeg/libavcodec/acelp_filters.h create mode 100644 ffmpeg/libavcodec/acelp_pitch_delay.c create mode 100644 ffmpeg/libavcodec/acelp_pitch_delay.h create mode 100644 ffmpeg/libavcodec/acelp_vectors.c create mode 100644 ffmpeg/libavcodec/acelp_vectors.h create mode 100644 ffmpeg/libavcodec/adpcm.c create mode 100644 ffmpeg/libavcodec/adpcm.h create mode 100644 ffmpeg/libavcodec/adpcm_data.c create mode 100644 ffmpeg/libavcodec/adpcm_data.h create mode 100644 ffmpeg/libavcodec/adpcmenc.c create mode 100644 ffmpeg/libavcodec/adx.c create mode 100644 ffmpeg/libavcodec/adx.h create mode 100644 ffmpeg/libavcodec/adx_parser.c create mode 100644 ffmpeg/libavcodec/adxdec.c create mode 100644 ffmpeg/libavcodec/adxenc.c create mode 100644 ffmpeg/libavcodec/aic.c create mode 100644 ffmpeg/libavcodec/alac.c create mode 100644 ffmpeg/libavcodec/alac_data.c create mode 100644 ffmpeg/libavcodec/alac_data.h create mode 100644 ffmpeg/libavcodec/alacenc.c create mode 100644 ffmpeg/libavcodec/aliaspixdec.c create mode 100644 ffmpeg/libavcodec/aliaspixenc.c create mode 100644 ffmpeg/libavcodec/allcodecs.c create mode 100644 ffmpeg/libavcodec/alpha/Makefile create mode 100644 ffmpeg/libavcodec/alpha/asm.h create mode 100644 ffmpeg/libavcodec/alpha/blockdsp_alpha.c create mode 100644 ffmpeg/libavcodec/alpha/hpeldsp_alpha.c create mode 100644 ffmpeg/libavcodec/alpha/hpeldsp_alpha.h create mode 100644 ffmpeg/libavcodec/alpha/hpeldsp_alpha_asm.S create mode 100644 ffmpeg/libavcodec/alpha/idctdsp_alpha.c create mode 100644 ffmpeg/libavcodec/alpha/idctdsp_alpha.h create mode 100644 ffmpeg/libavcodec/alpha/idctdsp_alpha_asm.S create mode 100644 ffmpeg/libavcodec/alpha/me_cmp_alpha.c create mode 100644 ffmpeg/libavcodec/alpha/me_cmp_mvi_asm.S create mode 100644 ffmpeg/libavcodec/alpha/mpegvideo_alpha.c create mode 100644 ffmpeg/libavcodec/alpha/pixblockdsp_alpha.c create mode 100644 ffmpeg/libavcodec/alpha/regdef.h create mode 100644 ffmpeg/libavcodec/alpha/simple_idct_alpha.c create mode 100644 ffmpeg/libavcodec/alsdec.c create mode 100644 ffmpeg/libavcodec/amr.h create mode 100644 ffmpeg/libavcodec/amrnbdata.h create mode 100644 ffmpeg/libavcodec/amrnbdec.c create mode 100644 ffmpeg/libavcodec/amrwbdata.h create mode 100644 ffmpeg/libavcodec/amrwbdec.c create mode 100644 ffmpeg/libavcodec/anm.c create mode 100644 ffmpeg/libavcodec/ansi.c create mode 100644 ffmpeg/libavcodec/apedec.c create mode 100644 ffmpeg/libavcodec/arm/Makefile create mode 100644 ffmpeg/libavcodec/arm/aac.h create mode 100644 ffmpeg/libavcodec/arm/aacpsdsp_init_arm.c create mode 100644 ffmpeg/libavcodec/arm/aacpsdsp_neon.S create mode 100644 ffmpeg/libavcodec/arm/ac3dsp_arm.S create mode 100644 ffmpeg/libavcodec/arm/ac3dsp_armv6.S create mode 100644 ffmpeg/libavcodec/arm/ac3dsp_init_arm.c create mode 100644 ffmpeg/libavcodec/arm/ac3dsp_neon.S create mode 100644 ffmpeg/libavcodec/arm/asm-offsets.h create mode 100644 ffmpeg/libavcodec/arm/audiodsp_arm.h create mode 100644 ffmpeg/libavcodec/arm/audiodsp_init_arm.c create mode 100644 ffmpeg/libavcodec/arm/audiodsp_init_neon.c create mode 100644 ffmpeg/libavcodec/arm/audiodsp_neon.S create mode 100644 ffmpeg/libavcodec/arm/blockdsp_arm.h create mode 100644 ffmpeg/libavcodec/arm/blockdsp_init_arm.c create mode 100644 ffmpeg/libavcodec/arm/blockdsp_init_neon.c create mode 100644 ffmpeg/libavcodec/arm/blockdsp_neon.S create mode 100644 ffmpeg/libavcodec/arm/cabac.h create mode 100644 ffmpeg/libavcodec/arm/dca.h create mode 100644 ffmpeg/libavcodec/arm/dcadsp_init_arm.c create mode 100644 ffmpeg/libavcodec/arm/dcadsp_neon.S create mode 100644 ffmpeg/libavcodec/arm/dcadsp_vfp.S create mode 100644 ffmpeg/libavcodec/arm/dct-test.c create mode 100644 ffmpeg/libavcodec/arm/fft_fixed_init_arm.c create mode 100644 ffmpeg/libavcodec/arm/fft_fixed_neon.S create mode 100644 ffmpeg/libavcodec/arm/fft_init_arm.c create mode 100644 ffmpeg/libavcodec/arm/fft_neon.S create mode 100644 ffmpeg/libavcodec/arm/fft_vfp.S create mode 100644 ffmpeg/libavcodec/arm/flacdsp_arm.S create mode 100644 ffmpeg/libavcodec/arm/flacdsp_init_arm.c create mode 100644 ffmpeg/libavcodec/arm/fmtconvert_init_arm.c create mode 100644 ffmpeg/libavcodec/arm/fmtconvert_neon.S create mode 100644 ffmpeg/libavcodec/arm/fmtconvert_vfp.S create mode 100644 ffmpeg/libavcodec/arm/fmtconvert_vfp_armv6.S create mode 100644 ffmpeg/libavcodec/arm/h264chroma_init_arm.c create mode 100644 ffmpeg/libavcodec/arm/h264cmc_neon.S create mode 100644 ffmpeg/libavcodec/arm/h264dsp_init_arm.c create mode 100644 ffmpeg/libavcodec/arm/h264dsp_neon.S create mode 100644 ffmpeg/libavcodec/arm/h264idct_neon.S create mode 100644 ffmpeg/libavcodec/arm/h264pred_init_arm.c create mode 100644 ffmpeg/libavcodec/arm/h264pred_neon.S create mode 100644 ffmpeg/libavcodec/arm/h264qpel_init_arm.c create mode 100644 ffmpeg/libavcodec/arm/h264qpel_neon.S create mode 100644 ffmpeg/libavcodec/arm/hpeldsp_arm.S create mode 100644 ffmpeg/libavcodec/arm/hpeldsp_arm.h create mode 100644 ffmpeg/libavcodec/arm/hpeldsp_armv6.S create mode 100644 ffmpeg/libavcodec/arm/hpeldsp_init_arm.c create mode 100644 ffmpeg/libavcodec/arm/hpeldsp_init_armv6.c create mode 100644 ffmpeg/libavcodec/arm/hpeldsp_init_neon.c create mode 100644 ffmpeg/libavcodec/arm/hpeldsp_neon.S create mode 100644 ffmpeg/libavcodec/arm/idct.h create mode 100644 ffmpeg/libavcodec/arm/idctdsp_arm.S create mode 100644 ffmpeg/libavcodec/arm/idctdsp_arm.h create mode 100644 ffmpeg/libavcodec/arm/idctdsp_armv6.S create mode 100644 ffmpeg/libavcodec/arm/idctdsp_init_arm.c create mode 100644 ffmpeg/libavcodec/arm/idctdsp_init_armv5te.c create mode 100644 ffmpeg/libavcodec/arm/idctdsp_init_armv6.c create mode 100644 ffmpeg/libavcodec/arm/idctdsp_init_neon.c create mode 100644 ffmpeg/libavcodec/arm/idctdsp_neon.S create mode 100644 ffmpeg/libavcodec/arm/int_neon.S create mode 100644 ffmpeg/libavcodec/arm/jrevdct_arm.S create mode 100644 ffmpeg/libavcodec/arm/lossless_audiodsp_init_arm.c create mode 100644 ffmpeg/libavcodec/arm/lossless_audiodsp_neon.S create mode 100644 ffmpeg/libavcodec/arm/mathops.h create mode 100644 ffmpeg/libavcodec/arm/mdct_fixed_neon.S create mode 100644 ffmpeg/libavcodec/arm/mdct_neon.S create mode 100644 ffmpeg/libavcodec/arm/mdct_vfp.S create mode 100644 ffmpeg/libavcodec/arm/me_cmp_armv6.S create mode 100644 ffmpeg/libavcodec/arm/me_cmp_init_arm.c create mode 100644 ffmpeg/libavcodec/arm/mlpdsp_armv5te.S create mode 100644 ffmpeg/libavcodec/arm/mlpdsp_armv6.S create mode 100644 ffmpeg/libavcodec/arm/mlpdsp_init_arm.c create mode 100644 ffmpeg/libavcodec/arm/mpegaudiodsp_fixed_armv6.S create mode 100644 ffmpeg/libavcodec/arm/mpegaudiodsp_init_arm.c create mode 100644 ffmpeg/libavcodec/arm/mpegvideo_arm.c create mode 100644 ffmpeg/libavcodec/arm/mpegvideo_arm.h create mode 100644 ffmpeg/libavcodec/arm/mpegvideo_armv5te.c create mode 100644 ffmpeg/libavcodec/arm/mpegvideo_armv5te_s.S create mode 100644 ffmpeg/libavcodec/arm/mpegvideo_neon.S create mode 100644 ffmpeg/libavcodec/arm/mpegvideoencdsp_armv6.S create mode 100644 ffmpeg/libavcodec/arm/mpegvideoencdsp_init_arm.c create mode 100644 ffmpeg/libavcodec/arm/neon.S create mode 100644 ffmpeg/libavcodec/arm/neontest.c create mode 100644 ffmpeg/libavcodec/arm/pixblockdsp_armv6.S create mode 100644 ffmpeg/libavcodec/arm/pixblockdsp_init_arm.c create mode 100644 ffmpeg/libavcodec/arm/rdft_neon.S create mode 100644 ffmpeg/libavcodec/arm/rv34dsp_init_arm.c create mode 100644 ffmpeg/libavcodec/arm/rv34dsp_neon.S create mode 100644 ffmpeg/libavcodec/arm/rv40dsp_init_arm.c create mode 100644 ffmpeg/libavcodec/arm/rv40dsp_neon.S create mode 100644 ffmpeg/libavcodec/arm/sbrdsp_init_arm.c create mode 100644 ffmpeg/libavcodec/arm/sbrdsp_neon.S create mode 100644 ffmpeg/libavcodec/arm/simple_idct_arm.S create mode 100644 ffmpeg/libavcodec/arm/simple_idct_armv5te.S create mode 100644 ffmpeg/libavcodec/arm/simple_idct_armv6.S create mode 100644 ffmpeg/libavcodec/arm/simple_idct_neon.S create mode 100644 ffmpeg/libavcodec/arm/startcode.h create mode 100644 ffmpeg/libavcodec/arm/startcode_armv6.S create mode 100644 ffmpeg/libavcodec/arm/synth_filter_neon.S create mode 100644 ffmpeg/libavcodec/arm/synth_filter_vfp.S create mode 100644 ffmpeg/libavcodec/arm/vc1dsp.h create mode 100644 ffmpeg/libavcodec/arm/vc1dsp_init_arm.c create mode 100644 ffmpeg/libavcodec/arm/vc1dsp_init_neon.c create mode 100644 ffmpeg/libavcodec/arm/vc1dsp_neon.S create mode 100644 ffmpeg/libavcodec/arm/videodsp_arm.h create mode 100644 ffmpeg/libavcodec/arm/videodsp_armv5te.S create mode 100644 ffmpeg/libavcodec/arm/videodsp_init_arm.c create mode 100644 ffmpeg/libavcodec/arm/videodsp_init_armv5te.c create mode 100644 ffmpeg/libavcodec/arm/vorbisdsp_init_arm.c create mode 100644 ffmpeg/libavcodec/arm/vorbisdsp_neon.S create mode 100644 ffmpeg/libavcodec/arm/vp3dsp_init_arm.c create mode 100644 ffmpeg/libavcodec/arm/vp3dsp_neon.S create mode 100644 ffmpeg/libavcodec/arm/vp56_arith.h create mode 100644 ffmpeg/libavcodec/arm/vp6dsp_init_arm.c create mode 100644 ffmpeg/libavcodec/arm/vp6dsp_neon.S create mode 100644 ffmpeg/libavcodec/arm/vp8.h create mode 100644 ffmpeg/libavcodec/arm/vp8_armv6.S create mode 100644 ffmpeg/libavcodec/arm/vp8dsp.h create mode 100644 ffmpeg/libavcodec/arm/vp8dsp_armv6.S create mode 100644 ffmpeg/libavcodec/arm/vp8dsp_init_arm.c create mode 100644 ffmpeg/libavcodec/arm/vp8dsp_init_armv6.c create mode 100644 ffmpeg/libavcodec/arm/vp8dsp_init_neon.c create mode 100644 ffmpeg/libavcodec/arm/vp8dsp_neon.S create mode 100644 ffmpeg/libavcodec/ass.c create mode 100644 ffmpeg/libavcodec/ass.h create mode 100644 ffmpeg/libavcodec/ass_split.c create mode 100644 ffmpeg/libavcodec/ass_split.h create mode 100644 ffmpeg/libavcodec/assdec.c create mode 100644 ffmpeg/libavcodec/assenc.c create mode 100644 ffmpeg/libavcodec/asv.c create mode 100644 ffmpeg/libavcodec/asv.h create mode 100644 ffmpeg/libavcodec/asvdec.c create mode 100644 ffmpeg/libavcodec/asvenc.c create mode 100644 ffmpeg/libavcodec/atrac.c create mode 100644 ffmpeg/libavcodec/atrac.h create mode 100644 ffmpeg/libavcodec/atrac1.c create mode 100644 ffmpeg/libavcodec/atrac1data.h create mode 100644 ffmpeg/libavcodec/atrac3.c create mode 100644 ffmpeg/libavcodec/atrac3data.h create mode 100644 ffmpeg/libavcodec/atrac3plus.c create mode 100644 ffmpeg/libavcodec/atrac3plus.h create mode 100644 ffmpeg/libavcodec/atrac3plus_data.h create mode 100644 ffmpeg/libavcodec/atrac3plusdec.c create mode 100644 ffmpeg/libavcodec/atrac3plusdsp.c create mode 100644 ffmpeg/libavcodec/audio_frame_queue.c create mode 100644 ffmpeg/libavcodec/audio_frame_queue.h create mode 100644 ffmpeg/libavcodec/audioconvert.c create mode 100644 ffmpeg/libavcodec/audioconvert.h create mode 100644 ffmpeg/libavcodec/audiodsp.c create mode 100644 ffmpeg/libavcodec/audiodsp.h create mode 100644 ffmpeg/libavcodec/aura.c create mode 100644 ffmpeg/libavcodec/avcodec.h create mode 100644 ffmpeg/libavcodec/avcodecres.rc create mode 100644 ffmpeg/libavcodec/avdct.c create mode 100644 ffmpeg/libavcodec/avdct.h create mode 100644 ffmpeg/libavcodec/avfft.c create mode 100644 ffmpeg/libavcodec/avfft.h create mode 100644 ffmpeg/libavcodec/avpacket.c create mode 100644 ffmpeg/libavcodec/avpicture.c create mode 100644 ffmpeg/libavcodec/avr32/mathops.h create mode 100644 ffmpeg/libavcodec/avrndec.c create mode 100644 ffmpeg/libavcodec/avs.c create mode 100644 ffmpeg/libavcodec/avuidec.c create mode 100644 ffmpeg/libavcodec/avuienc.c create mode 100644 ffmpeg/libavcodec/bethsoftvideo.c create mode 100644 ffmpeg/libavcodec/bethsoftvideo.h create mode 100644 ffmpeg/libavcodec/bfi.c create mode 100644 ffmpeg/libavcodec/bfin/README create mode 100644 ffmpeg/libavcodec/bgmc.c create mode 100644 ffmpeg/libavcodec/bgmc.h create mode 100644 ffmpeg/libavcodec/bink.c create mode 100644 ffmpeg/libavcodec/binkaudio.c create mode 100644 ffmpeg/libavcodec/binkdata.h create mode 100644 ffmpeg/libavcodec/binkdsp.c create mode 100644 ffmpeg/libavcodec/binkdsp.h create mode 100644 ffmpeg/libavcodec/bintext.c create mode 100644 ffmpeg/libavcodec/bintext.h create mode 100644 ffmpeg/libavcodec/bit_depth_template.c create mode 100644 ffmpeg/libavcodec/bitstream.c create mode 100644 ffmpeg/libavcodec/bitstream_filter.c create mode 100644 ffmpeg/libavcodec/blockdsp.c create mode 100644 ffmpeg/libavcodec/blockdsp.h create mode 100644 ffmpeg/libavcodec/bmp.c create mode 100644 ffmpeg/libavcodec/bmp.h create mode 100644 ffmpeg/libavcodec/bmp_parser.c create mode 100644 ffmpeg/libavcodec/bmpenc.c create mode 100644 ffmpeg/libavcodec/bmvaudio.c create mode 100644 ffmpeg/libavcodec/bmvvideo.c create mode 100644 ffmpeg/libavcodec/brenderpix.c create mode 100644 ffmpeg/libavcodec/bswapdsp.c create mode 100644 ffmpeg/libavcodec/bswapdsp.h create mode 100644 ffmpeg/libavcodec/bytestream.h create mode 100644 ffmpeg/libavcodec/c93.c create mode 100644 ffmpeg/libavcodec/cabac.c create mode 100644 ffmpeg/libavcodec/cabac.h create mode 100644 ffmpeg/libavcodec/cabac_functions.h create mode 100644 ffmpeg/libavcodec/cabac_tablegen.c create mode 100644 ffmpeg/libavcodec/cabac_tablegen.h create mode 100644 ffmpeg/libavcodec/cavs.c create mode 100644 ffmpeg/libavcodec/cavs.h create mode 100644 ffmpeg/libavcodec/cavs_parser.c create mode 100644 ffmpeg/libavcodec/cavsdata.c create mode 100644 ffmpeg/libavcodec/cavsdec.c create mode 100644 ffmpeg/libavcodec/cavsdsp.c create mode 100644 ffmpeg/libavcodec/cavsdsp.h create mode 100644 ffmpeg/libavcodec/cbrt_tablegen.c create mode 100644 ffmpeg/libavcodec/cbrt_tablegen.h create mode 100644 ffmpeg/libavcodec/cdgraphics.c create mode 100644 ffmpeg/libavcodec/cdxl.c create mode 100644 ffmpeg/libavcodec/celp_filters.c create mode 100644 ffmpeg/libavcodec/celp_filters.h create mode 100644 ffmpeg/libavcodec/celp_math.c create mode 100644 ffmpeg/libavcodec/celp_math.h create mode 100644 ffmpeg/libavcodec/cga_data.c create mode 100644 ffmpeg/libavcodec/cga_data.h create mode 100644 ffmpeg/libavcodec/chomp_bsf.c create mode 100644 ffmpeg/libavcodec/cinepak.c create mode 100644 ffmpeg/libavcodec/cinepakenc.c create mode 100644 ffmpeg/libavcodec/cljrdec.c create mode 100644 ffmpeg/libavcodec/cljrenc.c create mode 100644 ffmpeg/libavcodec/cllc.c create mode 100644 ffmpeg/libavcodec/cngdec.c create mode 100644 ffmpeg/libavcodec/cngenc.c create mode 100644 ffmpeg/libavcodec/codec_desc.c create mode 100644 ffmpeg/libavcodec/cook.c create mode 100644 ffmpeg/libavcodec/cook_parser.c create mode 100644 ffmpeg/libavcodec/cookdata.h create mode 100644 ffmpeg/libavcodec/copy_block.h create mode 100644 ffmpeg/libavcodec/cos_tablegen.c create mode 100644 ffmpeg/libavcodec/cpia.c create mode 100644 ffmpeg/libavcodec/crystalhd.c create mode 100644 ffmpeg/libavcodec/cscd.c create mode 100644 ffmpeg/libavcodec/cyuv.c create mode 100644 ffmpeg/libavcodec/dca.c create mode 100644 ffmpeg/libavcodec/dca.h create mode 100644 ffmpeg/libavcodec/dca_parser.c create mode 100644 ffmpeg/libavcodec/dcadata.h create mode 100644 ffmpeg/libavcodec/dcadec.c create mode 100644 ffmpeg/libavcodec/dcadsp.c create mode 100644 ffmpeg/libavcodec/dcadsp.h create mode 100644 ffmpeg/libavcodec/dcaenc.c create mode 100644 ffmpeg/libavcodec/dcaenc.h create mode 100644 ffmpeg/libavcodec/dcahuff.h create mode 100644 ffmpeg/libavcodec/dct-test.c create mode 100644 ffmpeg/libavcodec/dct.c create mode 100644 ffmpeg/libavcodec/dct.h create mode 100644 ffmpeg/libavcodec/dct32.h create mode 100644 ffmpeg/libavcodec/dct32_fixed.c create mode 100644 ffmpeg/libavcodec/dct32_float.c create mode 100644 ffmpeg/libavcodec/dct32_template.c create mode 100644 ffmpeg/libavcodec/dctref.c create mode 100644 ffmpeg/libavcodec/dctref.h create mode 100644 ffmpeg/libavcodec/dfa.c create mode 100644 ffmpeg/libavcodec/dirac.c create mode 100644 ffmpeg/libavcodec/dirac.h create mode 100644 ffmpeg/libavcodec/dirac_arith.c create mode 100644 ffmpeg/libavcodec/dirac_arith.h create mode 100644 ffmpeg/libavcodec/dirac_dwt.c create mode 100644 ffmpeg/libavcodec/dirac_dwt.h create mode 100644 ffmpeg/libavcodec/dirac_parser.c create mode 100644 ffmpeg/libavcodec/diracdec.c create mode 100644 ffmpeg/libavcodec/diracdsp.c create mode 100644 ffmpeg/libavcodec/diracdsp.h create mode 100644 ffmpeg/libavcodec/dnxhd_parser.c create mode 100644 ffmpeg/libavcodec/dnxhddata.c create mode 100644 ffmpeg/libavcodec/dnxhddata.h create mode 100644 ffmpeg/libavcodec/dnxhddec.c create mode 100644 ffmpeg/libavcodec/dnxhdenc.c create mode 100644 ffmpeg/libavcodec/dnxhdenc.h create mode 100644 ffmpeg/libavcodec/dpcm.c create mode 100644 ffmpeg/libavcodec/dpx.c create mode 100644 ffmpeg/libavcodec/dpx_parser.c create mode 100644 ffmpeg/libavcodec/dpxenc.c create mode 100644 ffmpeg/libavcodec/dsd_tablegen.c create mode 100644 ffmpeg/libavcodec/dsd_tablegen.h create mode 100644 ffmpeg/libavcodec/dsddec.c create mode 100644 ffmpeg/libavcodec/dsicinaudio.c create mode 100644 ffmpeg/libavcodec/dsicinvideo.c create mode 100644 ffmpeg/libavcodec/dsputil.h create mode 100644 ffmpeg/libavcodec/dsputil_compat.c create mode 100644 ffmpeg/libavcodec/dump_extradata_bsf.c create mode 100644 ffmpeg/libavcodec/dv.c create mode 100644 ffmpeg/libavcodec/dv.h create mode 100644 ffmpeg/libavcodec/dv_profile.c create mode 100644 ffmpeg/libavcodec/dv_profile.h create mode 100644 ffmpeg/libavcodec/dv_profile_internal.h create mode 100644 ffmpeg/libavcodec/dv_tablegen.c create mode 100644 ffmpeg/libavcodec/dv_tablegen.h create mode 100644 ffmpeg/libavcodec/dvbsub.c create mode 100644 ffmpeg/libavcodec/dvbsub_parser.c create mode 100644 ffmpeg/libavcodec/dvbsubdec.c create mode 100644 ffmpeg/libavcodec/dvd_nav_parser.c create mode 100644 ffmpeg/libavcodec/dvdata.c create mode 100644 ffmpeg/libavcodec/dvdata.h create mode 100644 ffmpeg/libavcodec/dvdec.c create mode 100644 ffmpeg/libavcodec/dvdsub_parser.c create mode 100644 ffmpeg/libavcodec/dvdsubdec.c create mode 100644 ffmpeg/libavcodec/dvdsubenc.c create mode 100644 ffmpeg/libavcodec/dvenc.c create mode 100644 ffmpeg/libavcodec/dxa.c create mode 100644 ffmpeg/libavcodec/dxtory.c create mode 100644 ffmpeg/libavcodec/dxva2.c create mode 100644 ffmpeg/libavcodec/dxva2.h create mode 100644 ffmpeg/libavcodec/dxva2_h264.c create mode 100644 ffmpeg/libavcodec/dxva2_internal.h create mode 100644 ffmpeg/libavcodec/dxva2_mpeg2.c create mode 100644 ffmpeg/libavcodec/dxva2_vc1.c create mode 100644 ffmpeg/libavcodec/eac3_data.c create mode 100644 ffmpeg/libavcodec/eac3_data.h create mode 100644 ffmpeg/libavcodec/eac3dec.c create mode 100644 ffmpeg/libavcodec/eac3enc.c create mode 100644 ffmpeg/libavcodec/eac3enc.h create mode 100644 ffmpeg/libavcodec/eacmv.c create mode 100644 ffmpeg/libavcodec/eaidct.c create mode 100644 ffmpeg/libavcodec/eaidct.h create mode 100644 ffmpeg/libavcodec/eamad.c create mode 100644 ffmpeg/libavcodec/eatgq.c create mode 100644 ffmpeg/libavcodec/eatgv.c create mode 100644 ffmpeg/libavcodec/eatqi.c create mode 100644 ffmpeg/libavcodec/elbg.c create mode 100644 ffmpeg/libavcodec/elbg.h create mode 100644 ffmpeg/libavcodec/error_resilience.c create mode 100644 ffmpeg/libavcodec/error_resilience.h create mode 100644 ffmpeg/libavcodec/escape124.c create mode 100644 ffmpeg/libavcodec/escape130.c create mode 100644 ffmpeg/libavcodec/evrcdata.h create mode 100644 ffmpeg/libavcodec/evrcdec.c create mode 100644 ffmpeg/libavcodec/exif.c create mode 100644 ffmpeg/libavcodec/exif.h create mode 100644 ffmpeg/libavcodec/exr.c create mode 100644 ffmpeg/libavcodec/faandct.c create mode 100644 ffmpeg/libavcodec/faandct.h create mode 100644 ffmpeg/libavcodec/faanidct.c create mode 100644 ffmpeg/libavcodec/faanidct.h create mode 100644 ffmpeg/libavcodec/faxcompr.c create mode 100644 ffmpeg/libavcodec/faxcompr.h create mode 100644 ffmpeg/libavcodec/fdctdsp.c create mode 100644 ffmpeg/libavcodec/fdctdsp.h create mode 100644 ffmpeg/libavcodec/fft-fixed-test.c create mode 100644 ffmpeg/libavcodec/fft-fixed32-test.c create mode 100644 ffmpeg/libavcodec/fft-internal.h create mode 100644 ffmpeg/libavcodec/fft-test.c create mode 100644 ffmpeg/libavcodec/fft.h create mode 100644 ffmpeg/libavcodec/fft_fixed.c create mode 100644 ffmpeg/libavcodec/fft_fixed_32.c create mode 100644 ffmpeg/libavcodec/fft_float.c create mode 100644 ffmpeg/libavcodec/fft_init_table.c create mode 100644 ffmpeg/libavcodec/fft_table.h create mode 100644 ffmpeg/libavcodec/fft_template.c create mode 100644 ffmpeg/libavcodec/ffv1.c create mode 100644 ffmpeg/libavcodec/ffv1.h create mode 100644 ffmpeg/libavcodec/ffv1dec.c create mode 100644 ffmpeg/libavcodec/ffv1enc.c create mode 100644 ffmpeg/libavcodec/ffwavesynth.c create mode 100644 ffmpeg/libavcodec/fic.c create mode 100644 ffmpeg/libavcodec/file_open.c create mode 100644 ffmpeg/libavcodec/flac.c create mode 100644 ffmpeg/libavcodec/flac.h create mode 100644 ffmpeg/libavcodec/flac_parser.c create mode 100644 ffmpeg/libavcodec/flacdata.c create mode 100644 ffmpeg/libavcodec/flacdata.h create mode 100644 ffmpeg/libavcodec/flacdec.c create mode 100644 ffmpeg/libavcodec/flacdsp.c create mode 100644 ffmpeg/libavcodec/flacdsp.h create mode 100644 ffmpeg/libavcodec/flacdsp_lpc_template.c create mode 100644 ffmpeg/libavcodec/flacdsp_template.c create mode 100644 ffmpeg/libavcodec/flacenc.c create mode 100644 ffmpeg/libavcodec/flashsv.c create mode 100644 ffmpeg/libavcodec/flashsv2enc.c create mode 100644 ffmpeg/libavcodec/flashsvenc.c create mode 100644 ffmpeg/libavcodec/flicvideo.c create mode 100644 ffmpeg/libavcodec/flv.h create mode 100644 ffmpeg/libavcodec/flvdec.c create mode 100644 ffmpeg/libavcodec/flvenc.c create mode 100644 ffmpeg/libavcodec/fmtconvert.c create mode 100644 ffmpeg/libavcodec/fmtconvert.h create mode 100644 ffmpeg/libavcodec/frame_thread_encoder.c create mode 100644 ffmpeg/libavcodec/frame_thread_encoder.h create mode 100644 ffmpeg/libavcodec/fraps.c create mode 100644 ffmpeg/libavcodec/frwu.c create mode 100644 ffmpeg/libavcodec/g2meet.c create mode 100644 ffmpeg/libavcodec/g722.c create mode 100644 ffmpeg/libavcodec/g722.h create mode 100644 ffmpeg/libavcodec/g722dec.c create mode 100644 ffmpeg/libavcodec/g722enc.c create mode 100644 ffmpeg/libavcodec/g723_1.c create mode 100644 ffmpeg/libavcodec/g723_1_data.h create mode 100644 ffmpeg/libavcodec/g726.c create mode 100644 ffmpeg/libavcodec/g729.h create mode 100644 ffmpeg/libavcodec/g729data.h create mode 100644 ffmpeg/libavcodec/g729dec.c create mode 100644 ffmpeg/libavcodec/g729postfilter.c create mode 100644 ffmpeg/libavcodec/g729postfilter.h create mode 100644 ffmpeg/libavcodec/get_bits.h create mode 100644 ffmpeg/libavcodec/gif.c create mode 100644 ffmpeg/libavcodec/gif.h create mode 100644 ffmpeg/libavcodec/gifdec.c create mode 100644 ffmpeg/libavcodec/golomb-test.c create mode 100644 ffmpeg/libavcodec/golomb.c create mode 100644 ffmpeg/libavcodec/golomb.h create mode 100644 ffmpeg/libavcodec/gsm.h create mode 100644 ffmpeg/libavcodec/gsm_parser.c create mode 100644 ffmpeg/libavcodec/gsmdec.c create mode 100644 ffmpeg/libavcodec/gsmdec_data.c create mode 100644 ffmpeg/libavcodec/gsmdec_data.h create mode 100644 ffmpeg/libavcodec/gsmdec_template.c create mode 100644 ffmpeg/libavcodec/h261.c create mode 100644 ffmpeg/libavcodec/h261.h create mode 100644 ffmpeg/libavcodec/h261_parser.c create mode 100644 ffmpeg/libavcodec/h261data.c create mode 100644 ffmpeg/libavcodec/h261dec.c create mode 100644 ffmpeg/libavcodec/h261enc.c create mode 100644 ffmpeg/libavcodec/h263.c create mode 100644 ffmpeg/libavcodec/h263.h create mode 100644 ffmpeg/libavcodec/h263_parser.c create mode 100644 ffmpeg/libavcodec/h263_parser.h create mode 100644 ffmpeg/libavcodec/h263data.h create mode 100644 ffmpeg/libavcodec/h263dec.c create mode 100644 ffmpeg/libavcodec/h263dsp.c create mode 100644 ffmpeg/libavcodec/h263dsp.h create mode 100644 ffmpeg/libavcodec/h264.c create mode 100644 ffmpeg/libavcodec/h264.h create mode 100644 ffmpeg/libavcodec/h264_cabac.c create mode 100644 ffmpeg/libavcodec/h264_cavlc.c create mode 100644 ffmpeg/libavcodec/h264_direct.c create mode 100644 ffmpeg/libavcodec/h264_loopfilter.c create mode 100644 ffmpeg/libavcodec/h264_mb.c create mode 100644 ffmpeg/libavcodec/h264_mb_template.c create mode 100644 ffmpeg/libavcodec/h264_mc_template.c create mode 100644 ffmpeg/libavcodec/h264_mp4toannexb_bsf.c create mode 100644 ffmpeg/libavcodec/h264_mvpred.h create mode 100644 ffmpeg/libavcodec/h264_parser.c create mode 100644 ffmpeg/libavcodec/h264_picture.c create mode 100644 ffmpeg/libavcodec/h264_ps.c create mode 100644 ffmpeg/libavcodec/h264_refs.c create mode 100644 ffmpeg/libavcodec/h264_sei.c create mode 100644 ffmpeg/libavcodec/h264_slice.c create mode 100644 ffmpeg/libavcodec/h264addpx_template.c create mode 100644 ffmpeg/libavcodec/h264chroma.c create mode 100644 ffmpeg/libavcodec/h264chroma.h create mode 100644 ffmpeg/libavcodec/h264chroma_template.c create mode 100644 ffmpeg/libavcodec/h264data.h create mode 100644 ffmpeg/libavcodec/h264dsp.c create mode 100644 ffmpeg/libavcodec/h264dsp.h create mode 100644 ffmpeg/libavcodec/h264dsp_template.c create mode 100644 ffmpeg/libavcodec/h264idct.c create mode 100644 ffmpeg/libavcodec/h264idct.h create mode 100644 ffmpeg/libavcodec/h264idct_template.c create mode 100644 ffmpeg/libavcodec/h264pred.c create mode 100644 ffmpeg/libavcodec/h264pred.h create mode 100644 ffmpeg/libavcodec/h264pred_template.c create mode 100644 ffmpeg/libavcodec/h264qpel.c create mode 100644 ffmpeg/libavcodec/h264qpel.h create mode 100644 ffmpeg/libavcodec/h264qpel_template.c create mode 100644 ffmpeg/libavcodec/hevc.c create mode 100644 ffmpeg/libavcodec/hevc.h create mode 100644 ffmpeg/libavcodec/hevc_cabac.c create mode 100644 ffmpeg/libavcodec/hevc_filter.c create mode 100644 ffmpeg/libavcodec/hevc_mvs.c create mode 100644 ffmpeg/libavcodec/hevc_parser.c create mode 100644 ffmpeg/libavcodec/hevc_ps.c create mode 100644 ffmpeg/libavcodec/hevc_refs.c create mode 100644 ffmpeg/libavcodec/hevc_sei.c create mode 100644 ffmpeg/libavcodec/hevcdsp.c create mode 100644 ffmpeg/libavcodec/hevcdsp.h create mode 100644 ffmpeg/libavcodec/hevcdsp_template.c create mode 100644 ffmpeg/libavcodec/hevcpred.c create mode 100644 ffmpeg/libavcodec/hevcpred.h create mode 100644 ffmpeg/libavcodec/hevcpred_template.c create mode 100644 ffmpeg/libavcodec/hnm4video.c create mode 100644 ffmpeg/libavcodec/hpel_template.c create mode 100644 ffmpeg/libavcodec/hpeldsp.c create mode 100644 ffmpeg/libavcodec/hpeldsp.h create mode 100644 ffmpeg/libavcodec/huffman.c create mode 100644 ffmpeg/libavcodec/huffman.h create mode 100644 ffmpeg/libavcodec/huffyuv.c create mode 100644 ffmpeg/libavcodec/huffyuv.h create mode 100644 ffmpeg/libavcodec/huffyuvdec.c create mode 100644 ffmpeg/libavcodec/huffyuvdsp.c create mode 100644 ffmpeg/libavcodec/huffyuvdsp.h create mode 100644 ffmpeg/libavcodec/huffyuvenc.c create mode 100644 ffmpeg/libavcodec/huffyuvencdsp.c create mode 100644 ffmpeg/libavcodec/huffyuvencdsp.h create mode 100644 ffmpeg/libavcodec/idcinvideo.c create mode 100644 ffmpeg/libavcodec/idctdsp.c create mode 100644 ffmpeg/libavcodec/idctdsp.h create mode 100644 ffmpeg/libavcodec/iff.c create mode 100644 ffmpeg/libavcodec/iirfilter.c create mode 100644 ffmpeg/libavcodec/iirfilter.h create mode 100644 ffmpeg/libavcodec/imc.c create mode 100644 ffmpeg/libavcodec/imcdata.h create mode 100644 ffmpeg/libavcodec/imgconvert.c create mode 100644 ffmpeg/libavcodec/imgconvert.h create mode 100644 ffmpeg/libavcodec/imx_dump_header_bsf.c create mode 100644 ffmpeg/libavcodec/indeo2.c create mode 100644 ffmpeg/libavcodec/indeo2data.h create mode 100644 ffmpeg/libavcodec/indeo3.c create mode 100644 ffmpeg/libavcodec/indeo3data.h create mode 100644 ffmpeg/libavcodec/indeo4.c create mode 100644 ffmpeg/libavcodec/indeo4data.h create mode 100644 ffmpeg/libavcodec/indeo5.c create mode 100644 ffmpeg/libavcodec/indeo5data.h create mode 100644 ffmpeg/libavcodec/intelh263dec.c create mode 100644 ffmpeg/libavcodec/internal.h create mode 100644 ffmpeg/libavcodec/interplayvideo.c create mode 100644 ffmpeg/libavcodec/intrax8.c create mode 100644 ffmpeg/libavcodec/intrax8.h create mode 100644 ffmpeg/libavcodec/intrax8dsp.c create mode 100644 ffmpeg/libavcodec/intrax8dsp.h create mode 100644 ffmpeg/libavcodec/intrax8huf.h create mode 100644 ffmpeg/libavcodec/ituh263dec.c create mode 100644 ffmpeg/libavcodec/ituh263enc.c create mode 100644 ffmpeg/libavcodec/ivi_common.c create mode 100644 ffmpeg/libavcodec/ivi_common.h create mode 100644 ffmpeg/libavcodec/ivi_dsp.c create mode 100644 ffmpeg/libavcodec/ivi_dsp.h create mode 100644 ffmpeg/libavcodec/j2kenc.c create mode 100644 ffmpeg/libavcodec/jacosub.h create mode 100644 ffmpeg/libavcodec/jacosubdec.c create mode 100644 ffmpeg/libavcodec/jfdctfst.c create mode 100644 ffmpeg/libavcodec/jfdctint.c create mode 100644 ffmpeg/libavcodec/jfdctint_template.c create mode 100644 ffmpeg/libavcodec/jpeg2000.c create mode 100644 ffmpeg/libavcodec/jpeg2000.h create mode 100644 ffmpeg/libavcodec/jpeg2000dec.c create mode 100644 ffmpeg/libavcodec/jpeg2000dwt.c create mode 100644 ffmpeg/libavcodec/jpeg2000dwt.h create mode 100644 ffmpeg/libavcodec/jpegls.c create mode 100644 ffmpeg/libavcodec/jpegls.h create mode 100644 ffmpeg/libavcodec/jpeglsdec.c create mode 100644 ffmpeg/libavcodec/jpeglsdec.h create mode 100644 ffmpeg/libavcodec/jpeglsenc.c create mode 100644 ffmpeg/libavcodec/jrevdct.c create mode 100644 ffmpeg/libavcodec/jvdec.c create mode 100644 ffmpeg/libavcodec/kbdwin.c create mode 100644 ffmpeg/libavcodec/kbdwin.h create mode 100644 ffmpeg/libavcodec/kgv1dec.c create mode 100644 ffmpeg/libavcodec/kmvc.c create mode 100644 ffmpeg/libavcodec/lagarith.c create mode 100644 ffmpeg/libavcodec/lagarithrac.c create mode 100644 ffmpeg/libavcodec/lagarithrac.h create mode 100644 ffmpeg/libavcodec/latm_parser.c create mode 100644 ffmpeg/libavcodec/lcl.h create mode 100644 ffmpeg/libavcodec/lcldec.c create mode 100644 ffmpeg/libavcodec/lclenc.c create mode 100644 ffmpeg/libavcodec/libaacplus.c create mode 100644 ffmpeg/libavcodec/libavcodec.v create mode 100644 ffmpeg/libavcodec/libcelt_dec.c create mode 100644 ffmpeg/libavcodec/libfaac.c create mode 100644 ffmpeg/libavcodec/libfdk-aacdec.c create mode 100644 ffmpeg/libavcodec/libfdk-aacenc.c create mode 100644 ffmpeg/libavcodec/libgsmdec.c create mode 100644 ffmpeg/libavcodec/libgsmenc.c create mode 100644 ffmpeg/libavcodec/libilbc.c create mode 100644 ffmpeg/libavcodec/libmp3lame.c create mode 100644 ffmpeg/libavcodec/libopencore-amr.c create mode 100644 ffmpeg/libavcodec/libopenjpegdec.c create mode 100644 ffmpeg/libavcodec/libopenjpegenc.c create mode 100644 ffmpeg/libavcodec/libopus.c create mode 100644 ffmpeg/libavcodec/libopus.h create mode 100644 ffmpeg/libavcodec/libopusdec.c create mode 100644 ffmpeg/libavcodec/libopusenc.c create mode 100644 ffmpeg/libavcodec/libschroedinger.c create mode 100644 ffmpeg/libavcodec/libschroedinger.h create mode 100644 ffmpeg/libavcodec/libschroedingerdec.c create mode 100644 ffmpeg/libavcodec/libschroedingerenc.c create mode 100644 ffmpeg/libavcodec/libshine.c create mode 100644 ffmpeg/libavcodec/libspeexdec.c create mode 100644 ffmpeg/libavcodec/libspeexenc.c create mode 100644 ffmpeg/libavcodec/libstagefright.cpp create mode 100644 ffmpeg/libavcodec/libtheoraenc.c create mode 100644 ffmpeg/libavcodec/libtwolame.c create mode 100644 ffmpeg/libavcodec/libutvideo.h create mode 100644 ffmpeg/libavcodec/libutvideodec.cpp create mode 100644 ffmpeg/libavcodec/libutvideoenc.cpp create mode 100644 ffmpeg/libavcodec/libvo-aacenc.c create mode 100644 ffmpeg/libavcodec/libvo-amrwbenc.c create mode 100644 ffmpeg/libavcodec/libvorbisdec.c create mode 100644 ffmpeg/libavcodec/libvorbisenc.c create mode 100644 ffmpeg/libavcodec/libvpx.c create mode 100644 ffmpeg/libavcodec/libvpx.h create mode 100644 ffmpeg/libavcodec/libvpxdec.c create mode 100644 ffmpeg/libavcodec/libvpxenc.c create mode 100644 ffmpeg/libavcodec/libwavpackenc.c create mode 100644 ffmpeg/libavcodec/libwebpenc.c create mode 100644 ffmpeg/libavcodec/libx264.c create mode 100644 ffmpeg/libavcodec/libx265.c create mode 100644 ffmpeg/libavcodec/libxavs.c create mode 100644 ffmpeg/libavcodec/libxvid.c create mode 100644 ffmpeg/libavcodec/libxvid.h create mode 100644 ffmpeg/libavcodec/libxvid_rc.c create mode 100644 ffmpeg/libavcodec/libzvbi-teletextdec.c create mode 100644 ffmpeg/libavcodec/ljpegenc.c create mode 100644 ffmpeg/libavcodec/loco.c create mode 100644 ffmpeg/libavcodec/log2_tab.c create mode 100644 ffmpeg/libavcodec/lossless_audiodsp.c create mode 100644 ffmpeg/libavcodec/lossless_audiodsp.h create mode 100644 ffmpeg/libavcodec/lossless_videodsp.c create mode 100644 ffmpeg/libavcodec/lossless_videodsp.h create mode 100644 ffmpeg/libavcodec/lpc.c create mode 100644 ffmpeg/libavcodec/lpc.h create mode 100644 ffmpeg/libavcodec/lsp.c create mode 100644 ffmpeg/libavcodec/lsp.h create mode 100644 ffmpeg/libavcodec/lzw.c create mode 100644 ffmpeg/libavcodec/lzw.h create mode 100644 ffmpeg/libavcodec/lzwenc.c create mode 100644 ffmpeg/libavcodec/mace.c create mode 100644 ffmpeg/libavcodec/mathops.h create mode 100644 ffmpeg/libavcodec/mathtables.c create mode 100644 ffmpeg/libavcodec/mdct_fixed.c create mode 100644 ffmpeg/libavcodec/mdct_fixed_32.c create mode 100644 ffmpeg/libavcodec/mdct_float.c create mode 100644 ffmpeg/libavcodec/mdct_template.c create mode 100644 ffmpeg/libavcodec/mdec.c create mode 100644 ffmpeg/libavcodec/me_cmp.c create mode 100644 ffmpeg/libavcodec/me_cmp.h create mode 100644 ffmpeg/libavcodec/metasound.c create mode 100644 ffmpeg/libavcodec/metasound_data.c create mode 100644 ffmpeg/libavcodec/metasound_data.h create mode 100644 ffmpeg/libavcodec/microdvddec.c create mode 100644 ffmpeg/libavcodec/mimic.c create mode 100644 ffmpeg/libavcodec/mips/Makefile create mode 100644 ffmpeg/libavcodec/mips/aaccoder_mips.c create mode 100644 ffmpeg/libavcodec/mips/aacdec_mips.c create mode 100644 ffmpeg/libavcodec/mips/aacdec_mips.h create mode 100644 ffmpeg/libavcodec/mips/aacpsdsp_mips.c create mode 100644 ffmpeg/libavcodec/mips/aacpsy_mips.h create mode 100644 ffmpeg/libavcodec/mips/aacsbr_mips.c create mode 100644 ffmpeg/libavcodec/mips/aacsbr_mips.h create mode 100644 ffmpeg/libavcodec/mips/ac3dsp_mips.c create mode 100644 ffmpeg/libavcodec/mips/acelp_filters_mips.c create mode 100644 ffmpeg/libavcodec/mips/acelp_vectors_mips.c create mode 100644 ffmpeg/libavcodec/mips/amrwbdec_mips.c create mode 100644 ffmpeg/libavcodec/mips/amrwbdec_mips.h create mode 100644 ffmpeg/libavcodec/mips/celp_filters_mips.c create mode 100644 ffmpeg/libavcodec/mips/celp_math_mips.c create mode 100644 ffmpeg/libavcodec/mips/compute_antialias_fixed.h create mode 100644 ffmpeg/libavcodec/mips/compute_antialias_float.h create mode 100644 ffmpeg/libavcodec/mips/fft_mips.c create mode 100644 ffmpeg/libavcodec/mips/fmtconvert_mips.c create mode 100644 ffmpeg/libavcodec/mips/iirfilter_mips.c create mode 100644 ffmpeg/libavcodec/mips/lsp_mips.h create mode 100644 ffmpeg/libavcodec/mips/mathops.h create mode 100644 ffmpeg/libavcodec/mips/mpegaudiodsp_mips_fixed.c create mode 100644 ffmpeg/libavcodec/mips/mpegaudiodsp_mips_float.c create mode 100644 ffmpeg/libavcodec/mips/sbrdsp_mips.c create mode 100644 ffmpeg/libavcodec/mjpeg.c create mode 100644 ffmpeg/libavcodec/mjpeg.h create mode 100644 ffmpeg/libavcodec/mjpeg2jpeg_bsf.c create mode 100644 ffmpeg/libavcodec/mjpeg_parser.c create mode 100644 ffmpeg/libavcodec/mjpega_dump_header_bsf.c create mode 100644 ffmpeg/libavcodec/mjpegbdec.c create mode 100644 ffmpeg/libavcodec/mjpegdec.c create mode 100644 ffmpeg/libavcodec/mjpegdec.h create mode 100644 ffmpeg/libavcodec/mjpegenc.c create mode 100644 ffmpeg/libavcodec/mjpegenc.h create mode 100644 ffmpeg/libavcodec/mjpegenc_common.c create mode 100644 ffmpeg/libavcodec/mjpegenc_common.h create mode 100644 ffmpeg/libavcodec/mlp.c create mode 100644 ffmpeg/libavcodec/mlp.h create mode 100644 ffmpeg/libavcodec/mlp_parser.c create mode 100644 ffmpeg/libavcodec/mlp_parser.h create mode 100644 ffmpeg/libavcodec/mlpdec.c create mode 100644 ffmpeg/libavcodec/mlpdsp.c create mode 100644 ffmpeg/libavcodec/mlpdsp.h create mode 100644 ffmpeg/libavcodec/mmvideo.c create mode 100644 ffmpeg/libavcodec/motion-test.c create mode 100644 ffmpeg/libavcodec/motion_est.c create mode 100644 ffmpeg/libavcodec/motion_est_template.c create mode 100644 ffmpeg/libavcodec/motionpixels.c create mode 100644 ffmpeg/libavcodec/motionpixels_tablegen.c create mode 100644 ffmpeg/libavcodec/motionpixels_tablegen.h create mode 100644 ffmpeg/libavcodec/movsub_bsf.c create mode 100644 ffmpeg/libavcodec/movtextdec.c create mode 100644 ffmpeg/libavcodec/movtextenc.c create mode 100644 ffmpeg/libavcodec/mp3_header_decompress_bsf.c create mode 100644 ffmpeg/libavcodec/mpc.c create mode 100644 ffmpeg/libavcodec/mpc.h create mode 100644 ffmpeg/libavcodec/mpc7.c create mode 100644 ffmpeg/libavcodec/mpc7data.h create mode 100644 ffmpeg/libavcodec/mpc8.c create mode 100644 ffmpeg/libavcodec/mpc8data.h create mode 100644 ffmpeg/libavcodec/mpc8huff.h create mode 100644 ffmpeg/libavcodec/mpcdata.h create mode 100644 ffmpeg/libavcodec/mpeg12.c create mode 100644 ffmpeg/libavcodec/mpeg12.h create mode 100644 ffmpeg/libavcodec/mpeg12data.c create mode 100644 ffmpeg/libavcodec/mpeg12data.h create mode 100644 ffmpeg/libavcodec/mpeg12dec.c create mode 100644 ffmpeg/libavcodec/mpeg12enc.c create mode 100644 ffmpeg/libavcodec/mpeg4audio.c create mode 100644 ffmpeg/libavcodec/mpeg4audio.h create mode 100644 ffmpeg/libavcodec/mpeg4data.h create mode 100644 ffmpeg/libavcodec/mpeg4video.c create mode 100644 ffmpeg/libavcodec/mpeg4video.h create mode 100644 ffmpeg/libavcodec/mpeg4video_parser.c create mode 100644 ffmpeg/libavcodec/mpeg4video_parser.h create mode 100644 ffmpeg/libavcodec/mpeg4videodec.c create mode 100644 ffmpeg/libavcodec/mpeg4videoenc.c create mode 100644 ffmpeg/libavcodec/mpeg_er.c create mode 100644 ffmpeg/libavcodec/mpeg_er.h create mode 100644 ffmpeg/libavcodec/mpegaudio.c create mode 100644 ffmpeg/libavcodec/mpegaudio.h create mode 100644 ffmpeg/libavcodec/mpegaudio_parser.c create mode 100644 ffmpeg/libavcodec/mpegaudio_tablegen.c create mode 100644 ffmpeg/libavcodec/mpegaudio_tablegen.h create mode 100644 ffmpeg/libavcodec/mpegaudiodata.c create mode 100644 ffmpeg/libavcodec/mpegaudiodata.h create mode 100644 ffmpeg/libavcodec/mpegaudiodec_fixed.c create mode 100644 ffmpeg/libavcodec/mpegaudiodec_float.c create mode 100644 ffmpeg/libavcodec/mpegaudiodec_template.c create mode 100644 ffmpeg/libavcodec/mpegaudiodecheader.c create mode 100644 ffmpeg/libavcodec/mpegaudiodecheader.h create mode 100644 ffmpeg/libavcodec/mpegaudiodectab.h create mode 100644 ffmpeg/libavcodec/mpegaudiodsp.c create mode 100644 ffmpeg/libavcodec/mpegaudiodsp.h create mode 100644 ffmpeg/libavcodec/mpegaudiodsp_data.c create mode 100644 ffmpeg/libavcodec/mpegaudiodsp_fixed.c create mode 100644 ffmpeg/libavcodec/mpegaudiodsp_float.c create mode 100644 ffmpeg/libavcodec/mpegaudiodsp_template.c create mode 100644 ffmpeg/libavcodec/mpegaudioenc_fixed.c create mode 100644 ffmpeg/libavcodec/mpegaudioenc_float.c create mode 100644 ffmpeg/libavcodec/mpegaudioenc_template.c create mode 100644 ffmpeg/libavcodec/mpegaudiotab.h create mode 100644 ffmpeg/libavcodec/mpegutils.c create mode 100644 ffmpeg/libavcodec/mpegutils.h create mode 100644 ffmpeg/libavcodec/mpegvideo.c create mode 100644 ffmpeg/libavcodec/mpegvideo.h create mode 100644 ffmpeg/libavcodec/mpegvideo_enc.c create mode 100644 ffmpeg/libavcodec/mpegvideo_motion.c create mode 100644 ffmpeg/libavcodec/mpegvideo_parser.c create mode 100644 ffmpeg/libavcodec/mpegvideo_xvmc.c create mode 100644 ffmpeg/libavcodec/mpegvideodsp.c create mode 100644 ffmpeg/libavcodec/mpegvideodsp.h create mode 100644 ffmpeg/libavcodec/mpegvideoencdsp.c create mode 100644 ffmpeg/libavcodec/mpegvideoencdsp.h create mode 100644 ffmpeg/libavcodec/mpl2dec.c create mode 100644 ffmpeg/libavcodec/mqc.c create mode 100644 ffmpeg/libavcodec/mqc.h create mode 100644 ffmpeg/libavcodec/mqcdec.c create mode 100644 ffmpeg/libavcodec/mqcenc.c create mode 100644 ffmpeg/libavcodec/msgsmdec.c create mode 100644 ffmpeg/libavcodec/msgsmdec.h create mode 100644 ffmpeg/libavcodec/msmpeg4.c create mode 100644 ffmpeg/libavcodec/msmpeg4.h create mode 100644 ffmpeg/libavcodec/msmpeg4data.c create mode 100644 ffmpeg/libavcodec/msmpeg4data.h create mode 100644 ffmpeg/libavcodec/msmpeg4dec.c create mode 100644 ffmpeg/libavcodec/msmpeg4enc.c create mode 100644 ffmpeg/libavcodec/msrle.c create mode 100644 ffmpeg/libavcodec/msrledec.c create mode 100644 ffmpeg/libavcodec/msrledec.h create mode 100644 ffmpeg/libavcodec/mss1.c create mode 100644 ffmpeg/libavcodec/mss12.c create mode 100644 ffmpeg/libavcodec/mss12.h create mode 100644 ffmpeg/libavcodec/mss2.c create mode 100644 ffmpeg/libavcodec/mss2dsp.c create mode 100644 ffmpeg/libavcodec/mss2dsp.h create mode 100644 ffmpeg/libavcodec/mss3.c create mode 100644 ffmpeg/libavcodec/mss34dsp.c create mode 100644 ffmpeg/libavcodec/mss34dsp.h create mode 100644 ffmpeg/libavcodec/mss4.c create mode 100644 ffmpeg/libavcodec/msvideo1.c create mode 100644 ffmpeg/libavcodec/msvideo1enc.c create mode 100644 ffmpeg/libavcodec/mvcdec.c create mode 100644 ffmpeg/libavcodec/mxpegdec.c create mode 100644 ffmpeg/libavcodec/nellymoser.c create mode 100644 ffmpeg/libavcodec/nellymoser.h create mode 100644 ffmpeg/libavcodec/nellymoserdec.c create mode 100644 ffmpeg/libavcodec/nellymoserenc.c create mode 100644 ffmpeg/libavcodec/neon/Makefile create mode 100644 ffmpeg/libavcodec/neon/mpegvideo.c create mode 100644 ffmpeg/libavcodec/noise_bsf.c create mode 100644 ffmpeg/libavcodec/nuv.c create mode 100644 ffmpeg/libavcodec/old_codec_ids.h create mode 100644 ffmpeg/libavcodec/on2avc.c create mode 100644 ffmpeg/libavcodec/on2avcdata.c create mode 100644 ffmpeg/libavcodec/on2avcdata.h create mode 100644 ffmpeg/libavcodec/options.c create mode 100644 ffmpeg/libavcodec/options_table.h create mode 100644 ffmpeg/libavcodec/opus.c create mode 100644 ffmpeg/libavcodec/opus.h create mode 100644 ffmpeg/libavcodec/opus_celt.c create mode 100644 ffmpeg/libavcodec/opus_imdct.c create mode 100644 ffmpeg/libavcodec/opus_imdct.h create mode 100644 ffmpeg/libavcodec/opus_parser.c create mode 100644 ffmpeg/libavcodec/opus_silk.c create mode 100644 ffmpeg/libavcodec/opusdec.c create mode 100644 ffmpeg/libavcodec/paf.h create mode 100644 ffmpeg/libavcodec/pafaudio.c create mode 100644 ffmpeg/libavcodec/pafvideo.c create mode 100644 ffmpeg/libavcodec/pamenc.c create mode 100644 ffmpeg/libavcodec/parser.c create mode 100644 ffmpeg/libavcodec/parser.h create mode 100644 ffmpeg/libavcodec/pcm-bluray.c create mode 100644 ffmpeg/libavcodec/pcm-dvd.c create mode 100644 ffmpeg/libavcodec/pcm.c create mode 100644 ffmpeg/libavcodec/pcm_tablegen.c create mode 100644 ffmpeg/libavcodec/pcm_tablegen.h create mode 100644 ffmpeg/libavcodec/pcx.c create mode 100644 ffmpeg/libavcodec/pcxenc.c create mode 100644 ffmpeg/libavcodec/pel_template.c create mode 100644 ffmpeg/libavcodec/pgssubdec.c create mode 100644 ffmpeg/libavcodec/pictordec.c create mode 100644 ffmpeg/libavcodec/pixblockdsp.c create mode 100644 ffmpeg/libavcodec/pixblockdsp.h create mode 100644 ffmpeg/libavcodec/pixblockdsp_template.c create mode 100644 ffmpeg/libavcodec/pixels.h create mode 100644 ffmpeg/libavcodec/png.c create mode 100644 ffmpeg/libavcodec/png.h create mode 100644 ffmpeg/libavcodec/png_parser.c create mode 100644 ffmpeg/libavcodec/pngdec.c create mode 100644 ffmpeg/libavcodec/pngdsp.c create mode 100644 ffmpeg/libavcodec/pngdsp.h create mode 100644 ffmpeg/libavcodec/pngenc.c create mode 100644 ffmpeg/libavcodec/pnm.c create mode 100644 ffmpeg/libavcodec/pnm.h create mode 100644 ffmpeg/libavcodec/pnm_parser.c create mode 100644 ffmpeg/libavcodec/pnmdec.c create mode 100644 ffmpeg/libavcodec/pnmenc.c create mode 100644 ffmpeg/libavcodec/ppc/Makefile create mode 100644 ffmpeg/libavcodec/ppc/asm.S create mode 100644 ffmpeg/libavcodec/ppc/audiodsp.c create mode 100644 ffmpeg/libavcodec/ppc/blockdsp.c create mode 100644 ffmpeg/libavcodec/ppc/dct-test.c create mode 100644 ffmpeg/libavcodec/ppc/fdct.h create mode 100644 ffmpeg/libavcodec/ppc/fdctdsp.c create mode 100644 ffmpeg/libavcodec/ppc/fft_altivec.S create mode 100644 ffmpeg/libavcodec/ppc/fft_init.c create mode 100644 ffmpeg/libavcodec/ppc/fft_vsx.c create mode 100644 ffmpeg/libavcodec/ppc/fft_vsx.h create mode 100644 ffmpeg/libavcodec/ppc/fmtconvert_altivec.c create mode 100644 ffmpeg/libavcodec/ppc/h264chroma_init.c create mode 100644 ffmpeg/libavcodec/ppc/h264chroma_template.c create mode 100644 ffmpeg/libavcodec/ppc/h264dsp.c create mode 100644 ffmpeg/libavcodec/ppc/h264qpel.c create mode 100644 ffmpeg/libavcodec/ppc/h264qpel_template.c create mode 100644 ffmpeg/libavcodec/ppc/hpeldsp_altivec.c create mode 100644 ffmpeg/libavcodec/ppc/hpeldsp_altivec.h create mode 100644 ffmpeg/libavcodec/ppc/huffyuvdsp_altivec.c create mode 100644 ffmpeg/libavcodec/ppc/idctdsp.c create mode 100644 ffmpeg/libavcodec/ppc/lossless_audiodsp_altivec.c create mode 100644 ffmpeg/libavcodec/ppc/mathops.h create mode 100644 ffmpeg/libavcodec/ppc/me_cmp.c create mode 100644 ffmpeg/libavcodec/ppc/mpegaudiodsp_altivec.c create mode 100644 ffmpeg/libavcodec/ppc/mpegvideo_altivec.c create mode 100644 ffmpeg/libavcodec/ppc/mpegvideodsp.c create mode 100644 ffmpeg/libavcodec/ppc/mpegvideoencdsp.c create mode 100644 ffmpeg/libavcodec/ppc/pixblockdsp.c create mode 100644 ffmpeg/libavcodec/ppc/svq1enc_altivec.c create mode 100644 ffmpeg/libavcodec/ppc/vc1dsp_altivec.c create mode 100644 ffmpeg/libavcodec/ppc/videodsp_ppc.c create mode 100644 ffmpeg/libavcodec/ppc/vorbisdsp_altivec.c create mode 100644 ffmpeg/libavcodec/ppc/vp3dsp_altivec.c create mode 100644 ffmpeg/libavcodec/ppc/vp8dsp_altivec.c create mode 100644 ffmpeg/libavcodec/proresdata.c create mode 100644 ffmpeg/libavcodec/proresdata.h create mode 100644 ffmpeg/libavcodec/proresdec.h create mode 100644 ffmpeg/libavcodec/proresdec2.c create mode 100644 ffmpeg/libavcodec/proresdec_lgpl.c create mode 100644 ffmpeg/libavcodec/proresdsp.c create mode 100644 ffmpeg/libavcodec/proresdsp.h create mode 100644 ffmpeg/libavcodec/proresenc_anatoliy.c create mode 100644 ffmpeg/libavcodec/proresenc_kostya.c create mode 100644 ffmpeg/libavcodec/psymodel.c create mode 100644 ffmpeg/libavcodec/psymodel.h create mode 100644 ffmpeg/libavcodec/pthread.c create mode 100644 ffmpeg/libavcodec/pthread_frame.c create mode 100644 ffmpeg/libavcodec/pthread_internal.h create mode 100644 ffmpeg/libavcodec/pthread_slice.c create mode 100644 ffmpeg/libavcodec/ptx.c create mode 100644 ffmpeg/libavcodec/put_bits.h create mode 100644 ffmpeg/libavcodec/qcelpdata.h create mode 100644 ffmpeg/libavcodec/qcelpdec.c create mode 100644 ffmpeg/libavcodec/qdm2.c create mode 100644 ffmpeg/libavcodec/qdm2_tablegen.c create mode 100644 ffmpeg/libavcodec/qdm2_tablegen.h create mode 100644 ffmpeg/libavcodec/qdm2data.h create mode 100644 ffmpeg/libavcodec/qdrw.c create mode 100644 ffmpeg/libavcodec/qpeg.c create mode 100644 ffmpeg/libavcodec/qpel_template.c create mode 100644 ffmpeg/libavcodec/qpeldsp.c create mode 100644 ffmpeg/libavcodec/qpeldsp.h create mode 100644 ffmpeg/libavcodec/qtrle.c create mode 100644 ffmpeg/libavcodec/qtrleenc.c create mode 100644 ffmpeg/libavcodec/r210dec.c create mode 100644 ffmpeg/libavcodec/r210enc.c create mode 100644 ffmpeg/libavcodec/ra144.c create mode 100644 ffmpeg/libavcodec/ra144.h create mode 100644 ffmpeg/libavcodec/ra144dec.c create mode 100644 ffmpeg/libavcodec/ra144enc.c create mode 100644 ffmpeg/libavcodec/ra288.c create mode 100644 ffmpeg/libavcodec/ra288.h create mode 100644 ffmpeg/libavcodec/ralf.c create mode 100644 ffmpeg/libavcodec/ralfdata.h create mode 100644 ffmpeg/libavcodec/rangecoder.c create mode 100644 ffmpeg/libavcodec/rangecoder.h create mode 100644 ffmpeg/libavcodec/ratecontrol.c create mode 100644 ffmpeg/libavcodec/ratecontrol.h create mode 100644 ffmpeg/libavcodec/raw.c create mode 100644 ffmpeg/libavcodec/raw.h create mode 100644 ffmpeg/libavcodec/rawdec.c create mode 100644 ffmpeg/libavcodec/rawenc.c create mode 100644 ffmpeg/libavcodec/rdft.c create mode 100644 ffmpeg/libavcodec/rdft.h create mode 100644 ffmpeg/libavcodec/realtextdec.c create mode 100644 ffmpeg/libavcodec/rectangle.h create mode 100644 ffmpeg/libavcodec/remove_extradata_bsf.c create mode 100644 ffmpeg/libavcodec/resample.c create mode 100644 ffmpeg/libavcodec/resample2.c create mode 100644 ffmpeg/libavcodec/rl.h create mode 100644 ffmpeg/libavcodec/rl2.c create mode 100644 ffmpeg/libavcodec/rle.c create mode 100644 ffmpeg/libavcodec/rle.h create mode 100644 ffmpeg/libavcodec/rnd_avg.h create mode 100644 ffmpeg/libavcodec/roqaudioenc.c create mode 100644 ffmpeg/libavcodec/roqvideo.c create mode 100644 ffmpeg/libavcodec/roqvideo.h create mode 100644 ffmpeg/libavcodec/roqvideodec.c create mode 100644 ffmpeg/libavcodec/roqvideoenc.c create mode 100644 ffmpeg/libavcodec/rpza.c create mode 100644 ffmpeg/libavcodec/rtjpeg.c create mode 100644 ffmpeg/libavcodec/rtjpeg.h create mode 100644 ffmpeg/libavcodec/rv10.c create mode 100644 ffmpeg/libavcodec/rv10enc.c create mode 100644 ffmpeg/libavcodec/rv20enc.c create mode 100644 ffmpeg/libavcodec/rv30.c create mode 100644 ffmpeg/libavcodec/rv30data.h create mode 100644 ffmpeg/libavcodec/rv30dsp.c create mode 100644 ffmpeg/libavcodec/rv34.c create mode 100644 ffmpeg/libavcodec/rv34.h create mode 100644 ffmpeg/libavcodec/rv34_parser.c create mode 100644 ffmpeg/libavcodec/rv34data.h create mode 100644 ffmpeg/libavcodec/rv34dsp.c create mode 100644 ffmpeg/libavcodec/rv34dsp.h create mode 100644 ffmpeg/libavcodec/rv34vlc.h create mode 100644 ffmpeg/libavcodec/rv40.c create mode 100644 ffmpeg/libavcodec/rv40data.h create mode 100644 ffmpeg/libavcodec/rv40dsp.c create mode 100644 ffmpeg/libavcodec/rv40vlc2.h create mode 100644 ffmpeg/libavcodec/s302m.c create mode 100644 ffmpeg/libavcodec/s302menc.c create mode 100644 ffmpeg/libavcodec/s3tc.c create mode 100644 ffmpeg/libavcodec/s3tc.h create mode 100644 ffmpeg/libavcodec/samidec.c create mode 100644 ffmpeg/libavcodec/sanm.c create mode 100644 ffmpeg/libavcodec/sbr.h create mode 100644 ffmpeg/libavcodec/sbrdsp.c create mode 100644 ffmpeg/libavcodec/sbrdsp.h create mode 100644 ffmpeg/libavcodec/sgi.h create mode 100644 ffmpeg/libavcodec/sgidec.c create mode 100644 ffmpeg/libavcodec/sgienc.c create mode 100644 ffmpeg/libavcodec/sgirledec.c create mode 100644 ffmpeg/libavcodec/sh4/README create mode 100644 ffmpeg/libavcodec/shorten.c create mode 100644 ffmpeg/libavcodec/simple_idct.c create mode 100644 ffmpeg/libavcodec/simple_idct.h create mode 100644 ffmpeg/libavcodec/simple_idct_template.c create mode 100644 ffmpeg/libavcodec/sinewin.c create mode 100644 ffmpeg/libavcodec/sinewin.h create mode 100644 ffmpeg/libavcodec/sinewin_tablegen.c create mode 100644 ffmpeg/libavcodec/sinewin_tablegen.h create mode 100644 ffmpeg/libavcodec/sipr.c create mode 100644 ffmpeg/libavcodec/sipr.h create mode 100644 ffmpeg/libavcodec/sipr16k.c create mode 100644 ffmpeg/libavcodec/sipr16kdata.h create mode 100644 ffmpeg/libavcodec/siprdata.h create mode 100644 ffmpeg/libavcodec/smacker.c create mode 100644 ffmpeg/libavcodec/smc.c create mode 100644 ffmpeg/libavcodec/smvjpegdec.c create mode 100644 ffmpeg/libavcodec/snow.c create mode 100644 ffmpeg/libavcodec/snow.h create mode 100644 ffmpeg/libavcodec/snow_dwt.c create mode 100644 ffmpeg/libavcodec/snow_dwt.h create mode 100644 ffmpeg/libavcodec/snowdata.h create mode 100644 ffmpeg/libavcodec/snowdec.c create mode 100644 ffmpeg/libavcodec/snowenc.c create mode 100644 ffmpeg/libavcodec/sonic.c create mode 100644 ffmpeg/libavcodec/sp5x.h create mode 100644 ffmpeg/libavcodec/sp5xdec.c create mode 100644 ffmpeg/libavcodec/sparc/README create mode 100644 ffmpeg/libavcodec/srtdec.c create mode 100644 ffmpeg/libavcodec/srtenc.c create mode 100644 ffmpeg/libavcodec/startcode.c create mode 100644 ffmpeg/libavcodec/startcode.h create mode 100644 ffmpeg/libavcodec/subviewerdec.c create mode 100644 ffmpeg/libavcodec/sunrast.c create mode 100644 ffmpeg/libavcodec/sunrast.h create mode 100644 ffmpeg/libavcodec/sunrastenc.c create mode 100644 ffmpeg/libavcodec/svq1.c create mode 100644 ffmpeg/libavcodec/svq1.h create mode 100644 ffmpeg/libavcodec/svq13.c create mode 100644 ffmpeg/libavcodec/svq1_cb.h create mode 100644 ffmpeg/libavcodec/svq1_vlc.h create mode 100644 ffmpeg/libavcodec/svq1dec.c create mode 100644 ffmpeg/libavcodec/svq1enc.c create mode 100644 ffmpeg/libavcodec/svq1enc.h create mode 100644 ffmpeg/libavcodec/svq1enc_cb.h create mode 100644 ffmpeg/libavcodec/svq3.c create mode 100644 ffmpeg/libavcodec/svq3.h create mode 100644 ffmpeg/libavcodec/synth_filter.c create mode 100644 ffmpeg/libavcodec/synth_filter.h create mode 100644 ffmpeg/libavcodec/tableprint.h create mode 100644 ffmpeg/libavcodec/tak.c create mode 100644 ffmpeg/libavcodec/tak.h create mode 100644 ffmpeg/libavcodec/tak_parser.c create mode 100644 ffmpeg/libavcodec/takdec.c create mode 100644 ffmpeg/libavcodec/targa.c create mode 100644 ffmpeg/libavcodec/targa.h create mode 100644 ffmpeg/libavcodec/targa_y216dec.c create mode 100644 ffmpeg/libavcodec/targaenc.c create mode 100644 ffmpeg/libavcodec/textdec.c create mode 100644 ffmpeg/libavcodec/thread.h create mode 100644 ffmpeg/libavcodec/tiertexseqv.c create mode 100644 ffmpeg/libavcodec/tiff.c create mode 100644 ffmpeg/libavcodec/tiff.h create mode 100644 ffmpeg/libavcodec/tiff_common.c create mode 100644 ffmpeg/libavcodec/tiff_common.h create mode 100644 ffmpeg/libavcodec/tiff_data.c create mode 100644 ffmpeg/libavcodec/tiff_data.h create mode 100644 ffmpeg/libavcodec/tiffenc.c create mode 100644 ffmpeg/libavcodec/tmv.c create mode 100644 ffmpeg/libavcodec/tpeldsp.c create mode 100644 ffmpeg/libavcodec/tpeldsp.h create mode 100644 ffmpeg/libavcodec/truemotion1.c create mode 100644 ffmpeg/libavcodec/truemotion1data.h create mode 100644 ffmpeg/libavcodec/truemotion2.c create mode 100644 ffmpeg/libavcodec/truespeech.c create mode 100644 ffmpeg/libavcodec/truespeech_data.h create mode 100644 ffmpeg/libavcodec/tscc.c create mode 100644 ffmpeg/libavcodec/tscc2.c create mode 100644 ffmpeg/libavcodec/tscc2data.h create mode 100644 ffmpeg/libavcodec/tta.c create mode 100644 ffmpeg/libavcodec/ttadata.c create mode 100644 ffmpeg/libavcodec/ttadata.h create mode 100644 ffmpeg/libavcodec/ttadsp.c create mode 100644 ffmpeg/libavcodec/ttadsp.h create mode 100644 ffmpeg/libavcodec/ttaenc.c create mode 100644 ffmpeg/libavcodec/twinvq.c create mode 100644 ffmpeg/libavcodec/twinvq.h create mode 100644 ffmpeg/libavcodec/twinvq_data.h create mode 100644 ffmpeg/libavcodec/twinvqdec.c create mode 100644 ffmpeg/libavcodec/txd.c create mode 100644 ffmpeg/libavcodec/ulti.c create mode 100644 ffmpeg/libavcodec/ulti_cb.h create mode 100644 ffmpeg/libavcodec/unary.h create mode 100644 ffmpeg/libavcodec/utils.c create mode 100644 ffmpeg/libavcodec/utvideo.c create mode 100644 ffmpeg/libavcodec/utvideo.h create mode 100644 ffmpeg/libavcodec/utvideodec.c create mode 100644 ffmpeg/libavcodec/utvideoenc.c create mode 100644 ffmpeg/libavcodec/v210dec.c create mode 100644 ffmpeg/libavcodec/v210dec.h create mode 100644 ffmpeg/libavcodec/v210enc.c create mode 100644 ffmpeg/libavcodec/v210x.c create mode 100644 ffmpeg/libavcodec/v308dec.c create mode 100644 ffmpeg/libavcodec/v308enc.c create mode 100644 ffmpeg/libavcodec/v408dec.c create mode 100644 ffmpeg/libavcodec/v408enc.c create mode 100644 ffmpeg/libavcodec/v410dec.c create mode 100644 ffmpeg/libavcodec/v410enc.c create mode 100644 ffmpeg/libavcodec/vaapi.c create mode 100644 ffmpeg/libavcodec/vaapi.h create mode 100644 ffmpeg/libavcodec/vaapi_h264.c create mode 100644 ffmpeg/libavcodec/vaapi_internal.h create mode 100644 ffmpeg/libavcodec/vaapi_mpeg.c create mode 100644 ffmpeg/libavcodec/vaapi_mpeg2.c create mode 100644 ffmpeg/libavcodec/vaapi_mpeg4.c create mode 100644 ffmpeg/libavcodec/vaapi_vc1.c create mode 100644 ffmpeg/libavcodec/vb.c create mode 100644 ffmpeg/libavcodec/vble.c create mode 100644 ffmpeg/libavcodec/vc1.c create mode 100644 ffmpeg/libavcodec/vc1.h create mode 100644 ffmpeg/libavcodec/vc1_common.h create mode 100644 ffmpeg/libavcodec/vc1_parser.c create mode 100644 ffmpeg/libavcodec/vc1acdata.h create mode 100644 ffmpeg/libavcodec/vc1data.c create mode 100644 ffmpeg/libavcodec/vc1data.h create mode 100644 ffmpeg/libavcodec/vc1dec.c create mode 100644 ffmpeg/libavcodec/vc1dsp.c create mode 100644 ffmpeg/libavcodec/vc1dsp.h create mode 100644 ffmpeg/libavcodec/vcr1.c create mode 100644 ffmpeg/libavcodec/vda.c create mode 100644 ffmpeg/libavcodec/vda.h create mode 100644 ffmpeg/libavcodec/vda_h264.c create mode 100644 ffmpeg/libavcodec/vda_h264_dec.c create mode 100644 ffmpeg/libavcodec/vda_internal.h create mode 100644 ffmpeg/libavcodec/vdpau.c create mode 100644 ffmpeg/libavcodec/vdpau.h create mode 100644 ffmpeg/libavcodec/vdpau_h264.c create mode 100644 ffmpeg/libavcodec/vdpau_internal.h create mode 100644 ffmpeg/libavcodec/vdpau_mpeg12.c create mode 100644 ffmpeg/libavcodec/vdpau_mpeg4.c create mode 100644 ffmpeg/libavcodec/vdpau_vc1.c create mode 100644 ffmpeg/libavcodec/version.h create mode 100644 ffmpeg/libavcodec/videodsp.c create mode 100644 ffmpeg/libavcodec/videodsp.h create mode 100644 ffmpeg/libavcodec/videodsp_template.c create mode 100644 ffmpeg/libavcodec/vima.c create mode 100644 ffmpeg/libavcodec/vmdaudio.c create mode 100644 ffmpeg/libavcodec/vmdvideo.c create mode 100644 ffmpeg/libavcodec/vmnc.c create mode 100644 ffmpeg/libavcodec/vorbis.c create mode 100644 ffmpeg/libavcodec/vorbis.h create mode 100644 ffmpeg/libavcodec/vorbis_data.c create mode 100644 ffmpeg/libavcodec/vorbis_enc_data.h create mode 100644 ffmpeg/libavcodec/vorbis_parser.c create mode 100644 ffmpeg/libavcodec/vorbis_parser.h create mode 100644 ffmpeg/libavcodec/vorbisdec.c create mode 100644 ffmpeg/libavcodec/vorbisdsp.c create mode 100644 ffmpeg/libavcodec/vorbisdsp.h create mode 100644 ffmpeg/libavcodec/vorbisenc.c create mode 100644 ffmpeg/libavcodec/vp3.c create mode 100644 ffmpeg/libavcodec/vp3_parser.c create mode 100644 ffmpeg/libavcodec/vp3data.h create mode 100644 ffmpeg/libavcodec/vp3dsp.c create mode 100644 ffmpeg/libavcodec/vp3dsp.h create mode 100644 ffmpeg/libavcodec/vp5.c create mode 100644 ffmpeg/libavcodec/vp56.c create mode 100644 ffmpeg/libavcodec/vp56.h create mode 100644 ffmpeg/libavcodec/vp56data.c create mode 100644 ffmpeg/libavcodec/vp56data.h create mode 100644 ffmpeg/libavcodec/vp56dsp.c create mode 100644 ffmpeg/libavcodec/vp56dsp.h create mode 100644 ffmpeg/libavcodec/vp56rac.c create mode 100644 ffmpeg/libavcodec/vp5data.h create mode 100644 ffmpeg/libavcodec/vp6.c create mode 100644 ffmpeg/libavcodec/vp6data.h create mode 100644 ffmpeg/libavcodec/vp6dsp.c create mode 100644 ffmpeg/libavcodec/vp8.c create mode 100644 ffmpeg/libavcodec/vp8.h create mode 100644 ffmpeg/libavcodec/vp8_parser.c create mode 100644 ffmpeg/libavcodec/vp8data.h create mode 100644 ffmpeg/libavcodec/vp8dsp.c create mode 100644 ffmpeg/libavcodec/vp8dsp.h create mode 100644 ffmpeg/libavcodec/vp9.c create mode 100644 ffmpeg/libavcodec/vp9.h create mode 100644 ffmpeg/libavcodec/vp9_parser.c create mode 100644 ffmpeg/libavcodec/vp9data.h create mode 100644 ffmpeg/libavcodec/vp9dsp.c create mode 100644 ffmpeg/libavcodec/vp9dsp.h create mode 100644 ffmpeg/libavcodec/vqavideo.c create mode 100644 ffmpeg/libavcodec/wavpack.c create mode 100644 ffmpeg/libavcodec/wavpack.h create mode 100644 ffmpeg/libavcodec/wavpackenc.c create mode 100644 ffmpeg/libavcodec/wavpackenc.h create mode 100644 ffmpeg/libavcodec/webp.c create mode 100644 ffmpeg/libavcodec/webvttdec.c create mode 100644 ffmpeg/libavcodec/webvttenc.c create mode 100644 ffmpeg/libavcodec/wma.c create mode 100644 ffmpeg/libavcodec/wma.h create mode 100644 ffmpeg/libavcodec/wma_common.c create mode 100644 ffmpeg/libavcodec/wma_common.h create mode 100644 ffmpeg/libavcodec/wma_freqs.c create mode 100644 ffmpeg/libavcodec/wma_freqs.h create mode 100644 ffmpeg/libavcodec/wmadata.h create mode 100644 ffmpeg/libavcodec/wmadec.c create mode 100644 ffmpeg/libavcodec/wmaenc.c create mode 100644 ffmpeg/libavcodec/wmalosslessdec.c create mode 100644 ffmpeg/libavcodec/wmaprodata.h create mode 100644 ffmpeg/libavcodec/wmaprodec.c create mode 100644 ffmpeg/libavcodec/wmavoice.c create mode 100644 ffmpeg/libavcodec/wmavoice_data.h create mode 100644 ffmpeg/libavcodec/wmv2.c create mode 100644 ffmpeg/libavcodec/wmv2.h create mode 100644 ffmpeg/libavcodec/wmv2dec.c create mode 100644 ffmpeg/libavcodec/wmv2dsp.c create mode 100644 ffmpeg/libavcodec/wmv2dsp.h create mode 100644 ffmpeg/libavcodec/wmv2enc.c create mode 100644 ffmpeg/libavcodec/wnv1.c create mode 100644 ffmpeg/libavcodec/ws-snd1.c create mode 100644 ffmpeg/libavcodec/x86/Makefile create mode 100644 ffmpeg/libavcodec/x86/ac3dsp.asm create mode 100644 ffmpeg/libavcodec/x86/ac3dsp_init.c create mode 100644 ffmpeg/libavcodec/x86/audiodsp.asm create mode 100644 ffmpeg/libavcodec/x86/audiodsp_init.c create mode 100644 ffmpeg/libavcodec/x86/blockdsp.asm create mode 100644 ffmpeg/libavcodec/x86/blockdsp_init.c create mode 100644 ffmpeg/libavcodec/x86/bswapdsp.asm create mode 100644 ffmpeg/libavcodec/x86/bswapdsp_init.c create mode 100644 ffmpeg/libavcodec/x86/cabac.h create mode 100644 ffmpeg/libavcodec/x86/cavsdsp.c create mode 100644 ffmpeg/libavcodec/x86/constants.c create mode 100644 ffmpeg/libavcodec/x86/constants.h create mode 100644 ffmpeg/libavcodec/x86/dcadsp.asm create mode 100644 ffmpeg/libavcodec/x86/dcadsp_init.c create mode 100644 ffmpeg/libavcodec/x86/dct-test.c create mode 100644 ffmpeg/libavcodec/x86/dct32.asm create mode 100644 ffmpeg/libavcodec/x86/dct_init.c create mode 100644 ffmpeg/libavcodec/x86/deinterlace.asm create mode 100644 ffmpeg/libavcodec/x86/dirac_dwt.c create mode 100644 ffmpeg/libavcodec/x86/dirac_dwt.h create mode 100644 ffmpeg/libavcodec/x86/diracdsp_mmx.c create mode 100644 ffmpeg/libavcodec/x86/diracdsp_mmx.h create mode 100644 ffmpeg/libavcodec/x86/diracdsp_yasm.asm create mode 100644 ffmpeg/libavcodec/x86/dnxhdenc.asm create mode 100644 ffmpeg/libavcodec/x86/dnxhdenc_init.c create mode 100644 ffmpeg/libavcodec/x86/dwt_yasm.asm create mode 100644 ffmpeg/libavcodec/x86/fdct.c create mode 100644 ffmpeg/libavcodec/x86/fdct.h create mode 100644 ffmpeg/libavcodec/x86/fdctdsp_init.c create mode 100644 ffmpeg/libavcodec/x86/fft.asm create mode 100644 ffmpeg/libavcodec/x86/fft.h create mode 100644 ffmpeg/libavcodec/x86/fft_init.c create mode 100644 ffmpeg/libavcodec/x86/flac_dsp_gpl.asm create mode 100644 ffmpeg/libavcodec/x86/flacdsp.asm create mode 100644 ffmpeg/libavcodec/x86/flacdsp_init.c create mode 100644 ffmpeg/libavcodec/x86/fmtconvert.asm create mode 100644 ffmpeg/libavcodec/x86/fmtconvert_init.c create mode 100644 ffmpeg/libavcodec/x86/fpel.asm create mode 100644 ffmpeg/libavcodec/x86/fpel.h create mode 100644 ffmpeg/libavcodec/x86/h263_loopfilter.asm create mode 100644 ffmpeg/libavcodec/x86/h263dsp_init.c create mode 100644 ffmpeg/libavcodec/x86/h264_chromamc.asm create mode 100644 ffmpeg/libavcodec/x86/h264_chromamc_10bit.asm create mode 100644 ffmpeg/libavcodec/x86/h264_deblock.asm create mode 100644 ffmpeg/libavcodec/x86/h264_deblock_10bit.asm create mode 100644 ffmpeg/libavcodec/x86/h264_i386.h create mode 100644 ffmpeg/libavcodec/x86/h264_idct.asm create mode 100644 ffmpeg/libavcodec/x86/h264_idct_10bit.asm create mode 100644 ffmpeg/libavcodec/x86/h264_intrapred.asm create mode 100644 ffmpeg/libavcodec/x86/h264_intrapred_10bit.asm create mode 100644 ffmpeg/libavcodec/x86/h264_intrapred_init.c create mode 100644 ffmpeg/libavcodec/x86/h264_qpel.c create mode 100644 ffmpeg/libavcodec/x86/h264_qpel_10bit.asm create mode 100644 ffmpeg/libavcodec/x86/h264_qpel_8bit.asm create mode 100644 ffmpeg/libavcodec/x86/h264_weight.asm create mode 100644 ffmpeg/libavcodec/x86/h264_weight_10bit.asm create mode 100644 ffmpeg/libavcodec/x86/h264chroma_init.c create mode 100644 ffmpeg/libavcodec/x86/h264dsp_init.c create mode 100644 ffmpeg/libavcodec/x86/hevc_deblock.asm create mode 100644 ffmpeg/libavcodec/x86/hevc_idct.asm create mode 100644 ffmpeg/libavcodec/x86/hevc_mc.asm create mode 100644 ffmpeg/libavcodec/x86/hevc_res_add.asm create mode 100644 ffmpeg/libavcodec/x86/hevcdsp.h create mode 100644 ffmpeg/libavcodec/x86/hevcdsp_init.c create mode 100644 ffmpeg/libavcodec/x86/hpeldsp.asm create mode 100644 ffmpeg/libavcodec/x86/hpeldsp.h create mode 100644 ffmpeg/libavcodec/x86/hpeldsp_init.c create mode 100644 ffmpeg/libavcodec/x86/hpeldsp_rnd_template.c create mode 100644 ffmpeg/libavcodec/x86/huffyuvdsp.asm create mode 100644 ffmpeg/libavcodec/x86/huffyuvdsp_init.c create mode 100644 ffmpeg/libavcodec/x86/huffyuvencdsp_mmx.c create mode 100644 ffmpeg/libavcodec/x86/idctdsp.asm create mode 100644 ffmpeg/libavcodec/x86/idctdsp.h create mode 100644 ffmpeg/libavcodec/x86/idctdsp_init.c create mode 100644 ffmpeg/libavcodec/x86/idctdsp_mmx.c create mode 100644 ffmpeg/libavcodec/x86/imdct36.asm create mode 100644 ffmpeg/libavcodec/x86/inline_asm.h create mode 100644 ffmpeg/libavcodec/x86/lossless_audiodsp.asm create mode 100644 ffmpeg/libavcodec/x86/lossless_audiodsp_init.c create mode 100644 ffmpeg/libavcodec/x86/lossless_videodsp.asm create mode 100644 ffmpeg/libavcodec/x86/lossless_videodsp_init.c create mode 100644 ffmpeg/libavcodec/x86/lpc.c create mode 100644 ffmpeg/libavcodec/x86/mathops.h create mode 100644 ffmpeg/libavcodec/x86/me_cmp.asm create mode 100644 ffmpeg/libavcodec/x86/me_cmp_init.c create mode 100644 ffmpeg/libavcodec/x86/mlpdsp.c create mode 100644 ffmpeg/libavcodec/x86/mpegaudiodsp.c create mode 100644 ffmpeg/libavcodec/x86/mpegvideo.c create mode 100644 ffmpeg/libavcodec/x86/mpegvideodsp.c create mode 100644 ffmpeg/libavcodec/x86/mpegvideoenc.c create mode 100644 ffmpeg/libavcodec/x86/mpegvideoenc_qns_template.c create mode 100644 ffmpeg/libavcodec/x86/mpegvideoenc_template.c create mode 100644 ffmpeg/libavcodec/x86/mpegvideoencdsp.asm create mode 100644 ffmpeg/libavcodec/x86/mpegvideoencdsp_init.c create mode 100644 ffmpeg/libavcodec/x86/pixblockdsp.asm create mode 100644 ffmpeg/libavcodec/x86/pixblockdsp_init.c create mode 100644 ffmpeg/libavcodec/x86/pngdsp.asm create mode 100644 ffmpeg/libavcodec/x86/pngdsp_init.c create mode 100644 ffmpeg/libavcodec/x86/proresdsp.asm create mode 100644 ffmpeg/libavcodec/x86/proresdsp_init.c create mode 100644 ffmpeg/libavcodec/x86/qpel.asm create mode 100644 ffmpeg/libavcodec/x86/qpeldsp.asm create mode 100644 ffmpeg/libavcodec/x86/qpeldsp_init.c create mode 100644 ffmpeg/libavcodec/x86/rnd_template.c create mode 100644 ffmpeg/libavcodec/x86/rv34dsp.asm create mode 100644 ffmpeg/libavcodec/x86/rv34dsp_init.c create mode 100644 ffmpeg/libavcodec/x86/rv40dsp.asm create mode 100644 ffmpeg/libavcodec/x86/rv40dsp_init.c create mode 100644 ffmpeg/libavcodec/x86/sbrdsp.asm create mode 100644 ffmpeg/libavcodec/x86/sbrdsp_init.c create mode 100644 ffmpeg/libavcodec/x86/simple_idct.c create mode 100644 ffmpeg/libavcodec/x86/simple_idct.h create mode 100644 ffmpeg/libavcodec/x86/snowdsp.c create mode 100644 ffmpeg/libavcodec/x86/svq1enc.asm create mode 100644 ffmpeg/libavcodec/x86/svq1enc_init.c create mode 100644 ffmpeg/libavcodec/x86/ttadsp.asm create mode 100644 ffmpeg/libavcodec/x86/ttadsp_init.c create mode 100644 ffmpeg/libavcodec/x86/v210-init.c create mode 100644 ffmpeg/libavcodec/x86/v210.asm create mode 100644 ffmpeg/libavcodec/x86/vc1dsp.asm create mode 100644 ffmpeg/libavcodec/x86/vc1dsp.h create mode 100644 ffmpeg/libavcodec/x86/vc1dsp_init.c create mode 100644 ffmpeg/libavcodec/x86/vc1dsp_mmx.c create mode 100644 ffmpeg/libavcodec/x86/videodsp.asm create mode 100644 ffmpeg/libavcodec/x86/videodsp_init.c create mode 100644 ffmpeg/libavcodec/x86/vorbisdsp.asm create mode 100644 ffmpeg/libavcodec/x86/vorbisdsp_init.c create mode 100644 ffmpeg/libavcodec/x86/vp3dsp.asm create mode 100644 ffmpeg/libavcodec/x86/vp3dsp_init.c create mode 100644 ffmpeg/libavcodec/x86/vp56_arith.h create mode 100644 ffmpeg/libavcodec/x86/vp6dsp.asm create mode 100644 ffmpeg/libavcodec/x86/vp6dsp_init.c create mode 100644 ffmpeg/libavcodec/x86/vp8dsp.asm create mode 100644 ffmpeg/libavcodec/x86/vp8dsp_init.c create mode 100644 ffmpeg/libavcodec/x86/vp8dsp_loopfilter.asm create mode 100644 ffmpeg/libavcodec/x86/vp9dsp_init.c create mode 100644 ffmpeg/libavcodec/x86/vp9intrapred.asm create mode 100644 ffmpeg/libavcodec/x86/vp9itxfm.asm create mode 100644 ffmpeg/libavcodec/x86/vp9lpf.asm create mode 100644 ffmpeg/libavcodec/x86/vp9mc.asm create mode 100644 ffmpeg/libavcodec/x86/w64xmmtest.c create mode 100644 ffmpeg/libavcodec/x86/xvididct.h create mode 100644 ffmpeg/libavcodec/x86/xvididct_init.c create mode 100644 ffmpeg/libavcodec/x86/xvididct_mmx.c create mode 100644 ffmpeg/libavcodec/x86/xvididct_sse2.c create mode 100644 ffmpeg/libavcodec/xan.c create mode 100644 ffmpeg/libavcodec/xbmdec.c create mode 100644 ffmpeg/libavcodec/xbmenc.c create mode 100644 ffmpeg/libavcodec/xface.c create mode 100644 ffmpeg/libavcodec/xface.h create mode 100644 ffmpeg/libavcodec/xfacedec.c create mode 100644 ffmpeg/libavcodec/xfaceenc.c create mode 100644 ffmpeg/libavcodec/xiph.c create mode 100644 ffmpeg/libavcodec/xiph.h create mode 100644 ffmpeg/libavcodec/xl.c create mode 100644 ffmpeg/libavcodec/xsubdec.c create mode 100644 ffmpeg/libavcodec/xsubenc.c create mode 100644 ffmpeg/libavcodec/xvididct.c create mode 100644 ffmpeg/libavcodec/xvididct.h create mode 100644 ffmpeg/libavcodec/xvmc.h create mode 100644 ffmpeg/libavcodec/xvmc_internal.h create mode 100644 ffmpeg/libavcodec/xwd.h create mode 100644 ffmpeg/libavcodec/xwddec.c create mode 100644 ffmpeg/libavcodec/xwdenc.c create mode 100644 ffmpeg/libavcodec/xxan.c create mode 100644 ffmpeg/libavcodec/y41pdec.c create mode 100644 ffmpeg/libavcodec/y41penc.c create mode 100644 ffmpeg/libavcodec/yop.c create mode 100644 ffmpeg/libavcodec/yuv4dec.c create mode 100644 ffmpeg/libavcodec/yuv4enc.c create mode 100644 ffmpeg/libavcodec/zerocodec.c create mode 100644 ffmpeg/libavcodec/zmbv.c create mode 100644 ffmpeg/libavcodec/zmbvenc.c create mode 100644 ffmpeg/libavdevice/Makefile create mode 100644 ffmpeg/libavdevice/alldevices.c create mode 100644 ffmpeg/libavdevice/alsa-audio-common.c create mode 100644 ffmpeg/libavdevice/alsa-audio-dec.c create mode 100644 ffmpeg/libavdevice/alsa-audio-enc.c create mode 100644 ffmpeg/libavdevice/alsa-audio.h create mode 100644 ffmpeg/libavdevice/avdevice.c create mode 100644 ffmpeg/libavdevice/avdevice.h create mode 100644 ffmpeg/libavdevice/avdeviceres.rc create mode 100644 ffmpeg/libavdevice/avfoundation.m create mode 100644 ffmpeg/libavdevice/bktr.c create mode 100644 ffmpeg/libavdevice/caca.c create mode 100644 ffmpeg/libavdevice/decklink_enc.cpp create mode 100644 ffmpeg/libavdevice/decklink_enc.h create mode 100644 ffmpeg/libavdevice/decklink_enc_c.c create mode 100644 ffmpeg/libavdevice/dshow.c create mode 100644 ffmpeg/libavdevice/dshow_capture.h create mode 100644 ffmpeg/libavdevice/dshow_common.c create mode 100644 ffmpeg/libavdevice/dshow_enummediatypes.c create mode 100644 ffmpeg/libavdevice/dshow_enumpins.c create mode 100644 ffmpeg/libavdevice/dshow_filter.c create mode 100644 ffmpeg/libavdevice/dshow_pin.c create mode 100644 ffmpeg/libavdevice/dv1394.c create mode 100644 ffmpeg/libavdevice/dv1394.h create mode 100644 ffmpeg/libavdevice/fbdev_common.c create mode 100644 ffmpeg/libavdevice/fbdev_common.h create mode 100644 ffmpeg/libavdevice/fbdev_dec.c create mode 100644 ffmpeg/libavdevice/fbdev_enc.c create mode 100644 ffmpeg/libavdevice/file_open.c create mode 100644 ffmpeg/libavdevice/gdigrab.c create mode 100644 ffmpeg/libavdevice/iec61883.c create mode 100644 ffmpeg/libavdevice/jack_audio.c create mode 100644 ffmpeg/libavdevice/lavfi.c create mode 100644 ffmpeg/libavdevice/libavdevice.v create mode 100644 ffmpeg/libavdevice/libcdio.c create mode 100644 ffmpeg/libavdevice/libdc1394.c create mode 100644 ffmpeg/libavdevice/openal-dec.c create mode 100644 ffmpeg/libavdevice/opengl_enc.c create mode 100644 ffmpeg/libavdevice/opengl_enc_shaders.h create mode 100644 ffmpeg/libavdevice/oss_audio.c create mode 100644 ffmpeg/libavdevice/oss_audio.h create mode 100644 ffmpeg/libavdevice/oss_audio_dec.c create mode 100644 ffmpeg/libavdevice/oss_audio_enc.c create mode 100644 ffmpeg/libavdevice/pulse_audio_common.c create mode 100644 ffmpeg/libavdevice/pulse_audio_common.h create mode 100644 ffmpeg/libavdevice/pulse_audio_dec.c create mode 100644 ffmpeg/libavdevice/pulse_audio_enc.c create mode 100644 ffmpeg/libavdevice/qtkit.m create mode 100644 ffmpeg/libavdevice/sdl.c create mode 100644 ffmpeg/libavdevice/sndio_common.c create mode 100644 ffmpeg/libavdevice/sndio_common.h create mode 100644 ffmpeg/libavdevice/sndio_dec.c create mode 100644 ffmpeg/libavdevice/sndio_enc.c create mode 100644 ffmpeg/libavdevice/timefilter.c create mode 100644 ffmpeg/libavdevice/timefilter.h create mode 100644 ffmpeg/libavdevice/v4l.c create mode 100644 ffmpeg/libavdevice/v4l2-common.c create mode 100644 ffmpeg/libavdevice/v4l2-common.h create mode 100644 ffmpeg/libavdevice/v4l2.c create mode 100644 ffmpeg/libavdevice/v4l2enc.c create mode 100644 ffmpeg/libavdevice/version.h create mode 100644 ffmpeg/libavdevice/vfwcap.c create mode 100644 ffmpeg/libavdevice/x11grab.c create mode 100644 ffmpeg/libavdevice/xv.c create mode 100644 ffmpeg/libavfilter/Makefile create mode 100644 ffmpeg/libavfilter/aeval.c create mode 100644 ffmpeg/libavfilter/af_aconvert.c create mode 100644 ffmpeg/libavfilter/af_adelay.c create mode 100644 ffmpeg/libavfilter/af_aecho.c create mode 100644 ffmpeg/libavfilter/af_afade.c create mode 100644 ffmpeg/libavfilter/af_aformat.c create mode 100644 ffmpeg/libavfilter/af_amerge.c create mode 100644 ffmpeg/libavfilter/af_amix.c create mode 100644 ffmpeg/libavfilter/af_anull.c create mode 100644 ffmpeg/libavfilter/af_apad.c create mode 100644 ffmpeg/libavfilter/af_aphaser.c create mode 100644 ffmpeg/libavfilter/af_aresample.c create mode 100644 ffmpeg/libavfilter/af_asetnsamples.c create mode 100644 ffmpeg/libavfilter/af_asetrate.c create mode 100644 ffmpeg/libavfilter/af_ashowinfo.c create mode 100644 ffmpeg/libavfilter/af_astats.c create mode 100644 ffmpeg/libavfilter/af_astreamsync.c create mode 100644 ffmpeg/libavfilter/af_asyncts.c create mode 100644 ffmpeg/libavfilter/af_atempo.c create mode 100644 ffmpeg/libavfilter/af_biquads.c create mode 100644 ffmpeg/libavfilter/af_bs2b.c create mode 100644 ffmpeg/libavfilter/af_channelmap.c create mode 100644 ffmpeg/libavfilter/af_channelsplit.c create mode 100644 ffmpeg/libavfilter/af_compand.c create mode 100644 ffmpeg/libavfilter/af_earwax.c create mode 100644 ffmpeg/libavfilter/af_flanger.c create mode 100644 ffmpeg/libavfilter/af_join.c create mode 100644 ffmpeg/libavfilter/af_ladspa.c create mode 100644 ffmpeg/libavfilter/af_pan.c create mode 100644 ffmpeg/libavfilter/af_replaygain.c create mode 100644 ffmpeg/libavfilter/af_resample.c create mode 100644 ffmpeg/libavfilter/af_silencedetect.c create mode 100644 ffmpeg/libavfilter/af_silenceremove.c create mode 100644 ffmpeg/libavfilter/af_volume.c create mode 100644 ffmpeg/libavfilter/af_volume.h create mode 100644 ffmpeg/libavfilter/af_volumedetect.c create mode 100644 ffmpeg/libavfilter/all_channel_layouts.inc create mode 100644 ffmpeg/libavfilter/allfilters.c create mode 100644 ffmpeg/libavfilter/asink_anullsink.c create mode 100644 ffmpeg/libavfilter/asrc_abuffer.h create mode 100644 ffmpeg/libavfilter/asrc_anullsrc.c create mode 100644 ffmpeg/libavfilter/asrc_flite.c create mode 100644 ffmpeg/libavfilter/asrc_sine.c create mode 100644 ffmpeg/libavfilter/audio.c create mode 100644 ffmpeg/libavfilter/audio.h create mode 100644 ffmpeg/libavfilter/avcodec.c create mode 100644 ffmpeg/libavfilter/avcodec.h create mode 100644 ffmpeg/libavfilter/avf_avectorscope.c create mode 100644 ffmpeg/libavfilter/avf_concat.c create mode 100644 ffmpeg/libavfilter/avf_showcqt.c create mode 100644 ffmpeg/libavfilter/avf_showspectrum.c create mode 100644 ffmpeg/libavfilter/avf_showwaves.c create mode 100644 ffmpeg/libavfilter/avfilter.c create mode 100644 ffmpeg/libavfilter/avfilter.h create mode 100644 ffmpeg/libavfilter/avfiltergraph.c create mode 100644 ffmpeg/libavfilter/avfiltergraph.h create mode 100644 ffmpeg/libavfilter/avfilterres.rc create mode 100644 ffmpeg/libavfilter/bbox.c create mode 100644 ffmpeg/libavfilter/bbox.h create mode 100644 ffmpeg/libavfilter/buffer.c create mode 100644 ffmpeg/libavfilter/bufferqueue.h create mode 100644 ffmpeg/libavfilter/buffersink.c create mode 100644 ffmpeg/libavfilter/buffersink.h create mode 100644 ffmpeg/libavfilter/buffersrc.c create mode 100644 ffmpeg/libavfilter/buffersrc.h create mode 100644 ffmpeg/libavfilter/deshake.h create mode 100644 ffmpeg/libavfilter/deshake_opencl.c create mode 100644 ffmpeg/libavfilter/deshake_opencl.h create mode 100644 ffmpeg/libavfilter/deshake_opencl_kernel.h create mode 100644 ffmpeg/libavfilter/drawutils.c create mode 100644 ffmpeg/libavfilter/drawutils.h create mode 100644 ffmpeg/libavfilter/dualinput.c create mode 100644 ffmpeg/libavfilter/dualinput.h create mode 100644 ffmpeg/libavfilter/f_ebur128.c create mode 100644 ffmpeg/libavfilter/f_interleave.c create mode 100644 ffmpeg/libavfilter/f_perms.c create mode 100644 ffmpeg/libavfilter/f_select.c create mode 100644 ffmpeg/libavfilter/f_sendcmd.c create mode 100644 ffmpeg/libavfilter/f_zmq.c create mode 100644 ffmpeg/libavfilter/fifo.c create mode 100644 ffmpeg/libavfilter/filtfmts.c create mode 100644 ffmpeg/libavfilter/formats.c create mode 100644 ffmpeg/libavfilter/formats.h create mode 100644 ffmpeg/libavfilter/framesync.c create mode 100644 ffmpeg/libavfilter/framesync.h create mode 100644 ffmpeg/libavfilter/generate_wave_table.c create mode 100644 ffmpeg/libavfilter/generate_wave_table.h create mode 100644 ffmpeg/libavfilter/gradfun.h create mode 100644 ffmpeg/libavfilter/graphdump.c create mode 100644 ffmpeg/libavfilter/graphparser.c create mode 100644 ffmpeg/libavfilter/internal.h create mode 100644 ffmpeg/libavfilter/lavfutils.c create mode 100644 ffmpeg/libavfilter/lavfutils.h create mode 100644 ffmpeg/libavfilter/libavfilter.v create mode 100644 ffmpeg/libavfilter/libmpcodecs/av_helpers.h create mode 100644 ffmpeg/libavfilter/libmpcodecs/cpudetect.h create mode 100644 ffmpeg/libavfilter/libmpcodecs/img_format.c create mode 100644 ffmpeg/libavfilter/libmpcodecs/img_format.h create mode 100644 ffmpeg/libavfilter/libmpcodecs/libvo/fastmemcpy.h create mode 100644 ffmpeg/libavfilter/libmpcodecs/libvo/video_out.h create mode 100644 ffmpeg/libavfilter/libmpcodecs/mp_image.c create mode 100644 ffmpeg/libavfilter/libmpcodecs/mp_image.h create mode 100644 ffmpeg/libavfilter/libmpcodecs/mp_msg.h create mode 100644 ffmpeg/libavfilter/libmpcodecs/mpc_info.h create mode 100644 ffmpeg/libavfilter/libmpcodecs/vf.h create mode 100644 ffmpeg/libavfilter/libmpcodecs/vf_eq.c create mode 100644 ffmpeg/libavfilter/libmpcodecs/vf_eq2.c create mode 100644 ffmpeg/libavfilter/libmpcodecs/vf_fspp.c create mode 100644 ffmpeg/libavfilter/libmpcodecs/vf_ilpack.c create mode 100644 ffmpeg/libavfilter/libmpcodecs/vf_pp7.c create mode 100644 ffmpeg/libavfilter/libmpcodecs/vf_softpulldown.c create mode 100644 ffmpeg/libavfilter/libmpcodecs/vf_uspp.c create mode 100644 ffmpeg/libavfilter/libmpcodecs/vfcap.h create mode 100644 ffmpeg/libavfilter/log2_tab.c create mode 100644 ffmpeg/libavfilter/lswsutils.c create mode 100644 ffmpeg/libavfilter/lswsutils.h create mode 100644 ffmpeg/libavfilter/opencl_allkernels.c create mode 100644 ffmpeg/libavfilter/opencl_allkernels.h create mode 100644 ffmpeg/libavfilter/pthread.c create mode 100644 ffmpeg/libavfilter/setpts.c create mode 100644 ffmpeg/libavfilter/settb.c create mode 100644 ffmpeg/libavfilter/split.c create mode 100644 ffmpeg/libavfilter/src_movie.c create mode 100644 ffmpeg/libavfilter/thread.h create mode 100644 ffmpeg/libavfilter/transform.c create mode 100644 ffmpeg/libavfilter/transform.h create mode 100644 ffmpeg/libavfilter/trim.c create mode 100644 ffmpeg/libavfilter/unsharp.h create mode 100644 ffmpeg/libavfilter/unsharp_opencl.c create mode 100644 ffmpeg/libavfilter/unsharp_opencl.h create mode 100644 ffmpeg/libavfilter/unsharp_opencl_kernel.h create mode 100644 ffmpeg/libavfilter/version.h create mode 100644 ffmpeg/libavfilter/vf_alphamerge.c create mode 100644 ffmpeg/libavfilter/vf_aspect.c create mode 100644 ffmpeg/libavfilter/vf_bbox.c create mode 100644 ffmpeg/libavfilter/vf_blackdetect.c create mode 100644 ffmpeg/libavfilter/vf_blackframe.c create mode 100644 ffmpeg/libavfilter/vf_blend.c create mode 100644 ffmpeg/libavfilter/vf_boxblur.c create mode 100644 ffmpeg/libavfilter/vf_codecview.c create mode 100644 ffmpeg/libavfilter/vf_colorbalance.c create mode 100644 ffmpeg/libavfilter/vf_colorchannelmixer.c create mode 100644 ffmpeg/libavfilter/vf_colormatrix.c create mode 100644 ffmpeg/libavfilter/vf_copy.c create mode 100644 ffmpeg/libavfilter/vf_crop.c create mode 100644 ffmpeg/libavfilter/vf_cropdetect.c create mode 100644 ffmpeg/libavfilter/vf_curves.c create mode 100644 ffmpeg/libavfilter/vf_dctdnoiz.c create mode 100644 ffmpeg/libavfilter/vf_decimate.c create mode 100644 ffmpeg/libavfilter/vf_dejudder.c create mode 100644 ffmpeg/libavfilter/vf_delogo.c create mode 100644 ffmpeg/libavfilter/vf_deshake.c create mode 100644 ffmpeg/libavfilter/vf_drawbox.c create mode 100644 ffmpeg/libavfilter/vf_drawtext.c create mode 100644 ffmpeg/libavfilter/vf_edgedetect.c create mode 100644 ffmpeg/libavfilter/vf_elbg.c create mode 100644 ffmpeg/libavfilter/vf_extractplanes.c create mode 100644 ffmpeg/libavfilter/vf_fade.c create mode 100644 ffmpeg/libavfilter/vf_field.c create mode 100644 ffmpeg/libavfilter/vf_fieldmatch.c create mode 100644 ffmpeg/libavfilter/vf_fieldorder.c create mode 100644 ffmpeg/libavfilter/vf_format.c create mode 100644 ffmpeg/libavfilter/vf_fps.c create mode 100644 ffmpeg/libavfilter/vf_framepack.c create mode 100644 ffmpeg/libavfilter/vf_framestep.c create mode 100644 ffmpeg/libavfilter/vf_frei0r.c create mode 100644 ffmpeg/libavfilter/vf_geq.c create mode 100644 ffmpeg/libavfilter/vf_gradfun.c create mode 100644 ffmpeg/libavfilter/vf_hflip.c create mode 100644 ffmpeg/libavfilter/vf_histeq.c create mode 100644 ffmpeg/libavfilter/vf_histogram.c create mode 100644 ffmpeg/libavfilter/vf_hqdn3d.c create mode 100644 ffmpeg/libavfilter/vf_hqdn3d.h create mode 100644 ffmpeg/libavfilter/vf_hqx.c create mode 100644 ffmpeg/libavfilter/vf_hue.c create mode 100644 ffmpeg/libavfilter/vf_idet.c create mode 100644 ffmpeg/libavfilter/vf_idet.h create mode 100644 ffmpeg/libavfilter/vf_il.c create mode 100644 ffmpeg/libavfilter/vf_interlace.c create mode 100644 ffmpeg/libavfilter/vf_kerndeint.c create mode 100644 ffmpeg/libavfilter/vf_lenscorrection.c create mode 100644 ffmpeg/libavfilter/vf_libopencv.c create mode 100644 ffmpeg/libavfilter/vf_lut.c create mode 100644 ffmpeg/libavfilter/vf_lut3d.c create mode 100644 ffmpeg/libavfilter/vf_mcdeint.c create mode 100644 ffmpeg/libavfilter/vf_mergeplanes.c create mode 100644 ffmpeg/libavfilter/vf_mp.c create mode 100644 ffmpeg/libavfilter/vf_mpdecimate.c create mode 100644 ffmpeg/libavfilter/vf_noise.c create mode 100644 ffmpeg/libavfilter/vf_null.c create mode 100644 ffmpeg/libavfilter/vf_overlay.c create mode 100644 ffmpeg/libavfilter/vf_owdenoise.c create mode 100644 ffmpeg/libavfilter/vf_pad.c create mode 100644 ffmpeg/libavfilter/vf_perspective.c create mode 100644 ffmpeg/libavfilter/vf_phase.c create mode 100644 ffmpeg/libavfilter/vf_pixdesctest.c create mode 100644 ffmpeg/libavfilter/vf_pp.c create mode 100644 ffmpeg/libavfilter/vf_psnr.c create mode 100644 ffmpeg/libavfilter/vf_pullup.c create mode 100644 ffmpeg/libavfilter/vf_pullup.h create mode 100644 ffmpeg/libavfilter/vf_removelogo.c create mode 100644 ffmpeg/libavfilter/vf_rotate.c create mode 100644 ffmpeg/libavfilter/vf_sab.c create mode 100644 ffmpeg/libavfilter/vf_scale.c create mode 100644 ffmpeg/libavfilter/vf_separatefields.c create mode 100644 ffmpeg/libavfilter/vf_setfield.c create mode 100644 ffmpeg/libavfilter/vf_showinfo.c create mode 100644 ffmpeg/libavfilter/vf_shuffleplanes.c create mode 100644 ffmpeg/libavfilter/vf_signalstats.c create mode 100644 ffmpeg/libavfilter/vf_smartblur.c create mode 100644 ffmpeg/libavfilter/vf_spp.c create mode 100644 ffmpeg/libavfilter/vf_spp.h create mode 100644 ffmpeg/libavfilter/vf_stereo3d.c create mode 100644 ffmpeg/libavfilter/vf_subtitles.c create mode 100644 ffmpeg/libavfilter/vf_super2xsai.c create mode 100644 ffmpeg/libavfilter/vf_swapuv.c create mode 100644 ffmpeg/libavfilter/vf_telecine.c create mode 100644 ffmpeg/libavfilter/vf_thumbnail.c create mode 100644 ffmpeg/libavfilter/vf_tile.c create mode 100644 ffmpeg/libavfilter/vf_tinterlace.c create mode 100644 ffmpeg/libavfilter/vf_transpose.c create mode 100644 ffmpeg/libavfilter/vf_unsharp.c create mode 100644 ffmpeg/libavfilter/vf_vflip.c create mode 100644 ffmpeg/libavfilter/vf_vidstabdetect.c create mode 100644 ffmpeg/libavfilter/vf_vidstabtransform.c create mode 100644 ffmpeg/libavfilter/vf_vignette.c create mode 100644 ffmpeg/libavfilter/vf_w3fdif.c create mode 100644 ffmpeg/libavfilter/vf_yadif.c create mode 100644 ffmpeg/libavfilter/vf_zoompan.c create mode 100644 ffmpeg/libavfilter/video.c create mode 100644 ffmpeg/libavfilter/video.h create mode 100644 ffmpeg/libavfilter/vidstabutils.c create mode 100644 ffmpeg/libavfilter/vidstabutils.h create mode 100644 ffmpeg/libavfilter/vsink_nullsink.c create mode 100644 ffmpeg/libavfilter/vsrc_cellauto.c create mode 100644 ffmpeg/libavfilter/vsrc_life.c create mode 100644 ffmpeg/libavfilter/vsrc_mandelbrot.c create mode 100644 ffmpeg/libavfilter/vsrc_mptestsrc.c create mode 100644 ffmpeg/libavfilter/vsrc_testsrc.c create mode 100644 ffmpeg/libavfilter/x86/Makefile create mode 100644 ffmpeg/libavfilter/x86/af_volume.asm create mode 100644 ffmpeg/libavfilter/x86/af_volume_init.c create mode 100644 ffmpeg/libavfilter/x86/vf_gradfun.asm create mode 100644 ffmpeg/libavfilter/x86/vf_gradfun_init.c create mode 100644 ffmpeg/libavfilter/x86/vf_hqdn3d.asm create mode 100644 ffmpeg/libavfilter/x86/vf_hqdn3d_init.c create mode 100644 ffmpeg/libavfilter/x86/vf_idet.asm create mode 100644 ffmpeg/libavfilter/x86/vf_idet_init.c create mode 100644 ffmpeg/libavfilter/x86/vf_pullup.asm create mode 100644 ffmpeg/libavfilter/x86/vf_pullup_init.c create mode 100644 ffmpeg/libavfilter/x86/vf_spp.c create mode 100644 ffmpeg/libavfilter/x86/vf_yadif.asm create mode 100644 ffmpeg/libavfilter/x86/vf_yadif_init.c create mode 100644 ffmpeg/libavfilter/x86/yadif-10.asm create mode 100644 ffmpeg/libavfilter/x86/yadif-16.asm create mode 100644 ffmpeg/libavfilter/yadif.h create mode 100644 ffmpeg/libavformat/4xm.c create mode 100644 ffmpeg/libavformat/Makefile create mode 100644 ffmpeg/libavformat/a64.c create mode 100644 ffmpeg/libavformat/aacdec.c create mode 100644 ffmpeg/libavformat/ac3dec.c create mode 100644 ffmpeg/libavformat/act.c create mode 100644 ffmpeg/libavformat/adp.c create mode 100644 ffmpeg/libavformat/adtsenc.c create mode 100644 ffmpeg/libavformat/adxdec.c create mode 100644 ffmpeg/libavformat/aea.c create mode 100644 ffmpeg/libavformat/afc.c create mode 100644 ffmpeg/libavformat/aiff.h create mode 100644 ffmpeg/libavformat/aiffdec.c create mode 100644 ffmpeg/libavformat/aiffenc.c create mode 100644 ffmpeg/libavformat/allformats.c create mode 100644 ffmpeg/libavformat/amr.c create mode 100644 ffmpeg/libavformat/anm.c create mode 100644 ffmpeg/libavformat/apc.c create mode 100644 ffmpeg/libavformat/ape.c create mode 100644 ffmpeg/libavformat/apetag.c create mode 100644 ffmpeg/libavformat/apetag.h create mode 100644 ffmpeg/libavformat/aqtitledec.c create mode 100644 ffmpeg/libavformat/asf.c create mode 100644 ffmpeg/libavformat/asf.h create mode 100644 ffmpeg/libavformat/asfcrypt.c create mode 100644 ffmpeg/libavformat/asfcrypt.h create mode 100644 ffmpeg/libavformat/asfdec.c create mode 100644 ffmpeg/libavformat/asfenc.c create mode 100644 ffmpeg/libavformat/assdec.c create mode 100644 ffmpeg/libavformat/assenc.c create mode 100644 ffmpeg/libavformat/ast.c create mode 100644 ffmpeg/libavformat/ast.h create mode 100644 ffmpeg/libavformat/astdec.c create mode 100644 ffmpeg/libavformat/astenc.c create mode 100644 ffmpeg/libavformat/au.c create mode 100644 ffmpeg/libavformat/audiointerleave.c create mode 100644 ffmpeg/libavformat/audiointerleave.h create mode 100644 ffmpeg/libavformat/avc.c create mode 100644 ffmpeg/libavformat/avc.h create mode 100644 ffmpeg/libavformat/avformat.h create mode 100644 ffmpeg/libavformat/avformatres.rc create mode 100644 ffmpeg/libavformat/avi.h create mode 100644 ffmpeg/libavformat/avidec.c create mode 100644 ffmpeg/libavformat/avienc.c create mode 100644 ffmpeg/libavformat/avio.c create mode 100644 ffmpeg/libavformat/avio.h create mode 100644 ffmpeg/libavformat/avio_internal.h create mode 100644 ffmpeg/libavformat/aviobuf.c create mode 100644 ffmpeg/libavformat/avisynth.c create mode 100644 ffmpeg/libavformat/avlanguage.c create mode 100644 ffmpeg/libavformat/avlanguage.h create mode 100644 ffmpeg/libavformat/avr.c create mode 100644 ffmpeg/libavformat/avs.c create mode 100644 ffmpeg/libavformat/bethsoftvid.c create mode 100644 ffmpeg/libavformat/bfi.c create mode 100644 ffmpeg/libavformat/bink.c create mode 100644 ffmpeg/libavformat/bintext.c create mode 100644 ffmpeg/libavformat/bit.c create mode 100644 ffmpeg/libavformat/bluray.c create mode 100644 ffmpeg/libavformat/bmv.c create mode 100644 ffmpeg/libavformat/boadec.c create mode 100644 ffmpeg/libavformat/brstm.c create mode 100644 ffmpeg/libavformat/c93.c create mode 100644 ffmpeg/libavformat/cache.c create mode 100644 ffmpeg/libavformat/caf.c create mode 100644 ffmpeg/libavformat/caf.h create mode 100644 ffmpeg/libavformat/cafdec.c create mode 100644 ffmpeg/libavformat/cafenc.c create mode 100644 ffmpeg/libavformat/cavsvideodec.c create mode 100644 ffmpeg/libavformat/cdg.c create mode 100644 ffmpeg/libavformat/cdxl.c create mode 100644 ffmpeg/libavformat/cinedec.c create mode 100644 ffmpeg/libavformat/concat.c create mode 100644 ffmpeg/libavformat/concatdec.c create mode 100644 ffmpeg/libavformat/crcenc.c create mode 100644 ffmpeg/libavformat/crypto.c create mode 100644 ffmpeg/libavformat/cutils.c create mode 100644 ffmpeg/libavformat/data_uri.c create mode 100644 ffmpeg/libavformat/dauddec.c create mode 100644 ffmpeg/libavformat/daudenc.c create mode 100644 ffmpeg/libavformat/dfa.c create mode 100644 ffmpeg/libavformat/diracdec.c create mode 100644 ffmpeg/libavformat/dnxhddec.c create mode 100644 ffmpeg/libavformat/dsfdec.c create mode 100644 ffmpeg/libavformat/dsicin.c create mode 100644 ffmpeg/libavformat/dtsdec.c create mode 100644 ffmpeg/libavformat/dtshddec.c create mode 100644 ffmpeg/libavformat/dump.c create mode 100644 ffmpeg/libavformat/dv.c create mode 100644 ffmpeg/libavformat/dv.h create mode 100644 ffmpeg/libavformat/dvenc.c create mode 100644 ffmpeg/libavformat/dxa.c create mode 100644 ffmpeg/libavformat/eacdata.c create mode 100644 ffmpeg/libavformat/electronicarts.c create mode 100644 ffmpeg/libavformat/epafdec.c create mode 100644 ffmpeg/libavformat/ffm.h create mode 100644 ffmpeg/libavformat/ffmdec.c create mode 100644 ffmpeg/libavformat/ffmenc.c create mode 100644 ffmpeg/libavformat/ffmeta.h create mode 100644 ffmpeg/libavformat/ffmetadec.c create mode 100644 ffmpeg/libavformat/ffmetaenc.c create mode 100644 ffmpeg/libavformat/file.c create mode 100644 ffmpeg/libavformat/file_open.c create mode 100644 ffmpeg/libavformat/filmstripdec.c create mode 100644 ffmpeg/libavformat/filmstripenc.c create mode 100644 ffmpeg/libavformat/flac_picture.c create mode 100644 ffmpeg/libavformat/flac_picture.h create mode 100644 ffmpeg/libavformat/flacdec.c create mode 100644 ffmpeg/libavformat/flacenc.c create mode 100644 ffmpeg/libavformat/flacenc.h create mode 100644 ffmpeg/libavformat/flacenc_header.c create mode 100644 ffmpeg/libavformat/flic.c create mode 100644 ffmpeg/libavformat/flv.h create mode 100644 ffmpeg/libavformat/flvdec.c create mode 100644 ffmpeg/libavformat/flvenc.c create mode 100644 ffmpeg/libavformat/format.c create mode 100644 ffmpeg/libavformat/framecrcenc.c create mode 100644 ffmpeg/libavformat/framehash.c create mode 100644 ffmpeg/libavformat/frmdec.c create mode 100644 ffmpeg/libavformat/ftp.c create mode 100644 ffmpeg/libavformat/g722.c create mode 100644 ffmpeg/libavformat/g723_1.c create mode 100644 ffmpeg/libavformat/g729dec.c create mode 100644 ffmpeg/libavformat/gif.c create mode 100644 ffmpeg/libavformat/gifdec.c create mode 100644 ffmpeg/libavformat/golomb_tab.c create mode 100644 ffmpeg/libavformat/gopher.c create mode 100644 ffmpeg/libavformat/gsmdec.c create mode 100644 ffmpeg/libavformat/gxf.c create mode 100644 ffmpeg/libavformat/gxf.h create mode 100644 ffmpeg/libavformat/gxfenc.c create mode 100644 ffmpeg/libavformat/h261dec.c create mode 100644 ffmpeg/libavformat/h263dec.c create mode 100644 ffmpeg/libavformat/h264dec.c create mode 100644 ffmpeg/libavformat/hdsenc.c create mode 100644 ffmpeg/libavformat/hevc.c create mode 100644 ffmpeg/libavformat/hevc.h create mode 100644 ffmpeg/libavformat/hevcdec.c create mode 100644 ffmpeg/libavformat/hls.c create mode 100644 ffmpeg/libavformat/hlsenc.c create mode 100644 ffmpeg/libavformat/hlsproto.c create mode 100644 ffmpeg/libavformat/hnm.c create mode 100644 ffmpeg/libavformat/http.c create mode 100644 ffmpeg/libavformat/http.h create mode 100644 ffmpeg/libavformat/httpauth.c create mode 100644 ffmpeg/libavformat/httpauth.h create mode 100644 ffmpeg/libavformat/icecast.c create mode 100644 ffmpeg/libavformat/icodec.c create mode 100644 ffmpeg/libavformat/icoenc.c create mode 100644 ffmpeg/libavformat/id3v1.c create mode 100644 ffmpeg/libavformat/id3v1.h create mode 100644 ffmpeg/libavformat/id3v2.c create mode 100644 ffmpeg/libavformat/id3v2.h create mode 100644 ffmpeg/libavformat/id3v2enc.c create mode 100644 ffmpeg/libavformat/idcin.c create mode 100644 ffmpeg/libavformat/idroqdec.c create mode 100644 ffmpeg/libavformat/idroqenc.c create mode 100644 ffmpeg/libavformat/iff.c create mode 100644 ffmpeg/libavformat/ilbc.c create mode 100644 ffmpeg/libavformat/img2.c create mode 100644 ffmpeg/libavformat/img2.h create mode 100644 ffmpeg/libavformat/img2_alias_pix.c create mode 100644 ffmpeg/libavformat/img2_brender_pix.c create mode 100644 ffmpeg/libavformat/img2dec.c create mode 100644 ffmpeg/libavformat/img2enc.c create mode 100644 ffmpeg/libavformat/ingenientdec.c create mode 100644 ffmpeg/libavformat/internal.h create mode 100644 ffmpeg/libavformat/ipmovie.c create mode 100644 ffmpeg/libavformat/ircam.c create mode 100644 ffmpeg/libavformat/ircam.h create mode 100644 ffmpeg/libavformat/ircamdec.c create mode 100644 ffmpeg/libavformat/ircamenc.c create mode 100644 ffmpeg/libavformat/isom.c create mode 100644 ffmpeg/libavformat/isom.h create mode 100644 ffmpeg/libavformat/iss.c create mode 100644 ffmpeg/libavformat/iv8.c create mode 100644 ffmpeg/libavformat/ivfdec.c create mode 100644 ffmpeg/libavformat/ivfenc.c create mode 100644 ffmpeg/libavformat/jacosubdec.c create mode 100644 ffmpeg/libavformat/jacosubenc.c create mode 100644 ffmpeg/libavformat/jvdec.c create mode 100644 ffmpeg/libavformat/latmenc.c create mode 100644 ffmpeg/libavformat/libavformat.v create mode 100644 ffmpeg/libavformat/libgme.c create mode 100644 ffmpeg/libavformat/libmodplug.c create mode 100644 ffmpeg/libavformat/libnut.c create mode 100644 ffmpeg/libavformat/libquvi.c create mode 100644 ffmpeg/libavformat/librtmp.c create mode 100644 ffmpeg/libavformat/libsmbclient.c create mode 100644 ffmpeg/libavformat/libssh.c create mode 100644 ffmpeg/libavformat/lmlm4.c create mode 100644 ffmpeg/libavformat/loasdec.c create mode 100644 ffmpeg/libavformat/log2_tab.c create mode 100644 ffmpeg/libavformat/lrc.c create mode 100644 ffmpeg/libavformat/lrc.h create mode 100644 ffmpeg/libavformat/lrcdec.c create mode 100644 ffmpeg/libavformat/lrcenc.c create mode 100644 ffmpeg/libavformat/lvfdec.c create mode 100644 ffmpeg/libavformat/lxfdec.c create mode 100644 ffmpeg/libavformat/m4vdec.c create mode 100644 ffmpeg/libavformat/matroska.c create mode 100644 ffmpeg/libavformat/matroska.h create mode 100644 ffmpeg/libavformat/matroskadec.c create mode 100644 ffmpeg/libavformat/matroskaenc.c create mode 100644 ffmpeg/libavformat/md5enc.c create mode 100644 ffmpeg/libavformat/md5proto.c create mode 100644 ffmpeg/libavformat/metadata.c create mode 100644 ffmpeg/libavformat/metadata.h create mode 100644 ffmpeg/libavformat/mgsts.c create mode 100644 ffmpeg/libavformat/microdvddec.c create mode 100644 ffmpeg/libavformat/microdvdenc.c create mode 100644 ffmpeg/libavformat/mkvtimestamp_v2.c create mode 100644 ffmpeg/libavformat/mlvdec.c create mode 100644 ffmpeg/libavformat/mm.c create mode 100644 ffmpeg/libavformat/mmf.c create mode 100644 ffmpeg/libavformat/mms.c create mode 100644 ffmpeg/libavformat/mms.h create mode 100644 ffmpeg/libavformat/mmsh.c create mode 100644 ffmpeg/libavformat/mmst.c create mode 100644 ffmpeg/libavformat/mov.c create mode 100644 ffmpeg/libavformat/mov_chan.c create mode 100644 ffmpeg/libavformat/mov_chan.h create mode 100644 ffmpeg/libavformat/movenc.c create mode 100644 ffmpeg/libavformat/movenc.h create mode 100644 ffmpeg/libavformat/movenchint.c create mode 100644 ffmpeg/libavformat/mp3dec.c create mode 100644 ffmpeg/libavformat/mp3enc.c create mode 100644 ffmpeg/libavformat/mpc.c create mode 100644 ffmpeg/libavformat/mpc8.c create mode 100644 ffmpeg/libavformat/mpeg.c create mode 100644 ffmpeg/libavformat/mpeg.h create mode 100644 ffmpeg/libavformat/mpegenc.c create mode 100644 ffmpeg/libavformat/mpegts.c create mode 100644 ffmpeg/libavformat/mpegts.h create mode 100644 ffmpeg/libavformat/mpegtsenc.c create mode 100644 ffmpeg/libavformat/mpegvideodec.c create mode 100644 ffmpeg/libavformat/mpjpeg.c create mode 100644 ffmpeg/libavformat/mpl2dec.c create mode 100644 ffmpeg/libavformat/mpsubdec.c create mode 100644 ffmpeg/libavformat/msnwc_tcp.c create mode 100644 ffmpeg/libavformat/mtv.c create mode 100644 ffmpeg/libavformat/mux.c create mode 100644 ffmpeg/libavformat/mvdec.c create mode 100644 ffmpeg/libavformat/mvi.c create mode 100644 ffmpeg/libavformat/mxf.c create mode 100644 ffmpeg/libavformat/mxf.h create mode 100644 ffmpeg/libavformat/mxfdec.c create mode 100644 ffmpeg/libavformat/mxfenc.c create mode 100644 ffmpeg/libavformat/mxg.c create mode 100644 ffmpeg/libavformat/ncdec.c create mode 100644 ffmpeg/libavformat/network.c create mode 100644 ffmpeg/libavformat/network.h create mode 100644 ffmpeg/libavformat/nistspheredec.c create mode 100644 ffmpeg/libavformat/noproxy-test.c create mode 100644 ffmpeg/libavformat/nsvdec.c create mode 100644 ffmpeg/libavformat/nullenc.c create mode 100644 ffmpeg/libavformat/nut.c create mode 100644 ffmpeg/libavformat/nut.h create mode 100644 ffmpeg/libavformat/nutdec.c create mode 100644 ffmpeg/libavformat/nutenc.c create mode 100644 ffmpeg/libavformat/nuv.c create mode 100644 ffmpeg/libavformat/oggdec.c create mode 100644 ffmpeg/libavformat/oggdec.h create mode 100644 ffmpeg/libavformat/oggenc.c create mode 100644 ffmpeg/libavformat/oggparsecelt.c create mode 100644 ffmpeg/libavformat/oggparsedirac.c create mode 100644 ffmpeg/libavformat/oggparseflac.c create mode 100644 ffmpeg/libavformat/oggparseogm.c create mode 100644 ffmpeg/libavformat/oggparseopus.c create mode 100644 ffmpeg/libavformat/oggparseskeleton.c create mode 100644 ffmpeg/libavformat/oggparsespeex.c create mode 100644 ffmpeg/libavformat/oggparsetheora.c create mode 100644 ffmpeg/libavformat/oggparsevorbis.c create mode 100644 ffmpeg/libavformat/oggparsevp8.c create mode 100644 ffmpeg/libavformat/oma.c create mode 100644 ffmpeg/libavformat/oma.h create mode 100644 ffmpeg/libavformat/omadec.c create mode 100644 ffmpeg/libavformat/omaenc.c create mode 100644 ffmpeg/libavformat/options.c create mode 100644 ffmpeg/libavformat/options_table.h create mode 100644 ffmpeg/libavformat/os_support.c create mode 100644 ffmpeg/libavformat/os_support.h create mode 100644 ffmpeg/libavformat/paf.c create mode 100644 ffmpeg/libavformat/pcm.c create mode 100644 ffmpeg/libavformat/pcm.h create mode 100644 ffmpeg/libavformat/pcmdec.c create mode 100644 ffmpeg/libavformat/pcmenc.c create mode 100644 ffmpeg/libavformat/pjsdec.c create mode 100644 ffmpeg/libavformat/pmpdec.c create mode 100644 ffmpeg/libavformat/psxstr.c create mode 100644 ffmpeg/libavformat/pva.c create mode 100644 ffmpeg/libavformat/pvfdec.c create mode 100644 ffmpeg/libavformat/qcp.c create mode 100644 ffmpeg/libavformat/qtpalette.h create mode 100644 ffmpeg/libavformat/r3d.c create mode 100644 ffmpeg/libavformat/rawdec.c create mode 100644 ffmpeg/libavformat/rawdec.h create mode 100644 ffmpeg/libavformat/rawenc.c create mode 100644 ffmpeg/libavformat/rawenc.h create mode 100644 ffmpeg/libavformat/rawvideodec.c create mode 100644 ffmpeg/libavformat/rdt.c create mode 100644 ffmpeg/libavformat/rdt.h create mode 100644 ffmpeg/libavformat/realtextdec.c create mode 100644 ffmpeg/libavformat/redspark.c create mode 100644 ffmpeg/libavformat/replaygain.c create mode 100644 ffmpeg/libavformat/replaygain.h create mode 100644 ffmpeg/libavformat/riff.c create mode 100644 ffmpeg/libavformat/riff.h create mode 100644 ffmpeg/libavformat/riffdec.c create mode 100644 ffmpeg/libavformat/riffenc.c create mode 100644 ffmpeg/libavformat/rl2.c create mode 100644 ffmpeg/libavformat/rm.c create mode 100644 ffmpeg/libavformat/rm.h create mode 100644 ffmpeg/libavformat/rmdec.c create mode 100644 ffmpeg/libavformat/rmenc.c create mode 100644 ffmpeg/libavformat/rmsipr.c create mode 100644 ffmpeg/libavformat/rmsipr.h create mode 100644 ffmpeg/libavformat/rpl.c create mode 100644 ffmpeg/libavformat/rsd.c create mode 100644 ffmpeg/libavformat/rso.c create mode 100644 ffmpeg/libavformat/rso.h create mode 100644 ffmpeg/libavformat/rsodec.c create mode 100644 ffmpeg/libavformat/rsoenc.c create mode 100644 ffmpeg/libavformat/rtmp.h create mode 100644 ffmpeg/libavformat/rtmpcrypt.c create mode 100644 ffmpeg/libavformat/rtmpcrypt.h create mode 100644 ffmpeg/libavformat/rtmpdh.c create mode 100644 ffmpeg/libavformat/rtmpdh.h create mode 100644 ffmpeg/libavformat/rtmphttp.c create mode 100644 ffmpeg/libavformat/rtmppkt.c create mode 100644 ffmpeg/libavformat/rtmppkt.h create mode 100644 ffmpeg/libavformat/rtmpproto.c create mode 100644 ffmpeg/libavformat/rtp.c create mode 100644 ffmpeg/libavformat/rtp.h create mode 100644 ffmpeg/libavformat/rtpdec.c create mode 100644 ffmpeg/libavformat/rtpdec.h create mode 100644 ffmpeg/libavformat/rtpdec_amr.c create mode 100644 ffmpeg/libavformat/rtpdec_asf.c create mode 100644 ffmpeg/libavformat/rtpdec_formats.h create mode 100644 ffmpeg/libavformat/rtpdec_g726.c create mode 100644 ffmpeg/libavformat/rtpdec_h261.c create mode 100644 ffmpeg/libavformat/rtpdec_h263.c create mode 100644 ffmpeg/libavformat/rtpdec_h263_rfc2190.c create mode 100644 ffmpeg/libavformat/rtpdec_h264.c create mode 100644 ffmpeg/libavformat/rtpdec_hevc.c create mode 100644 ffmpeg/libavformat/rtpdec_ilbc.c create mode 100644 ffmpeg/libavformat/rtpdec_jpeg.c create mode 100644 ffmpeg/libavformat/rtpdec_latm.c create mode 100644 ffmpeg/libavformat/rtpdec_mpeg12.c create mode 100644 ffmpeg/libavformat/rtpdec_mpeg4.c create mode 100644 ffmpeg/libavformat/rtpdec_mpegts.c create mode 100644 ffmpeg/libavformat/rtpdec_qcelp.c create mode 100644 ffmpeg/libavformat/rtpdec_qdm2.c create mode 100644 ffmpeg/libavformat/rtpdec_qt.c create mode 100644 ffmpeg/libavformat/rtpdec_svq3.c create mode 100644 ffmpeg/libavformat/rtpdec_vp8.c create mode 100644 ffmpeg/libavformat/rtpdec_xiph.c create mode 100644 ffmpeg/libavformat/rtpenc.c create mode 100644 ffmpeg/libavformat/rtpenc.h create mode 100644 ffmpeg/libavformat/rtpenc_aac.c create mode 100644 ffmpeg/libavformat/rtpenc_amr.c create mode 100644 ffmpeg/libavformat/rtpenc_chain.c create mode 100644 ffmpeg/libavformat/rtpenc_chain.h create mode 100644 ffmpeg/libavformat/rtpenc_h261.c create mode 100644 ffmpeg/libavformat/rtpenc_h263.c create mode 100644 ffmpeg/libavformat/rtpenc_h263_rfc2190.c create mode 100644 ffmpeg/libavformat/rtpenc_h264.c create mode 100644 ffmpeg/libavformat/rtpenc_jpeg.c create mode 100644 ffmpeg/libavformat/rtpenc_latm.c create mode 100644 ffmpeg/libavformat/rtpenc_mpv.c create mode 100644 ffmpeg/libavformat/rtpenc_vp8.c create mode 100644 ffmpeg/libavformat/rtpenc_xiph.c create mode 100644 ffmpeg/libavformat/rtpproto.c create mode 100644 ffmpeg/libavformat/rtpproto.h create mode 100644 ffmpeg/libavformat/rtsp.c create mode 100644 ffmpeg/libavformat/rtsp.h create mode 100644 ffmpeg/libavformat/rtspcodes.h create mode 100644 ffmpeg/libavformat/rtspdec.c create mode 100644 ffmpeg/libavformat/rtspenc.c create mode 100644 ffmpeg/libavformat/samidec.c create mode 100644 ffmpeg/libavformat/sapdec.c create mode 100644 ffmpeg/libavformat/sapenc.c create mode 100644 ffmpeg/libavformat/sauce.c create mode 100644 ffmpeg/libavformat/sauce.h create mode 100644 ffmpeg/libavformat/sbgdec.c create mode 100644 ffmpeg/libavformat/sctp.c create mode 100644 ffmpeg/libavformat/sdp.c create mode 100644 ffmpeg/libavformat/sdr2.c create mode 100644 ffmpeg/libavformat/seek-test.c create mode 100644 ffmpeg/libavformat/seek.c create mode 100644 ffmpeg/libavformat/seek.h create mode 100644 ffmpeg/libavformat/segafilm.c create mode 100644 ffmpeg/libavformat/segment.c create mode 100644 ffmpeg/libavformat/sierravmd.c create mode 100644 ffmpeg/libavformat/siff.c create mode 100644 ffmpeg/libavformat/smacker.c create mode 100644 ffmpeg/libavformat/smjpeg.c create mode 100644 ffmpeg/libavformat/smjpeg.h create mode 100644 ffmpeg/libavformat/smjpegdec.c create mode 100644 ffmpeg/libavformat/smjpegenc.c create mode 100644 ffmpeg/libavformat/smoothstreamingenc.c create mode 100644 ffmpeg/libavformat/smush.c create mode 100644 ffmpeg/libavformat/sol.c create mode 100644 ffmpeg/libavformat/sox.h create mode 100644 ffmpeg/libavformat/soxdec.c create mode 100644 ffmpeg/libavformat/soxenc.c create mode 100644 ffmpeg/libavformat/spdif.c create mode 100644 ffmpeg/libavformat/spdif.h create mode 100644 ffmpeg/libavformat/spdifdec.c create mode 100644 ffmpeg/libavformat/spdifenc.c create mode 100644 ffmpeg/libavformat/srtdec.c create mode 100644 ffmpeg/libavformat/srtenc.c create mode 100644 ffmpeg/libavformat/srtp.c create mode 100644 ffmpeg/libavformat/srtp.h create mode 100644 ffmpeg/libavformat/srtpproto.c create mode 100644 ffmpeg/libavformat/subfile.c create mode 100644 ffmpeg/libavformat/subtitles.c create mode 100644 ffmpeg/libavformat/subtitles.h create mode 100644 ffmpeg/libavformat/subviewer1dec.c create mode 100644 ffmpeg/libavformat/subviewerdec.c create mode 100644 ffmpeg/libavformat/swf.c create mode 100644 ffmpeg/libavformat/swf.h create mode 100644 ffmpeg/libavformat/swfdec.c create mode 100644 ffmpeg/libavformat/swfenc.c create mode 100644 ffmpeg/libavformat/takdec.c create mode 100644 ffmpeg/libavformat/tcp.c create mode 100644 ffmpeg/libavformat/tedcaptionsdec.c create mode 100644 ffmpeg/libavformat/tee.c create mode 100644 ffmpeg/libavformat/thp.c create mode 100644 ffmpeg/libavformat/tiertexseq.c create mode 100644 ffmpeg/libavformat/tls.c create mode 100644 ffmpeg/libavformat/tmv.c create mode 100644 ffmpeg/libavformat/tta.c create mode 100644 ffmpeg/libavformat/tty.c create mode 100644 ffmpeg/libavformat/txd.c create mode 100644 ffmpeg/libavformat/udp.c create mode 100644 ffmpeg/libavformat/uncodedframecrcenc.c create mode 100644 ffmpeg/libavformat/unix.c create mode 100644 ffmpeg/libavformat/url-test.c create mode 100644 ffmpeg/libavformat/url.c create mode 100644 ffmpeg/libavformat/url.h create mode 100644 ffmpeg/libavformat/urldecode.c create mode 100644 ffmpeg/libavformat/urldecode.h create mode 100644 ffmpeg/libavformat/utils.c create mode 100644 ffmpeg/libavformat/vc1test.c create mode 100644 ffmpeg/libavformat/vc1testenc.c create mode 100644 ffmpeg/libavformat/version.h create mode 100644 ffmpeg/libavformat/vivo.c create mode 100644 ffmpeg/libavformat/voc.c create mode 100644 ffmpeg/libavformat/voc.h create mode 100644 ffmpeg/libavformat/vocdec.c create mode 100644 ffmpeg/libavformat/vocenc.c create mode 100644 ffmpeg/libavformat/vorbiscomment.c create mode 100644 ffmpeg/libavformat/vorbiscomment.h create mode 100644 ffmpeg/libavformat/vplayerdec.c create mode 100644 ffmpeg/libavformat/vqf.c create mode 100644 ffmpeg/libavformat/w64.c create mode 100644 ffmpeg/libavformat/w64.h create mode 100644 ffmpeg/libavformat/wavdec.c create mode 100644 ffmpeg/libavformat/wavenc.c create mode 100644 ffmpeg/libavformat/wc3movie.c create mode 100644 ffmpeg/libavformat/webmdashenc.c create mode 100644 ffmpeg/libavformat/webvttdec.c create mode 100644 ffmpeg/libavformat/webvttenc.c create mode 100644 ffmpeg/libavformat/westwood_aud.c create mode 100644 ffmpeg/libavformat/westwood_vqa.c create mode 100644 ffmpeg/libavformat/wtv.h create mode 100644 ffmpeg/libavformat/wtv_common.c create mode 100644 ffmpeg/libavformat/wtvdec.c create mode 100644 ffmpeg/libavformat/wtvenc.c create mode 100644 ffmpeg/libavformat/wv.c create mode 100644 ffmpeg/libavformat/wv.h create mode 100644 ffmpeg/libavformat/wvdec.c create mode 100644 ffmpeg/libavformat/wvenc.c create mode 100644 ffmpeg/libavformat/xa.c create mode 100644 ffmpeg/libavformat/xmv.c create mode 100644 ffmpeg/libavformat/xwma.c create mode 100644 ffmpeg/libavformat/yop.c create mode 100644 ffmpeg/libavformat/yuv4mpeg.h create mode 100644 ffmpeg/libavformat/yuv4mpegdec.c create mode 100644 ffmpeg/libavformat/yuv4mpegenc.c create mode 100644 ffmpeg/libavresample/Makefile create mode 100644 ffmpeg/libavresample/aarch64/Makefile create mode 100644 ffmpeg/libavresample/aarch64/asm-offsets.h create mode 100644 ffmpeg/libavresample/aarch64/audio_convert_init.c create mode 100644 ffmpeg/libavresample/aarch64/audio_convert_neon.S create mode 100644 ffmpeg/libavresample/aarch64/neontest.c create mode 100644 ffmpeg/libavresample/aarch64/resample_init.c create mode 100644 ffmpeg/libavresample/aarch64/resample_neon.S create mode 100644 ffmpeg/libavresample/arm/Makefile create mode 100644 ffmpeg/libavresample/arm/audio_convert_init.c create mode 100644 ffmpeg/libavresample/arm/audio_convert_neon.S create mode 100644 ffmpeg/libavresample/arm/neontest.c create mode 100644 ffmpeg/libavresample/audio_convert.c create mode 100644 ffmpeg/libavresample/audio_convert.h create mode 100644 ffmpeg/libavresample/audio_data.c create mode 100644 ffmpeg/libavresample/audio_data.h create mode 100644 ffmpeg/libavresample/audio_mix.c create mode 100644 ffmpeg/libavresample/audio_mix.h create mode 100644 ffmpeg/libavresample/audio_mix_matrix.c create mode 100644 ffmpeg/libavresample/avresample-test.c create mode 100644 ffmpeg/libavresample/avresample.h create mode 100644 ffmpeg/libavresample/avresampleres.rc create mode 100644 ffmpeg/libavresample/dither.c create mode 100644 ffmpeg/libavresample/dither.h create mode 100644 ffmpeg/libavresample/internal.h create mode 100644 ffmpeg/libavresample/libavresample.v create mode 100644 ffmpeg/libavresample/options.c create mode 100644 ffmpeg/libavresample/resample.c create mode 100644 ffmpeg/libavresample/resample.h create mode 100644 ffmpeg/libavresample/resample_template.c create mode 100644 ffmpeg/libavresample/utils.c create mode 100644 ffmpeg/libavresample/version.h create mode 100644 ffmpeg/libavresample/x86/Makefile create mode 100644 ffmpeg/libavresample/x86/audio_convert.asm create mode 100644 ffmpeg/libavresample/x86/audio_convert_init.c create mode 100644 ffmpeg/libavresample/x86/audio_mix.asm create mode 100644 ffmpeg/libavresample/x86/audio_mix_init.c create mode 100644 ffmpeg/libavresample/x86/dither.asm create mode 100644 ffmpeg/libavresample/x86/dither_init.c create mode 100644 ffmpeg/libavresample/x86/util.asm create mode 100644 ffmpeg/libavresample/x86/w64xmmtest.c create mode 100644 ffmpeg/libavutil/Makefile create mode 100644 ffmpeg/libavutil/aarch64/Makefile create mode 100644 ffmpeg/libavutil/aarch64/asm.S create mode 100644 ffmpeg/libavutil/aarch64/bswap.h create mode 100644 ffmpeg/libavutil/aarch64/cpu.c create mode 100644 ffmpeg/libavutil/aarch64/cpu.h create mode 100644 ffmpeg/libavutil/aarch64/float_dsp_init.c create mode 100644 ffmpeg/libavutil/aarch64/float_dsp_neon.S create mode 100644 ffmpeg/libavutil/aarch64/neontest.h create mode 100644 ffmpeg/libavutil/adler32.c create mode 100644 ffmpeg/libavutil/adler32.h create mode 100644 ffmpeg/libavutil/aes.c create mode 100644 ffmpeg/libavutil/aes.h create mode 100644 ffmpeg/libavutil/arm/Makefile create mode 100644 ffmpeg/libavutil/arm/asm.S create mode 100644 ffmpeg/libavutil/arm/bswap.h create mode 100644 ffmpeg/libavutil/arm/cpu.c create mode 100644 ffmpeg/libavutil/arm/cpu.h create mode 100644 ffmpeg/libavutil/arm/float_dsp_arm.h create mode 100644 ffmpeg/libavutil/arm/float_dsp_init_arm.c create mode 100644 ffmpeg/libavutil/arm/float_dsp_init_neon.c create mode 100644 ffmpeg/libavutil/arm/float_dsp_init_vfp.c create mode 100644 ffmpeg/libavutil/arm/float_dsp_neon.S create mode 100644 ffmpeg/libavutil/arm/float_dsp_vfp.S create mode 100644 ffmpeg/libavutil/arm/intmath.h create mode 100644 ffmpeg/libavutil/arm/intreadwrite.h create mode 100644 ffmpeg/libavutil/arm/neontest.h create mode 100644 ffmpeg/libavutil/arm/timer.h create mode 100644 ffmpeg/libavutil/atomic.c create mode 100644 ffmpeg/libavutil/atomic.h create mode 100644 ffmpeg/libavutil/atomic_gcc.h create mode 100644 ffmpeg/libavutil/atomic_suncc.h create mode 100644 ffmpeg/libavutil/atomic_win32.h create mode 100644 ffmpeg/libavutil/attributes.h create mode 100644 ffmpeg/libavutil/audio_fifo.c create mode 100644 ffmpeg/libavutil/audio_fifo.h create mode 100644 ffmpeg/libavutil/audioconvert.h create mode 100644 ffmpeg/libavutil/avassert.h create mode 100644 ffmpeg/libavutil/avr32/bswap.h create mode 100644 ffmpeg/libavutil/avr32/intreadwrite.h create mode 100644 ffmpeg/libavutil/avstring.c create mode 100644 ffmpeg/libavutil/avstring.h create mode 100644 ffmpeg/libavutil/avutil.h create mode 100644 ffmpeg/libavutil/avutilres.rc create mode 100644 ffmpeg/libavutil/base64.c create mode 100644 ffmpeg/libavutil/base64.h create mode 100644 ffmpeg/libavutil/bfin/bswap.h create mode 100644 ffmpeg/libavutil/bfin/timer.h create mode 100644 ffmpeg/libavutil/blowfish.c create mode 100644 ffmpeg/libavutil/blowfish.h create mode 100644 ffmpeg/libavutil/bprint.c create mode 100644 ffmpeg/libavutil/bprint.h create mode 100644 ffmpeg/libavutil/bswap.h create mode 100644 ffmpeg/libavutil/buffer.c create mode 100644 ffmpeg/libavutil/buffer.h create mode 100644 ffmpeg/libavutil/buffer_internal.h create mode 100644 ffmpeg/libavutil/channel_layout.c create mode 100644 ffmpeg/libavutil/channel_layout.h create mode 100644 ffmpeg/libavutil/colorspace.h create mode 100644 ffmpeg/libavutil/common.h create mode 100644 ffmpeg/libavutil/cpu.c create mode 100644 ffmpeg/libavutil/cpu.h create mode 100644 ffmpeg/libavutil/cpu_internal.h create mode 100644 ffmpeg/libavutil/crc.c create mode 100644 ffmpeg/libavutil/crc.h create mode 100644 ffmpeg/libavutil/des.c create mode 100644 ffmpeg/libavutil/des.h create mode 100644 ffmpeg/libavutil/dict.c create mode 100644 ffmpeg/libavutil/dict.h create mode 100644 ffmpeg/libavutil/display.c create mode 100644 ffmpeg/libavutil/display.h create mode 100644 ffmpeg/libavutil/downmix_info.c create mode 100644 ffmpeg/libavutil/downmix_info.h create mode 100644 ffmpeg/libavutil/dynarray.h create mode 100644 ffmpeg/libavutil/error.c create mode 100644 ffmpeg/libavutil/error.h create mode 100644 ffmpeg/libavutil/eval.c create mode 100644 ffmpeg/libavutil/eval.h create mode 100644 ffmpeg/libavutil/fifo.c create mode 100644 ffmpeg/libavutil/fifo.h create mode 100644 ffmpeg/libavutil/file.c create mode 100644 ffmpeg/libavutil/file.h create mode 100644 ffmpeg/libavutil/file_open.c create mode 100644 ffmpeg/libavutil/fixed_dsp.c create mode 100644 ffmpeg/libavutil/fixed_dsp.h create mode 100644 ffmpeg/libavutil/float_dsp.c create mode 100644 ffmpeg/libavutil/float_dsp.h create mode 100644 ffmpeg/libavutil/frame.c create mode 100644 ffmpeg/libavutil/frame.h create mode 100644 ffmpeg/libavutil/hash.c create mode 100644 ffmpeg/libavutil/hash.h create mode 100644 ffmpeg/libavutil/hmac.c create mode 100644 ffmpeg/libavutil/hmac.h create mode 100644 ffmpeg/libavutil/imgutils.c create mode 100644 ffmpeg/libavutil/imgutils.h create mode 100644 ffmpeg/libavutil/integer.c create mode 100644 ffmpeg/libavutil/integer.h create mode 100644 ffmpeg/libavutil/internal.h create mode 100644 ffmpeg/libavutil/intfloat.h create mode 100644 ffmpeg/libavutil/intfloat_readwrite.c create mode 100644 ffmpeg/libavutil/intfloat_readwrite.h create mode 100644 ffmpeg/libavutil/intmath.c create mode 100644 ffmpeg/libavutil/intmath.h create mode 100644 ffmpeg/libavutil/intreadwrite.h create mode 100644 ffmpeg/libavutil/lfg.c create mode 100644 ffmpeg/libavutil/lfg.h create mode 100644 ffmpeg/libavutil/libavutil.v create mode 100644 ffmpeg/libavutil/libm.h create mode 100644 ffmpeg/libavutil/lls.c create mode 100644 ffmpeg/libavutil/lls.h create mode 100644 ffmpeg/libavutil/log.c create mode 100644 ffmpeg/libavutil/log.h create mode 100644 ffmpeg/libavutil/log2_tab.c create mode 100644 ffmpeg/libavutil/lzo.c create mode 100644 ffmpeg/libavutil/lzo.h create mode 100644 ffmpeg/libavutil/macros.h create mode 100644 ffmpeg/libavutil/mathematics.c create mode 100644 ffmpeg/libavutil/mathematics.h create mode 100644 ffmpeg/libavutil/md5.c create mode 100644 ffmpeg/libavutil/md5.h create mode 100644 ffmpeg/libavutil/mem.c create mode 100644 ffmpeg/libavutil/mem.h create mode 100644 ffmpeg/libavutil/mips/Makefile create mode 100644 ffmpeg/libavutil/mips/float_dsp_mips.c create mode 100644 ffmpeg/libavutil/mips/intreadwrite.h create mode 100644 ffmpeg/libavutil/mips/libm_mips.h create mode 100644 ffmpeg/libavutil/motion_vector.h create mode 100644 ffmpeg/libavutil/murmur3.c create mode 100644 ffmpeg/libavutil/murmur3.h create mode 100644 ffmpeg/libavutil/old_pix_fmts.h create mode 100644 ffmpeg/libavutil/opencl.c create mode 100644 ffmpeg/libavutil/opencl.h create mode 100644 ffmpeg/libavutil/opencl_internal.c create mode 100644 ffmpeg/libavutil/opencl_internal.h create mode 100644 ffmpeg/libavutil/opt.c create mode 100644 ffmpeg/libavutil/opt.h create mode 100644 ffmpeg/libavutil/parseutils.c create mode 100644 ffmpeg/libavutil/parseutils.h create mode 100644 ffmpeg/libavutil/pca.c create mode 100644 ffmpeg/libavutil/pca.h create mode 100644 ffmpeg/libavutil/pixdesc.c create mode 100644 ffmpeg/libavutil/pixdesc.h create mode 100644 ffmpeg/libavutil/pixelutils.c create mode 100644 ffmpeg/libavutil/pixelutils.h create mode 100644 ffmpeg/libavutil/pixfmt.h create mode 100644 ffmpeg/libavutil/ppc/Makefile create mode 100644 ffmpeg/libavutil/ppc/cpu.c create mode 100644 ffmpeg/libavutil/ppc/cpu.h create mode 100644 ffmpeg/libavutil/ppc/float_dsp_altivec.c create mode 100644 ffmpeg/libavutil/ppc/float_dsp_altivec.h create mode 100644 ffmpeg/libavutil/ppc/float_dsp_init.c create mode 100644 ffmpeg/libavutil/ppc/intreadwrite.h create mode 100644 ffmpeg/libavutil/ppc/timer.h create mode 100644 ffmpeg/libavutil/ppc/types_altivec.h create mode 100644 ffmpeg/libavutil/ppc/util_altivec.h create mode 100644 ffmpeg/libavutil/qsort.h create mode 100644 ffmpeg/libavutil/random_seed.c create mode 100644 ffmpeg/libavutil/random_seed.h create mode 100644 ffmpeg/libavutil/rational.c create mode 100644 ffmpeg/libavutil/rational.h create mode 100644 ffmpeg/libavutil/rc4.c create mode 100644 ffmpeg/libavutil/rc4.h create mode 100644 ffmpeg/libavutil/replaygain.h create mode 100644 ffmpeg/libavutil/ripemd.c create mode 100644 ffmpeg/libavutil/ripemd.h create mode 100644 ffmpeg/libavutil/samplefmt.c create mode 100644 ffmpeg/libavutil/samplefmt.h create mode 100644 ffmpeg/libavutil/sh4/bswap.h create mode 100644 ffmpeg/libavutil/sha.c create mode 100644 ffmpeg/libavutil/sha.h create mode 100644 ffmpeg/libavutil/sha512.c create mode 100644 ffmpeg/libavutil/sha512.h create mode 100644 ffmpeg/libavutil/softfloat.c create mode 100644 ffmpeg/libavutil/softfloat.h create mode 100644 ffmpeg/libavutil/stereo3d.c create mode 100644 ffmpeg/libavutil/stereo3d.h create mode 100644 ffmpeg/libavutil/threadmessage.c create mode 100644 ffmpeg/libavutil/threadmessage.h create mode 100644 ffmpeg/libavutil/time.c create mode 100644 ffmpeg/libavutil/time.h create mode 100644 ffmpeg/libavutil/timecode.c create mode 100644 ffmpeg/libavutil/timecode.h create mode 100644 ffmpeg/libavutil/timer.h create mode 100644 ffmpeg/libavutil/timestamp.h create mode 100644 ffmpeg/libavutil/tomi/intreadwrite.h create mode 100644 ffmpeg/libavutil/tree.c create mode 100644 ffmpeg/libavutil/tree.h create mode 100644 ffmpeg/libavutil/utf8.c create mode 100644 ffmpeg/libavutil/utils.c create mode 100644 ffmpeg/libavutil/version.h create mode 100644 ffmpeg/libavutil/x86/Makefile create mode 100644 ffmpeg/libavutil/x86/asm.h create mode 100644 ffmpeg/libavutil/x86/bswap.h create mode 100644 ffmpeg/libavutil/x86/cpu.c create mode 100644 ffmpeg/libavutil/x86/cpu.h create mode 100644 ffmpeg/libavutil/x86/cpuid.asm create mode 100644 ffmpeg/libavutil/x86/emms.asm create mode 100644 ffmpeg/libavutil/x86/emms.h create mode 100644 ffmpeg/libavutil/x86/float_dsp.asm create mode 100644 ffmpeg/libavutil/x86/float_dsp_init.c create mode 100644 ffmpeg/libavutil/x86/intreadwrite.h create mode 100644 ffmpeg/libavutil/x86/lls.asm create mode 100644 ffmpeg/libavutil/x86/lls_init.c create mode 100644 ffmpeg/libavutil/x86/pixelutils.asm create mode 100644 ffmpeg/libavutil/x86/pixelutils.h create mode 100644 ffmpeg/libavutil/x86/pixelutils_init.c create mode 100644 ffmpeg/libavutil/x86/timer.h create mode 100644 ffmpeg/libavutil/x86/w64xmmtest.h create mode 100644 ffmpeg/libavutil/x86/x86inc.asm create mode 100644 ffmpeg/libavutil/x86/x86util.asm create mode 100644 ffmpeg/libavutil/x86_cpu.h create mode 100644 ffmpeg/libavutil/xga_font_data.c create mode 100644 ffmpeg/libavutil/xga_font_data.h create mode 100644 ffmpeg/libavutil/xtea.c create mode 100644 ffmpeg/libavutil/xtea.h create mode 100644 ffmpeg/libpostproc/Makefile create mode 100644 ffmpeg/libpostproc/libpostproc.v create mode 100644 ffmpeg/libpostproc/postprocess.c create mode 100644 ffmpeg/libpostproc/postprocess.h create mode 100644 ffmpeg/libpostproc/postprocess_altivec_template.c create mode 100644 ffmpeg/libpostproc/postprocess_internal.h create mode 100644 ffmpeg/libpostproc/postprocess_template.c create mode 100644 ffmpeg/libpostproc/postprocres.rc create mode 100644 ffmpeg/libpostproc/version.h create mode 100644 ffmpeg/library.mak create mode 100644 ffmpeg/libswresample/Makefile create mode 100644 ffmpeg/libswresample/aarch64/Makefile create mode 100644 ffmpeg/libswresample/aarch64/audio_convert_init.c create mode 100644 ffmpeg/libswresample/aarch64/audio_convert_neon.S create mode 100644 ffmpeg/libswresample/aarch64/neontest.c create mode 100644 ffmpeg/libswresample/arm/Makefile create mode 100644 ffmpeg/libswresample/arm/audio_convert_init.c create mode 100644 ffmpeg/libswresample/arm/audio_convert_neon.S create mode 100644 ffmpeg/libswresample/arm/neontest.c create mode 100644 ffmpeg/libswresample/audioconvert.c create mode 100644 ffmpeg/libswresample/audioconvert.h create mode 100644 ffmpeg/libswresample/dither.c create mode 100644 ffmpeg/libswresample/dither_template.c create mode 100644 ffmpeg/libswresample/libswresample.v create mode 100644 ffmpeg/libswresample/log2_tab.c create mode 100644 ffmpeg/libswresample/noise_shaping_data.c create mode 100644 ffmpeg/libswresample/options.c create mode 100644 ffmpeg/libswresample/rematrix.c create mode 100644 ffmpeg/libswresample/rematrix_template.c create mode 100644 ffmpeg/libswresample/resample.c create mode 100644 ffmpeg/libswresample/resample.h create mode 100644 ffmpeg/libswresample/resample_dsp.c create mode 100644 ffmpeg/libswresample/resample_template.c create mode 100644 ffmpeg/libswresample/soxr_resample.c create mode 100644 ffmpeg/libswresample/swresample-test.c create mode 100644 ffmpeg/libswresample/swresample.c create mode 100644 ffmpeg/libswresample/swresample.h create mode 100644 ffmpeg/libswresample/swresample_frame.c create mode 100644 ffmpeg/libswresample/swresample_internal.h create mode 100644 ffmpeg/libswresample/swresampleres.rc create mode 100644 ffmpeg/libswresample/version.h create mode 100644 ffmpeg/libswresample/x86/Makefile create mode 100644 ffmpeg/libswresample/x86/audio_convert.asm create mode 100644 ffmpeg/libswresample/x86/audio_convert_init.c create mode 100644 ffmpeg/libswresample/x86/rematrix.asm create mode 100644 ffmpeg/libswresample/x86/rematrix_init.c create mode 100644 ffmpeg/libswresample/x86/resample.asm create mode 100644 ffmpeg/libswresample/x86/resample_init.c create mode 100644 ffmpeg/libswresample/x86/w64xmmtest.c create mode 100644 ffmpeg/libswscale/Makefile create mode 100644 ffmpeg/libswscale/arm/Makefile create mode 100644 ffmpeg/libswscale/arm/rgb2yuv_neon_16.S create mode 100644 ffmpeg/libswscale/arm/rgb2yuv_neon_32.S create mode 100644 ffmpeg/libswscale/arm/rgb2yuv_neon_common.S create mode 100644 ffmpeg/libswscale/arm/swscale_unscaled.c create mode 100644 ffmpeg/libswscale/bayer_template.c create mode 100644 ffmpeg/libswscale/colorspace-test.c create mode 100644 ffmpeg/libswscale/hscale_fast_bilinear.c create mode 100644 ffmpeg/libswscale/input.c create mode 100644 ffmpeg/libswscale/libswscale.v create mode 100644 ffmpeg/libswscale/log2_tab.c create mode 100644 ffmpeg/libswscale/options.c create mode 100644 ffmpeg/libswscale/output.c create mode 100644 ffmpeg/libswscale/ppc/Makefile create mode 100644 ffmpeg/libswscale/ppc/swscale_altivec.c create mode 100644 ffmpeg/libswscale/ppc/yuv2rgb_altivec.c create mode 100644 ffmpeg/libswscale/ppc/yuv2rgb_altivec.h create mode 100644 ffmpeg/libswscale/ppc/yuv2yuv_altivec.c create mode 100644 ffmpeg/libswscale/rgb2rgb.c create mode 100644 ffmpeg/libswscale/rgb2rgb.h create mode 100644 ffmpeg/libswscale/rgb2rgb_template.c create mode 100644 ffmpeg/libswscale/swscale-test.c create mode 100644 ffmpeg/libswscale/swscale.c create mode 100644 ffmpeg/libswscale/swscale.h create mode 100644 ffmpeg/libswscale/swscale_internal.h create mode 100644 ffmpeg/libswscale/swscale_unscaled.c create mode 100644 ffmpeg/libswscale/swscaleres.rc create mode 100644 ffmpeg/libswscale/utils.c create mode 100644 ffmpeg/libswscale/version.h create mode 100644 ffmpeg/libswscale/x86/Makefile create mode 100644 ffmpeg/libswscale/x86/hscale_fast_bilinear_simd.c create mode 100644 ffmpeg/libswscale/x86/input.asm create mode 100644 ffmpeg/libswscale/x86/output.asm create mode 100644 ffmpeg/libswscale/x86/rgb2rgb.c create mode 100644 ffmpeg/libswscale/x86/rgb2rgb_template.c create mode 100644 ffmpeg/libswscale/x86/scale.asm create mode 100644 ffmpeg/libswscale/x86/swscale.c create mode 100644 ffmpeg/libswscale/x86/swscale_template.c create mode 100644 ffmpeg/libswscale/x86/w64xmmtest.c create mode 100644 ffmpeg/libswscale/x86/yuv2rgb.c create mode 100644 ffmpeg/libswscale/x86/yuv2rgb_template.c create mode 100644 ffmpeg/libswscale/yuv2rgb.c create mode 100644 ffmpeg/presets/libvpx-1080p.ffpreset create mode 100644 ffmpeg/presets/libvpx-1080p50_60.ffpreset create mode 100644 ffmpeg/presets/libvpx-360p.ffpreset create mode 100644 ffmpeg/presets/libvpx-720p.ffpreset create mode 100644 ffmpeg/presets/libvpx-720p50_60.ffpreset create mode 100644 ffmpeg/tests/Makefile create mode 100644 ffmpeg/tests/audiogen.c create mode 100644 ffmpeg/tests/base64.c create mode 100755 ffmpeg/tests/copycooker.sh create mode 100755 ffmpeg/tests/fate-run.sh create mode 100644 ffmpeg/tests/fate-valgrind.supp create mode 100755 ffmpeg/tests/fate.sh create mode 100644 ffmpeg/tests/fate/aac.mak create mode 100644 ffmpeg/tests/fate/ac3.mak create mode 100644 ffmpeg/tests/fate/acodec.mak create mode 100644 ffmpeg/tests/fate/adpcm.mak create mode 100644 ffmpeg/tests/fate/alac.mak create mode 100644 ffmpeg/tests/fate/als.mak create mode 100644 ffmpeg/tests/fate/amrnb.mak create mode 100644 ffmpeg/tests/fate/amrwb.mak create mode 100644 ffmpeg/tests/fate/atrac.mak create mode 100644 ffmpeg/tests/fate/audio.mak create mode 100644 ffmpeg/tests/fate/avformat.mak create mode 100644 ffmpeg/tests/fate/bmp.mak create mode 100644 ffmpeg/tests/fate/cdxl.mak create mode 100644 ffmpeg/tests/fate/cover-art.mak create mode 100644 ffmpeg/tests/fate/demux.mak create mode 100644 ffmpeg/tests/fate/dfa.mak create mode 100644 ffmpeg/tests/fate/dpcm.mak create mode 100644 ffmpeg/tests/fate/ea.mak create mode 100644 ffmpeg/tests/fate/exif.mak create mode 100644 ffmpeg/tests/fate/ffmpeg.mak create mode 100644 ffmpeg/tests/fate/ffprobe.mak create mode 100644 ffmpeg/tests/fate/fft.mak create mode 100644 ffmpeg/tests/fate/filter-audio.mak create mode 100644 ffmpeg/tests/fate/filter-video.mak create mode 100644 ffmpeg/tests/fate/flac.mak create mode 100644 ffmpeg/tests/fate/gif.mak create mode 100644 ffmpeg/tests/fate/h264.mak create mode 100644 ffmpeg/tests/fate/hevc.mak create mode 100644 ffmpeg/tests/fate/image.mak create mode 100644 ffmpeg/tests/fate/indeo.mak create mode 100644 ffmpeg/tests/fate/libavcodec.mak create mode 100644 ffmpeg/tests/fate/libavdevice.mak create mode 100644 ffmpeg/tests/fate/libavformat.mak create mode 100644 ffmpeg/tests/fate/libavresample.mak create mode 100644 ffmpeg/tests/fate/libavutil.mak create mode 100644 ffmpeg/tests/fate/libswresample.mak create mode 100644 ffmpeg/tests/fate/lossless-audio.mak create mode 100644 ffmpeg/tests/fate/lossless-video.mak create mode 100644 ffmpeg/tests/fate/microsoft.mak create mode 100644 ffmpeg/tests/fate/monkeysaudio.mak create mode 100644 ffmpeg/tests/fate/mp3.mak create mode 100644 ffmpeg/tests/fate/mpc.mak create mode 100644 ffmpeg/tests/fate/opus.mak create mode 100644 ffmpeg/tests/fate/pcm.mak create mode 100644 ffmpeg/tests/fate/probe.mak create mode 100644 ffmpeg/tests/fate/prores.mak create mode 100644 ffmpeg/tests/fate/qt.mak create mode 100644 ffmpeg/tests/fate/qtrle.mak create mode 100644 ffmpeg/tests/fate/real.mak create mode 100644 ffmpeg/tests/fate/screen.mak create mode 100644 ffmpeg/tests/fate/seek.mak create mode 100644 ffmpeg/tests/fate/subtitles.mak create mode 100644 ffmpeg/tests/fate/utvideo.mak create mode 100644 ffmpeg/tests/fate/vcodec.mak create mode 100644 ffmpeg/tests/fate/video.mak create mode 100644 ffmpeg/tests/fate/voice.mak create mode 100644 ffmpeg/tests/fate/vorbis.mak create mode 100644 ffmpeg/tests/fate/vpx.mak create mode 100644 ffmpeg/tests/fate/vqf.mak create mode 100644 ffmpeg/tests/fate/wavpack.mak create mode 100644 ffmpeg/tests/fate/wma.mak create mode 100644 ffmpeg/tests/fate/xvid.mak create mode 100755 ffmpeg/tests/ffserver-regression.sh create mode 100644 ffmpeg/tests/ffserver.conf create mode 100644 ffmpeg/tests/ffserver.regression.ref create mode 100644 ffmpeg/tests/filtergraphs/alphamerge_alphaextract_rgb create mode 100644 ffmpeg/tests/filtergraphs/alphamerge_alphaextract_yuv create mode 100644 ffmpeg/tests/filtergraphs/channelmap_one_int create mode 100644 ffmpeg/tests/filtergraphs/channelmap_one_str create mode 100644 ffmpeg/tests/filtergraphs/concat create mode 100644 ffmpeg/tests/filtergraphs/gradfun create mode 100644 ffmpeg/tests/filtergraphs/hqdn3d create mode 100644 ffmpeg/tests/filtergraphs/lavr_mix_output_zero create mode 100644 ffmpeg/tests/filtergraphs/overlay create mode 100644 ffmpeg/tests/filtergraphs/overlay_rgb create mode 100644 ffmpeg/tests/filtergraphs/overlay_yuv420 create mode 100644 ffmpeg/tests/filtergraphs/overlay_yuv422 create mode 100644 ffmpeg/tests/filtergraphs/overlay_yuv444 create mode 100644 ffmpeg/tests/filtergraphs/scalenorm create mode 100644 ffmpeg/tests/filtergraphs/select-alternate create mode 100644 ffmpeg/tests/filtergraphs/setpts create mode 100755 ffmpeg/tests/lavf-regression.sh create mode 100644 ffmpeg/tests/md5.sh create mode 100644 ffmpeg/tests/ref/acodec/adpcm-adx create mode 100644 ffmpeg/tests/ref/acodec/adpcm-adx-trellis create mode 100644 ffmpeg/tests/ref/acodec/adpcm-ima_qt create mode 100644 ffmpeg/tests/ref/acodec/adpcm-ima_qt-trellis create mode 100644 ffmpeg/tests/ref/acodec/adpcm-ima_wav create mode 100644 ffmpeg/tests/ref/acodec/adpcm-ima_wav-trellis create mode 100644 ffmpeg/tests/ref/acodec/adpcm-ms create mode 100644 ffmpeg/tests/ref/acodec/adpcm-ms-trellis create mode 100644 ffmpeg/tests/ref/acodec/adpcm-swf create mode 100644 ffmpeg/tests/ref/acodec/adpcm-swf-trellis create mode 100644 ffmpeg/tests/ref/acodec/adpcm-yamaha create mode 100644 ffmpeg/tests/ref/acodec/adpcm-yamaha-trellis create mode 100644 ffmpeg/tests/ref/acodec/adpcm_ima_qt create mode 100644 ffmpeg/tests/ref/acodec/alac create mode 100644 ffmpeg/tests/ref/acodec/flac create mode 100644 ffmpeg/tests/ref/acodec/g723_1 create mode 100644 ffmpeg/tests/ref/acodec/mp2 create mode 100644 ffmpeg/tests/ref/acodec/mp2fixed create mode 100644 ffmpeg/tests/ref/acodec/pcm-alaw create mode 100644 ffmpeg/tests/ref/acodec/pcm-f32be create mode 100644 ffmpeg/tests/ref/acodec/pcm-f32le create mode 100644 ffmpeg/tests/ref/acodec/pcm-f64be create mode 100644 ffmpeg/tests/ref/acodec/pcm-f64le create mode 100644 ffmpeg/tests/ref/acodec/pcm-mulaw create mode 100644 ffmpeg/tests/ref/acodec/pcm-s16be create mode 100644 ffmpeg/tests/ref/acodec/pcm-s16be_planar create mode 100644 ffmpeg/tests/ref/acodec/pcm-s16le create mode 100644 ffmpeg/tests/ref/acodec/pcm-s16le_planar create mode 100644 ffmpeg/tests/ref/acodec/pcm-s24be create mode 100644 ffmpeg/tests/ref/acodec/pcm-s24le create mode 100644 ffmpeg/tests/ref/acodec/pcm-s24le_planar create mode 100644 ffmpeg/tests/ref/acodec/pcm-s32be create mode 100644 ffmpeg/tests/ref/acodec/pcm-s32le create mode 100644 ffmpeg/tests/ref/acodec/pcm-s32le_planar create mode 100644 ffmpeg/tests/ref/acodec/pcm-s8 create mode 100644 ffmpeg/tests/ref/acodec/pcm-s8_planar create mode 100644 ffmpeg/tests/ref/acodec/pcm-u16be create mode 100644 ffmpeg/tests/ref/acodec/pcm-u16le create mode 100644 ffmpeg/tests/ref/acodec/pcm-u24be create mode 100644 ffmpeg/tests/ref/acodec/pcm-u24le create mode 100644 ffmpeg/tests/ref/acodec/pcm-u32be create mode 100644 ffmpeg/tests/ref/acodec/pcm-u32le create mode 100644 ffmpeg/tests/ref/acodec/pcm-u8 create mode 100644 ffmpeg/tests/ref/acodec/roqaudio create mode 100644 ffmpeg/tests/ref/fate/4xm-1 create mode 100644 ffmpeg/tests/ref/fate/4xm-2 create mode 100644 ffmpeg/tests/ref/fate/8bps create mode 100644 ffmpeg/tests/ref/fate/aasc create mode 100644 ffmpeg/tests/ref/fate/acodec-aref create mode 100644 ffmpeg/tests/ref/fate/adpcm-4xm create mode 100644 ffmpeg/tests/ref/fate/adpcm-afc create mode 100644 ffmpeg/tests/ref/fate/adpcm-creative create mode 100644 ffmpeg/tests/ref/fate/adpcm-creative-8-2.6bit create mode 100644 ffmpeg/tests/ref/fate/adpcm-creative-8-2bit create mode 100644 ffmpeg/tests/ref/fate/adpcm-creative-8-4bit create mode 100644 ffmpeg/tests/ref/fate/adpcm-dtk create mode 100644 ffmpeg/tests/ref/fate/adpcm-ea-1 create mode 100644 ffmpeg/tests/ref/fate/adpcm-ea-2 create mode 100644 ffmpeg/tests/ref/fate/adpcm-ea-maxis-xa create mode 100644 ffmpeg/tests/ref/fate/adpcm-ea-r1 create mode 100644 ffmpeg/tests/ref/fate/adpcm-ea-r2 create mode 100644 ffmpeg/tests/ref/fate/adpcm-ea-r3 create mode 100644 ffmpeg/tests/ref/fate/adpcm-ima-amv create mode 100644 ffmpeg/tests/ref/fate/adpcm-ima-apc create mode 100644 ffmpeg/tests/ref/fate/adpcm-ima-dk3 create mode 100644 ffmpeg/tests/ref/fate/adpcm-ima-dk4 create mode 100644 ffmpeg/tests/ref/fate/adpcm-ima-ea-eacs create mode 100644 ffmpeg/tests/ref/fate/adpcm-ima-ea-sead create mode 100644 ffmpeg/tests/ref/fate/adpcm-ima-iss create mode 100644 ffmpeg/tests/ref/fate/adpcm-ima-oki create mode 100644 ffmpeg/tests/ref/fate/adpcm-ima-rad create mode 100644 ffmpeg/tests/ref/fate/adpcm-ima-smjpeg create mode 100644 ffmpeg/tests/ref/fate/adpcm-ima-ws create mode 100644 ffmpeg/tests/ref/fate/adpcm-ima_wav-stereo create mode 100644 ffmpeg/tests/ref/fate/adpcm-ms-mono create mode 100644 ffmpeg/tests/ref/fate/adpcm-thp create mode 100644 ffmpeg/tests/ref/fate/adpcm-vima create mode 100644 ffmpeg/tests/ref/fate/adpcm-xa create mode 100644 ffmpeg/tests/ref/fate/adpcm_ms-stereo create mode 100644 ffmpeg/tests/ref/fate/adts-demux create mode 100644 ffmpeg/tests/ref/fate/aea-demux create mode 100644 ffmpeg/tests/ref/fate/aic create mode 100644 ffmpeg/tests/ref/fate/alg-mm create mode 100644 ffmpeg/tests/ref/fate/aliaspix-bgr create mode 100644 ffmpeg/tests/ref/fate/aliaspix-gray create mode 100644 ffmpeg/tests/ref/fate/amv create mode 100644 ffmpeg/tests/ref/fate/ansi create mode 100644 ffmpeg/tests/ref/fate/ansi256 create mode 100644 ffmpeg/tests/ref/fate/armovie-escape124 create mode 100644 ffmpeg/tests/ref/fate/armovie-escape130 create mode 100644 ffmpeg/tests/ref/fate/ast create mode 100644 ffmpeg/tests/ref/fate/auravision-v1 create mode 100644 ffmpeg/tests/ref/fate/auravision-v2 create mode 100644 ffmpeg/tests/ref/fate/avio-direct create mode 100644 ffmpeg/tests/ref/fate/avstring create mode 100644 ffmpeg/tests/ref/fate/base64 create mode 100644 ffmpeg/tests/ref/fate/bethsoft-vid create mode 100644 ffmpeg/tests/ref/fate/bfi create mode 100644 ffmpeg/tests/ref/fate/bink-demux create mode 100644 ffmpeg/tests/ref/fate/bink-video-b create mode 100644 ffmpeg/tests/ref/fate/bink-video-f create mode 100644 ffmpeg/tests/ref/fate/bink-video-i create mode 100644 ffmpeg/tests/ref/fate/blowfish create mode 100644 ffmpeg/tests/ref/fate/bmp-15bit create mode 100644 ffmpeg/tests/ref/fate/bmp-15bit-mask create mode 100644 ffmpeg/tests/ref/fate/bmp-16bit-mask create mode 100644 ffmpeg/tests/ref/fate/bmp-1bit create mode 100644 ffmpeg/tests/ref/fate/bmp-24bit create mode 100644 ffmpeg/tests/ref/fate/bmp-32bit create mode 100644 ffmpeg/tests/ref/fate/bmp-32bit-mask create mode 100644 ffmpeg/tests/ref/fate/bmp-4bit create mode 100644 ffmpeg/tests/ref/fate/bmp-4bit-os2 create mode 100644 ffmpeg/tests/ref/fate/bmp-8bit create mode 100644 ffmpeg/tests/ref/fate/bmp-8bit-os2 create mode 100644 ffmpeg/tests/ref/fate/bmp-rle4 create mode 100644 ffmpeg/tests/ref/fate/bmp-rle8 create mode 100644 ffmpeg/tests/ref/fate/bmpparser create mode 100644 ffmpeg/tests/ref/fate/bmv-audio create mode 100644 ffmpeg/tests/ref/fate/bmv-video create mode 100644 ffmpeg/tests/ref/fate/bprint create mode 100644 ffmpeg/tests/ref/fate/brenderpix-24 create mode 100644 ffmpeg/tests/ref/fate/brenderpix-565 create mode 100644 ffmpeg/tests/ref/fate/brenderpix-defpal create mode 100644 ffmpeg/tests/ref/fate/brenderpix-intpal create mode 100644 ffmpeg/tests/ref/fate/brenderpix-y400a create mode 100644 ffmpeg/tests/ref/fate/brstm create mode 100644 ffmpeg/tests/ref/fate/caf create mode 100644 ffmpeg/tests/ref/fate/cavs create mode 100644 ffmpeg/tests/ref/fate/cdgraphics create mode 100644 ffmpeg/tests/ref/fate/cdxl-bitline-ham6 create mode 100644 ffmpeg/tests/ref/fate/cdxl-demux create mode 100644 ffmpeg/tests/ref/fate/cdxl-ham6 create mode 100644 ffmpeg/tests/ref/fate/cdxl-ham8 create mode 100644 ffmpeg/tests/ref/fate/cdxl-pal8 create mode 100644 ffmpeg/tests/ref/fate/cdxl-pal8-small create mode 100644 ffmpeg/tests/ref/fate/cine-demux create mode 100644 ffmpeg/tests/ref/fate/cljr create mode 100644 ffmpeg/tests/ref/fate/cllc-argb create mode 100644 ffmpeg/tests/ref/fate/cllc-rgb create mode 100644 ffmpeg/tests/ref/fate/cllc-yuy2-noblock create mode 100644 ffmpeg/tests/ref/fate/corepng create mode 100644 ffmpeg/tests/ref/fate/crc create mode 100644 ffmpeg/tests/ref/fate/creatureshock-avs create mode 100644 ffmpeg/tests/ref/fate/cscd create mode 100644 ffmpeg/tests/ref/fate/cvid-grayscale create mode 100644 ffmpeg/tests/ref/fate/cvid-palette create mode 100644 ffmpeg/tests/ref/fate/cvid-partial create mode 100644 ffmpeg/tests/ref/fate/cyberia-c93 create mode 100644 ffmpeg/tests/ref/fate/cyuv create mode 100644 ffmpeg/tests/ref/fate/d-cinema-demux create mode 100644 ffmpeg/tests/ref/fate/dcinema-encode create mode 100644 ffmpeg/tests/ref/fate/delphine-cin-audio create mode 100644 ffmpeg/tests/ref/fate/delphine-cin-video create mode 100644 ffmpeg/tests/ref/fate/deluxepaint-anm create mode 100644 ffmpeg/tests/ref/fate/dfa1 create mode 100644 ffmpeg/tests/ref/fate/dfa10 create mode 100644 ffmpeg/tests/ref/fate/dfa11 create mode 100644 ffmpeg/tests/ref/fate/dfa2 create mode 100644 ffmpeg/tests/ref/fate/dfa3 create mode 100644 ffmpeg/tests/ref/fate/dfa4 create mode 100644 ffmpeg/tests/ref/fate/dfa5 create mode 100644 ffmpeg/tests/ref/fate/dfa6 create mode 100644 ffmpeg/tests/ref/fate/dfa7 create mode 100644 ffmpeg/tests/ref/fate/dfa8 create mode 100644 ffmpeg/tests/ref/fate/dfa9 create mode 100644 ffmpeg/tests/ref/fate/dirac create mode 100644 ffmpeg/tests/ref/fate/dpcm-idroq create mode 100644 ffmpeg/tests/ref/fate/dpcm-interplay create mode 100644 ffmpeg/tests/ref/fate/dpcm-sierra create mode 100644 ffmpeg/tests/ref/fate/dpcm-xan create mode 100644 ffmpeg/tests/ref/fate/dpx create mode 100644 ffmpeg/tests/ref/fate/dxa-feeble create mode 100644 ffmpeg/tests/ref/fate/dxa-scummvm create mode 100644 ffmpeg/tests/ref/fate/dxtory create mode 100644 ffmpeg/tests/ref/fate/ea-cdata create mode 100644 ffmpeg/tests/ref/fate/ea-cmv create mode 100644 ffmpeg/tests/ref/fate/ea-mad create mode 100644 ffmpeg/tests/ref/fate/ea-tgq create mode 100644 ffmpeg/tests/ref/fate/ea-tgv-1 create mode 100644 ffmpeg/tests/ref/fate/ea-tgv-2 create mode 100644 ffmpeg/tests/ref/fate/ea-tqi create mode 100644 ffmpeg/tests/ref/fate/eval create mode 100644 ffmpeg/tests/ref/fate/exif-image-embedded create mode 100644 ffmpeg/tests/ref/fate/exif-image-jpg create mode 100644 ffmpeg/tests/ref/fate/exif-image-tiff create mode 100644 ffmpeg/tests/ref/fate/exif-image-webp create mode 100644 ffmpeg/tests/ref/fate/exr-slice-pxr24 create mode 100644 ffmpeg/tests/ref/fate/exr-slice-raw create mode 100644 ffmpeg/tests/ref/fate/exr-slice-rle create mode 100644 ffmpeg/tests/ref/fate/exr-slice-zip1 create mode 100644 ffmpeg/tests/ref/fate/exr-slice-zip16 create mode 100644 ffmpeg/tests/ref/fate/ffmpeg-filter_complex create mode 100644 ffmpeg/tests/ref/fate/ffmpeg-lavfi create mode 100644 ffmpeg/tests/ref/fate/ffprobe_compact create mode 100644 ffmpeg/tests/ref/fate/ffprobe_csv create mode 100644 ffmpeg/tests/ref/fate/ffprobe_default create mode 100644 ffmpeg/tests/ref/fate/ffprobe_flat create mode 100644 ffmpeg/tests/ref/fate/ffprobe_ini create mode 100644 ffmpeg/tests/ref/fate/ffprobe_json create mode 100644 ffmpeg/tests/ref/fate/ffprobe_xml create mode 100644 ffmpeg/tests/ref/fate/fic-avi create mode 100644 ffmpeg/tests/ref/fate/fifo create mode 100644 ffmpeg/tests/ref/fate/film-cvid create mode 100644 ffmpeg/tests/ref/fate/filter-adelay create mode 100644 ffmpeg/tests/ref/fate/filter-alphaextract_alphamerge_rgb create mode 100644 ffmpeg/tests/ref/fate/filter-alphaextract_alphamerge_yuv create mode 100644 ffmpeg/tests/ref/fate/filter-atrim-duration create mode 100644 ffmpeg/tests/ref/fate/filter-atrim-mixed create mode 100644 ffmpeg/tests/ref/fate/filter-atrim-samples create mode 100644 ffmpeg/tests/ref/fate/filter-atrim-time create mode 100644 ffmpeg/tests/ref/fate/filter-boxblur create mode 100644 ffmpeg/tests/ref/fate/filter-codecview-mvs create mode 100644 ffmpeg/tests/ref/fate/filter-colorchannelmixer create mode 100644 ffmpeg/tests/ref/fate/filter-colormatrix1 create mode 100644 ffmpeg/tests/ref/fate/filter-colormatrix2 create mode 100644 ffmpeg/tests/ref/fate/filter-concat create mode 100644 ffmpeg/tests/ref/fate/filter-crop create mode 100644 ffmpeg/tests/ref/fate/filter-crop_scale create mode 100644 ffmpeg/tests/ref/fate/filter-crop_scale_vflip create mode 100644 ffmpeg/tests/ref/fate/filter-crop_vflip create mode 100644 ffmpeg/tests/ref/fate/filter-curves create mode 100644 ffmpeg/tests/ref/fate/filter-delogo create mode 100644 ffmpeg/tests/ref/fate/filter-drawbox create mode 100644 ffmpeg/tests/ref/fate/filter-edgedetect create mode 100644 ffmpeg/tests/ref/fate/filter-edgedetect-colormix create mode 100644 ffmpeg/tests/ref/fate/filter-fade create mode 100644 ffmpeg/tests/ref/fate/filter-fieldorder create mode 100644 ffmpeg/tests/ref/fate/filter-framepack-columns create mode 100644 ffmpeg/tests/ref/fate/filter-framepack-frameseq create mode 100644 ffmpeg/tests/ref/fate/filter-framepack-lines create mode 100644 ffmpeg/tests/ref/fate/filter-framepack-sbs create mode 100644 ffmpeg/tests/ref/fate/filter-framepack-tab create mode 100644 ffmpeg/tests/ref/fate/filter-gradfun create mode 100644 ffmpeg/tests/ref/fate/filter-gradfun-sample create mode 100644 ffmpeg/tests/ref/fate/filter-histogram-levels create mode 100644 ffmpeg/tests/ref/fate/filter-histogram-waveform create mode 100644 ffmpeg/tests/ref/fate/filter-hq2x create mode 100644 ffmpeg/tests/ref/fate/filter-hq3x create mode 100644 ffmpeg/tests/ref/fate/filter-hq4x create mode 100644 ffmpeg/tests/ref/fate/filter-hqdn3d create mode 100644 ffmpeg/tests/ref/fate/filter-hqdn3d-sample create mode 100644 ffmpeg/tests/ref/fate/filter-hue create mode 100644 ffmpeg/tests/ref/fate/filter-idet create mode 100644 ffmpeg/tests/ref/fate/filter-interlace create mode 100644 ffmpeg/tests/ref/fate/filter-lavd-life create mode 100644 ffmpeg/tests/ref/fate/filter-lavd-scalenorm create mode 100644 ffmpeg/tests/ref/fate/filter-lavd-testsrc create mode 100644 ffmpeg/tests/ref/fate/filter-mcdeint-fast create mode 100644 ffmpeg/tests/ref/fate/filter-mcdeint-medium create mode 100644 ffmpeg/tests/ref/fate/filter-metadata-ebur128 create mode 100644 ffmpeg/tests/ref/fate/filter-metadata-scenedetect create mode 100644 ffmpeg/tests/ref/fate/filter-metadata-silencedetect create mode 100644 ffmpeg/tests/ref/fate/filter-negate create mode 100644 ffmpeg/tests/ref/fate/filter-null create mode 100644 ffmpeg/tests/ref/fate/filter-overlay create mode 100644 ffmpeg/tests/ref/fate/filter-overlay_rgb create mode 100644 ffmpeg/tests/ref/fate/filter-overlay_yuv420 create mode 100644 ffmpeg/tests/ref/fate/filter-overlay_yuv422 create mode 100644 ffmpeg/tests/ref/fate/filter-overlay_yuv444 create mode 100644 ffmpeg/tests/ref/fate/filter-pad create mode 100644 ffmpeg/tests/ref/fate/filter-phase create mode 100644 ffmpeg/tests/ref/fate/filter-pixdesc-0bgr create mode 100644 ffmpeg/tests/ref/fate/filter-pixdesc-0rgb create mode 100644 ffmpeg/tests/ref/fate/filter-pixdesc-abgr create mode 100644 ffmpeg/tests/ref/fate/filter-pixdesc-argb create mode 100644 ffmpeg/tests/ref/fate/filter-pixdesc-bgr0 create mode 100644 ffmpeg/tests/ref/fate/filter-pixdesc-bgr24 create mode 100644 ffmpeg/tests/ref/fate/filter-pixdesc-bgr444be create mode 100644 ffmpeg/tests/ref/fate/filter-pixdesc-bgr444le create mode 100644 ffmpeg/tests/ref/fate/filter-pixdesc-bgr48be create mode 100644 ffmpeg/tests/ref/fate/filter-pixdesc-bgr48le create mode 100644 ffmpeg/tests/ref/fate/filter-pixdesc-bgr4_byte create mode 100644 ffmpeg/tests/ref/fate/filter-pixdesc-bgr555be create mode 100644 ffmpeg/tests/ref/fate/filter-pixdesc-bgr555le create mode 100644 ffmpeg/tests/ref/fate/filter-pixdesc-bgr565be create mode 100644 ffmpeg/tests/ref/fate/filter-pixdesc-bgr565le create mode 100644 ffmpeg/tests/ref/fate/filter-pixdesc-bgr8 create mode 100644 ffmpeg/tests/ref/fate/filter-pixdesc-bgra create mode 100644 ffmpeg/tests/ref/fate/filter-pixdesc-bgra64be create mode 100644 ffmpeg/tests/ref/fate/filter-pixdesc-bgra64le create mode 100644 ffmpeg/tests/ref/fate/filter-pixdesc-gbrap create mode 100644 ffmpeg/tests/ref/fate/filter-pixdesc-gbrp create mode 100644 ffmpeg/tests/ref/fate/filter-pixdesc-gbrp10be create mode 100644 ffmpeg/tests/ref/fate/filter-pixdesc-gbrp10le create mode 100644 ffmpeg/tests/ref/fate/filter-pixdesc-gbrp12be create mode 100644 ffmpeg/tests/ref/fate/filter-pixdesc-gbrp12le create mode 100644 ffmpeg/tests/ref/fate/filter-pixdesc-gbrp14be create mode 100644 ffmpeg/tests/ref/fate/filter-pixdesc-gbrp14le create mode 100644 ffmpeg/tests/ref/fate/filter-pixdesc-gbrp9be create mode 100644 ffmpeg/tests/ref/fate/filter-pixdesc-gbrp9le create mode 100644 ffmpeg/tests/ref/fate/filter-pixdesc-gray create mode 100644 ffmpeg/tests/ref/fate/filter-pixdesc-gray16be create mode 100644 ffmpeg/tests/ref/fate/filter-pixdesc-gray16le create mode 100644 ffmpeg/tests/ref/fate/filter-pixdesc-monob create mode 100644 ffmpeg/tests/ref/fate/filter-pixdesc-monow create mode 100644 ffmpeg/tests/ref/fate/filter-pixdesc-nv12 create mode 100644 ffmpeg/tests/ref/fate/filter-pixdesc-nv21 create mode 100644 ffmpeg/tests/ref/fate/filter-pixdesc-rgb0 create mode 100644 ffmpeg/tests/ref/fate/filter-pixdesc-rgb24 create mode 100644 ffmpeg/tests/ref/fate/filter-pixdesc-rgb444be create mode 100644 ffmpeg/tests/ref/fate/filter-pixdesc-rgb444le create mode 100644 ffmpeg/tests/ref/fate/filter-pixdesc-rgb48be create mode 100644 ffmpeg/tests/ref/fate/filter-pixdesc-rgb48le create mode 100644 ffmpeg/tests/ref/fate/filter-pixdesc-rgb4_byte create mode 100644 ffmpeg/tests/ref/fate/filter-pixdesc-rgb555be create mode 100644 ffmpeg/tests/ref/fate/filter-pixdesc-rgb555le create mode 100644 ffmpeg/tests/ref/fate/filter-pixdesc-rgb565be create mode 100644 ffmpeg/tests/ref/fate/filter-pixdesc-rgb565le create mode 100644 ffmpeg/tests/ref/fate/filter-pixdesc-rgb8 create mode 100644 ffmpeg/tests/ref/fate/filter-pixdesc-rgba create mode 100644 ffmpeg/tests/ref/fate/filter-pixdesc-rgba64be create mode 100644 ffmpeg/tests/ref/fate/filter-pixdesc-rgba64le create mode 100644 ffmpeg/tests/ref/fate/filter-pixdesc-uyvy422 create mode 100644 ffmpeg/tests/ref/fate/filter-pixdesc-xyz12be create mode 100644 ffmpeg/tests/ref/fate/filter-pixdesc-xyz12le create mode 100644 ffmpeg/tests/ref/fate/filter-pixdesc-yuv410p create mode 100644 ffmpeg/tests/ref/fate/filter-pixdesc-yuv411p create mode 100644 ffmpeg/tests/ref/fate/filter-pixdesc-yuv420p create mode 100644 ffmpeg/tests/ref/fate/filter-pixdesc-yuv420p10be create mode 100644 ffmpeg/tests/ref/fate/filter-pixdesc-yuv420p10le create mode 100644 ffmpeg/tests/ref/fate/filter-pixdesc-yuv420p12be create mode 100644 ffmpeg/tests/ref/fate/filter-pixdesc-yuv420p12le create mode 100644 ffmpeg/tests/ref/fate/filter-pixdesc-yuv420p14be create mode 100644 ffmpeg/tests/ref/fate/filter-pixdesc-yuv420p14le create mode 100644 ffmpeg/tests/ref/fate/filter-pixdesc-yuv420p16be create mode 100644 ffmpeg/tests/ref/fate/filter-pixdesc-yuv420p16le create mode 100644 ffmpeg/tests/ref/fate/filter-pixdesc-yuv420p9be create mode 100644 ffmpeg/tests/ref/fate/filter-pixdesc-yuv420p9le create mode 100644 ffmpeg/tests/ref/fate/filter-pixdesc-yuv422p create mode 100644 ffmpeg/tests/ref/fate/filter-pixdesc-yuv422p10be create mode 100644 ffmpeg/tests/ref/fate/filter-pixdesc-yuv422p10le create mode 100644 ffmpeg/tests/ref/fate/filter-pixdesc-yuv422p12be create mode 100644 ffmpeg/tests/ref/fate/filter-pixdesc-yuv422p12le create mode 100644 ffmpeg/tests/ref/fate/filter-pixdesc-yuv422p14be create mode 100644 ffmpeg/tests/ref/fate/filter-pixdesc-yuv422p14le create mode 100644 ffmpeg/tests/ref/fate/filter-pixdesc-yuv422p16be create mode 100644 ffmpeg/tests/ref/fate/filter-pixdesc-yuv422p16le create mode 100644 ffmpeg/tests/ref/fate/filter-pixdesc-yuv422p9be create mode 100644 ffmpeg/tests/ref/fate/filter-pixdesc-yuv422p9le create mode 100644 ffmpeg/tests/ref/fate/filter-pixdesc-yuv440p create mode 100644 ffmpeg/tests/ref/fate/filter-pixdesc-yuv444p create mode 100644 ffmpeg/tests/ref/fate/filter-pixdesc-yuv444p10be create mode 100644 ffmpeg/tests/ref/fate/filter-pixdesc-yuv444p10le create mode 100644 ffmpeg/tests/ref/fate/filter-pixdesc-yuv444p12be create mode 100644 ffmpeg/tests/ref/fate/filter-pixdesc-yuv444p12le create mode 100644 ffmpeg/tests/ref/fate/filter-pixdesc-yuv444p14be create mode 100644 ffmpeg/tests/ref/fate/filter-pixdesc-yuv444p14le create mode 100644 ffmpeg/tests/ref/fate/filter-pixdesc-yuv444p16be create mode 100644 ffmpeg/tests/ref/fate/filter-pixdesc-yuv444p16le create mode 100644 ffmpeg/tests/ref/fate/filter-pixdesc-yuv444p9be create mode 100644 ffmpeg/tests/ref/fate/filter-pixdesc-yuv444p9le create mode 100644 ffmpeg/tests/ref/fate/filter-pixdesc-yuva420p create mode 100644 ffmpeg/tests/ref/fate/filter-pixdesc-yuva420p10be create mode 100644 ffmpeg/tests/ref/fate/filter-pixdesc-yuva420p10le create mode 100644 ffmpeg/tests/ref/fate/filter-pixdesc-yuva420p16be create mode 100644 ffmpeg/tests/ref/fate/filter-pixdesc-yuva420p16le create mode 100644 ffmpeg/tests/ref/fate/filter-pixdesc-yuva420p9be create mode 100644 ffmpeg/tests/ref/fate/filter-pixdesc-yuva420p9le create mode 100644 ffmpeg/tests/ref/fate/filter-pixdesc-yuva422p create mode 100644 ffmpeg/tests/ref/fate/filter-pixdesc-yuva422p10be create mode 100644 ffmpeg/tests/ref/fate/filter-pixdesc-yuva422p10le create mode 100644 ffmpeg/tests/ref/fate/filter-pixdesc-yuva422p16be create mode 100644 ffmpeg/tests/ref/fate/filter-pixdesc-yuva422p16le create mode 100644 ffmpeg/tests/ref/fate/filter-pixdesc-yuva422p9be create mode 100644 ffmpeg/tests/ref/fate/filter-pixdesc-yuva422p9le create mode 100644 ffmpeg/tests/ref/fate/filter-pixdesc-yuva444p create mode 100644 ffmpeg/tests/ref/fate/filter-pixdesc-yuva444p10be create mode 100644 ffmpeg/tests/ref/fate/filter-pixdesc-yuva444p10le create mode 100644 ffmpeg/tests/ref/fate/filter-pixdesc-yuva444p16be create mode 100644 ffmpeg/tests/ref/fate/filter-pixdesc-yuva444p16le create mode 100644 ffmpeg/tests/ref/fate/filter-pixdesc-yuva444p9be create mode 100644 ffmpeg/tests/ref/fate/filter-pixdesc-yuva444p9le create mode 100644 ffmpeg/tests/ref/fate/filter-pixdesc-yuvj411p create mode 100644 ffmpeg/tests/ref/fate/filter-pixdesc-yuvj420p create mode 100644 ffmpeg/tests/ref/fate/filter-pixdesc-yuvj422p create mode 100644 ffmpeg/tests/ref/fate/filter-pixdesc-yuvj440p create mode 100644 ffmpeg/tests/ref/fate/filter-pixdesc-yuvj444p create mode 100644 ffmpeg/tests/ref/fate/filter-pixdesc-yuyv422 create mode 100644 ffmpeg/tests/ref/fate/filter-pixdesc-yvyu422 create mode 100644 ffmpeg/tests/ref/fate/filter-pixfmts-copy create mode 100644 ffmpeg/tests/ref/fate/filter-pixfmts-crop create mode 100644 ffmpeg/tests/ref/fate/filter-pixfmts-field create mode 100644 ffmpeg/tests/ref/fate/filter-pixfmts-fieldmatch create mode 100644 ffmpeg/tests/ref/fate/filter-pixfmts-fieldorder create mode 100644 ffmpeg/tests/ref/fate/filter-pixfmts-hflip create mode 100644 ffmpeg/tests/ref/fate/filter-pixfmts-histeq create mode 100644 ffmpeg/tests/ref/fate/filter-pixfmts-il create mode 100644 ffmpeg/tests/ref/fate/filter-pixfmts-kerndeint create mode 100644 ffmpeg/tests/ref/fate/filter-pixfmts-lut create mode 100644 ffmpeg/tests/ref/fate/filter-pixfmts-null create mode 100644 ffmpeg/tests/ref/fate/filter-pixfmts-pad create mode 100644 ffmpeg/tests/ref/fate/filter-pixfmts-pullup create mode 100644 ffmpeg/tests/ref/fate/filter-pixfmts-rotate create mode 100644 ffmpeg/tests/ref/fate/filter-pixfmts-scale create mode 100644 ffmpeg/tests/ref/fate/filter-pixfmts-super2xsai create mode 100644 ffmpeg/tests/ref/fate/filter-pixfmts-swapuv create mode 100644 ffmpeg/tests/ref/fate/filter-pixfmts-tinterlace_merge create mode 100644 ffmpeg/tests/ref/fate/filter-pixfmts-tinterlace_pad create mode 100644 ffmpeg/tests/ref/fate/filter-pixfmts-vflip create mode 100644 ffmpeg/tests/ref/fate/filter-pp create mode 100644 ffmpeg/tests/ref/fate/filter-pp2 create mode 100644 ffmpeg/tests/ref/fate/filter-pp3 create mode 100644 ffmpeg/tests/ref/fate/filter-pp4 create mode 100644 ffmpeg/tests/ref/fate/filter-pp5 create mode 100644 ffmpeg/tests/ref/fate/filter-pp6 create mode 100644 ffmpeg/tests/ref/fate/filter-scale200 create mode 100644 ffmpeg/tests/ref/fate/filter-scale500 create mode 100644 ffmpeg/tests/ref/fate/filter-select create mode 100644 ffmpeg/tests/ref/fate/filter-select-alternate create mode 100644 ffmpeg/tests/ref/fate/filter-separatefields create mode 100644 ffmpeg/tests/ref/fate/filter-setdar create mode 100644 ffmpeg/tests/ref/fate/filter-setpts create mode 100644 ffmpeg/tests/ref/fate/filter-setsar create mode 100644 ffmpeg/tests/ref/fate/filter-shuffleplanes-dup-luma create mode 100644 ffmpeg/tests/ref/fate/filter-shuffleplanes-swapuv create mode 100644 ffmpeg/tests/ref/fate/filter-stereo3d-abr-ml create mode 100644 ffmpeg/tests/ref/fate/filter-stereo3d-abr-mr create mode 100644 ffmpeg/tests/ref/fate/filter-stereo3d-al-sbsl create mode 100644 ffmpeg/tests/ref/fate/filter-stereo3d-ar-abl create mode 100644 ffmpeg/tests/ref/fate/filter-stereo3d-sbsl-abl create mode 100644 ffmpeg/tests/ref/fate/filter-stereo3d-sbsl-abr create mode 100644 ffmpeg/tests/ref/fate/filter-stereo3d-sbsl-al create mode 100644 ffmpeg/tests/ref/fate/filter-stereo3d-sbsl-sbsr create mode 100644 ffmpeg/tests/ref/fate/filter-telecine create mode 100644 ffmpeg/tests/ref/fate/filter-thumbnail create mode 100644 ffmpeg/tests/ref/fate/filter-tile create mode 100644 ffmpeg/tests/ref/fate/filter-transpose create mode 100644 ffmpeg/tests/ref/fate/filter-trim-duration create mode 100644 ffmpeg/tests/ref/fate/filter-trim-frame create mode 100644 ffmpeg/tests/ref/fate/filter-trim-mixed create mode 100644 ffmpeg/tests/ref/fate/filter-trim-time create mode 100644 ffmpeg/tests/ref/fate/filter-unsharp create mode 100644 ffmpeg/tests/ref/fate/filter-vflip create mode 100644 ffmpeg/tests/ref/fate/filter-vflip_crop create mode 100644 ffmpeg/tests/ref/fate/filter-vflip_vflip create mode 100644 ffmpeg/tests/ref/fate/filter-yadif-mode0 create mode 100644 ffmpeg/tests/ref/fate/filter-yadif-mode1 create mode 100644 ffmpeg/tests/ref/fate/filter-yadif10 create mode 100644 ffmpeg/tests/ref/fate/filter-yadif16 create mode 100644 ffmpeg/tests/ref/fate/flic-af11-palette-change create mode 100644 ffmpeg/tests/ref/fate/flic-af12 create mode 100644 ffmpeg/tests/ref/fate/flic-magiccarpet create mode 100644 ffmpeg/tests/ref/fate/force_key_frames create mode 100644 ffmpeg/tests/ref/fate/fraps-v0 create mode 100644 ffmpeg/tests/ref/fate/fraps-v1 create mode 100644 ffmpeg/tests/ref/fate/fraps-v2 create mode 100644 ffmpeg/tests/ref/fate/fraps-v3 create mode 100644 ffmpeg/tests/ref/fate/fraps-v4 create mode 100644 ffmpeg/tests/ref/fate/fraps-v5 create mode 100644 ffmpeg/tests/ref/fate/frwu create mode 100644 ffmpeg/tests/ref/fate/g722-encode create mode 100644 ffmpeg/tests/ref/fate/g722dec-1 create mode 100644 ffmpeg/tests/ref/fate/g723_1-dec-1 create mode 100644 ffmpeg/tests/ref/fate/g723_1-dec-2 create mode 100644 ffmpeg/tests/ref/fate/g723_1-dec-3 create mode 100644 ffmpeg/tests/ref/fate/g723_1-dec-4 create mode 100644 ffmpeg/tests/ref/fate/g723_1-dec-5 create mode 100644 ffmpeg/tests/ref/fate/g723_1-dec-6 create mode 100644 ffmpeg/tests/ref/fate/g723_1-dec-7 create mode 100644 ffmpeg/tests/ref/fate/g723_1-dec-8 create mode 100644 ffmpeg/tests/ref/fate/g726-encode-2bit create mode 100644 ffmpeg/tests/ref/fate/g726-encode-3bit create mode 100644 ffmpeg/tests/ref/fate/g726-encode-4bit create mode 100644 ffmpeg/tests/ref/fate/g726-encode-5bit create mode 100644 ffmpeg/tests/ref/fate/g729-0 create mode 100644 ffmpeg/tests/ref/fate/g729-1 create mode 100644 ffmpeg/tests/ref/fate/gif-color create mode 100644 ffmpeg/tests/ref/fate/gif-demux create mode 100644 ffmpeg/tests/ref/fate/gif-disposal-background create mode 100644 ffmpeg/tests/ref/fate/gif-disposal-restore create mode 100644 ffmpeg/tests/ref/fate/gif-gray create mode 100644 ffmpeg/tests/ref/fate/gifenc-bgr4_byte create mode 100644 ffmpeg/tests/ref/fate/gifenc-bgr8 create mode 100644 ffmpeg/tests/ref/fate/gifenc-gray create mode 100644 ffmpeg/tests/ref/fate/gifenc-pal8 create mode 100644 ffmpeg/tests/ref/fate/gifenc-rgb4_byte create mode 100644 ffmpeg/tests/ref/fate/gifenc-rgb8 create mode 100644 ffmpeg/tests/ref/fate/gsm-ms create mode 100644 ffmpeg/tests/ref/fate/gsm-toast create mode 100644 ffmpeg/tests/ref/fate/h264-bsf-mp4toannexb create mode 100644 ffmpeg/tests/ref/fate/h264-conformance-aud_mw_e create mode 100644 ffmpeg/tests/ref/fate/h264-conformance-ba1_ft_c create mode 100644 ffmpeg/tests/ref/fate/h264-conformance-ba1_sony_d create mode 100644 ffmpeg/tests/ref/fate/h264-conformance-ba2_sony_f create mode 100644 ffmpeg/tests/ref/fate/h264-conformance-ba3_sva_c create mode 100644 ffmpeg/tests/ref/fate/h264-conformance-ba_mw_d create mode 100644 ffmpeg/tests/ref/fate/h264-conformance-bamq1_jvc_c create mode 100644 ffmpeg/tests/ref/fate/h264-conformance-bamq2_jvc_c create mode 100644 ffmpeg/tests/ref/fate/h264-conformance-banm_mw_d create mode 100644 ffmpeg/tests/ref/fate/h264-conformance-basqp1_sony_c create mode 100644 ffmpeg/tests/ref/fate/h264-conformance-caba1_sony_d create mode 100644 ffmpeg/tests/ref/fate/h264-conformance-caba1_sva_b create mode 100644 ffmpeg/tests/ref/fate/h264-conformance-caba2_sony_e create mode 100644 ffmpeg/tests/ref/fate/h264-conformance-caba2_sva_b create mode 100644 ffmpeg/tests/ref/fate/h264-conformance-caba3_sony_c create mode 100644 ffmpeg/tests/ref/fate/h264-conformance-caba3_sva_b create mode 100644 ffmpeg/tests/ref/fate/h264-conformance-caba3_toshiba_e create mode 100644 ffmpeg/tests/ref/fate/h264-conformance-cabac_mot_fld0_full create mode 100644 ffmpeg/tests/ref/fate/h264-conformance-cabac_mot_frm0_full create mode 100644 ffmpeg/tests/ref/fate/h264-conformance-cabac_mot_mbaff0_full create mode 100644 ffmpeg/tests/ref/fate/h264-conformance-cabac_mot_picaff0_full create mode 100644 ffmpeg/tests/ref/fate/h264-conformance-cabaci3_sony_b create mode 100644 ffmpeg/tests/ref/fate/h264-conformance-cabast3_sony_e create mode 100644 ffmpeg/tests/ref/fate/h264-conformance-cabastbr3_sony_b create mode 100644 ffmpeg/tests/ref/fate/h264-conformance-cabref3_sand_d create mode 100644 ffmpeg/tests/ref/fate/h264-conformance-cacqp3_sony_d create mode 100644 ffmpeg/tests/ref/fate/h264-conformance-cafi1_sva_c create mode 100644 ffmpeg/tests/ref/fate/h264-conformance-cama1_sony_c create mode 100644 ffmpeg/tests/ref/fate/h264-conformance-cama1_toshiba_b create mode 100644 ffmpeg/tests/ref/fate/h264-conformance-cama1_vtc_c create mode 100644 ffmpeg/tests/ref/fate/h264-conformance-cama2_vtc_b create mode 100644 ffmpeg/tests/ref/fate/h264-conformance-cama3_sand_e create mode 100644 ffmpeg/tests/ref/fate/h264-conformance-cama3_vtc_b create mode 100644 ffmpeg/tests/ref/fate/h264-conformance-camaci3_sony_c create mode 100644 ffmpeg/tests/ref/fate/h264-conformance-camanl1_toshiba_b create mode 100644 ffmpeg/tests/ref/fate/h264-conformance-camanl2_toshiba_b create mode 100644 ffmpeg/tests/ref/fate/h264-conformance-camanl3_sand_e create mode 100644 ffmpeg/tests/ref/fate/h264-conformance-camasl3_sony_b create mode 100644 ffmpeg/tests/ref/fate/h264-conformance-camp_mot_mbaff_l30 create mode 100644 ffmpeg/tests/ref/fate/h264-conformance-camp_mot_mbaff_l31 create mode 100644 ffmpeg/tests/ref/fate/h264-conformance-canl1_sony_e create mode 100644 ffmpeg/tests/ref/fate/h264-conformance-canl1_sva_b create mode 100644 ffmpeg/tests/ref/fate/h264-conformance-canl1_toshiba_g create mode 100644 ffmpeg/tests/ref/fate/h264-conformance-canl2_sony_e create mode 100644 ffmpeg/tests/ref/fate/h264-conformance-canl2_sva_b create mode 100644 ffmpeg/tests/ref/fate/h264-conformance-canl3_sony_c create mode 100644 ffmpeg/tests/ref/fate/h264-conformance-canl3_sva_b create mode 100644 ffmpeg/tests/ref/fate/h264-conformance-canl4_sva_b create mode 100644 ffmpeg/tests/ref/fate/h264-conformance-canlma2_sony_c create mode 100644 ffmpeg/tests/ref/fate/h264-conformance-canlma3_sony_c create mode 100644 ffmpeg/tests/ref/fate/h264-conformance-capa1_toshiba_b create mode 100644 ffmpeg/tests/ref/fate/h264-conformance-capama3_sand_f create mode 100644 ffmpeg/tests/ref/fate/h264-conformance-capcm1_sand_e create mode 100644 ffmpeg/tests/ref/fate/h264-conformance-capcmnl1_sand_e create mode 100644 ffmpeg/tests/ref/fate/h264-conformance-capm3_sony_d create mode 100644 ffmpeg/tests/ref/fate/h264-conformance-caqp1_sony_b create mode 100644 ffmpeg/tests/ref/fate/h264-conformance-cavlc_mot_fld0_full_b create mode 100644 ffmpeg/tests/ref/fate/h264-conformance-cavlc_mot_frm0_full_b create mode 100644 ffmpeg/tests/ref/fate/h264-conformance-cavlc_mot_mbaff0_full_b create mode 100644 ffmpeg/tests/ref/fate/h264-conformance-cavlc_mot_picaff0_full_b create mode 100644 ffmpeg/tests/ref/fate/h264-conformance-cawp1_toshiba_e create mode 100644 ffmpeg/tests/ref/fate/h264-conformance-cawp5_toshiba_e create mode 100644 ffmpeg/tests/ref/fate/h264-conformance-ci1_ft_b create mode 100644 ffmpeg/tests/ref/fate/h264-conformance-ci_mw_d create mode 100644 ffmpeg/tests/ref/fate/h264-conformance-cvbs3_sony_c create mode 100644 ffmpeg/tests/ref/fate/h264-conformance-cvcanlma2_sony_c create mode 100644 ffmpeg/tests/ref/fate/h264-conformance-cvfc1_sony_c create mode 100644 ffmpeg/tests/ref/fate/h264-conformance-cvfi1_sony_d create mode 100644 ffmpeg/tests/ref/fate/h264-conformance-cvfi1_sva_c create mode 100644 ffmpeg/tests/ref/fate/h264-conformance-cvfi2_sony_h create mode 100644 ffmpeg/tests/ref/fate/h264-conformance-cvfi2_sva_c create mode 100644 ffmpeg/tests/ref/fate/h264-conformance-cvma1_sony_d create mode 100644 ffmpeg/tests/ref/fate/h264-conformance-cvma1_toshiba_b create mode 100644 ffmpeg/tests/ref/fate/h264-conformance-cvmanl1_toshiba_b create mode 100644 ffmpeg/tests/ref/fate/h264-conformance-cvmanl2_toshiba_b create mode 100644 ffmpeg/tests/ref/fate/h264-conformance-cvmapaqp3_sony_e create mode 100644 ffmpeg/tests/ref/fate/h264-conformance-cvmaqp2_sony_g create mode 100644 ffmpeg/tests/ref/fate/h264-conformance-cvmaqp3_sony_d create mode 100644 ffmpeg/tests/ref/fate/h264-conformance-cvmp_mot_fld_l30_b create mode 100644 ffmpeg/tests/ref/fate/h264-conformance-cvmp_mot_frm_l31_b create mode 100644 ffmpeg/tests/ref/fate/h264-conformance-cvnlfi1_sony_c create mode 100644 ffmpeg/tests/ref/fate/h264-conformance-cvnlfi2_sony_h create mode 100644 ffmpeg/tests/ref/fate/h264-conformance-cvpa1_toshiba_b create mode 100644 ffmpeg/tests/ref/fate/h264-conformance-cvpcmnl1_sva_c create mode 100644 ffmpeg/tests/ref/fate/h264-conformance-cvpcmnl2_sva_c create mode 100644 ffmpeg/tests/ref/fate/h264-conformance-cvwp1_toshiba_e create mode 100644 ffmpeg/tests/ref/fate/h264-conformance-cvwp2_toshiba_e create mode 100644 ffmpeg/tests/ref/fate/h264-conformance-cvwp3_toshiba_e create mode 100644 ffmpeg/tests/ref/fate/h264-conformance-cvwp5_toshiba_e create mode 100644 ffmpeg/tests/ref/fate/h264-conformance-fi1_sony_e create mode 100644 ffmpeg/tests/ref/fate/h264-conformance-frext-alphaconformanceg create mode 100644 ffmpeg/tests/ref/fate/h264-conformance-frext-bcrm_freh10 create mode 100644 ffmpeg/tests/ref/fate/h264-conformance-frext-brcm_freh11 create mode 100644 ffmpeg/tests/ref/fate/h264-conformance-frext-brcm_freh3 create mode 100644 ffmpeg/tests/ref/fate/h264-conformance-frext-brcm_freh4 create mode 100644 ffmpeg/tests/ref/fate/h264-conformance-frext-brcm_freh5 create mode 100644 ffmpeg/tests/ref/fate/h264-conformance-frext-brcm_freh8 create mode 100644 ffmpeg/tests/ref/fate/h264-conformance-frext-brcm_freh9 create mode 100644 ffmpeg/tests/ref/fate/h264-conformance-frext-freh12_b create mode 100644 ffmpeg/tests/ref/fate/h264-conformance-frext-freh1_b create mode 100644 ffmpeg/tests/ref/fate/h264-conformance-frext-freh2_b create mode 100644 ffmpeg/tests/ref/fate/h264-conformance-frext-freh6 create mode 100644 ffmpeg/tests/ref/fate/h264-conformance-frext-freh7_b create mode 100644 ffmpeg/tests/ref/fate/h264-conformance-frext-frext01_jvc_d create mode 100644 ffmpeg/tests/ref/fate/h264-conformance-frext-frext02_jvc_c create mode 100644 ffmpeg/tests/ref/fate/h264-conformance-frext-frext1_panasonic_c create mode 100644 ffmpeg/tests/ref/fate/h264-conformance-frext-frext2_panasonic_b create mode 100644 ffmpeg/tests/ref/fate/h264-conformance-frext-frext3_panasonic_d create mode 100644 ffmpeg/tests/ref/fate/h264-conformance-frext-frext4_panasonic_a create mode 100644 ffmpeg/tests/ref/fate/h264-conformance-frext-frext_mmco4_sony_b create mode 100644 ffmpeg/tests/ref/fate/h264-conformance-frext-hcaff1_hhi_b create mode 100644 ffmpeg/tests/ref/fate/h264-conformance-frext-hcafr1_hhi_c create mode 100644 ffmpeg/tests/ref/fate/h264-conformance-frext-hcafr2_hhi_a create mode 100644 ffmpeg/tests/ref/fate/h264-conformance-frext-hcafr3_hhi_a create mode 100644 ffmpeg/tests/ref/fate/h264-conformance-frext-hcafr4_hhi_a create mode 100644 ffmpeg/tests/ref/fate/h264-conformance-frext-hcamff1_hhi_b create mode 100644 ffmpeg/tests/ref/fate/h264-conformance-frext-hi422fr10_sony_b create mode 100644 ffmpeg/tests/ref/fate/h264-conformance-frext-hi422fr13_sony_b create mode 100644 ffmpeg/tests/ref/fate/h264-conformance-frext-hi422fr1_sony_a create mode 100644 ffmpeg/tests/ref/fate/h264-conformance-frext-hi422fr6_sony_a create mode 100644 ffmpeg/tests/ref/fate/h264-conformance-frext-hpca_brcm_c create mode 100644 ffmpeg/tests/ref/fate/h264-conformance-frext-hpcadq_brcm_b create mode 100644 ffmpeg/tests/ref/fate/h264-conformance-frext-hpcafl_bcrm_c create mode 100644 ffmpeg/tests/ref/fate/h264-conformance-frext-hpcaflnl_bcrm_c create mode 100644 ffmpeg/tests/ref/fate/h264-conformance-frext-hpcalq_brcm_b create mode 100644 ffmpeg/tests/ref/fate/h264-conformance-frext-hpcamapalq_bcrm_b create mode 100644 ffmpeg/tests/ref/fate/h264-conformance-frext-hpcamolq_brcm_b create mode 100644 ffmpeg/tests/ref/fate/h264-conformance-frext-hpcanl_brcm_c create mode 100644 ffmpeg/tests/ref/fate/h264-conformance-frext-hpcaq2lq_brcm_b create mode 100644 ffmpeg/tests/ref/fate/h264-conformance-frext-hpcv_brcm_a create mode 100644 ffmpeg/tests/ref/fate/h264-conformance-frext-hpcvfl_bcrm_a create mode 100644 ffmpeg/tests/ref/fate/h264-conformance-frext-hpcvflnl_bcrm_a create mode 100644 ffmpeg/tests/ref/fate/h264-conformance-frext-hpcvmolq_brcm_b create mode 100644 ffmpeg/tests/ref/fate/h264-conformance-frext-hpcvnl_brcm_a create mode 100644 ffmpeg/tests/ref/fate/h264-conformance-frext-pph10i1_panasonic_a create mode 100644 ffmpeg/tests/ref/fate/h264-conformance-frext-pph10i2_panasonic_a create mode 100644 ffmpeg/tests/ref/fate/h264-conformance-frext-pph10i3_panasonic_a create mode 100644 ffmpeg/tests/ref/fate/h264-conformance-frext-pph10i4_panasonic_a create mode 100644 ffmpeg/tests/ref/fate/h264-conformance-frext-pph10i5_panasonic_a create mode 100644 ffmpeg/tests/ref/fate/h264-conformance-frext-pph10i6_panasonic_a create mode 100644 ffmpeg/tests/ref/fate/h264-conformance-frext-pph10i7_panasonic_a create mode 100644 ffmpeg/tests/ref/fate/h264-conformance-frext-pph422i1_panasonic_a create mode 100644 ffmpeg/tests/ref/fate/h264-conformance-frext-pph422i2_panasonic_a create mode 100644 ffmpeg/tests/ref/fate/h264-conformance-frext-pph422i3_panasonic_a create mode 100644 ffmpeg/tests/ref/fate/h264-conformance-frext-pph422i4_panasonic_a create mode 100644 ffmpeg/tests/ref/fate/h264-conformance-frext-pph422i5_panasonic_a create mode 100644 ffmpeg/tests/ref/fate/h264-conformance-frext-pph422i6_panasonic_a create mode 100644 ffmpeg/tests/ref/fate/h264-conformance-frext-pph422i7_panasonic_a create mode 100644 ffmpeg/tests/ref/fate/h264-conformance-hcbp2_hhi_a create mode 100644 ffmpeg/tests/ref/fate/h264-conformance-hcmp1_hhi_a create mode 100644 ffmpeg/tests/ref/fate/h264-conformance-ls_sva_d create mode 100644 ffmpeg/tests/ref/fate/h264-conformance-midr_mw_d create mode 100644 ffmpeg/tests/ref/fate/h264-conformance-mps_mw_a create mode 100644 ffmpeg/tests/ref/fate/h264-conformance-mr1_bt_a create mode 100644 ffmpeg/tests/ref/fate/h264-conformance-mr1_mw_a create mode 100644 ffmpeg/tests/ref/fate/h264-conformance-mr2_mw_a create mode 100644 ffmpeg/tests/ref/fate/h264-conformance-mr2_tandberg_e create mode 100644 ffmpeg/tests/ref/fate/h264-conformance-mr3_tandberg_b create mode 100644 ffmpeg/tests/ref/fate/h264-conformance-mr4_tandberg_c create mode 100644 ffmpeg/tests/ref/fate/h264-conformance-mr5_tandberg_c create mode 100644 ffmpeg/tests/ref/fate/h264-conformance-mr6_bt_b create mode 100644 ffmpeg/tests/ref/fate/h264-conformance-mr7_bt_b create mode 100644 ffmpeg/tests/ref/fate/h264-conformance-mr8_bt_b create mode 100644 ffmpeg/tests/ref/fate/h264-conformance-mr9_bt_b create mode 100644 ffmpeg/tests/ref/fate/h264-conformance-mv1_brcm_d create mode 100644 ffmpeg/tests/ref/fate/h264-conformance-nl1_sony_d create mode 100644 ffmpeg/tests/ref/fate/h264-conformance-nl2_sony_h create mode 100644 ffmpeg/tests/ref/fate/h264-conformance-nl3_sva_e create mode 100644 ffmpeg/tests/ref/fate/h264-conformance-nlmq1_jvc_c create mode 100644 ffmpeg/tests/ref/fate/h264-conformance-nlmq2_jvc_c create mode 100644 ffmpeg/tests/ref/fate/h264-conformance-nrf_mw_e create mode 100644 ffmpeg/tests/ref/fate/h264-conformance-sharp_mp_field_1_b create mode 100644 ffmpeg/tests/ref/fate/h264-conformance-sharp_mp_field_2_b create mode 100644 ffmpeg/tests/ref/fate/h264-conformance-sharp_mp_field_3_b create mode 100644 ffmpeg/tests/ref/fate/h264-conformance-sharp_mp_paff_1r2 create mode 100644 ffmpeg/tests/ref/fate/h264-conformance-sharp_mp_paff_2r create mode 100644 ffmpeg/tests/ref/fate/h264-conformance-sl1_sva_b create mode 100644 ffmpeg/tests/ref/fate/h264-conformance-sva_ba1_b create mode 100644 ffmpeg/tests/ref/fate/h264-conformance-sva_ba2_d create mode 100644 ffmpeg/tests/ref/fate/h264-conformance-sva_base_b create mode 100644 ffmpeg/tests/ref/fate/h264-conformance-sva_cl1_e create mode 100644 ffmpeg/tests/ref/fate/h264-conformance-sva_fm1_e create mode 100644 ffmpeg/tests/ref/fate/h264-conformance-sva_nl1_b create mode 100644 ffmpeg/tests/ref/fate/h264-conformance-sva_nl2_e create mode 100644 ffmpeg/tests/ref/fate/h264-crop-to-container create mode 100644 ffmpeg/tests/ref/fate/h264-direct-bff create mode 100644 ffmpeg/tests/ref/fate/h264-extreme-plane-pred create mode 100644 ffmpeg/tests/ref/fate/h264-interlace-crop create mode 100644 ffmpeg/tests/ref/fate/h264-lossless create mode 100644 ffmpeg/tests/ref/fate/h264-reinit-large_420_8-to-small_420_8 create mode 100644 ffmpeg/tests/ref/fate/h264-reinit-small_420_8-to-large_444_10 create mode 100644 ffmpeg/tests/ref/fate/h264-reinit-small_420_9-to-small_420_8 create mode 100644 ffmpeg/tests/ref/fate/h264-reinit-small_422_9-to-small_420_9 create mode 100644 ffmpeg/tests/ref/fate/hevc-conformance-ADJUST_IPRED_ANGLE_A_RExt_Mitsubishi_1 create mode 100644 ffmpeg/tests/ref/fate/hevc-conformance-AMP_A_Samsung_4 create mode 100644 ffmpeg/tests/ref/fate/hevc-conformance-AMP_A_Samsung_6 create mode 100644 ffmpeg/tests/ref/fate/hevc-conformance-AMP_B_Samsung_4 create mode 100644 ffmpeg/tests/ref/fate/hevc-conformance-AMP_B_Samsung_6 create mode 100644 ffmpeg/tests/ref/fate/hevc-conformance-AMP_D_Hisilicon create mode 100644 ffmpeg/tests/ref/fate/hevc-conformance-AMP_E_Hisilicon create mode 100644 ffmpeg/tests/ref/fate/hevc-conformance-AMP_F_Hisilicon_3 create mode 100644 ffmpeg/tests/ref/fate/hevc-conformance-AMVP_A_MTK_4 create mode 100644 ffmpeg/tests/ref/fate/hevc-conformance-AMVP_B_MTK_4 create mode 100644 ffmpeg/tests/ref/fate/hevc-conformance-AMVP_C_Samsung_4 create mode 100644 ffmpeg/tests/ref/fate/hevc-conformance-AMVP_C_Samsung_6 create mode 100644 ffmpeg/tests/ref/fate/hevc-conformance-BUMPING_A_ericsson_1 create mode 100644 ffmpeg/tests/ref/fate/hevc-conformance-CAINIT_A_SHARP_4 create mode 100644 ffmpeg/tests/ref/fate/hevc-conformance-CAINIT_B_SHARP_4 create mode 100644 ffmpeg/tests/ref/fate/hevc-conformance-CAINIT_C_SHARP_3 create mode 100644 ffmpeg/tests/ref/fate/hevc-conformance-CAINIT_D_SHARP_3 create mode 100644 ffmpeg/tests/ref/fate/hevc-conformance-CAINIT_E_SHARP_3 create mode 100644 ffmpeg/tests/ref/fate/hevc-conformance-CAINIT_F_SHARP_3 create mode 100644 ffmpeg/tests/ref/fate/hevc-conformance-CAINIT_G_SHARP_3 create mode 100644 ffmpeg/tests/ref/fate/hevc-conformance-CAINIT_H_SHARP_3 create mode 100644 ffmpeg/tests/ref/fate/hevc-conformance-CIP_A_Panasonic_3 create mode 100644 ffmpeg/tests/ref/fate/hevc-conformance-CIP_C_Panasonic_2 create mode 100644 ffmpeg/tests/ref/fate/hevc-conformance-CONFWIN_A_Sony_1 create mode 100644 ffmpeg/tests/ref/fate/hevc-conformance-DBLK_A_MAIN10_VIXS_3 create mode 100644 ffmpeg/tests/ref/fate/hevc-conformance-DBLK_A_SONY_3 create mode 100644 ffmpeg/tests/ref/fate/hevc-conformance-DBLK_B_SONY_3 create mode 100644 ffmpeg/tests/ref/fate/hevc-conformance-DBLK_C_SONY_3 create mode 100644 ffmpeg/tests/ref/fate/hevc-conformance-DBLK_D_VIXS_2 create mode 100644 ffmpeg/tests/ref/fate/hevc-conformance-DBLK_E_VIXS_2 create mode 100644 ffmpeg/tests/ref/fate/hevc-conformance-DBLK_F_VIXS_2 create mode 100644 ffmpeg/tests/ref/fate/hevc-conformance-DBLK_G_VIXS_2 create mode 100644 ffmpeg/tests/ref/fate/hevc-conformance-DELTAQP_A_BRCM_4 create mode 100644 ffmpeg/tests/ref/fate/hevc-conformance-DELTAQP_B_SONY_3 create mode 100644 ffmpeg/tests/ref/fate/hevc-conformance-DELTAQP_C_SONY_3 create mode 100644 ffmpeg/tests/ref/fate/hevc-conformance-DSLICE_A_HHI_5 create mode 100644 ffmpeg/tests/ref/fate/hevc-conformance-DSLICE_B_HHI_5 create mode 100644 ffmpeg/tests/ref/fate/hevc-conformance-DSLICE_C_HHI_5 create mode 100644 ffmpeg/tests/ref/fate/hevc-conformance-ENTP_A_Qualcomm_1 create mode 100644 ffmpeg/tests/ref/fate/hevc-conformance-ENTP_B_Qualcomm_1 create mode 100644 ffmpeg/tests/ref/fate/hevc-conformance-ENTP_C_Qualcomm_1 create mode 100644 ffmpeg/tests/ref/fate/hevc-conformance-EXT_A_ericsson_4 create mode 100644 ffmpeg/tests/ref/fate/hevc-conformance-FILLER_A_Sony_1 create mode 100644 ffmpeg/tests/ref/fate/hevc-conformance-HRD_A_Fujitsu_2 create mode 100644 ffmpeg/tests/ref/fate/hevc-conformance-HRD_A_Fujitsu_3 create mode 100644 ffmpeg/tests/ref/fate/hevc-conformance-INITQP_A_Sony_1 create mode 100644 ffmpeg/tests/ref/fate/hevc-conformance-INITQP_B_Sony_1 create mode 100644 ffmpeg/tests/ref/fate/hevc-conformance-IPCM_A_RExt_NEC create mode 100644 ffmpeg/tests/ref/fate/hevc-conformance-IPCM_B_RExt_NEC create mode 100644 ffmpeg/tests/ref/fate/hevc-conformance-IPRED_A_docomo_2 create mode 100644 ffmpeg/tests/ref/fate/hevc-conformance-IPRED_B_Nokia_3 create mode 100644 ffmpeg/tests/ref/fate/hevc-conformance-IPRED_C_Mitsubishi_3 create mode 100644 ffmpeg/tests/ref/fate/hevc-conformance-LS_A_Orange_2 create mode 100644 ffmpeg/tests/ref/fate/hevc-conformance-LS_B_ORANGE_4 create mode 100644 ffmpeg/tests/ref/fate/hevc-conformance-LTRPSPS_A_Qualcomm_1 create mode 100644 ffmpeg/tests/ref/fate/hevc-conformance-MAXBINS_A_TI_4 create mode 100644 ffmpeg/tests/ref/fate/hevc-conformance-MAXBINS_B_TI_4 create mode 100644 ffmpeg/tests/ref/fate/hevc-conformance-MAXBINS_C_TI_4 create mode 100644 ffmpeg/tests/ref/fate/hevc-conformance-MERGE_A_TI_3 create mode 100644 ffmpeg/tests/ref/fate/hevc-conformance-MERGE_B_TI_3 create mode 100644 ffmpeg/tests/ref/fate/hevc-conformance-MERGE_C_TI_3 create mode 100644 ffmpeg/tests/ref/fate/hevc-conformance-MERGE_D_TI_3 create mode 100644 ffmpeg/tests/ref/fate/hevc-conformance-MERGE_E_TI_3 create mode 100644 ffmpeg/tests/ref/fate/hevc-conformance-MERGE_F_MTK_4 create mode 100644 ffmpeg/tests/ref/fate/hevc-conformance-MERGE_G_HHI_4 create mode 100644 ffmpeg/tests/ref/fate/hevc-conformance-MVCLIP_A_qualcomm_3 create mode 100644 ffmpeg/tests/ref/fate/hevc-conformance-MVDL1ZERO_A_docomo_3 create mode 100644 ffmpeg/tests/ref/fate/hevc-conformance-MVEDGE_A_qualcomm_3 create mode 100644 ffmpeg/tests/ref/fate/hevc-conformance-Main_422_10_A_RExt_Sony_1 create mode 100644 ffmpeg/tests/ref/fate/hevc-conformance-Main_422_10_B_RExt_Sony_1 create mode 100644 ffmpeg/tests/ref/fate/hevc-conformance-NUT_A_ericsson_5 create mode 100644 ffmpeg/tests/ref/fate/hevc-conformance-NoOutPrior_A_Qualcomm_1 create mode 100644 ffmpeg/tests/ref/fate/hevc-conformance-NoOutPrior_B_Qualcomm_1 create mode 100644 ffmpeg/tests/ref/fate/hevc-conformance-OPFLAG_A_Qualcomm_1 create mode 100644 ffmpeg/tests/ref/fate/hevc-conformance-OPFLAG_B_Qualcomm_1 create mode 100644 ffmpeg/tests/ref/fate/hevc-conformance-OPFLAG_C_Qualcomm_1 create mode 100644 ffmpeg/tests/ref/fate/hevc-conformance-PERSIST_RPARAM_A_RExt_Sony_1 create mode 100644 ffmpeg/tests/ref/fate/hevc-conformance-PICSIZE_A_Bossen_1 create mode 100644 ffmpeg/tests/ref/fate/hevc-conformance-PICSIZE_B_Bossen_1 create mode 100644 ffmpeg/tests/ref/fate/hevc-conformance-PICSIZE_C_Bossen_1 create mode 100644 ffmpeg/tests/ref/fate/hevc-conformance-PICSIZE_D_Bossen_1 create mode 100644 ffmpeg/tests/ref/fate/hevc-conformance-PMERGE_A_TI_3 create mode 100644 ffmpeg/tests/ref/fate/hevc-conformance-PMERGE_B_TI_3 create mode 100644 ffmpeg/tests/ref/fate/hevc-conformance-PMERGE_C_TI_3 create mode 100644 ffmpeg/tests/ref/fate/hevc-conformance-PMERGE_D_TI_3 create mode 100644 ffmpeg/tests/ref/fate/hevc-conformance-PMERGE_E_TI_3 create mode 100644 ffmpeg/tests/ref/fate/hevc-conformance-POC_A_Bossen_3 create mode 100644 ffmpeg/tests/ref/fate/hevc-conformance-PPS_A_qualcomm_7 create mode 100644 ffmpeg/tests/ref/fate/hevc-conformance-PS_A_VIDYO_3 create mode 100644 ffmpeg/tests/ref/fate/hevc-conformance-PS_B_VIDYO_3 create mode 100644 ffmpeg/tests/ref/fate/hevc-conformance-QMATRIX_A_RExt_Sony_1 create mode 100644 ffmpeg/tests/ref/fate/hevc-conformance-RAP_A_docomo_4 create mode 100644 ffmpeg/tests/ref/fate/hevc-conformance-RAP_B_Bossen_1 create mode 100644 ffmpeg/tests/ref/fate/hevc-conformance-RPLM_A_qualcomm_4 create mode 100644 ffmpeg/tests/ref/fate/hevc-conformance-RPLM_B_qualcomm_4 create mode 100644 ffmpeg/tests/ref/fate/hevc-conformance-RPS_A_docomo_4 create mode 100644 ffmpeg/tests/ref/fate/hevc-conformance-RPS_B_qualcomm_5 create mode 100644 ffmpeg/tests/ref/fate/hevc-conformance-RPS_C_ericsson_5 create mode 100644 ffmpeg/tests/ref/fate/hevc-conformance-RPS_D_ericsson_6 create mode 100644 ffmpeg/tests/ref/fate/hevc-conformance-RPS_E_qualcomm_5 create mode 100644 ffmpeg/tests/ref/fate/hevc-conformance-RPS_F_docomo_1 create mode 100644 ffmpeg/tests/ref/fate/hevc-conformance-RQT_A_HHI_4 create mode 100644 ffmpeg/tests/ref/fate/hevc-conformance-RQT_B_HHI_4 create mode 100644 ffmpeg/tests/ref/fate/hevc-conformance-RQT_C_HHI_4 create mode 100644 ffmpeg/tests/ref/fate/hevc-conformance-RQT_D_HHI_4 create mode 100644 ffmpeg/tests/ref/fate/hevc-conformance-RQT_E_HHI_4 create mode 100644 ffmpeg/tests/ref/fate/hevc-conformance-RQT_F_HHI_4 create mode 100644 ffmpeg/tests/ref/fate/hevc-conformance-RQT_G_HHI_4 create mode 100644 ffmpeg/tests/ref/fate/hevc-conformance-SAO_A_MediaTek_4 create mode 100644 ffmpeg/tests/ref/fate/hevc-conformance-SAO_A_RExt_MediaTek_1 create mode 100644 ffmpeg/tests/ref/fate/hevc-conformance-SAO_B_MediaTek_5 create mode 100644 ffmpeg/tests/ref/fate/hevc-conformance-SAO_C_Samsung_4 create mode 100644 ffmpeg/tests/ref/fate/hevc-conformance-SAO_C_Samsung_5 create mode 100644 ffmpeg/tests/ref/fate/hevc-conformance-SAO_D_Samsung_4 create mode 100644 ffmpeg/tests/ref/fate/hevc-conformance-SAO_D_Samsung_5 create mode 100644 ffmpeg/tests/ref/fate/hevc-conformance-SAO_E_Canon_4 create mode 100644 ffmpeg/tests/ref/fate/hevc-conformance-SAO_F_Canon_3 create mode 100644 ffmpeg/tests/ref/fate/hevc-conformance-SAO_G_Canon_3 create mode 100644 ffmpeg/tests/ref/fate/hevc-conformance-SDH_A_Orange_3 create mode 100644 ffmpeg/tests/ref/fate/hevc-conformance-SLICES_A_Rovi_3 create mode 100644 ffmpeg/tests/ref/fate/hevc-conformance-SLIST_A_Sony_4 create mode 100644 ffmpeg/tests/ref/fate/hevc-conformance-SLIST_B_Sony_8 create mode 100644 ffmpeg/tests/ref/fate/hevc-conformance-SLIST_C_Sony_3 create mode 100644 ffmpeg/tests/ref/fate/hevc-conformance-SLIST_D_Sony_9 create mode 100644 ffmpeg/tests/ref/fate/hevc-conformance-SLPPLP_A_VIDYO_1 create mode 100644 ffmpeg/tests/ref/fate/hevc-conformance-SLPPLP_A_VIDYO_2 create mode 100644 ffmpeg/tests/ref/fate/hevc-conformance-STRUCT_A_Samsung_5 create mode 100644 ffmpeg/tests/ref/fate/hevc-conformance-STRUCT_B_Samsung_4 create mode 100644 ffmpeg/tests/ref/fate/hevc-conformance-STRUCT_B_Samsung_6 create mode 100644 ffmpeg/tests/ref/fate/hevc-conformance-TILES_A_Cisco_2 create mode 100644 ffmpeg/tests/ref/fate/hevc-conformance-TILES_B_Cisco_1 create mode 100644 ffmpeg/tests/ref/fate/hevc-conformance-TMVP_A_MS_3 create mode 100644 ffmpeg/tests/ref/fate/hevc-conformance-TSCL_A_VIDYO_5 create mode 100644 ffmpeg/tests/ref/fate/hevc-conformance-TSCL_B_VIDYO_4 create mode 100644 ffmpeg/tests/ref/fate/hevc-conformance-TSKIP_A_MS_3 create mode 100644 ffmpeg/tests/ref/fate/hevc-conformance-TUSIZE_A_Samsung_1 create mode 100644 ffmpeg/tests/ref/fate/hevc-conformance-VPSID_A_VIDYO_1 create mode 100644 ffmpeg/tests/ref/fate/hevc-conformance-VPSID_A_VIDYO_2 create mode 100644 ffmpeg/tests/ref/fate/hevc-conformance-WPP_A_ericsson_MAIN10_2 create mode 100644 ffmpeg/tests/ref/fate/hevc-conformance-WPP_A_ericsson_MAIN_2 create mode 100644 ffmpeg/tests/ref/fate/hevc-conformance-WPP_B_ericsson_MAIN10_2 create mode 100644 ffmpeg/tests/ref/fate/hevc-conformance-WPP_B_ericsson_MAIN_2 create mode 100644 ffmpeg/tests/ref/fate/hevc-conformance-WPP_C_ericsson_MAIN10_2 create mode 100644 ffmpeg/tests/ref/fate/hevc-conformance-WPP_C_ericsson_MAIN_2 create mode 100644 ffmpeg/tests/ref/fate/hevc-conformance-WPP_D_ericsson_MAIN10_2 create mode 100644 ffmpeg/tests/ref/fate/hevc-conformance-WPP_D_ericsson_MAIN_2 create mode 100644 ffmpeg/tests/ref/fate/hevc-conformance-WPP_E_ericsson_MAIN10_2 create mode 100644 ffmpeg/tests/ref/fate/hevc-conformance-WPP_E_ericsson_MAIN_2 create mode 100644 ffmpeg/tests/ref/fate/hevc-conformance-WPP_F_ericsson_MAIN10_2 create mode 100644 ffmpeg/tests/ref/fate/hevc-conformance-WPP_F_ericsson_MAIN_2 create mode 100644 ffmpeg/tests/ref/fate/hevc-conformance-WP_A_MAIN10_Toshiba_3 create mode 100644 ffmpeg/tests/ref/fate/hevc-conformance-WP_A_Toshiba_3 create mode 100644 ffmpeg/tests/ref/fate/hevc-conformance-WP_B_Toshiba_3 create mode 100644 ffmpeg/tests/ref/fate/hevc-conformance-WP_MAIN10_B_Toshiba_3 create mode 100644 ffmpeg/tests/ref/fate/hevc-conformance-cip_B_NEC_3 create mode 100644 ffmpeg/tests/ref/fate/hevc-conformance-ipcm_A_NEC_3 create mode 100644 ffmpeg/tests/ref/fate/hevc-conformance-ipcm_B_NEC_3 create mode 100644 ffmpeg/tests/ref/fate/hevc-conformance-ipcm_C_NEC_3 create mode 100644 ffmpeg/tests/ref/fate/hevc-conformance-ipcm_D_NEC_3 create mode 100644 ffmpeg/tests/ref/fate/hevc-conformance-ipcm_E_NEC_2 create mode 100644 ffmpeg/tests/ref/fate/hmac create mode 100644 ffmpeg/tests/ref/fate/id-cin-video create mode 100644 ffmpeg/tests/ref/fate/idroq-video-encode create mode 100644 ffmpeg/tests/ref/fate/iff-byterun1 create mode 100644 ffmpeg/tests/ref/fate/iff-fibonacci create mode 100644 ffmpeg/tests/ref/fate/iff-ilbm create mode 100644 ffmpeg/tests/ref/fate/iff-pcm create mode 100644 ffmpeg/tests/ref/fate/iirfilter create mode 100644 ffmpeg/tests/ref/fate/indeo2 create mode 100644 ffmpeg/tests/ref/fate/indeo3 create mode 100644 ffmpeg/tests/ref/fate/indeo3-2 create mode 100644 ffmpeg/tests/ref/fate/indeo4 create mode 100644 ffmpeg/tests/ref/fate/indeo5 create mode 100644 ffmpeg/tests/ref/fate/interplay-mve-16bit create mode 100644 ffmpeg/tests/ref/fate/interplay-mve-8bit create mode 100644 ffmpeg/tests/ref/fate/iv8-demux create mode 100644 ffmpeg/tests/ref/fate/jpeg2000-dcinema create mode 100644 ffmpeg/tests/ref/fate/jv create mode 100644 ffmpeg/tests/ref/fate/jv-demux create mode 100644 ffmpeg/tests/ref/fate/kgv1 create mode 100644 ffmpeg/tests/ref/fate/kmvc create mode 100644 ffmpeg/tests/ref/fate/lagarith-red create mode 100644 ffmpeg/tests/ref/fate/lagarith-rgb24 create mode 100644 ffmpeg/tests/ref/fate/lagarith-rgb32 create mode 100644 ffmpeg/tests/ref/fate/lagarith-yuy2 create mode 100644 ffmpeg/tests/ref/fate/lagarith-yv12 create mode 100644 ffmpeg/tests/ref/fate/lmlm4-demux create mode 100644 ffmpeg/tests/ref/fate/loco-rgb create mode 100644 ffmpeg/tests/ref/fate/loco-yuy2 create mode 100644 ffmpeg/tests/ref/fate/lossless-alac create mode 100644 ffmpeg/tests/ref/fate/lossless-meridianaudio create mode 100644 ffmpeg/tests/ref/fate/lossless-monkeysaudio-399 create mode 100644 ffmpeg/tests/ref/fate/lossless-shorten create mode 100644 ffmpeg/tests/ref/fate/lossless-tak create mode 100644 ffmpeg/tests/ref/fate/lossless-tta create mode 100644 ffmpeg/tests/ref/fate/lossless-tta-encrypted create mode 100644 ffmpeg/tests/ref/fate/lossless-wma create mode 100644 ffmpeg/tests/ref/fate/mapchan-6ch-extract-2 create mode 100644 ffmpeg/tests/ref/fate/mapchan-6ch-extract-2-downmix-mono create mode 100644 ffmpeg/tests/ref/fate/mapchan-silent-mono create mode 100644 ffmpeg/tests/ref/fate/maxis-xa create mode 100644 ffmpeg/tests/ref/fate/md5 create mode 100644 ffmpeg/tests/ref/fate/mdec create mode 100644 ffmpeg/tests/ref/fate/mdec-v3 create mode 100644 ffmpeg/tests/ref/fate/mimic create mode 100644 ffmpeg/tests/ref/fate/mjpegb create mode 100644 ffmpeg/tests/ref/fate/mkv create mode 100644 ffmpeg/tests/ref/fate/mlv-demux create mode 100644 ffmpeg/tests/ref/fate/motionpixels create mode 100644 ffmpeg/tests/ref/fate/mpc7-demux create mode 100644 ffmpeg/tests/ref/fate/mpc8-demux create mode 100644 ffmpeg/tests/ref/fate/mpeg2-field-enc create mode 100644 ffmpeg/tests/ref/fate/mpeg4-als-conformance-00 create mode 100644 ffmpeg/tests/ref/fate/mpeg4-als-conformance-01 create mode 100644 ffmpeg/tests/ref/fate/mpeg4-als-conformance-02 create mode 100644 ffmpeg/tests/ref/fate/mpeg4-als-conformance-03 create mode 100644 ffmpeg/tests/ref/fate/mpeg4-als-conformance-04 create mode 100644 ffmpeg/tests/ref/fate/mpeg4-als-conformance-05 create mode 100644 ffmpeg/tests/ref/fate/msmpeg4v1 create mode 100644 ffmpeg/tests/ref/fate/msrle-8bit create mode 100644 ffmpeg/tests/ref/fate/mss2-pal create mode 100644 ffmpeg/tests/ref/fate/mss2-pals create mode 100644 ffmpeg/tests/ref/fate/mss2-rgb555 create mode 100644 ffmpeg/tests/ref/fate/mss2-rgb555s create mode 100644 ffmpeg/tests/ref/fate/mss2-wmv create mode 100644 ffmpeg/tests/ref/fate/msvideo1-16bit create mode 100644 ffmpeg/tests/ref/fate/msvideo1-8bit create mode 100644 ffmpeg/tests/ref/fate/mszh create mode 100644 ffmpeg/tests/ref/fate/mtv create mode 100644 ffmpeg/tests/ref/fate/murmur3 create mode 100644 ffmpeg/tests/ref/fate/mv-mvc1 create mode 100644 ffmpeg/tests/ref/fate/mv-mvc2 create mode 100644 ffmpeg/tests/ref/fate/mv-sgirle create mode 100644 ffmpeg/tests/ref/fate/mxf-demux create mode 100644 ffmpeg/tests/ref/fate/mxpeg create mode 100644 ffmpeg/tests/ref/fate/nc-demux create mode 100644 ffmpeg/tests/ref/fate/nistsphere-demux create mode 100644 ffmpeg/tests/ref/fate/noproxy create mode 100644 ffmpeg/tests/ref/fate/nsv-demux create mode 100644 ffmpeg/tests/ref/fate/nuv-rtjpeg create mode 100644 ffmpeg/tests/ref/fate/nuv-rtjpeg-fh create mode 100644 ffmpeg/tests/ref/fate/oggvp8-demux create mode 100644 ffmpeg/tests/ref/fate/oma-demux create mode 100644 ffmpeg/tests/ref/fate/on2avc create mode 100644 ffmpeg/tests/ref/fate/paf-audio create mode 100644 ffmpeg/tests/ref/fate/paf-demux create mode 100644 ffmpeg/tests/ref/fate/paf-video create mode 100644 ffmpeg/tests/ref/fate/parseutils create mode 100644 ffmpeg/tests/ref/fate/pcm-planar create mode 100644 ffmpeg/tests/ref/fate/pcm_dvd create mode 100644 ffmpeg/tests/ref/fate/pcm_s16be-stereo create mode 100644 ffmpeg/tests/ref/fate/pcm_s16le-stereo create mode 100644 ffmpeg/tests/ref/fate/pcm_u8-mono create mode 100644 ffmpeg/tests/ref/fate/pcm_u8-stereo create mode 100644 ffmpeg/tests/ref/fate/pictor create mode 100644 ffmpeg/tests/ref/fate/pixelutils create mode 100644 ffmpeg/tests/ref/fate/pmp-demux create mode 100644 ffmpeg/tests/ref/fate/png-gray16 create mode 100644 ffmpeg/tests/ref/fate/png-gray8 create mode 100644 ffmpeg/tests/ref/fate/png-rgb24 create mode 100644 ffmpeg/tests/ref/fate/png-rgb48 create mode 100644 ffmpeg/tests/ref/fate/png-rgba create mode 100644 ffmpeg/tests/ref/fate/png-ya16 create mode 100644 ffmpeg/tests/ref/fate/png-ya8 create mode 100644 ffmpeg/tests/ref/fate/pngparser create mode 100644 ffmpeg/tests/ref/fate/prores-422 create mode 100644 ffmpeg/tests/ref/fate/prores-422_hq create mode 100644 ffmpeg/tests/ref/fate/prores-422_lt create mode 100644 ffmpeg/tests/ref/fate/prores-422_proxy create mode 100644 ffmpeg/tests/ref/fate/prores-alpha create mode 100644 ffmpeg/tests/ref/fate/prores-alpha_skip create mode 100644 ffmpeg/tests/ref/fate/prores-transparency create mode 100644 ffmpeg/tests/ref/fate/prores-transparency_skip create mode 100644 ffmpeg/tests/ref/fate/psx-str-demux create mode 100644 ffmpeg/tests/ref/fate/ptx create mode 100644 ffmpeg/tests/ref/fate/pva-demux create mode 100644 ffmpeg/tests/ref/fate/qcp-demux create mode 100644 ffmpeg/tests/ref/fate/qpeg create mode 100644 ffmpeg/tests/ref/fate/qt-alaw-mono create mode 100644 ffmpeg/tests/ref/fate/qt-alaw-stereo create mode 100644 ffmpeg/tests/ref/fate/qt-ima4-mono create mode 100644 ffmpeg/tests/ref/fate/qt-ima4-stereo create mode 100644 ffmpeg/tests/ref/fate/qt-mac3-mono create mode 100644 ffmpeg/tests/ref/fate/qt-mac3-stereo create mode 100644 ffmpeg/tests/ref/fate/qt-mac6-mono create mode 100644 ffmpeg/tests/ref/fate/qt-mac6-stereo create mode 100644 ffmpeg/tests/ref/fate/qt-ulaw-mono create mode 100644 ffmpeg/tests/ref/fate/qt-ulaw-stereo create mode 100644 ffmpeg/tests/ref/fate/qtrle-16bit create mode 100644 ffmpeg/tests/ref/fate/qtrle-1bit create mode 100644 ffmpeg/tests/ref/fate/qtrle-24bit create mode 100644 ffmpeg/tests/ref/fate/qtrle-2bit create mode 100644 ffmpeg/tests/ref/fate/qtrle-32bit create mode 100644 ffmpeg/tests/ref/fate/qtrle-4bit create mode 100644 ffmpeg/tests/ref/fate/qtrle-8bit create mode 100644 ffmpeg/tests/ref/fate/quickdraw create mode 100644 ffmpeg/tests/ref/fate/r210 create mode 100644 ffmpeg/tests/ref/fate/ra-144 create mode 100644 ffmpeg/tests/ref/fate/ralf create mode 100644 ffmpeg/tests/ref/fate/random_seed create mode 100644 ffmpeg/tests/ref/fate/redcode-demux create mode 100644 ffmpeg/tests/ref/fate/redspark-demux create mode 100644 ffmpeg/tests/ref/fate/ripemd create mode 100644 ffmpeg/tests/ref/fate/rl2 create mode 100644 ffmpeg/tests/ref/fate/roqvideo create mode 100644 ffmpeg/tests/ref/fate/rpza create mode 100644 ffmpeg/tests/ref/fate/rsd-demux create mode 100644 ffmpeg/tests/ref/fate/rv30 create mode 100644 ffmpeg/tests/ref/fate/rv40 create mode 100644 ffmpeg/tests/ref/fate/sanm create mode 100644 ffmpeg/tests/ref/fate/sgi-gray create mode 100644 ffmpeg/tests/ref/fate/sgi-gray16 create mode 100644 ffmpeg/tests/ref/fate/sgi-rgb24 create mode 100644 ffmpeg/tests/ref/fate/sgi-rgb24-rle create mode 100644 ffmpeg/tests/ref/fate/sgi-rgb48 create mode 100644 ffmpeg/tests/ref/fate/sgi-rgb48-rle create mode 100644 ffmpeg/tests/ref/fate/sgi-rgba create mode 100644 ffmpeg/tests/ref/fate/sgi-rgba64 create mode 100644 ffmpeg/tests/ref/fate/sgi-rgba64-rle create mode 100644 ffmpeg/tests/ref/fate/sha create mode 100644 ffmpeg/tests/ref/fate/sha512 create mode 100644 ffmpeg/tests/ref/fate/sierra-vmd-audio create mode 100644 ffmpeg/tests/ref/fate/sierra-vmd-video create mode 100644 ffmpeg/tests/ref/fate/siff-demux create mode 100644 ffmpeg/tests/ref/fate/smacker-audio create mode 100644 ffmpeg/tests/ref/fate/smacker-video create mode 100644 ffmpeg/tests/ref/fate/smc create mode 100644 ffmpeg/tests/ref/fate/smjpeg create mode 100644 ffmpeg/tests/ref/fate/smjpeg-demux create mode 100644 ffmpeg/tests/ref/fate/smvjpeg create mode 100644 ffmpeg/tests/ref/fate/sp5x create mode 100644 ffmpeg/tests/ref/fate/srtp create mode 100644 ffmpeg/tests/ref/fate/sub-aqtitle create mode 100644 ffmpeg/tests/ref/fate/sub-charenc create mode 100644 ffmpeg/tests/ref/fate/sub-jacosub create mode 100644 ffmpeg/tests/ref/fate/sub-microdvd create mode 100644 ffmpeg/tests/ref/fate/sub-microdvd-remux create mode 100644 ffmpeg/tests/ref/fate/sub-movtext create mode 100644 ffmpeg/tests/ref/fate/sub-movtextenc create mode 100644 ffmpeg/tests/ref/fate/sub-mpl2 create mode 100644 ffmpeg/tests/ref/fate/sub-mpsub create mode 100644 ffmpeg/tests/ref/fate/sub-mpsub-frames create mode 100644 ffmpeg/tests/ref/fate/sub-pjs create mode 100644 ffmpeg/tests/ref/fate/sub-realtext create mode 100644 ffmpeg/tests/ref/fate/sub-sami create mode 100644 ffmpeg/tests/ref/fate/sub-srt create mode 100644 ffmpeg/tests/ref/fate/sub-subripenc create mode 100644 ffmpeg/tests/ref/fate/sub-subviewer create mode 100644 ffmpeg/tests/ref/fate/sub-subviewer1 create mode 100644 ffmpeg/tests/ref/fate/sub-vplayer create mode 100644 ffmpeg/tests/ref/fate/sub-webvtt create mode 100644 ffmpeg/tests/ref/fate/sub-webvttenc create mode 100644 ffmpeg/tests/ref/fate/sub2video create mode 100644 ffmpeg/tests/ref/fate/sunraster-1bit-raw create mode 100644 ffmpeg/tests/ref/fate/sunraster-1bit-rle create mode 100644 ffmpeg/tests/ref/fate/sunraster-24bit-raw create mode 100644 ffmpeg/tests/ref/fate/sunraster-24bit-rle create mode 100644 ffmpeg/tests/ref/fate/sunraster-8bit-raw create mode 100644 ffmpeg/tests/ref/fate/sunraster-8bit-rle create mode 100644 ffmpeg/tests/ref/fate/sunraster-8bit_gray-raw create mode 100644 ffmpeg/tests/ref/fate/svq1 create mode 100644 ffmpeg/tests/ref/fate/svq3 create mode 100644 ffmpeg/tests/ref/fate/targa-conformance-CBW8 create mode 100644 ffmpeg/tests/ref/fate/targa-conformance-CCM8 create mode 100644 ffmpeg/tests/ref/fate/targa-conformance-CTC16 create mode 100644 ffmpeg/tests/ref/fate/targa-conformance-CTC24 create mode 100644 ffmpeg/tests/ref/fate/targa-conformance-CTC32 create mode 100644 ffmpeg/tests/ref/fate/targa-conformance-UBW8 create mode 100644 ffmpeg/tests/ref/fate/targa-conformance-UCM8 create mode 100644 ffmpeg/tests/ref/fate/targa-conformance-UTC16 create mode 100644 ffmpeg/tests/ref/fate/targa-conformance-UTC24 create mode 100644 ffmpeg/tests/ref/fate/targa-conformance-UTC32 create mode 100644 ffmpeg/tests/ref/fate/targa-top-to-bottom create mode 100644 ffmpeg/tests/ref/fate/theora-coeff-level64 create mode 100644 ffmpeg/tests/ref/fate/thp create mode 100644 ffmpeg/tests/ref/fate/tiertex-seq create mode 100644 ffmpeg/tests/ref/fate/tiff-fax-g3 create mode 100644 ffmpeg/tests/ref/fate/tiff-fax-g3s create mode 100644 ffmpeg/tests/ref/fate/timefilter create mode 100644 ffmpeg/tests/ref/fate/tmv create mode 100644 ffmpeg/tests/ref/fate/truemotion1-15 create mode 100644 ffmpeg/tests/ref/fate/truemotion1-24 create mode 100644 ffmpeg/tests/ref/fate/truemotion2 create mode 100644 ffmpeg/tests/ref/fate/tscc-15bit create mode 100644 ffmpeg/tests/ref/fate/tscc-32bit create mode 100644 ffmpeg/tests/ref/fate/tscc2 create mode 100644 ffmpeg/tests/ref/fate/txd-16bpp create mode 100644 ffmpeg/tests/ref/fate/txd-pal8 create mode 100644 ffmpeg/tests/ref/fate/ulti create mode 100644 ffmpeg/tests/ref/fate/unknown_layout-ac3 create mode 100644 ffmpeg/tests/ref/fate/unknown_layout-pcm create mode 100644 ffmpeg/tests/ref/fate/url create mode 100644 ffmpeg/tests/ref/fate/utvideo_rgb_left create mode 100644 ffmpeg/tests/ref/fate/utvideo_rgb_median create mode 100644 ffmpeg/tests/ref/fate/utvideo_rgba_left create mode 100644 ffmpeg/tests/ref/fate/utvideo_rgba_median create mode 100644 ffmpeg/tests/ref/fate/utvideo_rgba_single_symbol create mode 100644 ffmpeg/tests/ref/fate/utvideo_yuv420_left create mode 100644 ffmpeg/tests/ref/fate/utvideo_yuv420_median create mode 100644 ffmpeg/tests/ref/fate/utvideo_yuv422_left create mode 100644 ffmpeg/tests/ref/fate/utvideo_yuv422_median create mode 100644 ffmpeg/tests/ref/fate/utvideoenc_rgb_left create mode 100644 ffmpeg/tests/ref/fate/utvideoenc_rgb_median create mode 100644 ffmpeg/tests/ref/fate/utvideoenc_rgb_none create mode 100644 ffmpeg/tests/ref/fate/utvideoenc_rgba_left create mode 100644 ffmpeg/tests/ref/fate/utvideoenc_rgba_median create mode 100644 ffmpeg/tests/ref/fate/utvideoenc_rgba_none create mode 100644 ffmpeg/tests/ref/fate/utvideoenc_yuv420_left create mode 100644 ffmpeg/tests/ref/fate/utvideoenc_yuv420_median create mode 100644 ffmpeg/tests/ref/fate/utvideoenc_yuv420_none create mode 100644 ffmpeg/tests/ref/fate/utvideoenc_yuv422_left create mode 100644 ffmpeg/tests/ref/fate/utvideoenc_yuv422_median create mode 100644 ffmpeg/tests/ref/fate/utvideoenc_yuv422_none create mode 100644 ffmpeg/tests/ref/fate/v210 create mode 100644 ffmpeg/tests/ref/fate/v410dec create mode 100644 ffmpeg/tests/ref/fate/v410enc create mode 100644 ffmpeg/tests/ref/fate/vb create mode 100644 ffmpeg/tests/ref/fate/vble create mode 100644 ffmpeg/tests/ref/fate/vc1-ism create mode 100644 ffmpeg/tests/ref/fate/vc1_sa00040 create mode 100644 ffmpeg/tests/ref/fate/vc1_sa00050 create mode 100644 ffmpeg/tests/ref/fate/vc1_sa10091 create mode 100644 ffmpeg/tests/ref/fate/vc1_sa10143 create mode 100644 ffmpeg/tests/ref/fate/vc1_sa20021 create mode 100644 ffmpeg/tests/ref/fate/vcr1 create mode 100644 ffmpeg/tests/ref/fate/vcr2 create mode 100644 ffmpeg/tests/ref/fate/videoxl create mode 100644 ffmpeg/tests/ref/fate/vmnc-16bit create mode 100644 ffmpeg/tests/ref/fate/vmnc-32bit create mode 100644 ffmpeg/tests/ref/fate/vp31 create mode 100644 ffmpeg/tests/ref/fate/vp5 create mode 100644 ffmpeg/tests/ref/fate/vp60 create mode 100644 ffmpeg/tests/ref/fate/vp61 create mode 100644 ffmpeg/tests/ref/fate/vp6a create mode 100644 ffmpeg/tests/ref/fate/vp6a-skip_alpha create mode 100644 ffmpeg/tests/ref/fate/vp6f create mode 100644 ffmpeg/tests/ref/fate/vp7 create mode 100644 ffmpeg/tests/ref/fate/vp8-alpha create mode 100644 ffmpeg/tests/ref/fate/vp8-sign-bias create mode 100644 ffmpeg/tests/ref/fate/vp8-size-change create mode 100644 ffmpeg/tests/ref/fate/vp8-test-vector-001 create mode 100644 ffmpeg/tests/ref/fate/vp8-test-vector-002 create mode 100644 ffmpeg/tests/ref/fate/vp8-test-vector-003 create mode 100644 ffmpeg/tests/ref/fate/vp8-test-vector-004 create mode 100644 ffmpeg/tests/ref/fate/vp8-test-vector-005 create mode 100644 ffmpeg/tests/ref/fate/vp8-test-vector-006 create mode 100644 ffmpeg/tests/ref/fate/vp8-test-vector-007 create mode 100644 ffmpeg/tests/ref/fate/vp8-test-vector-008 create mode 100644 ffmpeg/tests/ref/fate/vp8-test-vector-009 create mode 100644 ffmpeg/tests/ref/fate/vp8-test-vector-010 create mode 100644 ffmpeg/tests/ref/fate/vp8-test-vector-011 create mode 100644 ffmpeg/tests/ref/fate/vp8-test-vector-012 create mode 100644 ffmpeg/tests/ref/fate/vp8-test-vector-013 create mode 100644 ffmpeg/tests/ref/fate/vp8-test-vector-014 create mode 100644 ffmpeg/tests/ref/fate/vp8-test-vector-015 create mode 100644 ffmpeg/tests/ref/fate/vp8-test-vector-016 create mode 100644 ffmpeg/tests/ref/fate/vp8-test-vector-017 create mode 100644 ffmpeg/tests/ref/fate/vp9-00-quantizer-00 create mode 100644 ffmpeg/tests/ref/fate/vp9-00-quantizer-01 create mode 100644 ffmpeg/tests/ref/fate/vp9-00-quantizer-02 create mode 100644 ffmpeg/tests/ref/fate/vp9-00-quantizer-03 create mode 100644 ffmpeg/tests/ref/fate/vp9-00-quantizer-04 create mode 100644 ffmpeg/tests/ref/fate/vp9-00-quantizer-05 create mode 100644 ffmpeg/tests/ref/fate/vp9-00-quantizer-06 create mode 100644 ffmpeg/tests/ref/fate/vp9-00-quantizer-07 create mode 100644 ffmpeg/tests/ref/fate/vp9-00-quantizer-08 create mode 100644 ffmpeg/tests/ref/fate/vp9-00-quantizer-09 create mode 100644 ffmpeg/tests/ref/fate/vp9-00-quantizer-10 create mode 100644 ffmpeg/tests/ref/fate/vp9-00-quantizer-11 create mode 100644 ffmpeg/tests/ref/fate/vp9-00-quantizer-12 create mode 100644 ffmpeg/tests/ref/fate/vp9-00-quantizer-13 create mode 100644 ffmpeg/tests/ref/fate/vp9-00-quantizer-14 create mode 100644 ffmpeg/tests/ref/fate/vp9-00-quantizer-15 create mode 100644 ffmpeg/tests/ref/fate/vp9-00-quantizer-16 create mode 100644 ffmpeg/tests/ref/fate/vp9-00-quantizer-17 create mode 100644 ffmpeg/tests/ref/fate/vp9-00-quantizer-18 create mode 100644 ffmpeg/tests/ref/fate/vp9-00-quantizer-19 create mode 100644 ffmpeg/tests/ref/fate/vp9-00-quantizer-20 create mode 100644 ffmpeg/tests/ref/fate/vp9-00-quantizer-21 create mode 100644 ffmpeg/tests/ref/fate/vp9-00-quantizer-22 create mode 100644 ffmpeg/tests/ref/fate/vp9-00-quantizer-23 create mode 100644 ffmpeg/tests/ref/fate/vp9-00-quantizer-24 create mode 100644 ffmpeg/tests/ref/fate/vp9-00-quantizer-25 create mode 100644 ffmpeg/tests/ref/fate/vp9-00-quantizer-26 create mode 100644 ffmpeg/tests/ref/fate/vp9-00-quantizer-27 create mode 100644 ffmpeg/tests/ref/fate/vp9-00-quantizer-28 create mode 100644 ffmpeg/tests/ref/fate/vp9-00-quantizer-29 create mode 100644 ffmpeg/tests/ref/fate/vp9-00-quantizer-30 create mode 100644 ffmpeg/tests/ref/fate/vp9-00-quantizer-31 create mode 100644 ffmpeg/tests/ref/fate/vp9-00-quantizer-32 create mode 100644 ffmpeg/tests/ref/fate/vp9-00-quantizer-33 create mode 100644 ffmpeg/tests/ref/fate/vp9-00-quantizer-34 create mode 100644 ffmpeg/tests/ref/fate/vp9-00-quantizer-35 create mode 100644 ffmpeg/tests/ref/fate/vp9-00-quantizer-36 create mode 100644 ffmpeg/tests/ref/fate/vp9-00-quantizer-37 create mode 100644 ffmpeg/tests/ref/fate/vp9-00-quantizer-38 create mode 100644 ffmpeg/tests/ref/fate/vp9-00-quantizer-39 create mode 100644 ffmpeg/tests/ref/fate/vp9-00-quantizer-40 create mode 100644 ffmpeg/tests/ref/fate/vp9-00-quantizer-41 create mode 100644 ffmpeg/tests/ref/fate/vp9-00-quantizer-42 create mode 100644 ffmpeg/tests/ref/fate/vp9-00-quantizer-43 create mode 100644 ffmpeg/tests/ref/fate/vp9-00-quantizer-44 create mode 100644 ffmpeg/tests/ref/fate/vp9-00-quantizer-45 create mode 100644 ffmpeg/tests/ref/fate/vp9-00-quantizer-46 create mode 100644 ffmpeg/tests/ref/fate/vp9-00-quantizer-47 create mode 100644 ffmpeg/tests/ref/fate/vp9-00-quantizer-48 create mode 100644 ffmpeg/tests/ref/fate/vp9-00-quantizer-49 create mode 100644 ffmpeg/tests/ref/fate/vp9-00-quantizer-50 create mode 100644 ffmpeg/tests/ref/fate/vp9-00-quantizer-51 create mode 100644 ffmpeg/tests/ref/fate/vp9-00-quantizer-52 create mode 100644 ffmpeg/tests/ref/fate/vp9-00-quantizer-53 create mode 100644 ffmpeg/tests/ref/fate/vp9-00-quantizer-54 create mode 100644 ffmpeg/tests/ref/fate/vp9-00-quantizer-55 create mode 100644 ffmpeg/tests/ref/fate/vp9-00-quantizer-56 create mode 100644 ffmpeg/tests/ref/fate/vp9-00-quantizer-57 create mode 100644 ffmpeg/tests/ref/fate/vp9-00-quantizer-58 create mode 100644 ffmpeg/tests/ref/fate/vp9-00-quantizer-59 create mode 100644 ffmpeg/tests/ref/fate/vp9-00-quantizer-60 create mode 100644 ffmpeg/tests/ref/fate/vp9-00-quantizer-61 create mode 100644 ffmpeg/tests/ref/fate/vp9-00-quantizer-62 create mode 100644 ffmpeg/tests/ref/fate/vp9-00-quantizer-63 create mode 100644 ffmpeg/tests/ref/fate/vp9-01-sharpness-1 create mode 100644 ffmpeg/tests/ref/fate/vp9-01-sharpness-2 create mode 100644 ffmpeg/tests/ref/fate/vp9-01-sharpness-3 create mode 100644 ffmpeg/tests/ref/fate/vp9-01-sharpness-4 create mode 100644 ffmpeg/tests/ref/fate/vp9-01-sharpness-5 create mode 100644 ffmpeg/tests/ref/fate/vp9-01-sharpness-6 create mode 100644 ffmpeg/tests/ref/fate/vp9-01-sharpness-7 create mode 100644 ffmpeg/tests/ref/fate/vp9-02-size-08x08 create mode 100644 ffmpeg/tests/ref/fate/vp9-02-size-08x10 create mode 100644 ffmpeg/tests/ref/fate/vp9-02-size-08x16 create mode 100644 ffmpeg/tests/ref/fate/vp9-02-size-08x18 create mode 100644 ffmpeg/tests/ref/fate/vp9-02-size-08x32 create mode 100644 ffmpeg/tests/ref/fate/vp9-02-size-08x34 create mode 100644 ffmpeg/tests/ref/fate/vp9-02-size-08x64 create mode 100644 ffmpeg/tests/ref/fate/vp9-02-size-08x66 create mode 100644 ffmpeg/tests/ref/fate/vp9-02-size-10x08 create mode 100644 ffmpeg/tests/ref/fate/vp9-02-size-10x10 create mode 100644 ffmpeg/tests/ref/fate/vp9-02-size-10x16 create mode 100644 ffmpeg/tests/ref/fate/vp9-02-size-10x18 create mode 100644 ffmpeg/tests/ref/fate/vp9-02-size-10x32 create mode 100644 ffmpeg/tests/ref/fate/vp9-02-size-10x34 create mode 100644 ffmpeg/tests/ref/fate/vp9-02-size-10x64 create mode 100644 ffmpeg/tests/ref/fate/vp9-02-size-10x66 create mode 100644 ffmpeg/tests/ref/fate/vp9-02-size-16x08 create mode 100644 ffmpeg/tests/ref/fate/vp9-02-size-16x10 create mode 100644 ffmpeg/tests/ref/fate/vp9-02-size-16x16 create mode 100644 ffmpeg/tests/ref/fate/vp9-02-size-16x18 create mode 100644 ffmpeg/tests/ref/fate/vp9-02-size-16x32 create mode 100644 ffmpeg/tests/ref/fate/vp9-02-size-16x34 create mode 100644 ffmpeg/tests/ref/fate/vp9-02-size-16x64 create mode 100644 ffmpeg/tests/ref/fate/vp9-02-size-16x66 create mode 100644 ffmpeg/tests/ref/fate/vp9-02-size-18x08 create mode 100644 ffmpeg/tests/ref/fate/vp9-02-size-18x10 create mode 100644 ffmpeg/tests/ref/fate/vp9-02-size-18x16 create mode 100644 ffmpeg/tests/ref/fate/vp9-02-size-18x18 create mode 100644 ffmpeg/tests/ref/fate/vp9-02-size-18x32 create mode 100644 ffmpeg/tests/ref/fate/vp9-02-size-18x34 create mode 100644 ffmpeg/tests/ref/fate/vp9-02-size-18x64 create mode 100644 ffmpeg/tests/ref/fate/vp9-02-size-18x66 create mode 100644 ffmpeg/tests/ref/fate/vp9-02-size-32x08 create mode 100644 ffmpeg/tests/ref/fate/vp9-02-size-32x10 create mode 100644 ffmpeg/tests/ref/fate/vp9-02-size-32x16 create mode 100644 ffmpeg/tests/ref/fate/vp9-02-size-32x18 create mode 100644 ffmpeg/tests/ref/fate/vp9-02-size-32x32 create mode 100644 ffmpeg/tests/ref/fate/vp9-02-size-32x34 create mode 100644 ffmpeg/tests/ref/fate/vp9-02-size-32x64 create mode 100644 ffmpeg/tests/ref/fate/vp9-02-size-32x66 create mode 100644 ffmpeg/tests/ref/fate/vp9-02-size-34x08 create mode 100644 ffmpeg/tests/ref/fate/vp9-02-size-34x10 create mode 100644 ffmpeg/tests/ref/fate/vp9-02-size-34x16 create mode 100644 ffmpeg/tests/ref/fate/vp9-02-size-34x18 create mode 100644 ffmpeg/tests/ref/fate/vp9-02-size-34x32 create mode 100644 ffmpeg/tests/ref/fate/vp9-02-size-34x34 create mode 100644 ffmpeg/tests/ref/fate/vp9-02-size-34x64 create mode 100644 ffmpeg/tests/ref/fate/vp9-02-size-34x66 create mode 100644 ffmpeg/tests/ref/fate/vp9-02-size-64x08 create mode 100644 ffmpeg/tests/ref/fate/vp9-02-size-64x10 create mode 100644 ffmpeg/tests/ref/fate/vp9-02-size-64x16 create mode 100644 ffmpeg/tests/ref/fate/vp9-02-size-64x18 create mode 100644 ffmpeg/tests/ref/fate/vp9-02-size-64x32 create mode 100644 ffmpeg/tests/ref/fate/vp9-02-size-64x34 create mode 100644 ffmpeg/tests/ref/fate/vp9-02-size-64x64 create mode 100644 ffmpeg/tests/ref/fate/vp9-02-size-64x66 create mode 100644 ffmpeg/tests/ref/fate/vp9-02-size-66x08 create mode 100644 ffmpeg/tests/ref/fate/vp9-02-size-66x10 create mode 100644 ffmpeg/tests/ref/fate/vp9-02-size-66x16 create mode 100644 ffmpeg/tests/ref/fate/vp9-02-size-66x18 create mode 100644 ffmpeg/tests/ref/fate/vp9-02-size-66x32 create mode 100644 ffmpeg/tests/ref/fate/vp9-02-size-66x34 create mode 100644 ffmpeg/tests/ref/fate/vp9-02-size-66x64 create mode 100644 ffmpeg/tests/ref/fate/vp9-02-size-66x66 create mode 100644 ffmpeg/tests/ref/fate/vp9-03-deltaq create mode 100644 ffmpeg/tests/ref/fate/vp9-03-size-196x196 create mode 100644 ffmpeg/tests/ref/fate/vp9-03-size-196x198 create mode 100644 ffmpeg/tests/ref/fate/vp9-03-size-196x200 create mode 100644 ffmpeg/tests/ref/fate/vp9-03-size-196x202 create mode 100644 ffmpeg/tests/ref/fate/vp9-03-size-196x208 create mode 100644 ffmpeg/tests/ref/fate/vp9-03-size-196x210 create mode 100644 ffmpeg/tests/ref/fate/vp9-03-size-196x224 create mode 100644 ffmpeg/tests/ref/fate/vp9-03-size-196x226 create mode 100644 ffmpeg/tests/ref/fate/vp9-03-size-198x196 create mode 100644 ffmpeg/tests/ref/fate/vp9-03-size-198x198 create mode 100644 ffmpeg/tests/ref/fate/vp9-03-size-198x200 create mode 100644 ffmpeg/tests/ref/fate/vp9-03-size-198x202 create mode 100644 ffmpeg/tests/ref/fate/vp9-03-size-198x208 create mode 100644 ffmpeg/tests/ref/fate/vp9-03-size-198x210 create mode 100644 ffmpeg/tests/ref/fate/vp9-03-size-198x224 create mode 100644 ffmpeg/tests/ref/fate/vp9-03-size-198x226 create mode 100644 ffmpeg/tests/ref/fate/vp9-03-size-200x196 create mode 100644 ffmpeg/tests/ref/fate/vp9-03-size-200x198 create mode 100644 ffmpeg/tests/ref/fate/vp9-03-size-200x200 create mode 100644 ffmpeg/tests/ref/fate/vp9-03-size-200x202 create mode 100644 ffmpeg/tests/ref/fate/vp9-03-size-200x208 create mode 100644 ffmpeg/tests/ref/fate/vp9-03-size-200x210 create mode 100644 ffmpeg/tests/ref/fate/vp9-03-size-200x224 create mode 100644 ffmpeg/tests/ref/fate/vp9-03-size-200x226 create mode 100644 ffmpeg/tests/ref/fate/vp9-03-size-202x196 create mode 100644 ffmpeg/tests/ref/fate/vp9-03-size-202x198 create mode 100644 ffmpeg/tests/ref/fate/vp9-03-size-202x200 create mode 100644 ffmpeg/tests/ref/fate/vp9-03-size-202x202 create mode 100644 ffmpeg/tests/ref/fate/vp9-03-size-202x208 create mode 100644 ffmpeg/tests/ref/fate/vp9-03-size-202x210 create mode 100644 ffmpeg/tests/ref/fate/vp9-03-size-202x224 create mode 100644 ffmpeg/tests/ref/fate/vp9-03-size-202x226 create mode 100644 ffmpeg/tests/ref/fate/vp9-03-size-208x196 create mode 100644 ffmpeg/tests/ref/fate/vp9-03-size-208x198 create mode 100644 ffmpeg/tests/ref/fate/vp9-03-size-208x200 create mode 100644 ffmpeg/tests/ref/fate/vp9-03-size-208x202 create mode 100644 ffmpeg/tests/ref/fate/vp9-03-size-208x208 create mode 100644 ffmpeg/tests/ref/fate/vp9-03-size-208x210 create mode 100644 ffmpeg/tests/ref/fate/vp9-03-size-208x224 create mode 100644 ffmpeg/tests/ref/fate/vp9-03-size-208x226 create mode 100644 ffmpeg/tests/ref/fate/vp9-03-size-210x196 create mode 100644 ffmpeg/tests/ref/fate/vp9-03-size-210x198 create mode 100644 ffmpeg/tests/ref/fate/vp9-03-size-210x200 create mode 100644 ffmpeg/tests/ref/fate/vp9-03-size-210x202 create mode 100644 ffmpeg/tests/ref/fate/vp9-03-size-210x208 create mode 100644 ffmpeg/tests/ref/fate/vp9-03-size-210x210 create mode 100644 ffmpeg/tests/ref/fate/vp9-03-size-210x224 create mode 100644 ffmpeg/tests/ref/fate/vp9-03-size-210x226 create mode 100644 ffmpeg/tests/ref/fate/vp9-03-size-224x196 create mode 100644 ffmpeg/tests/ref/fate/vp9-03-size-224x198 create mode 100644 ffmpeg/tests/ref/fate/vp9-03-size-224x200 create mode 100644 ffmpeg/tests/ref/fate/vp9-03-size-224x202 create mode 100644 ffmpeg/tests/ref/fate/vp9-03-size-224x208 create mode 100644 ffmpeg/tests/ref/fate/vp9-03-size-224x210 create mode 100644 ffmpeg/tests/ref/fate/vp9-03-size-224x224 create mode 100644 ffmpeg/tests/ref/fate/vp9-03-size-224x226 create mode 100644 ffmpeg/tests/ref/fate/vp9-03-size-226x196 create mode 100644 ffmpeg/tests/ref/fate/vp9-03-size-226x198 create mode 100644 ffmpeg/tests/ref/fate/vp9-03-size-226x200 create mode 100644 ffmpeg/tests/ref/fate/vp9-03-size-226x202 create mode 100644 ffmpeg/tests/ref/fate/vp9-03-size-226x208 create mode 100644 ffmpeg/tests/ref/fate/vp9-03-size-226x210 create mode 100644 ffmpeg/tests/ref/fate/vp9-03-size-226x224 create mode 100644 ffmpeg/tests/ref/fate/vp9-03-size-226x226 create mode 100644 ffmpeg/tests/ref/fate/vp9-2pass-akiyo create mode 100644 ffmpeg/tests/ref/fate/vp9-parallelmode-akiyo create mode 100644 ffmpeg/tests/ref/fate/vp9-segmentation-aq-akiyo create mode 100644 ffmpeg/tests/ref/fate/vp9-segmentation-sf-akiyo create mode 100644 ffmpeg/tests/ref/fate/vp9-tiling-pedestrian create mode 100644 ffmpeg/tests/ref/fate/vqa-cc create mode 100644 ffmpeg/tests/ref/fate/vqf-demux create mode 100644 ffmpeg/tests/ref/fate/w64 create mode 100644 ffmpeg/tests/ref/fate/wavpack-channels-4.0 create mode 100644 ffmpeg/tests/ref/fate/wavpack-channels-5.1 create mode 100644 ffmpeg/tests/ref/fate/wavpack-channels-6.1 create mode 100644 ffmpeg/tests/ref/fate/wavpack-channels-7.1 create mode 100644 ffmpeg/tests/ref/fate/wavpack-channels-monofloat create mode 100644 ffmpeg/tests/ref/fate/wavpack-channels-monoint create mode 100644 ffmpeg/tests/ref/fate/wavpack-clipping create mode 100644 ffmpeg/tests/ref/fate/wavpack-cuesheet create mode 100644 ffmpeg/tests/ref/fate/wavpack-falsestereo create mode 100644 ffmpeg/tests/ref/fate/wavpack-lossless-12bit create mode 100644 ffmpeg/tests/ref/fate/wavpack-lossless-16bit create mode 100644 ffmpeg/tests/ref/fate/wavpack-lossless-24bit create mode 100644 ffmpeg/tests/ref/fate/wavpack-lossless-32bit create mode 100644 ffmpeg/tests/ref/fate/wavpack-lossless-8bit create mode 100644 ffmpeg/tests/ref/fate/wavpack-lossless-float create mode 100644 ffmpeg/tests/ref/fate/wavpack-lossy-16bit create mode 100644 ffmpeg/tests/ref/fate/wavpack-lossy-24bit create mode 100644 ffmpeg/tests/ref/fate/wavpack-lossy-32bit create mode 100644 ffmpeg/tests/ref/fate/wavpack-lossy-8bit create mode 100644 ffmpeg/tests/ref/fate/wavpack-lossy-float create mode 100644 ffmpeg/tests/ref/fate/wavpack-matroskamode create mode 100644 ffmpeg/tests/ref/fate/wavpack-speed-default create mode 100644 ffmpeg/tests/ref/fate/wavpack-speed-fast create mode 100644 ffmpeg/tests/ref/fate/wavpack-speed-high create mode 100644 ffmpeg/tests/ref/fate/wavpack-speed-vhigh create mode 100644 ffmpeg/tests/ref/fate/wavpack-zerolsbs create mode 100644 ffmpeg/tests/ref/fate/wc3movie-xan create mode 100644 ffmpeg/tests/ref/fate/webm-dash-manifest create mode 100644 ffmpeg/tests/ref/fate/webm-dash-manifest-unaligned-audio-streams create mode 100644 ffmpeg/tests/ref/fate/webm-dash-manifest-unaligned-video-streams create mode 100644 ffmpeg/tests/ref/fate/westwood-aud create mode 100644 ffmpeg/tests/ref/fate/wmv8-drm create mode 100644 ffmpeg/tests/ref/fate/wmv8-drm-nodec create mode 100644 ffmpeg/tests/ref/fate/wmv8-x8intra create mode 100644 ffmpeg/tests/ref/fate/wnv1 create mode 100644 ffmpeg/tests/ref/fate/ws_snd create mode 100644 ffmpeg/tests/ref/fate/wtv-demux create mode 100644 ffmpeg/tests/ref/fate/xbm10 create mode 100644 ffmpeg/tests/ref/fate/xbm11 create mode 100644 ffmpeg/tests/ref/fate/xface create mode 100644 ffmpeg/tests/ref/fate/xmv-demux create mode 100644 ffmpeg/tests/ref/fate/xtea create mode 100644 ffmpeg/tests/ref/fate/xvid-custom-matrix create mode 100644 ffmpeg/tests/ref/fate/xvid-idct create mode 100644 ffmpeg/tests/ref/fate/xwma-demux create mode 100644 ffmpeg/tests/ref/fate/xxan-wc4 create mode 100644 ffmpeg/tests/ref/fate/yop create mode 100644 ffmpeg/tests/ref/fate/zerocodec create mode 100644 ffmpeg/tests/ref/fate/zlib create mode 100644 ffmpeg/tests/ref/fate/zmbv-15bit create mode 100644 ffmpeg/tests/ref/fate/zmbv-16bit create mode 100644 ffmpeg/tests/ref/fate/zmbv-32bit create mode 100644 ffmpeg/tests/ref/fate/zmbv-8bit create mode 100644 ffmpeg/tests/ref/lavf-fate/latm create mode 100644 ffmpeg/tests/ref/lavf-fate/mp3 create mode 100644 ffmpeg/tests/ref/lavf-fate/ogg_vp3 create mode 100644 ffmpeg/tests/ref/lavf/aiff create mode 100644 ffmpeg/tests/ref/lavf/alaw create mode 100644 ffmpeg/tests/ref/lavf/asf create mode 100644 ffmpeg/tests/ref/lavf/ast create mode 100644 ffmpeg/tests/ref/lavf/au create mode 100644 ffmpeg/tests/ref/lavf/avi create mode 100644 ffmpeg/tests/ref/lavf/bmp create mode 100644 ffmpeg/tests/ref/lavf/caf create mode 100644 ffmpeg/tests/ref/lavf/dpx create mode 100644 ffmpeg/tests/ref/lavf/dv_fmt create mode 100644 ffmpeg/tests/ref/lavf/ffm create mode 100644 ffmpeg/tests/ref/lavf/flm create mode 100644 ffmpeg/tests/ref/lavf/flv_fmt create mode 100644 ffmpeg/tests/ref/lavf/gif create mode 100644 ffmpeg/tests/ref/lavf/gxf create mode 100644 ffmpeg/tests/ref/lavf/ircam create mode 100644 ffmpeg/tests/ref/lavf/ismv create mode 100644 ffmpeg/tests/ref/lavf/jpg create mode 100644 ffmpeg/tests/ref/lavf/mkv create mode 100644 ffmpeg/tests/ref/lavf/mmf create mode 100644 ffmpeg/tests/ref/lavf/mov create mode 100644 ffmpeg/tests/ref/lavf/mpg create mode 100644 ffmpeg/tests/ref/lavf/mulaw create mode 100644 ffmpeg/tests/ref/lavf/mxf create mode 100644 ffmpeg/tests/ref/lavf/mxf_d10 create mode 100644 ffmpeg/tests/ref/lavf/nut create mode 100644 ffmpeg/tests/ref/lavf/ogg create mode 100644 ffmpeg/tests/ref/lavf/pam create mode 100644 ffmpeg/tests/ref/lavf/pbmpipe create mode 100644 ffmpeg/tests/ref/lavf/pcx create mode 100644 ffmpeg/tests/ref/lavf/pgm create mode 100644 ffmpeg/tests/ref/lavf/pgmpipe create mode 100644 ffmpeg/tests/ref/lavf/pixfmt create mode 100644 ffmpeg/tests/ref/lavf/png create mode 100644 ffmpeg/tests/ref/lavf/ppm create mode 100644 ffmpeg/tests/ref/lavf/ppmpipe create mode 100644 ffmpeg/tests/ref/lavf/rm create mode 100644 ffmpeg/tests/ref/lavf/rso create mode 100644 ffmpeg/tests/ref/lavf/sgi create mode 100644 ffmpeg/tests/ref/lavf/smjpeg create mode 100644 ffmpeg/tests/ref/lavf/sox create mode 100644 ffmpeg/tests/ref/lavf/sunrast create mode 100644 ffmpeg/tests/ref/lavf/swf create mode 100644 ffmpeg/tests/ref/lavf/tga create mode 100644 ffmpeg/tests/ref/lavf/tiff create mode 100644 ffmpeg/tests/ref/lavf/ts create mode 100644 ffmpeg/tests/ref/lavf/voc create mode 100644 ffmpeg/tests/ref/lavf/voc_s16 create mode 100644 ffmpeg/tests/ref/lavf/w64 create mode 100644 ffmpeg/tests/ref/lavf/wav create mode 100644 ffmpeg/tests/ref/lavf/wav_peak create mode 100644 ffmpeg/tests/ref/lavf/wav_peak_only create mode 100644 ffmpeg/tests/ref/lavf/wtv create mode 100644 ffmpeg/tests/ref/lavf/xbm create mode 100644 ffmpeg/tests/ref/lavf/xwd create mode 100644 ffmpeg/tests/ref/lavf/yuv4mpeg create mode 100644 ffmpeg/tests/ref/seek/acodec-adpcm-ima_qt create mode 100644 ffmpeg/tests/ref/seek/acodec-adpcm-ima_qt-trellis create mode 100644 ffmpeg/tests/ref/seek/acodec-adpcm-ima_wav create mode 100644 ffmpeg/tests/ref/seek/acodec-adpcm-ima_wav-trellis create mode 100644 ffmpeg/tests/ref/seek/acodec-adpcm-ms create mode 100644 ffmpeg/tests/ref/seek/acodec-adpcm-ms-trellis create mode 100644 ffmpeg/tests/ref/seek/acodec-adpcm-swf create mode 100644 ffmpeg/tests/ref/seek/acodec-adpcm-swf-trellis create mode 100644 ffmpeg/tests/ref/seek/acodec-adpcm-yamaha create mode 100644 ffmpeg/tests/ref/seek/acodec-adpcm-yamaha-trellis create mode 100644 ffmpeg/tests/ref/seek/acodec-alac create mode 100644 ffmpeg/tests/ref/seek/acodec-flac create mode 100644 ffmpeg/tests/ref/seek/acodec-mp2 create mode 100644 ffmpeg/tests/ref/seek/acodec-pcm-alaw create mode 100644 ffmpeg/tests/ref/seek/acodec-pcm-f32be create mode 100644 ffmpeg/tests/ref/seek/acodec-pcm-f32le create mode 100644 ffmpeg/tests/ref/seek/acodec-pcm-f64be create mode 100644 ffmpeg/tests/ref/seek/acodec-pcm-f64le create mode 100644 ffmpeg/tests/ref/seek/acodec-pcm-mulaw create mode 100644 ffmpeg/tests/ref/seek/acodec-pcm-s16be create mode 100644 ffmpeg/tests/ref/seek/acodec-pcm-s16le create mode 100644 ffmpeg/tests/ref/seek/acodec-pcm-s24be create mode 100644 ffmpeg/tests/ref/seek/acodec-pcm-s24le create mode 100644 ffmpeg/tests/ref/seek/acodec-pcm-s32be create mode 100644 ffmpeg/tests/ref/seek/acodec-pcm-s32le create mode 100644 ffmpeg/tests/ref/seek/acodec-pcm-s8 create mode 100644 ffmpeg/tests/ref/seek/acodec-pcm-u8 create mode 100644 ffmpeg/tests/ref/seek/lavf-aiff create mode 100644 ffmpeg/tests/ref/seek/lavf-alaw create mode 100644 ffmpeg/tests/ref/seek/lavf-asf create mode 100644 ffmpeg/tests/ref/seek/lavf-au create mode 100644 ffmpeg/tests/ref/seek/lavf-avi create mode 100644 ffmpeg/tests/ref/seek/lavf-bmp create mode 100644 ffmpeg/tests/ref/seek/lavf-dv_fmt create mode 100644 ffmpeg/tests/ref/seek/lavf-ffm create mode 100644 ffmpeg/tests/ref/seek/lavf-flv_fmt create mode 100644 ffmpeg/tests/ref/seek/lavf-gif create mode 100644 ffmpeg/tests/ref/seek/lavf-gxf create mode 100644 ffmpeg/tests/ref/seek/lavf-jpg create mode 100644 ffmpeg/tests/ref/seek/lavf-mkv create mode 100644 ffmpeg/tests/ref/seek/lavf-mmf create mode 100644 ffmpeg/tests/ref/seek/lavf-mov create mode 100644 ffmpeg/tests/ref/seek/lavf-mpg create mode 100644 ffmpeg/tests/ref/seek/lavf-mulaw create mode 100644 ffmpeg/tests/ref/seek/lavf-mxf create mode 100644 ffmpeg/tests/ref/seek/lavf-mxf_d10 create mode 100644 ffmpeg/tests/ref/seek/lavf-nut create mode 100644 ffmpeg/tests/ref/seek/lavf-ogg create mode 100644 ffmpeg/tests/ref/seek/lavf-pbmpipe create mode 100644 ffmpeg/tests/ref/seek/lavf-pcx create mode 100644 ffmpeg/tests/ref/seek/lavf-pgm create mode 100644 ffmpeg/tests/ref/seek/lavf-pgmpipe create mode 100644 ffmpeg/tests/ref/seek/lavf-ppm create mode 100644 ffmpeg/tests/ref/seek/lavf-ppmpipe create mode 100644 ffmpeg/tests/ref/seek/lavf-rm create mode 100644 ffmpeg/tests/ref/seek/lavf-sgi create mode 100644 ffmpeg/tests/ref/seek/lavf-swf create mode 100644 ffmpeg/tests/ref/seek/lavf-tga create mode 100644 ffmpeg/tests/ref/seek/lavf-tiff create mode 100644 ffmpeg/tests/ref/seek/lavf-ts create mode 100644 ffmpeg/tests/ref/seek/lavf-voc create mode 100644 ffmpeg/tests/ref/seek/lavf-wav create mode 100644 ffmpeg/tests/ref/seek/lavf-wtv create mode 100644 ffmpeg/tests/ref/seek/lavf-yuv4mpeg create mode 100644 ffmpeg/tests/ref/seek/vsynth2-asv1 create mode 100644 ffmpeg/tests/ref/seek/vsynth2-asv2 create mode 100644 ffmpeg/tests/ref/seek/vsynth2-dnxhd-1080i create mode 100644 ffmpeg/tests/ref/seek/vsynth2-dnxhd-720p create mode 100644 ffmpeg/tests/ref/seek/vsynth2-dnxhd-720p-rd create mode 100644 ffmpeg/tests/ref/seek/vsynth2-dv create mode 100644 ffmpeg/tests/ref/seek/vsynth2-dv-411 create mode 100644 ffmpeg/tests/ref/seek/vsynth2-dv-50 create mode 100644 ffmpeg/tests/ref/seek/vsynth2-ffv1 create mode 100644 ffmpeg/tests/ref/seek/vsynth2-flashsv create mode 100644 ffmpeg/tests/ref/seek/vsynth2-flv create mode 100644 ffmpeg/tests/ref/seek/vsynth2-h261 create mode 100644 ffmpeg/tests/ref/seek/vsynth2-h263 create mode 100644 ffmpeg/tests/ref/seek/vsynth2-h263p create mode 100644 ffmpeg/tests/ref/seek/vsynth2-huffyuv create mode 100644 ffmpeg/tests/ref/seek/vsynth2-jpegls create mode 100644 ffmpeg/tests/ref/seek/vsynth2-ljpeg create mode 100644 ffmpeg/tests/ref/seek/vsynth2-mjpeg create mode 100644 ffmpeg/tests/ref/seek/vsynth2-mpeg1 create mode 100644 ffmpeg/tests/ref/seek/vsynth2-mpeg1b create mode 100644 ffmpeg/tests/ref/seek/vsynth2-mpeg2-422 create mode 100644 ffmpeg/tests/ref/seek/vsynth2-mpeg2-idct-int create mode 100644 ffmpeg/tests/ref/seek/vsynth2-mpeg2-ilace create mode 100644 ffmpeg/tests/ref/seek/vsynth2-mpeg2-ivlc-qprd create mode 100644 ffmpeg/tests/ref/seek/vsynth2-mpeg2-thread create mode 100644 ffmpeg/tests/ref/seek/vsynth2-mpeg2-thread-ivlc create mode 100644 ffmpeg/tests/ref/seek/vsynth2-mpeg4 create mode 100644 ffmpeg/tests/ref/seek/vsynth2-mpeg4-adap create mode 100644 ffmpeg/tests/ref/seek/vsynth2-mpeg4-adv create mode 100644 ffmpeg/tests/ref/seek/vsynth2-mpeg4-error create mode 100644 ffmpeg/tests/ref/seek/vsynth2-mpeg4-nr create mode 100644 ffmpeg/tests/ref/seek/vsynth2-mpeg4-nsse create mode 100644 ffmpeg/tests/ref/seek/vsynth2-mpeg4-qpel create mode 100644 ffmpeg/tests/ref/seek/vsynth2-mpeg4-qprd create mode 100644 ffmpeg/tests/ref/seek/vsynth2-mpeg4-rc create mode 100644 ffmpeg/tests/ref/seek/vsynth2-mpeg4-thread create mode 100644 ffmpeg/tests/ref/seek/vsynth2-msmpeg4 create mode 100644 ffmpeg/tests/ref/seek/vsynth2-msmpeg4v2 create mode 100644 ffmpeg/tests/ref/seek/vsynth2-rgb create mode 100644 ffmpeg/tests/ref/seek/vsynth2-roqvideo create mode 100644 ffmpeg/tests/ref/seek/vsynth2-rv10 create mode 100644 ffmpeg/tests/ref/seek/vsynth2-rv20 create mode 100644 ffmpeg/tests/ref/seek/vsynth2-snow create mode 100644 ffmpeg/tests/ref/seek/vsynth2-snow-ll create mode 100644 ffmpeg/tests/ref/seek/vsynth2-svq1 create mode 100644 ffmpeg/tests/ref/seek/vsynth2-wmv1 create mode 100644 ffmpeg/tests/ref/seek/vsynth2-wmv2 create mode 100644 ffmpeg/tests/ref/seek/vsynth2-yuv create mode 100644 ffmpeg/tests/ref/vsynth/vsynth1-amv create mode 100644 ffmpeg/tests/ref/vsynth/vsynth1-asv1 create mode 100644 ffmpeg/tests/ref/vsynth/vsynth1-asv2 create mode 100644 ffmpeg/tests/ref/vsynth/vsynth1-avui create mode 100644 ffmpeg/tests/ref/vsynth/vsynth1-cljr create mode 100644 ffmpeg/tests/ref/vsynth/vsynth1-dnxhd-1080i create mode 100644 ffmpeg/tests/ref/vsynth/vsynth1-dnxhd-720p create mode 100644 ffmpeg/tests/ref/vsynth/vsynth1-dnxhd-720p-10bit create mode 100644 ffmpeg/tests/ref/vsynth/vsynth1-dnxhd-720p-rd create mode 100644 ffmpeg/tests/ref/vsynth/vsynth1-dnxhd_1080i create mode 100644 ffmpeg/tests/ref/vsynth/vsynth1-dv create mode 100644 ffmpeg/tests/ref/vsynth/vsynth1-dv-411 create mode 100644 ffmpeg/tests/ref/vsynth/vsynth1-dv-50 create mode 100644 ffmpeg/tests/ref/vsynth/vsynth1-dv_411 create mode 100644 ffmpeg/tests/ref/vsynth/vsynth1-ffv1 create mode 100644 ffmpeg/tests/ref/vsynth/vsynth1-ffv1.0 create mode 100644 ffmpeg/tests/ref/vsynth/vsynth1-ffvhuff create mode 100644 ffmpeg/tests/ref/vsynth/vsynth1-ffvhuff420p12 create mode 100644 ffmpeg/tests/ref/vsynth/vsynth1-ffvhuff422p10left create mode 100644 ffmpeg/tests/ref/vsynth/vsynth1-ffvhuff444 create mode 100644 ffmpeg/tests/ref/vsynth/vsynth1-ffvhuff444p16 create mode 100644 ffmpeg/tests/ref/vsynth/vsynth1-flashsv create mode 100644 ffmpeg/tests/ref/vsynth/vsynth1-flashsv2 create mode 100644 ffmpeg/tests/ref/vsynth/vsynth1-flv create mode 100644 ffmpeg/tests/ref/vsynth/vsynth1-h261 create mode 100644 ffmpeg/tests/ref/vsynth/vsynth1-h261-trellis create mode 100644 ffmpeg/tests/ref/vsynth/vsynth1-h263 create mode 100644 ffmpeg/tests/ref/vsynth/vsynth1-h263-obmc create mode 100644 ffmpeg/tests/ref/vsynth/vsynth1-h263p create mode 100644 ffmpeg/tests/ref/vsynth/vsynth1-huffyuv create mode 100644 ffmpeg/tests/ref/vsynth/vsynth1-huffyuvbgr24 create mode 100644 ffmpeg/tests/ref/vsynth/vsynth1-huffyuvbgra create mode 100644 ffmpeg/tests/ref/vsynth/vsynth1-jpeg2000 create mode 100644 ffmpeg/tests/ref/vsynth/vsynth1-jpeg2000-97 create mode 100644 ffmpeg/tests/ref/vsynth/vsynth1-jpegls create mode 100644 ffmpeg/tests/ref/vsynth/vsynth1-ljpeg create mode 100644 ffmpeg/tests/ref/vsynth/vsynth1-mjpeg create mode 100644 ffmpeg/tests/ref/vsynth/vsynth1-mjpeg-422 create mode 100644 ffmpeg/tests/ref/vsynth/vsynth1-mjpeg-444 create mode 100644 ffmpeg/tests/ref/vsynth/vsynth1-mpeg1 create mode 100644 ffmpeg/tests/ref/vsynth/vsynth1-mpeg1b create mode 100644 ffmpeg/tests/ref/vsynth/vsynth1-mpeg2 create mode 100644 ffmpeg/tests/ref/vsynth/vsynth1-mpeg2-422 create mode 100644 ffmpeg/tests/ref/vsynth/vsynth1-mpeg2-idct-int create mode 100644 ffmpeg/tests/ref/vsynth/vsynth1-mpeg2-ilace create mode 100644 ffmpeg/tests/ref/vsynth/vsynth1-mpeg2-ivlc-qprd create mode 100644 ffmpeg/tests/ref/vsynth/vsynth1-mpeg2-thread create mode 100644 ffmpeg/tests/ref/vsynth/vsynth1-mpeg2-thread-ivlc create mode 100644 ffmpeg/tests/ref/vsynth/vsynth1-mpeg4 create mode 100644 ffmpeg/tests/ref/vsynth/vsynth1-mpeg4-adap create mode 100644 ffmpeg/tests/ref/vsynth/vsynth1-mpeg4-adv create mode 100644 ffmpeg/tests/ref/vsynth/vsynth1-mpeg4-error create mode 100644 ffmpeg/tests/ref/vsynth/vsynth1-mpeg4-nr create mode 100644 ffmpeg/tests/ref/vsynth/vsynth1-mpeg4-nsse create mode 100644 ffmpeg/tests/ref/vsynth/vsynth1-mpeg4-qpel create mode 100644 ffmpeg/tests/ref/vsynth/vsynth1-mpeg4-qprd create mode 100644 ffmpeg/tests/ref/vsynth/vsynth1-mpeg4-rc create mode 100644 ffmpeg/tests/ref/vsynth/vsynth1-mpeg4-thread create mode 100644 ffmpeg/tests/ref/vsynth/vsynth1-mpng create mode 100644 ffmpeg/tests/ref/vsynth/vsynth1-msmpeg4 create mode 100644 ffmpeg/tests/ref/vsynth/vsynth1-msmpeg4v2 create mode 100644 ffmpeg/tests/ref/vsynth/vsynth1-msvideo1 create mode 100644 ffmpeg/tests/ref/vsynth/vsynth1-prores create mode 100644 ffmpeg/tests/ref/vsynth/vsynth1-prores_ks create mode 100644 ffmpeg/tests/ref/vsynth/vsynth1-qtrle create mode 100644 ffmpeg/tests/ref/vsynth/vsynth1-qtrlegray create mode 100644 ffmpeg/tests/ref/vsynth/vsynth1-r210 create mode 100644 ffmpeg/tests/ref/vsynth/vsynth1-rgb create mode 100644 ffmpeg/tests/ref/vsynth/vsynth1-roqvideo create mode 100644 ffmpeg/tests/ref/vsynth/vsynth1-rv10 create mode 100644 ffmpeg/tests/ref/vsynth/vsynth1-rv20 create mode 100644 ffmpeg/tests/ref/vsynth/vsynth1-snow create mode 100644 ffmpeg/tests/ref/vsynth/vsynth1-snow-hpel create mode 100644 ffmpeg/tests/ref/vsynth/vsynth1-snow-ll create mode 100644 ffmpeg/tests/ref/vsynth/vsynth1-svq1 create mode 100644 ffmpeg/tests/ref/vsynth/vsynth1-v210 create mode 100644 ffmpeg/tests/ref/vsynth/vsynth1-v308 create mode 100644 ffmpeg/tests/ref/vsynth/vsynth1-v408 create mode 100644 ffmpeg/tests/ref/vsynth/vsynth1-wmv1 create mode 100644 ffmpeg/tests/ref/vsynth/vsynth1-wmv2 create mode 100644 ffmpeg/tests/ref/vsynth/vsynth1-y41p create mode 100644 ffmpeg/tests/ref/vsynth/vsynth1-yuv create mode 100644 ffmpeg/tests/ref/vsynth/vsynth1-yuv4 create mode 100644 ffmpeg/tests/ref/vsynth/vsynth1-zlib create mode 100644 ffmpeg/tests/ref/vsynth/vsynth1-zmbv create mode 100644 ffmpeg/tests/ref/vsynth/vsynth2-amv create mode 100644 ffmpeg/tests/ref/vsynth/vsynth2-asv1 create mode 100644 ffmpeg/tests/ref/vsynth/vsynth2-asv2 create mode 100644 ffmpeg/tests/ref/vsynth/vsynth2-avui create mode 100644 ffmpeg/tests/ref/vsynth/vsynth2-cljr create mode 100644 ffmpeg/tests/ref/vsynth/vsynth2-dnxhd-1080i create mode 100644 ffmpeg/tests/ref/vsynth/vsynth2-dnxhd-720p create mode 100644 ffmpeg/tests/ref/vsynth/vsynth2-dnxhd-720p-10bit create mode 100644 ffmpeg/tests/ref/vsynth/vsynth2-dnxhd-720p-rd create mode 100644 ffmpeg/tests/ref/vsynth/vsynth2-dnxhd_1080i create mode 100644 ffmpeg/tests/ref/vsynth/vsynth2-dv create mode 100644 ffmpeg/tests/ref/vsynth/vsynth2-dv-411 create mode 100644 ffmpeg/tests/ref/vsynth/vsynth2-dv-50 create mode 100644 ffmpeg/tests/ref/vsynth/vsynth2-dv_411 create mode 100644 ffmpeg/tests/ref/vsynth/vsynth2-ffv1 create mode 100644 ffmpeg/tests/ref/vsynth/vsynth2-ffv1.0 create mode 100644 ffmpeg/tests/ref/vsynth/vsynth2-ffvhuff create mode 100644 ffmpeg/tests/ref/vsynth/vsynth2-ffvhuff420p12 create mode 100644 ffmpeg/tests/ref/vsynth/vsynth2-ffvhuff422p10left create mode 100644 ffmpeg/tests/ref/vsynth/vsynth2-ffvhuff444 create mode 100644 ffmpeg/tests/ref/vsynth/vsynth2-ffvhuff444p16 create mode 100644 ffmpeg/tests/ref/vsynth/vsynth2-flashsv create mode 100644 ffmpeg/tests/ref/vsynth/vsynth2-flashsv2 create mode 100644 ffmpeg/tests/ref/vsynth/vsynth2-flv create mode 100644 ffmpeg/tests/ref/vsynth/vsynth2-h261 create mode 100644 ffmpeg/tests/ref/vsynth/vsynth2-h261-trellis create mode 100644 ffmpeg/tests/ref/vsynth/vsynth2-h263 create mode 100644 ffmpeg/tests/ref/vsynth/vsynth2-h263-obmc create mode 100644 ffmpeg/tests/ref/vsynth/vsynth2-h263p create mode 100644 ffmpeg/tests/ref/vsynth/vsynth2-huffyuv create mode 100644 ffmpeg/tests/ref/vsynth/vsynth2-huffyuvbgr24 create mode 100644 ffmpeg/tests/ref/vsynth/vsynth2-huffyuvbgra create mode 100644 ffmpeg/tests/ref/vsynth/vsynth2-jpeg2000 create mode 100644 ffmpeg/tests/ref/vsynth/vsynth2-jpeg2000-97 create mode 100644 ffmpeg/tests/ref/vsynth/vsynth2-jpegls create mode 100644 ffmpeg/tests/ref/vsynth/vsynth2-ljpeg create mode 100644 ffmpeg/tests/ref/vsynth/vsynth2-mjpeg create mode 100644 ffmpeg/tests/ref/vsynth/vsynth2-mjpeg-422 create mode 100644 ffmpeg/tests/ref/vsynth/vsynth2-mjpeg-444 create mode 100644 ffmpeg/tests/ref/vsynth/vsynth2-mpeg1 create mode 100644 ffmpeg/tests/ref/vsynth/vsynth2-mpeg1b create mode 100644 ffmpeg/tests/ref/vsynth/vsynth2-mpeg2 create mode 100644 ffmpeg/tests/ref/vsynth/vsynth2-mpeg2-422 create mode 100644 ffmpeg/tests/ref/vsynth/vsynth2-mpeg2-idct-int create mode 100644 ffmpeg/tests/ref/vsynth/vsynth2-mpeg2-ilace create mode 100644 ffmpeg/tests/ref/vsynth/vsynth2-mpeg2-ivlc-qprd create mode 100644 ffmpeg/tests/ref/vsynth/vsynth2-mpeg2-thread create mode 100644 ffmpeg/tests/ref/vsynth/vsynth2-mpeg2-thread-ivlc create mode 100644 ffmpeg/tests/ref/vsynth/vsynth2-mpeg4 create mode 100644 ffmpeg/tests/ref/vsynth/vsynth2-mpeg4-adap create mode 100644 ffmpeg/tests/ref/vsynth/vsynth2-mpeg4-adv create mode 100644 ffmpeg/tests/ref/vsynth/vsynth2-mpeg4-error create mode 100644 ffmpeg/tests/ref/vsynth/vsynth2-mpeg4-nr create mode 100644 ffmpeg/tests/ref/vsynth/vsynth2-mpeg4-nsse create mode 100644 ffmpeg/tests/ref/vsynth/vsynth2-mpeg4-qpel create mode 100644 ffmpeg/tests/ref/vsynth/vsynth2-mpeg4-qprd create mode 100644 ffmpeg/tests/ref/vsynth/vsynth2-mpeg4-rc create mode 100644 ffmpeg/tests/ref/vsynth/vsynth2-mpeg4-thread create mode 100644 ffmpeg/tests/ref/vsynth/vsynth2-mpng create mode 100644 ffmpeg/tests/ref/vsynth/vsynth2-msmpeg4 create mode 100644 ffmpeg/tests/ref/vsynth/vsynth2-msmpeg4v2 create mode 100644 ffmpeg/tests/ref/vsynth/vsynth2-msvideo1 create mode 100644 ffmpeg/tests/ref/vsynth/vsynth2-prores create mode 100644 ffmpeg/tests/ref/vsynth/vsynth2-prores_ks create mode 100644 ffmpeg/tests/ref/vsynth/vsynth2-qtrle create mode 100644 ffmpeg/tests/ref/vsynth/vsynth2-qtrlegray create mode 100644 ffmpeg/tests/ref/vsynth/vsynth2-r210 create mode 100644 ffmpeg/tests/ref/vsynth/vsynth2-rgb create mode 100644 ffmpeg/tests/ref/vsynth/vsynth2-roqvideo create mode 100644 ffmpeg/tests/ref/vsynth/vsynth2-rv10 create mode 100644 ffmpeg/tests/ref/vsynth/vsynth2-rv20 create mode 100644 ffmpeg/tests/ref/vsynth/vsynth2-snow create mode 100644 ffmpeg/tests/ref/vsynth/vsynth2-snow-hpel create mode 100644 ffmpeg/tests/ref/vsynth/vsynth2-snow-ll create mode 100644 ffmpeg/tests/ref/vsynth/vsynth2-svq1 create mode 100644 ffmpeg/tests/ref/vsynth/vsynth2-v210 create mode 100644 ffmpeg/tests/ref/vsynth/vsynth2-v308 create mode 100644 ffmpeg/tests/ref/vsynth/vsynth2-v408 create mode 100644 ffmpeg/tests/ref/vsynth/vsynth2-wmv1 create mode 100644 ffmpeg/tests/ref/vsynth/vsynth2-wmv2 create mode 100644 ffmpeg/tests/ref/vsynth/vsynth2-y41p create mode 100644 ffmpeg/tests/ref/vsynth/vsynth2-yuv create mode 100644 ffmpeg/tests/ref/vsynth/vsynth2-yuv4 create mode 100644 ffmpeg/tests/ref/vsynth/vsynth2-zlib create mode 100644 ffmpeg/tests/ref/vsynth/vsynth2-zmbv create mode 100644 ffmpeg/tests/ref/vsynth/vsynth3-amv create mode 100644 ffmpeg/tests/ref/vsynth/vsynth3-asv1 create mode 100644 ffmpeg/tests/ref/vsynth/vsynth3-asv2 create mode 100644 ffmpeg/tests/ref/vsynth/vsynth3-cljr create mode 100644 ffmpeg/tests/ref/vsynth/vsynth3-ffv1 create mode 100644 ffmpeg/tests/ref/vsynth/vsynth3-ffv1.0 create mode 100644 ffmpeg/tests/ref/vsynth/vsynth3-ffvhuff create mode 100644 ffmpeg/tests/ref/vsynth/vsynth3-ffvhuff420p12 create mode 100644 ffmpeg/tests/ref/vsynth/vsynth3-ffvhuff422p10left create mode 100644 ffmpeg/tests/ref/vsynth/vsynth3-ffvhuff444 create mode 100644 ffmpeg/tests/ref/vsynth/vsynth3-ffvhuff444p16 create mode 100644 ffmpeg/tests/ref/vsynth/vsynth3-flashsv create mode 100644 ffmpeg/tests/ref/vsynth/vsynth3-flashsv2 create mode 100644 ffmpeg/tests/ref/vsynth/vsynth3-flv create mode 100644 ffmpeg/tests/ref/vsynth/vsynth3-huffyuv create mode 100644 ffmpeg/tests/ref/vsynth/vsynth3-huffyuvbgr24 create mode 100644 ffmpeg/tests/ref/vsynth/vsynth3-huffyuvbgra create mode 100644 ffmpeg/tests/ref/vsynth/vsynth3-jpeg2000 create mode 100644 ffmpeg/tests/ref/vsynth/vsynth3-jpeg2000-97 create mode 100644 ffmpeg/tests/ref/vsynth/vsynth3-jpegls create mode 100644 ffmpeg/tests/ref/vsynth/vsynth3-ljpeg create mode 100644 ffmpeg/tests/ref/vsynth/vsynth3-mjpeg create mode 100644 ffmpeg/tests/ref/vsynth/vsynth3-mjpeg-422 create mode 100644 ffmpeg/tests/ref/vsynth/vsynth3-mjpeg-444 create mode 100644 ffmpeg/tests/ref/vsynth/vsynth3-mpeg1 create mode 100644 ffmpeg/tests/ref/vsynth/vsynth3-mpeg1b create mode 100644 ffmpeg/tests/ref/vsynth/vsynth3-mpeg2 create mode 100644 ffmpeg/tests/ref/vsynth/vsynth3-mpeg2-422 create mode 100644 ffmpeg/tests/ref/vsynth/vsynth3-mpeg2-idct-int create mode 100644 ffmpeg/tests/ref/vsynth/vsynth3-mpeg2-ilace create mode 100644 ffmpeg/tests/ref/vsynth/vsynth3-mpeg2-ivlc-qprd create mode 100644 ffmpeg/tests/ref/vsynth/vsynth3-mpeg2-thread create mode 100644 ffmpeg/tests/ref/vsynth/vsynth3-mpeg2-thread-ivlc create mode 100644 ffmpeg/tests/ref/vsynth/vsynth3-mpeg4 create mode 100644 ffmpeg/tests/ref/vsynth/vsynth3-mpeg4-adap create mode 100644 ffmpeg/tests/ref/vsynth/vsynth3-mpeg4-adv create mode 100644 ffmpeg/tests/ref/vsynth/vsynth3-mpeg4-error create mode 100644 ffmpeg/tests/ref/vsynth/vsynth3-mpeg4-nr create mode 100644 ffmpeg/tests/ref/vsynth/vsynth3-mpeg4-nsse create mode 100644 ffmpeg/tests/ref/vsynth/vsynth3-mpeg4-qpel create mode 100644 ffmpeg/tests/ref/vsynth/vsynth3-mpeg4-qprd create mode 100644 ffmpeg/tests/ref/vsynth/vsynth3-mpeg4-rc create mode 100644 ffmpeg/tests/ref/vsynth/vsynth3-mpeg4-thread create mode 100644 ffmpeg/tests/ref/vsynth/vsynth3-mpng create mode 100644 ffmpeg/tests/ref/vsynth/vsynth3-msmpeg4 create mode 100644 ffmpeg/tests/ref/vsynth/vsynth3-msmpeg4v2 create mode 100644 ffmpeg/tests/ref/vsynth/vsynth3-prores create mode 100644 ffmpeg/tests/ref/vsynth/vsynth3-prores_ks create mode 100644 ffmpeg/tests/ref/vsynth/vsynth3-qtrle create mode 100644 ffmpeg/tests/ref/vsynth/vsynth3-r210 create mode 100644 ffmpeg/tests/ref/vsynth/vsynth3-rgb create mode 100644 ffmpeg/tests/ref/vsynth/vsynth3-svq1 create mode 100644 ffmpeg/tests/ref/vsynth/vsynth3-v210 create mode 100644 ffmpeg/tests/ref/vsynth/vsynth3-v308 create mode 100644 ffmpeg/tests/ref/vsynth/vsynth3-v408 create mode 100644 ffmpeg/tests/ref/vsynth/vsynth3-wmv1 create mode 100644 ffmpeg/tests/ref/vsynth/vsynth3-wmv2 create mode 100644 ffmpeg/tests/ref/vsynth/vsynth3-yuv create mode 100644 ffmpeg/tests/ref/vsynth/vsynth3-yuv4 create mode 100644 ffmpeg/tests/ref/vsynth/vsynth3-zlib create mode 100644 ffmpeg/tests/ref/vsynth1/cljr create mode 100644 ffmpeg/tests/ref/vsynth1/yuv create mode 100644 ffmpeg/tests/ref/vsynth2/cljr create mode 100644 ffmpeg/tests/ref/vsynth2/huffyuv create mode 100644 ffmpeg/tests/ref/vsynth2/yuv create mode 100755 ffmpeg/tests/regression-funcs.sh create mode 100644 ffmpeg/tests/rotozoom.c create mode 100644 ffmpeg/tests/test.ffmeta create mode 100644 ffmpeg/tests/tiny_psnr.c create mode 100644 ffmpeg/tests/tiny_ssim.c create mode 100644 ffmpeg/tests/utils.c create mode 100644 ffmpeg/tests/videogen.c create mode 100644 ffmpeg/tools/aviocat.c create mode 100755 ffmpeg/tools/bisect-create create mode 100644 ffmpeg/tools/bookmarklets.html create mode 100644 ffmpeg/tools/build_libstagefright create mode 100755 ffmpeg/tools/clean-diff create mode 100644 ffmpeg/tools/crypto_bench.c create mode 100644 ffmpeg/tools/cws2fws.c create mode 100755 ffmpeg/tools/dvd2concat create mode 100644 ffmpeg/tools/enum_options.c create mode 100644 ffmpeg/tools/ffescape.c create mode 100644 ffmpeg/tools/ffeval.c create mode 100644 ffmpeg/tools/ffhash.c create mode 100644 ffmpeg/tools/fourcc2pixfmt.c create mode 100755 ffmpeg/tools/gen-rc create mode 100644 ffmpeg/tools/graph2dot.c create mode 100644 ffmpeg/tools/ismindex.c create mode 100755 ffmpeg/tools/make_chlayout_test create mode 100755 ffmpeg/tools/missing_codec_desc create mode 100755 ffmpeg/tools/normalize.py create mode 100755 ffmpeg/tools/patcheck create mode 100644 ffmpeg/tools/pktdumper.c create mode 100755 ffmpeg/tools/plotframes create mode 100644 ffmpeg/tools/probetest.c create mode 100644 ffmpeg/tools/qt-faststart.c create mode 100644 ffmpeg/tools/seek_print.c create mode 100644 ffmpeg/tools/trasher.c create mode 100644 ffmpeg/tools/uncoded_frame.c create mode 100755 ffmpeg/tools/unwrap-diff create mode 100644 ffmpeg/tools/yuvcmp.c create mode 100644 ffmpeg/tools/zmqsend.c create mode 100755 ffmpeg/tools/zmqshell.py create mode 100755 ffmpeg/version.sh create mode 100755 scripts/ffmpeg-config diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..1cf5127 --- /dev/null +++ b/Makefile @@ -0,0 +1,20 @@ +ffmpeg-config: + scripts/ffmpeg-config + +ffmpeg: ffmpeg-config + $(MAKE) -C ffmpeg_build install + +noconfig: + $(MAKE) -C x264 install + $(MAKE) -C ffmpeg_build + +install: + $(MAKE) -C ffmpeg_build install + +uninstall: + $(MAKE) -C ffmpeg_build uninstall + +clean: + -rm -rf ffmpeg_build build_libs + +.PHONY: ffmpeg-config ffmpeg noconfig install uninstall clean diff --git a/debian/changelog b/debian/changelog new file mode 100644 index 0000000..b06e8e1 --- /dev/null +++ b/debian/changelog @@ -0,0 +1,254 @@ +ffmpeg (7:2.4.3~trusty1) trusty; urgency=medium + + * New bugfix release + + -- Doug McMahon Fri, 07 Nov 2014 14:38:48 -0500 + +ffmpeg (7:2.4.2~trusty1.1) trusty; urgency=medium + + * Enable xvid thru external encoder as per request + - do note there is a native solution + ( https://trac.ffmpeg.org/wiki/Encode/MPEG-4 + + -- Doug McMahon Fri, 10 Oct 2014 08:49:52 -0400 + +ffmpeg (7:2.4.2~trusty1) trusty; urgency=medium + + * 2.4.2 + + -- Doug McMahon Wed, 08 Oct 2014 19:23:13 -0400 + +ffmpeg (7:2.4.1~trusty1) trusty; urgency=medium + + * 2.4.1 + + -- Doug McMahon Sat, 27 Sep 2014 19:19:02 -0400 + +ffmpeg (7:2.4.0~trusty1) trusty; urgency=medium + + * 2.4.0 release + + -- Doug McMahon Sun, 14 Sep 2014 18:45:10 -0400 + +ffmpeg (7:2.3.3~trusty1.2) trusty; urgency=medium + + * Rebuild for new x265 (libx265-31 + + -- Doug McMahon Fri, 29 Aug 2014 16:55:48 -0400 + +ffmpeg (7:2.3.3~trusty1) trusty; urgency=medium + + * 2.3.3 release + + -- Doug McMahon Sun, 17 Aug 2014 10:54:12 -0400 + +ffmpeg (7:2.3.1+git~trusty1.3) trusty; urgency=medium + + * git 2c0454c + + -- Doug McMahon Mon, 11 Aug 2014 19:27:20 -0400 + +ffmpeg (7:2.3.1+git~trusty1.2) trusty; urgency=medium + + * git 1ace957 + + -- Doug McMahon Sat, 26 Jul 2014 14:59:32 -0400 + +ffmpeg (7:2.3.1+git~trusty1.1) trusty; urgency=medium + + * Adjust version + + -- Doug McMahon Sun, 20 Jul 2014 15:08:37 -0400 + +ffmpeg (7:2.3.1+git~trusty1) trusty; urgency=medium + + * git e2842cf + + -- Doug McMahon Sun, 20 Jul 2014 14:07:52 -0400 + +ffmpeg (7:2.2.4+git~trusty2) trusty; urgency=medium + + * git 42c1cc3 + * enable x265 + + -- Doug McMahon Sun, 13 Jul 2014 12:10:20 -0400 + +ffmpeg (7:2.2.4+git~trusty1) trusty; urgency=medium + + * git d3e51b4 + + use opencore for armnb,armwb decoding + + -- Doug McMahon Sat, 05 Jul 2014 12:11:33 -0400 + +ffmpeg (7:2.2.1+git~trusty2.3) trusty; urgency=medium + + * git 7e8fdf0 + + -- Doug McMahon Wed, 25 Jun 2014 23:56:18 -0400 + +ffmpeg (7:2.2.1+git~trusty2.1) trusty; urgency=medium + + * git 73d820e + + -- Doug McMahon Sun, 15 Jun 2014 09:11:44 -0400 + +ffmpeg (7:2.2.1+git~trusty2) trusty; urgency=medium + + * Rebuild, no changes + + -- Doug McMahon Fri, 06 Jun 2014 11:27:27 -0400 + +ffmpeg (7:2.2.1+git~trusty1.9) trusty; urgency=medium + + * git 6a0f9f2 + + -- Doug McMahon Wed, 04 Jun 2014 16:33:06 -0400 + +ffmpeg (7:2.2.1+git~trusty1.8) trusty; urgency=medium + + * git 81aa0f4 + + -- Doug McMahon Sat, 24 May 2014 15:10:00 -0400 + +ffmpeg (7:2.2.1+git~trusty1.7) trusty; urgency=medium + + * git 9986e50 + + -- Doug McMahon Sat, 17 May 2014 22:03:04 -0400 + +ffmpeg (7:2.2.1+git~trusty1.6) trusty; urgency=medium + + * git bc2e39c + + -- Doug McMahon Wed, 14 May 2014 07:41:10 -0400 + +ffmpeg (7:2.2.1+git~trusty1.5) trusty; urgency=medium + + * git d53e87a + + -- Doug McMahon Sat, 03 May 2014 13:35:26 -0400 + +ffmpeg (7:2.2.1+git~trusty1.4) trusty; urgency=medium + + * git 5b88149 + * enable libsoxr + + -- Doug McMahon Tue, 29 Apr 2014 07:57:56 -0400 + +ffmpeg (7:2.2.1+git~trusty1.3) trusty; urgency=medium + + * git 66e30a2 + + -- Doug McMahon Sat, 26 Apr 2014 17:22:55 -0400 + +ffmpeg (7:2.2.1+git~trusty1.2) trusty; urgency=medium + + * git 8b2c3d2 + * remove jack dep + + -- Doug McMahon Fri, 25 Apr 2014 19:43:41 -0400 + +ffmpeg (7:2.2.1+git~trusty1.1) trusty; urgency=medium + + * Add git head to RELEASE remove from package name + + -- Doug McMahon Wed, 23 Apr 2014 08:01:20 -0400 + +ffmpeg (7:2.2.1+git~trusty1) trusty; urgency=medium + + * git 1ba59b1 + + -- Doug McMahon Wed, 23 Apr 2014 06:31:30 -0400 + +ffmpeg (7:2.2+gitca6dd53~trusty1) trusty; urgency=medium + + * Dep on ppa libx264 + + -- Doug McMahon Sun, 13 Apr 2014 11:55:40 -0400 + +ffmpeg (7:2.2+gitca6dd53~trusty) trusty; urgency=medium + + * git ca6dd53 + * name package with git head + + -- Doug McMahon Sun, 13 Apr 2014 09:54:15 -0400 + +ffmpeg (7:2.2~trusty2.8) trusty; urgency=medium + + * Depend on ppa libx264 + + -- Doug McMahon Sun, 13 Apr 2014 07:45:55 -0400 + +ffmpeg (7:2.2~trusty2.7) trusty; urgency=medium + + * Use shared x264 + + -- Doug McMahon Sat, 12 Apr 2014 21:33:58 -0400 + +ffmpeg (7:2.2~trusty2.6) trusty; urgency=medium + + * git 4899ccd + + -- Doug McMahon Fri, 11 Apr 2014 09:00:45 -0400 + +ffmpeg (7:2.2~trusty2.5) trusty; urgency=medium + + * git 5027f39 + * x264 04/07 + + -- Doug McMahon Mon, 07 Apr 2014 19:33:17 -0400 + +ffmpeg (7:2.2~trusty2.4) trusty; urgency=medium + + * git c05065a + + -- Doug McMahon Wed, 26 Mar 2014 01:25:27 -0400 + +ffmpeg (7:2.2~trusty2.3) trusty; urgency=medium + + * ffmpeg-bb3c057 + + -- Doug McMahon Mon, 17 Mar 2014 07:12:42 -0400 + +ffmpeg (7:2.2~trusty2.2) trusty; urgency=medium + + * ffmpeg-581957c + * enable avisynth + + -- Doug McMahon Wed, 12 Mar 2014 08:53:54 -0400 + +ffmpeg (7:2.2~trusty2.1) trusty; urgency=medium + + * 2.2 git + + -- Doug McMahon Tue, 04 Mar 2014 17:34:10 -0500 + +ffmpeg (7:2.1.3~trusty1.2) trusty; urgency=medium + + * Use lsmash + + -- Doug McMahon Wed, 12 Feb 2014 13:58:41 -0500 + +ffmpeg (7:2.1.3~trusty1.1) trusty; urgency=medium + + * 2.1.3 + + -- Doug McMahon Wed, 12 Feb 2014 09:51:39 -0500 + +ffmpeg (7:2.1.1~trusty1.2) trusty; urgency=medium + + * adjust links + + -- Doug McMahon Tue, 31 Dec 2013 23:19:54 -0500 + +ffmpeg (7:2.1.1~trusty1.1) trusty; urgency=medium + + * Some deps + + -- Doug McMahon Tue, 31 Dec 2013 22:55:18 -0500 + +ffmpeg (7:2.1.1~trusty1) trusty; urgency=medium + + * new + + -- Doug McMahon Sun, 29 Dec 2013 20:57:25 -0500 diff --git a/debian/compat b/debian/compat new file mode 100644 index 0000000..ec63514 --- /dev/null +++ b/debian/compat @@ -0,0 +1 @@ +9 diff --git a/debian/control b/debian/control new file mode 100644 index 0000000..bfadd66 --- /dev/null +++ b/debian/control @@ -0,0 +1,51 @@ +Source: ffmpeg +Section: libs +Priority: optional +Maintainer: Doug McMahon +Standards-Version: 3.9.5 +Homepage: http://ffmpeg.org/ +Build-Depends: + autoconf, + debhelper (>= 8.1.3~), + libasound2-dev [linux-any], + libass-dev, + libbz2-dev, + libfdk-aac-dev, + libmp3lame-dev (>= 3.98.3), + libopencore-amrnb-dev, + libopencore-amrwb-dev, + libopus-dev, + libpulse-dev, + libsdl1.2-dev, + libsoxr-dev, + libspeex-dev, + libtheora-dev, + libva-dev [!hurd-any], + libvdpau-dev, + libvorbis-dev, + libvpx-dev (>= 0.9.6), + libx11-dev, + libx264-dev, + libx265-dev, + libxext-dev, + libxfixes-dev, + libxvidcore-dev, + libxvmc-dev, + texi2html, + yasm [any-amd64 any-i386], + zlib1g-dev + +Package: ffmpeg +Section: video +Architecture: any +Depends: ${shlibs:Depends}, ${misc:Depends} +Description: Multimedia player, server, encoder and transcoder + FFmpeg is a complete, cross-platform solution to decode, encode, record, + convert and stream audio and video. + . + This package contains the ffplay multimedia player, the ffserver + streaming server, the ffmpeg audio and video encoder, and the ffprobe + stream analyzer. They support most existing file formats (AVI, MPEG, + OGG, Matroska, ASF...) and encoding formats (MPEG, DivX, MPEG4, AC3, + DV...). Additionally, it contains the qt-faststart utility which + rearranges Quicktime files to facilitate network streaming. diff --git a/debian/copyright b/debian/copyright new file mode 100644 index 0000000..714f8a9 --- /dev/null +++ b/debian/copyright @@ -0,0 +1,88 @@ +Upstream-Name: FFmpeg +Source: http://www.ffmpeg.org/ + +Files: * +Copyright: 1994-2012 by the Xiph.Org Foundation and contributors +Copyright: 2012 Justin Ruggles +Copyright: 1995 Mark Adler +Copyright: 2007 Mans Rullgard +Copyright: 2000-2003 Fabrice Bellard +Copyright: 2001-2012 Michael Niedermayer +Copyright: 2003 Michel Bardiaux +Copyright: 2004 Marc Hoffman +Copyright: 2004 Romain Dolbeau +Copyright: 2005 Balatoni Denes +Copyright: 2006 Loren Merritt +Copyright: 2005 Francois Revol +Copyright: 2005 Luca Barbato +Copyright: 2006 Guillaume Poirier +Copyright: 2006 Luca Barbato +Copyright: 2006 Mans Rullgard +Copyright: 2003-2005 by Christopher R. Hertel (crh@ubiqx.mn.org) +Copyright: 2006 Oded Shimon +Copyright: 2006 Reimar Doeffinger +Copyright: 2006 Roman Shaposhnik / 2000, 2001, 2002 Fabrice Bellard +Copyright: 2006 Ryan Martell. (rdm4@martellventures.com) +Copyright: 2007 Denes Balatoni +Copyright: 2007 Mans Rullgard +Copyright: 2007 Marc Hoffman +Copyright: 2009 Konstantin Shishkov +Copyright: 2007 Reimar Doeffinger +Copyright: 2008-2010 Stefano Sabatini +Copyright: 2008 Aurelien Jacobs +Copyright: 2008 Peter Ross +Copyright: 2008 Ramiro Polla +Copyright: 2008 Siarhei Siamashka +Copyright: 2009 Baptiste Coudurier +Copyright: 2006,2009,2010 Mans Rullgard +Copyright: 2010 Alexander Strange +Copyright: 2009, 2010 Konstantin Shishkov +Copyright: 2011-2012 Smartjog S.A.S, Clement Bœsch +Copyright: 2006 Smartjog S.A.S, Baptiste Coudurier +Copyright: 2011 Anton Khirnov +Copyright: 2008,2011 Mans Rullgard +Copyright: 2012 Martin Storsjo +Copyright: 2012 Nicolas George +Copyright: 2012 Rob Sykes +Copyright: 2012 Ronald S. Bultje +Copyright: 2012 Samuel Pitoiset +Copyright: 2012 Stefano Sabatini +Copyright: 2006 Reimar Doeffinger +Copyright: Sebastien Bechet +License: GPLv2, GPLv2, LGPLv2.1, LGPLv3 + +License: GPL-3.0+ + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + . + This package is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + . + You should have received a copy of the GNU General Public License + along with this program. If not, see . + . + On Debian systems, the complete text of the GNU General + Public License version 3 can be found in "/usr/share/common-licenses/GPL-3". + +Files: * +Copyright: 2003-2011 x264 project +License: GPL-2+ or other + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + . + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + . + You should have received a copy of the GNU General Public License + along with this program. If not, see . + . + This program is also available under a commercial proprietary license. + For more information, contact us at licensing@x264.com. diff --git a/debian/ffmpeg.links b/debian/ffmpeg.links new file mode 100644 index 0000000..ad206b1 --- /dev/null +++ b/debian/ffmpeg.links @@ -0,0 +1,4 @@ +/opt/ffmpeg/bin/ffmpeg /usr/bin/ffmpeg +/opt/ffmpeg/bin/ffplay /usr/bin/ffplay +/opt/ffmpeg/bin/ffprobe /usr/bin/ffprobe +#DEBHELPER# diff --git a/debian/rules b/debian/rules new file mode 100755 index 0000000..7d336db --- /dev/null +++ b/debian/rules @@ -0,0 +1,8 @@ +#! /usr/bin/make -f + +%: + exec dh $@ --parallel + +override_dh_auto_build: + scripts/ffmpeg-config + $(MAKE) -C ffmpeg_build diff --git a/debian/source/format b/debian/source/format new file mode 100644 index 0000000..89ae9db --- /dev/null +++ b/debian/source/format @@ -0,0 +1 @@ +3.0 (native) diff --git a/debian/source/lintian-overrides b/debian/source/lintian-overrides new file mode 100644 index 0000000..f3f58cc --- /dev/null +++ b/debian/source/lintian-overrides @@ -0,0 +1 @@ +ffmpeg source: build-depends-on-obsolete-package build-depends: texi2html diff --git a/debian/source/options b/debian/source/options new file mode 100644 index 0000000..659f59c --- /dev/null +++ b/debian/source/options @@ -0,0 +1,2 @@ +compression = xz +compression-level = best diff --git a/ffmpeg/COPYING.GPLv2 b/ffmpeg/COPYING.GPLv2 new file mode 100644 index 0000000..d159169 --- /dev/null +++ b/ffmpeg/COPYING.GPLv2 @@ -0,0 +1,339 @@ + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Lesser General Public License instead.) You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it +in new free programs; and that you know you can do these things. + + To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. You must make sure that they, too, receive or can get the +source code. And you must show them these terms so they know their +rights. + + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. + + The precise terms and conditions for copying, distribution and +modification follow. + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. + + 1. You may copy and distribute verbatim copies of the Program's +source code as you receive it, in any medium, provided that you +conspicuously and appropriately publish on each copy an appropriate +copyright notice and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. + + 2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. + + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, + + b) Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, + + c) Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + + 4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + + 5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + + 6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + + 9. The Free Software Foundation may publish revised and/or new versions +of the General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + +Each version is given a distinguishing version number. If the Program +specifies a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. + + 10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + NO WARRANTY + + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY +FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN +OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES +PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED +OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS +TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE +PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, +REPAIR OR CORRECTION. + + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING +OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED +TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY +YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER +PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE +POSSIBILITY OF SUCH DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License along + with this program; if not, write to the Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + + Gnomovision version 69, Copyright (C) year name of author + Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, the commands you use may +be called something other than `show w' and `show c'; they could even be +mouse-clicks or menu items--whatever suits your program. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the program + `Gnomovision' (which makes passes at compilers) written by James Hacker. + + , 1 April 1989 + Ty Coon, President of Vice + +This General Public License does not permit incorporating your program into +proprietary programs. If your program is a subroutine library, you may +consider it more useful to permit linking proprietary applications with the +library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. diff --git a/ffmpeg/COPYING.GPLv3 b/ffmpeg/COPYING.GPLv3 new file mode 100644 index 0000000..94a9ed0 --- /dev/null +++ b/ffmpeg/COPYING.GPLv3 @@ -0,0 +1,674 @@ + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. + + To protect your rights, we need to prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. You must make sure that they, too, receive +or can get the source code. And you must show them these terms so they +know their rights. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based +on the Program. + + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + + The Corresponding Source for a work in source code form is that +same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + + 4. Conveying Verbatim Copies. + + You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Use with the GNU Affero General Public License. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU Affero General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the special requirements of the GNU Affero General Public License, +section 13, concerning interaction through a network will apply to the +combination as such. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + + Each version is given a distinguishing version number. If the +Program specifies that a certain numbered version of the GNU General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM +IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +state the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + +Also add information on how to contact you by electronic and paper mail. + + If the program does terminal interaction, make it output a short +notice like this when it starts in an interactive mode: + + Copyright (C) + This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, your program's commands +might be different; for a GUI interface, you would use an "about box". + + You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. +For more information on this, and how to apply and follow the GNU GPL, see +. + + The GNU General Public License does not permit incorporating your program +into proprietary programs. If your program is a subroutine library, you +may consider it more useful to permit linking proprietary applications with +the library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. But first, please read +. diff --git a/ffmpeg/COPYING.LGPLv2.1 b/ffmpeg/COPYING.LGPLv2.1 new file mode 100644 index 0000000..58af0d3 --- /dev/null +++ b/ffmpeg/COPYING.LGPLv2.1 @@ -0,0 +1,502 @@ + GNU LESSER GENERAL PUBLIC LICENSE + Version 2.1, February 1999 + + Copyright (C) 1991, 1999 Free Software Foundation, Inc. + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + +[This is the first released version of the Lesser GPL. It also counts + as the successor of the GNU Library Public License, version 2, hence + the version number 2.1.] + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +Licenses are intended to guarantee your freedom to share and change +free software--to make sure the software is free for all its users. + + This license, the Lesser General Public License, applies to some +specially designated software packages--typically libraries--of the +Free Software Foundation and other authors who decide to use it. You +can use it too, but we suggest you first think carefully about whether +this license or the ordinary General Public License is the better +strategy to use in any particular case, based on the explanations below. + + When we speak of free software, we are referring to freedom of use, +not price. Our General Public Licenses are designed to make sure that +you have the freedom to distribute copies of free software (and charge +for this service if you wish); that you receive source code or can get +it if you want it; that you can change the software and use pieces of +it in new free programs; and that you are informed that you can do +these things. + + To protect your rights, we need to make restrictions that forbid +distributors to deny you these rights or to ask you to surrender these +rights. These restrictions translate to certain responsibilities for +you if you distribute copies of the library or if you modify it. + + For example, if you distribute copies of the library, whether gratis +or for a fee, you must give the recipients all the rights that we gave +you. You must make sure that they, too, receive or can get the source +code. If you link other code with the library, you must provide +complete object files to the recipients, so that they can relink them +with the library after making changes to the library and recompiling +it. And you must show them these terms so they know their rights. + + We protect your rights with a two-step method: (1) we copyright the +library, and (2) we offer you this license, which gives you legal +permission to copy, distribute and/or modify the library. + + To protect each distributor, we want to make it very clear that +there is no warranty for the free library. Also, if the library is +modified by someone else and passed on, the recipients should know +that what they have is not the original version, so that the original +author's reputation will not be affected by problems that might be +introduced by others. + + Finally, software patents pose a constant threat to the existence of +any free program. We wish to make sure that a company cannot +effectively restrict the users of a free program by obtaining a +restrictive license from a patent holder. Therefore, we insist that +any patent license obtained for a version of the library must be +consistent with the full freedom of use specified in this license. + + Most GNU software, including some libraries, is covered by the +ordinary GNU General Public License. This license, the GNU Lesser +General Public License, applies to certain designated libraries, and +is quite different from the ordinary General Public License. We use +this license for certain libraries in order to permit linking those +libraries into non-free programs. + + When a program is linked with a library, whether statically or using +a shared library, the combination of the two is legally speaking a +combined work, a derivative of the original library. The ordinary +General Public License therefore permits such linking only if the +entire combination fits its criteria of freedom. The Lesser General +Public License permits more lax criteria for linking other code with +the library. + + We call this license the "Lesser" General Public License because it +does Less to protect the user's freedom than the ordinary General +Public License. It also provides other free software developers Less +of an advantage over competing non-free programs. These disadvantages +are the reason we use the ordinary General Public License for many +libraries. However, the Lesser license provides advantages in certain +special circumstances. + + For example, on rare occasions, there may be a special need to +encourage the widest possible use of a certain library, so that it becomes +a de-facto standard. To achieve this, non-free programs must be +allowed to use the library. A more frequent case is that a free +library does the same job as widely used non-free libraries. In this +case, there is little to gain by limiting the free library to free +software only, so we use the Lesser General Public License. + + In other cases, permission to use a particular library in non-free +programs enables a greater number of people to use a large body of +free software. For example, permission to use the GNU C Library in +non-free programs enables many more people to use the whole GNU +operating system, as well as its variant, the GNU/Linux operating +system. + + Although the Lesser General Public License is Less protective of the +users' freedom, it does ensure that the user of a program that is +linked with the Library has the freedom and the wherewithal to run +that program using a modified version of the Library. + + The precise terms and conditions for copying, distribution and +modification follow. Pay close attention to the difference between a +"work based on the library" and a "work that uses the library". The +former contains code derived from the library, whereas the latter must +be combined with the library in order to run. + + GNU LESSER GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License Agreement applies to any software library or other +program which contains a notice placed by the copyright holder or +other authorized party saying it may be distributed under the terms of +this Lesser General Public License (also called "this License"). +Each licensee is addressed as "you". + + A "library" means a collection of software functions and/or data +prepared so as to be conveniently linked with application programs +(which use some of those functions and data) to form executables. + + The "Library", below, refers to any such software library or work +which has been distributed under these terms. A "work based on the +Library" means either the Library or any derivative work under +copyright law: that is to say, a work containing the Library or a +portion of it, either verbatim or with modifications and/or translated +straightforwardly into another language. (Hereinafter, translation is +included without limitation in the term "modification".) + + "Source code" for a work means the preferred form of the work for +making modifications to it. For a library, complete source code means +all the source code for all modules it contains, plus any associated +interface definition files, plus the scripts used to control compilation +and installation of the library. + + Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running a program using the Library is not restricted, and output from +such a program is covered only if its contents constitute a work based +on the Library (independent of the use of the Library in a tool for +writing it). Whether that is true depends on what the Library does +and what the program that uses the Library does. + + 1. You may copy and distribute verbatim copies of the Library's +complete source code as you receive it, in any medium, provided that +you conspicuously and appropriately publish on each copy an +appropriate copyright notice and disclaimer of warranty; keep intact +all the notices that refer to this License and to the absence of any +warranty; and distribute a copy of this License along with the +Library. + + You may charge a fee for the physical act of transferring a copy, +and you may at your option offer warranty protection in exchange for a +fee. + + 2. You may modify your copy or copies of the Library or any portion +of it, thus forming a work based on the Library, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) The modified work must itself be a software library. + + b) You must cause the files modified to carry prominent notices + stating that you changed the files and the date of any change. + + c) You must cause the whole of the work to be licensed at no + charge to all third parties under the terms of this License. + + d) If a facility in the modified Library refers to a function or a + table of data to be supplied by an application program that uses + the facility, other than as an argument passed when the facility + is invoked, then you must make a good faith effort to ensure that, + in the event an application does not supply such function or + table, the facility still operates, and performs whatever part of + its purpose remains meaningful. + + (For example, a function in a library to compute square roots has + a purpose that is entirely well-defined independent of the + application. Therefore, Subsection 2d requires that any + application-supplied function or table used by this function must + be optional: if the application does not supply it, the square + root function must still compute square roots.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Library, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Library, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote +it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Library. + +In addition, mere aggregation of another work not based on the Library +with the Library (or with a work based on the Library) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may opt to apply the terms of the ordinary GNU General Public +License instead of this License to a given copy of the Library. To do +this, you must alter all the notices that refer to this License, so +that they refer to the ordinary GNU General Public License, version 2, +instead of to this License. (If a newer version than version 2 of the +ordinary GNU General Public License has appeared, then you can specify +that version instead if you wish.) Do not make any other change in +these notices. + + Once this change is made in a given copy, it is irreversible for +that copy, so the ordinary GNU General Public License applies to all +subsequent copies and derivative works made from that copy. + + This option is useful when you wish to copy part of the code of +the Library into a program that is not a library. + + 4. You may copy and distribute the Library (or a portion or +derivative of it, under Section 2) in object code or executable form +under the terms of Sections 1 and 2 above provided that you accompany +it with the complete corresponding machine-readable source code, which +must be distributed under the terms of Sections 1 and 2 above on a +medium customarily used for software interchange. + + If distribution of object code is made by offering access to copy +from a designated place, then offering equivalent access to copy the +source code from the same place satisfies the requirement to +distribute the source code, even though third parties are not +compelled to copy the source along with the object code. + + 5. A program that contains no derivative of any portion of the +Library, but is designed to work with the Library by being compiled or +linked with it, is called a "work that uses the Library". Such a +work, in isolation, is not a derivative work of the Library, and +therefore falls outside the scope of this License. + + However, linking a "work that uses the Library" with the Library +creates an executable that is a derivative of the Library (because it +contains portions of the Library), rather than a "work that uses the +library". The executable is therefore covered by this License. +Section 6 states terms for distribution of such executables. + + When a "work that uses the Library" uses material from a header file +that is part of the Library, the object code for the work may be a +derivative work of the Library even though the source code is not. +Whether this is true is especially significant if the work can be +linked without the Library, or if the work is itself a library. The +threshold for this to be true is not precisely defined by law. + + If such an object file uses only numerical parameters, data +structure layouts and accessors, and small macros and small inline +functions (ten lines or less in length), then the use of the object +file is unrestricted, regardless of whether it is legally a derivative +work. (Executables containing this object code plus portions of the +Library will still fall under Section 6.) + + Otherwise, if the work is a derivative of the Library, you may +distribute the object code for the work under the terms of Section 6. +Any executables containing that work also fall under Section 6, +whether or not they are linked directly with the Library itself. + + 6. As an exception to the Sections above, you may also combine or +link a "work that uses the Library" with the Library to produce a +work containing portions of the Library, and distribute that work +under terms of your choice, provided that the terms permit +modification of the work for the customer's own use and reverse +engineering for debugging such modifications. + + You must give prominent notice with each copy of the work that the +Library is used in it and that the Library and its use are covered by +this License. You must supply a copy of this License. If the work +during execution displays copyright notices, you must include the +copyright notice for the Library among them, as well as a reference +directing the user to the copy of this License. Also, you must do one +of these things: + + a) Accompany the work with the complete corresponding + machine-readable source code for the Library including whatever + changes were used in the work (which must be distributed under + Sections 1 and 2 above); and, if the work is an executable linked + with the Library, with the complete machine-readable "work that + uses the Library", as object code and/or source code, so that the + user can modify the Library and then relink to produce a modified + executable containing the modified Library. (It is understood + that the user who changes the contents of definitions files in the + Library will not necessarily be able to recompile the application + to use the modified definitions.) + + b) Use a suitable shared library mechanism for linking with the + Library. A suitable mechanism is one that (1) uses at run time a + copy of the library already present on the user's computer system, + rather than copying library functions into the executable, and (2) + will operate properly with a modified version of the library, if + the user installs one, as long as the modified version is + interface-compatible with the version that the work was made with. + + c) Accompany the work with a written offer, valid for at + least three years, to give the same user the materials + specified in Subsection 6a, above, for a charge no more + than the cost of performing this distribution. + + d) If distribution of the work is made by offering access to copy + from a designated place, offer equivalent access to copy the above + specified materials from the same place. + + e) Verify that the user has already received a copy of these + materials or that you have already sent this user a copy. + + For an executable, the required form of the "work that uses the +Library" must include any data and utility programs needed for +reproducing the executable from it. However, as a special exception, +the materials to be distributed need not include anything that is +normally distributed (in either source or binary form) with the major +components (compiler, kernel, and so on) of the operating system on +which the executable runs, unless that component itself accompanies +the executable. + + It may happen that this requirement contradicts the license +restrictions of other proprietary libraries that do not normally +accompany the operating system. Such a contradiction means you cannot +use both them and the Library together in an executable that you +distribute. + + 7. You may place library facilities that are a work based on the +Library side-by-side in a single library together with other library +facilities not covered by this License, and distribute such a combined +library, provided that the separate distribution of the work based on +the Library and of the other library facilities is otherwise +permitted, and provided that you do these two things: + + a) Accompany the combined library with a copy of the same work + based on the Library, uncombined with any other library + facilities. This must be distributed under the terms of the + Sections above. + + b) Give prominent notice with the combined library of the fact + that part of it is a work based on the Library, and explaining + where to find the accompanying uncombined form of the same work. + + 8. You may not copy, modify, sublicense, link with, or distribute +the Library except as expressly provided under this License. Any +attempt otherwise to copy, modify, sublicense, link with, or +distribute the Library is void, and will automatically terminate your +rights under this License. However, parties who have received copies, +or rights, from you under this License will not have their licenses +terminated so long as such parties remain in full compliance. + + 9. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Library or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Library (or any work based on the +Library), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Library or works based on it. + + 10. Each time you redistribute the Library (or any work based on the +Library), the recipient automatically receives a license from the +original licensor to copy, distribute, link with or modify the Library +subject to these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties with +this License. + + 11. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Library at all. For example, if a patent +license would not permit royalty-free redistribution of the Library by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Library. + +If any portion of this section is held invalid or unenforceable under any +particular circumstance, the balance of the section is intended to apply, +and the section as a whole is intended to apply in other circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 12. If the distribution and/or use of the Library is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Library under this License may add +an explicit geographical distribution limitation excluding those countries, +so that distribution is permitted only in or among countries not thus +excluded. In such case, this License incorporates the limitation as if +written in the body of this License. + + 13. The Free Software Foundation may publish revised and/or new +versions of the Lesser General Public License from time to time. +Such new versions will be similar in spirit to the present version, +but may differ in detail to address new problems or concerns. + +Each version is given a distinguishing version number. If the Library +specifies a version number of this License which applies to it and +"any later version", you have the option of following the terms and +conditions either of that version or of any later version published by +the Free Software Foundation. If the Library does not specify a +license version number, you may choose any version ever published by +the Free Software Foundation. + + 14. If you wish to incorporate parts of the Library into other free +programs whose distribution conditions are incompatible with these, +write to the author to ask for permission. For software which is +copyrighted by the Free Software Foundation, write to the Free +Software Foundation; we sometimes make exceptions for this. Our +decision will be guided by the two goals of preserving the free status +of all derivatives of our free software and of promoting the sharing +and reuse of software generally. + + NO WARRANTY + + 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO +WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. +EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR +OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY +KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE +LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME +THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN +WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY +AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU +FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR +CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE +LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING +RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A +FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF +SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH +DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Libraries + + If you develop a new library, and you want it to be of the greatest +possible use to the public, we recommend making it free software that +everyone can redistribute and change. You can do so by permitting +redistribution under these terms (or, alternatively, under the terms of the +ordinary General Public License). + + To apply these terms, attach the following notices to the library. It is +safest to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least the +"copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + +Also add information on how to contact you by electronic and paper mail. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the library, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the + library `Frob' (a library for tweaking knobs) written by James Random Hacker. + + , 1 April 1990 + Ty Coon, President of Vice + +That's all there is to it! diff --git a/ffmpeg/COPYING.LGPLv3 b/ffmpeg/COPYING.LGPLv3 new file mode 100644 index 0000000..65c5ca8 --- /dev/null +++ b/ffmpeg/COPYING.LGPLv3 @@ -0,0 +1,165 @@ + GNU LESSER GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + + This version of the GNU Lesser General Public License incorporates +the terms and conditions of version 3 of the GNU General Public +License, supplemented by the additional permissions listed below. + + 0. Additional Definitions. + + As used herein, "this License" refers to version 3 of the GNU Lesser +General Public License, and the "GNU GPL" refers to version 3 of the GNU +General Public License. + + "The Library" refers to a covered work governed by this License, +other than an Application or a Combined Work as defined below. + + An "Application" is any work that makes use of an interface provided +by the Library, but which is not otherwise based on the Library. +Defining a subclass of a class defined by the Library is deemed a mode +of using an interface provided by the Library. + + A "Combined Work" is a work produced by combining or linking an +Application with the Library. The particular version of the Library +with which the Combined Work was made is also called the "Linked +Version". + + The "Minimal Corresponding Source" for a Combined Work means the +Corresponding Source for the Combined Work, excluding any source code +for portions of the Combined Work that, considered in isolation, are +based on the Application, and not on the Linked Version. + + The "Corresponding Application Code" for a Combined Work means the +object code and/or source code for the Application, including any data +and utility programs needed for reproducing the Combined Work from the +Application, but excluding the System Libraries of the Combined Work. + + 1. Exception to Section 3 of the GNU GPL. + + You may convey a covered work under sections 3 and 4 of this License +without being bound by section 3 of the GNU GPL. + + 2. Conveying Modified Versions. + + If you modify a copy of the Library, and, in your modifications, a +facility refers to a function or data to be supplied by an Application +that uses the facility (other than as an argument passed when the +facility is invoked), then you may convey a copy of the modified +version: + + a) under this License, provided that you make a good faith effort to + ensure that, in the event an Application does not supply the + function or data, the facility still operates, and performs + whatever part of its purpose remains meaningful, or + + b) under the GNU GPL, with none of the additional permissions of + this License applicable to that copy. + + 3. Object Code Incorporating Material from Library Header Files. + + The object code form of an Application may incorporate material from +a header file that is part of the Library. You may convey such object +code under terms of your choice, provided that, if the incorporated +material is not limited to numerical parameters, data structure +layouts and accessors, or small macros, inline functions and templates +(ten or fewer lines in length), you do both of the following: + + a) Give prominent notice with each copy of the object code that the + Library is used in it and that the Library and its use are + covered by this License. + + b) Accompany the object code with a copy of the GNU GPL and this license + document. + + 4. Combined Works. + + You may convey a Combined Work under terms of your choice that, +taken together, effectively do not restrict modification of the +portions of the Library contained in the Combined Work and reverse +engineering for debugging such modifications, if you also do each of +the following: + + a) Give prominent notice with each copy of the Combined Work that + the Library is used in it and that the Library and its use are + covered by this License. + + b) Accompany the Combined Work with a copy of the GNU GPL and this license + document. + + c) For a Combined Work that displays copyright notices during + execution, include the copyright notice for the Library among + these notices, as well as a reference directing the user to the + copies of the GNU GPL and this license document. + + d) Do one of the following: + + 0) Convey the Minimal Corresponding Source under the terms of this + License, and the Corresponding Application Code in a form + suitable for, and under terms that permit, the user to + recombine or relink the Application with a modified version of + the Linked Version to produce a modified Combined Work, in the + manner specified by section 6 of the GNU GPL for conveying + Corresponding Source. + + 1) Use a suitable shared library mechanism for linking with the + Library. A suitable mechanism is one that (a) uses at run time + a copy of the Library already present on the user's computer + system, and (b) will operate properly with a modified version + of the Library that is interface-compatible with the Linked + Version. + + e) Provide Installation Information, but only if you would otherwise + be required to provide such information under section 6 of the + GNU GPL, and only to the extent that such information is + necessary to install and execute a modified version of the + Combined Work produced by recombining or relinking the + Application with a modified version of the Linked Version. (If + you use option 4d0, the Installation Information must accompany + the Minimal Corresponding Source and Corresponding Application + Code. If you use option 4d1, you must provide the Installation + Information in the manner specified by section 6 of the GNU GPL + for conveying Corresponding Source.) + + 5. Combined Libraries. + + You may place library facilities that are a work based on the +Library side by side in a single library together with other library +facilities that are not Applications and are not covered by this +License, and convey such a combined library under terms of your +choice, if you do both of the following: + + a) Accompany the combined library with a copy of the same work based + on the Library, uncombined with any other library facilities, + conveyed under the terms of this License. + + b) Give prominent notice with the combined library that part of it + is a work based on the Library, and explaining where to find the + accompanying uncombined form of the same work. + + 6. Revised Versions of the GNU Lesser General Public License. + + The Free Software Foundation may publish revised and/or new versions +of the GNU Lesser General Public License from time to time. Such new +versions will be similar in spirit to the present version, but may +differ in detail to address new problems or concerns. + + Each version is given a distinguishing version number. If the +Library as you received it specifies that a certain numbered version +of the GNU Lesser General Public License "or any later version" +applies to it, you have the option of following the terms and +conditions either of that published version or of any later version +published by the Free Software Foundation. If the Library as you +received it does not specify a version number of the GNU Lesser +General Public License, you may choose any version of the GNU Lesser +General Public License ever published by the Free Software Foundation. + + If the Library as you received it specifies that a proxy can decide +whether future versions of the GNU Lesser General Public License shall +apply, that proxy's public statement of acceptance of any version is +permanent authorization for you to choose that version for the +Library. diff --git a/ffmpeg/CREDITS b/ffmpeg/CREDITS new file mode 100644 index 0000000..e29f0b8 --- /dev/null +++ b/ffmpeg/CREDITS @@ -0,0 +1,6 @@ +See the Git history of the project (git://source.ffmpeg.org/ffmpeg) to +get the names of people who have contributed to FFmpeg. + +To check the log, you can type the command "git log" in the FFmpeg +source directory, or browse the online repository at +http://source.ffmpeg.org. diff --git a/ffmpeg/Changelog b/ffmpeg/Changelog new file mode 100644 index 0000000..1002a0f --- /dev/null +++ b/ffmpeg/Changelog @@ -0,0 +1,1356 @@ +Entries are sorted chronologically from oldest to youngest within each release, +releases are sorted from youngest to oldest. + +version : + +version 2.4.3: +- avcodec/svq1dec: zero terminate embedded message before printing +- avcodec/cook: check that the subpacket sizes fit in block_align +- avcodec/g2meet: check tile dimensions to avoid integer overflow +- avcodec/utils: Align dimensions by at least their chroma sub-sampling factors. +- avcodec/dnxhddec: treat pix_fmt like width/height +- avcodec/dxa: check dimensions +- avcodec/dirac_arith: fix integer overflow +- avcodec/diracdec: Tighter checks on CODEBLOCKS_X/Y +- avcodec/diracdec: Use 64bit in calculation of codeblock coordinates +- avcodec/sgidec: fix count check +- avcodec/sgidec: fix linesize for 16bit +- avcodec/hevc_ps: Check default display window bitstream and skip if invalid +- avcodec/tiffenc: properly compute packet size +- lavd: export all symbols with av_ prefix +- avformat/mxfdec: Fix termination of mxf_data_essence_container_uls +- postproc: fix qp count +- postproc/postprocess: fix quant store for fq mode +- vf_drawtext: add missing clear of pointers after av_expr_free() +- utvideoenc: properly set slice height/last line +- swresample: fix sample drop loop end condition +- resample: Avoid off-by-1 errors in PTS calcs. +- imc: fix order of operations in coefficients read +- hevc_mvs: make sure to always initialize the temporal MV fully +- hevc_mvs: initialize the temporal MV in case of missing reference + +version 2.4.2: +- avcodec/on2avc: Check number of channels +- avcodec/hevc: fix chroma transform_add size +- avcodec/h264: Check mode before considering mixed mode intra prediction +- avformat/mpegts: use a padded buffer in read_sl_header() +- avformat/mpegts: Check desc_len / get8() return code +- avcodec/vorbisdec: Fix off by 1 error in ptns_to_read +- sdp: add support for H.261 +- avcodec/svq3: Do not memcpy AVFrame +- avcodec/smc: fix off by 1 error +- avcodec/qpeg: fix off by 1 error in MV bounds check +- avcodec/gifdec: factorize interleave end handling out +- avcodec/cinepak: fix integer underflow +- avcodec/pngdec: Check bits per pixel before setting monoblack pixel format +- avcodec/pngdec: Calculate MPNG bytewidth more defensively +- avcodec/tiff: more completely check bpp/bppcount +- avcodec/mmvideo: Bounds check 2nd line of HHV Intra blocks +- avcodec/h263dec: Fix decoding messenger.h263 +- avcodec/utils: Add case for jv to avcodec_align_dimensions2() +- avcodec/mjpegdec: check bits per pixel for changes similar to dimensions +- avcodec/jpeglsdec: Check run value more completely in ls_decode_line() +- avformat/hlsenc: export inner muxer timebase +- configure: add noexecstack to linker options if supported. +- avcodec/ac3enc_template: fix out of array read +- avutil/x86/cpu: fix cpuid sub-leaf selection +- avformat/img2dec: enable generic seeking for image pipes +- avformat/img2dec: initialize pkt->pos for image pipes +- avformat/img2dec: pass error code and signal EOF +- avformat/img2dec: fix error code at EOF for pipes +- libavutil/opt: fix av_opt_set_channel_layout() to access correct memory address +- tests/fate-run.sh: Cat .err file in case of error with V>0 +- avformat/riffenc: Filter out "BottomUp" in ff_put_bmp_header() +- avcodec/webp: fix default palette color 0xff000000 -> 0x00000000 +- avcodec/asvenc: fix AAN scaling +- Fix compile error on arm4/arm5 platform + + +version 2.4.1: +- swscale: Allow chroma samples to be above and to the left of luma samples +- avcodec/libilbc: support for latest git of libilbc +- avcodec/webp: treat out-of-bound palette index as translucent black +- vf_deshake: rename Transform.vector to Transform.vec to avoid compiler confusion +- apetag: Fix APE tag size check +- tools/crypto_bench: fix build when AV_READ_TIME is unavailable + + +version 2.4: +- Icecast protocol +- ported lenscorrection filter from frei0r filter +- large optimizations in dctdnoiz to make it usable +- ICY metadata are now requested by default with the HTTP protocol +- support for using metadata in stream specifiers in fftools +- LZMA compression support in TIFF decoder +- support for H.261 RTP payload format (RFC 4587) +- HEVC/H.265 RTP payload format (draft v6) depacketizer +- added codecview filter to visualize information exported by some codecs +- Matroska 3D support thorugh side data +- HTML generation using texi2html is deprecated in favor of makeinfo/texi2any +- silenceremove filter + + +version 2.3: +- AC3 fixed-point decoding +- shuffleplanes filter +- subfile protocol +- Phantom Cine demuxer +- replaygain data export +- VP7 video decoder +- Alias PIX image encoder and decoder +- Improvements to the BRender PIX image decoder +- Improvements to the XBM decoder +- QTKit input device +- improvements to OpenEXR image decoder +- support decoding 16-bit RLE SGI images +- GDI screen grabbing for Windows +- alternative rendition support for HTTP Live Streaming +- AVFoundation input device +- Direct Stream Digital (DSD) decoder +- Magic Lantern Video (MLV) demuxer +- On2 AVC (Audio for Video) decoder +- support for decoding through DXVA2 in ffmpeg +- libbs2b-based stereo-to-binaural audio filter +- libx264 reference frames count limiting depending on level +- native Opus decoder +- display matrix export and rotation API +- WebVTT encoder +- showcqt multimedia filter +- zoompan filter +- signalstats filter +- hqx filter (hq2x, hq3x, hq4x) +- flanger filter +- Image format auto-detection +- LRC demuxer and muxer +- Samba protocol (via libsmbclient) +- WebM DASH Manifest muxer +- libfribidi support in drawtext + + +version 2.2: + +- HNM version 4 demuxer and video decoder +- Live HDS muxer +- setsar/setdar filters now support variables in ratio expressions +- elbg filter +- string validation in ffprobe +- support for decoding through VDPAU in ffmpeg (the -hwaccel option) +- complete Voxware MetaSound decoder +- remove mp3_header_compress bitstream filter +- Windows resource files for shared libraries +- aeval filter +- stereoscopic 3d metadata handling +- WebP encoding via libwebp +- ATRAC3+ decoder +- VP8 in Ogg demuxing +- side & metadata support in NUT +- framepack filter +- XYZ12 rawvideo support in NUT +- Exif metadata support in WebP decoder +- OpenGL device +- Use metadata_header_padding to control padding in ID3 tags (currently used in + MP3, AIFF, and OMA files), FLAC header, and the AVI "junk" block. +- Mirillis FIC video decoder +- Support DNx444 +- libx265 encoder +- dejudder filter +- Autodetect VDA like all other hardware accelerations +- aliases and defaults for Ogg subtypes (opus, spx) + + +version 2.1: + +- aecho filter +- perspective filter ported from libmpcodecs +- ffprobe -show_programs option +- compand filter +- RTMP seek support +- when transcoding with ffmpeg (i.e. not streamcopying), -ss is now accurate + even when used as an input option. Previous behavior can be restored with + the -noaccurate_seek option. +- ffmpeg -t option can now be used for inputs, to limit the duration of + data read from an input file +- incomplete Voxware MetaSound decoder +- read EXIF metadata from JPEG +- DVB teletext decoder +- phase filter ported from libmpcodecs +- w3fdif filter +- Opus support in Matroska +- FFV1 version 1.3 is stable and no longer experimental +- FFV1: YUVA(444,422,420) 9, 10 and 16 bit support +- changed DTS stream id in lavf mpeg ps muxer from 0x8a to 0x88, to be + more consistent with other muxers. +- adelay filter +- pullup filter ported from libmpcodecs +- ffprobe -read_intervals option +- Lossless and alpha support for WebP decoder +- Error Resilient AAC syntax (ER AAC LC) decoding +- Low Delay AAC (ER AAC LD) decoding +- mux chapters in ASF files +- SFTP protocol (via libssh) +- libx264: add ability to encode in YUVJ422P and YUVJ444P +- Fraps: use BT.709 colorspace by default for yuv, as reference fraps decoder does +- make decoding alpha optional for prores, ffv1 and vp6 by setting + the skip_alpha flag. +- ladspa wrapper filter +- native VP9 decoder +- dpx parser +- max_error_rate parameter in ffmpeg +- PulseAudio output device +- ReplayGain scanner +- Enhanced Low Delay AAC (ER AAC ELD) decoding (no LD SBR support) +- Linux framebuffer output device +- HEVC decoder +- raw HEVC, HEVC in MOV/MP4, HEVC in Matroska, HEVC in MPEG-TS demuxing +- mergeplanes filter + + +version 2.0: + +- curves filter +- reference-counting for AVFrame and AVPacket data +- ffmpeg now fails when input options are used for output file + or vice versa +- support for Monkey's Audio versions from 3.93 +- perms and aperms filters +- audio filtering support in ffplay +- 10% faster aac encoding on x86 and MIPS +- sine audio filter source +- WebP demuxing and decoding support +- ffmpeg options -filter_script and -filter_complex_script, which allow a + filtergraph description to be read from a file +- OpenCL support +- audio phaser filter +- separatefields filter +- libquvi demuxer +- uniform options syntax across all filters +- telecine filter +- interlace filter +- smptehdbars source +- inverse telecine filters (fieldmatch and decimate) +- colorbalance filter +- colorchannelmixer filter +- The matroska demuxer can now output proper verbatim ASS packets. It will + become the default at the next libavformat major bump. +- decent native animated GIF encoding +- asetrate filter +- interleave filter +- timeline editing with filters +- vidstabdetect and vidstabtransform filters for video stabilization using + the vid.stab library +- astats filter +- trim and atrim filters +- ffmpeg -t and -ss (output-only) options are now sample-accurate when + transcoding audio +- Matroska muxer can now put the index at the beginning of the file. +- extractplanes filter +- avectorscope filter +- ADPCM DTK decoder +- ADP demuxer +- RSD demuxer +- RedSpark demuxer +- ADPCM IMA Radical decoder +- zmq filters +- DCT denoiser filter (dctdnoiz) +- Wavelet denoiser filter ported from libmpcodecs as owdenoise (formerly "ow") +- Apple Intermediate Codec decoder +- Escape 130 video decoder +- FTP protocol support +- V4L2 output device +- 3D LUT filter (lut3d) +- SMPTE 302M audio encoder +- support for slice multithreading in libavfilter +- Hald CLUT support (generation and filtering) +- VC-1 interlaced B-frame support +- support for WavPack muxing (raw and in Matroska) +- XVideo output device +- vignette filter +- True Audio (TTA) encoder +- Go2Webinar decoder +- mcdeint filter ported from libmpcodecs +- sab filter ported from libmpcodecs +- ffprobe -show_chapters option +- WavPack encoding through libwavpack +- rotate filter +- spp filter ported from libmpcodecs +- libgme support +- psnr filter + + +version 1.2: + +- VDPAU hardware acceleration through normal hwaccel +- SRTP support +- Error diffusion dither in Swscale +- Chained Ogg support +- Theora Midstream reconfiguration support +- EVRC decoder +- audio fade filter +- filtering audio with unknown channel layout +- allpass, bass, bandpass, bandreject, biquad, equalizer, highpass, lowpass + and treble audio filter +- improved showspectrum filter, with multichannel support and sox-like colors +- histogram filter +- tee muxer +- il filter ported from libmpcodecs +- support ID3v2 tags in ASF files +- encrypted TTA stream decoding support +- RF64 support in WAV muxer +- noise filter ported from libmpcodecs +- Subtitles character encoding conversion +- blend filter +- stereo3d filter ported from libmpcodecs + + +version 1.1: + +- stream disposition information printing in ffprobe +- filter for loudness analysis following EBU R128 +- Opus encoder using libopus +- ffprobe -select_streams option +- Pinnacle TARGA CineWave YUV16 decoder +- TAK demuxer, decoder and parser +- DTS-HD demuxer +- remove -same_quant, it hasn't worked for years +- FFM2 support +- X-Face image encoder and decoder +- 24-bit FLAC encoding +- multi-channel ALAC encoding up to 7.1 +- metadata (INFO tag) support in WAV muxer +- subtitles raw text decoder +- support for building DLLs using MSVC +- LVF demuxer +- ffescape tool +- metadata (info chunk) support in CAF muxer +- field filter ported from libmpcodecs +- AVR demuxer +- geq filter ported from libmpcodecs +- remove ffserver daemon mode +- AST muxer/demuxer +- new expansion syntax for drawtext +- BRender PIX image decoder +- ffprobe -show_entries option +- ffprobe -sections option +- ADPCM IMA Dialogic decoder +- BRSTM demuxer +- animated GIF decoder and demuxer +- PVF demuxer +- subtitles filter +- IRCAM muxer/demuxer +- Paris Audio File demuxer +- Virtual concatenation demuxer +- VobSub demuxer +- JSON captions for TED talks decoding support +- SOX Resampler support in libswresample +- aselect filter +- SGI RLE 8-bit / Silicon Graphics RLE 8-bit video decoder +- Silicon Graphics Motion Video Compressor 1 & 2 decoder +- Silicon Graphics Movie demuxer +- apad filter +- Resolution & pixel format change support with multithreading for H.264 +- documentation split into per-component manuals +- pp (postproc) filter ported from MPlayer +- NIST Sphere demuxer +- MPL2, VPlayer, MPlayer, AQTitle, PJS and SubViewer v1 subtitles demuxers and decoders +- Sony Wave64 muxer +- adobe and limelight publisher authentication in RTMP +- data: URI scheme +- support building on the Plan 9 operating system +- kerndeint filter ported from MPlayer +- histeq filter ported from VirtualDub +- Megalux Frame demuxer +- 012v decoder +- Improved AVC Intra decoding support + + +version 1.0: + +- INI and flat output in ffprobe +- Scene detection in libavfilter +- Indeo Audio decoder +- channelsplit audio filter +- setnsamples audio filter +- atempo filter +- ffprobe -show_data option +- RTMPT protocol support +- iLBC encoding/decoding via libilbc +- Microsoft Screen 1 decoder +- join audio filter +- audio channel mapping filter +- Microsoft ATC Screen decoder +- RTSP listen mode +- TechSmith Screen Codec 2 decoder +- AAC encoding via libfdk-aac +- Microsoft Expression Encoder Screen decoder +- RTMPS protocol support +- RTMPTS protocol support +- RTMPE protocol support +- RTMPTE protocol support +- showwaves and showspectrum filter +- LucasArts SMUSH SANM playback support +- LucasArts SMUSH VIMA audio decoder (ADPCM) +- LucasArts SMUSH demuxer +- SAMI, RealText and SubViewer demuxers and decoders +- Heart Of Darkness PAF playback support +- iec61883 device +- asettb filter +- new option: -progress +- 3GPP Timed Text encoder/decoder +- GeoTIFF decoder support +- ffmpeg -(no)stdin option +- Opus decoder using libopus +- caca output device using libcaca +- alphaextract and alphamerge filters +- concat filter +- flite filter +- Canopus Lossless Codec decoder +- bitmap subtitles in filters (experimental and temporary) +- MP2 encoding via TwoLAME +- bmp parser +- smptebars source +- asetpts filter +- hue filter +- ICO muxer +- SubRip encoder and decoder without embedded timing +- edge detection filter +- framestep filter +- ffmpeg -shortest option is now per-output file + -pass and -passlogfile are now per-output stream +- volume measurement filter +- Ut Video encoder +- Microsoft Screen 2 decoder +- smartblur filter ported from MPlayer +- CPiA decoder +- decimate filter ported from MPlayer +- RTP depacketization of JPEG +- Smooth Streaming live segmenter muxer +- F4V muxer +- sendcmd and asendcmd filters +- WebVTT demuxer and decoder (simple tags supported) +- RTP packetization of JPEG +- faststart option in the MOV/MP4 muxer +- support for building with MSVC + + +version 0.11: + +- Fixes: CVE-2012-2772, CVE-2012-2774, CVE-2012-2775, CVE-2012-2776, CVE-2012-2777, + CVE-2012-2779, CVE-2012-2782, CVE-2012-2783, CVE-2012-2784, CVE-2012-2785, + CVE-2012-2786, CVE-2012-2787, CVE-2012-2788, CVE-2012-2789, CVE-2012-2790, + CVE-2012-2791, CVE-2012-2792, CVE-2012-2793, CVE-2012-2794, CVE-2012-2795, + CVE-2012-2796, CVE-2012-2797, CVE-2012-2798, CVE-2012-2799, CVE-2012-2800, + CVE-2012-2801, CVE-2012-2802, CVE-2012-2803, CVE-2012-2804, +- v408 Quicktime and Microsoft AYUV Uncompressed 4:4:4:4 encoder and decoder +- setfield filter +- CDXL demuxer and decoder +- Apple ProRes encoder +- ffprobe -count_packets and -count_frames options +- Sun Rasterfile Encoder +- ID3v2 attached pictures reading and writing +- WMA Lossless decoder +- bluray protocol +- blackdetect filter +- libutvideo encoder wrapper (--enable-libutvideo) +- swapuv filter +- bbox filter +- XBM encoder and decoder +- RealAudio Lossless decoder +- ZeroCodec decoder +- tile video filter +- Metal Gear Solid: The Twin Snakes demuxer +- OpenEXR image decoder +- removelogo filter +- drop support for ffmpeg without libavfilter +- drawtext video filter: fontconfig support +- ffmpeg -benchmark_all option +- super2xsai filter ported from libmpcodecs +- add libavresample audio conversion library for compatibility +- MicroDVD decoder +- Avid Meridien (AVUI) encoder and decoder +- accept + prefix to -pix_fmt option to disable automatic conversions. +- complete audio filtering in libavfilter and ffmpeg +- add fps filter +- vorbis parser +- png parser +- audio mix filter +- ffv1: support (draft) version 1.3 + + +version 0.10: + +- Fixes: CVE-2011-3929, CVE-2011-3934, CVE-2011-3935, CVE-2011-3936, + CVE-2011-3937, CVE-2011-3940, CVE-2011-3941, CVE-2011-3944, + CVE-2011-3945, CVE-2011-3946, CVE-2011-3947, CVE-2011-3949, + CVE-2011-3950, CVE-2011-3951, CVE-2011-3952 +- v410 Quicktime Uncompressed 4:4:4 10-bit encoder and decoder +- SBaGen (SBG) binaural beats script demuxer +- OpenMG Audio muxer +- Timecode extraction in DV and MOV +- thumbnail video filter +- XML output in ffprobe +- asplit audio filter +- tinterlace video filter +- astreamsync audio filter +- amerge audio filter +- ISMV (Smooth Streaming) muxer +- GSM audio parser +- SMJPEG muxer +- XWD encoder and decoder +- Automatic thread count based on detection number of (available) CPU cores +- y41p Brooktree Uncompressed 4:1:1 12-bit encoder and decoder +- ffprobe -show_error option +- Avid 1:1 10-bit RGB Packer codec +- v308 Quicktime Uncompressed 4:4:4 encoder and decoder +- yuv4 libquicktime packed 4:2:0 encoder and decoder +- ffprobe -show_frames option +- silencedetect audio filter +- ffprobe -show_program_version, -show_library_versions, -show_versions options +- rv34: frame-level multi-threading +- optimized iMDCT transform on x86 using SSE for for mpegaudiodec +- Improved PGS subtitle decoder +- dumpgraph option to lavfi device +- r210 and r10k encoders +- ffwavesynth decoder +- aviocat tool +- ffeval tool +- support encoding and decoding 4-channel SGI images + + +version 0.9: + +- openal input device added +- boxblur filter added +- BWF muxer +- Flash Screen Video 2 decoder +- lavfi input device added +- added avconv, which is almost the same for now, except +for a few incompatible changes in the options, which will hopefully make them +easier to use. The changes are: + * The options placement is now strictly enforced! While in theory the + options for ffmpeg should be given in [input options] -i INPUT [output + options] OUTPUT order, in practice it was possible to give output options + before the -i and it mostly worked. Except when it didn't - the behavior was + a bit inconsistent. In avconv, it is not possible to mix input and output + options. All non-global options are reset after an input or output filename. + * All per-file options are now truly per-file - they apply only to the next + input or output file and specifying different values for different files + will now work properly (notably -ss and -t options). + * All per-stream options are now truly per-stream - it is possible to + specify which stream(s) should a given option apply to. See the Stream + specifiers section in the avconv manual for details. + * In ffmpeg some options (like -newvideo/-newaudio/...) are irregular in the + sense that they're specified after the output filename instead of before, + like all other options. In avconv this irregularity is removed, all options + apply to the next input or output file. + * -newvideo/-newaudio/-newsubtitle options were removed. Not only were they + irregular and highly confusing, they were also redundant. In avconv the -map + option will create new streams in the output file and map input streams to + them. E.g. avconv -i INPUT -map 0 OUTPUT will create an output stream for + each stream in the first input file. + * The -map option now has slightly different and more powerful syntax: + + Colons (':') are used to separate file index/stream type/stream index + instead of dots. Comma (',') is used to separate the sync stream instead + of colon.. This is done for consistency with other options. + + It's possible to specify stream type. E.g. -map 0:a:2 creates an + output stream from the third input audio stream. + + Omitting the stream index now maps all the streams of the given type, + not just the first. E.g. -map 0:s creates output streams for all the + subtitle streams in the first input file. + + Since -map can now match multiple streams, negative mappings were + introduced. Negative mappings disable some streams from an already + defined map. E.g. '-map 0 -map -0:a:1' means 'create output streams for + all the stream in the first input file, except for the second audio + stream'. + * There is a new option -c (or -codec) for choosing the decoder/encoder to + use, which allows to precisely specify target stream(s) consistently with + other options. E.g. -c:v lib264 sets the codec for all video streams, -c:a:0 + libvorbis sets the codec for the first audio stream and -c copy copies all + the streams without reencoding. Old -vcodec/-acodec/-scodec options are now + aliases to -c:v/a/s + * It is now possible to precisely specify which stream should an AVOption + apply to. E.g. -b:v:0 2M sets the bitrate for the first video stream, while + -b:a 128k sets the bitrate for all audio streams. Note that the old -ab 128k + syntax is deprecated and will stop working soon. + * -map_chapters now takes only an input file index and applies to the next + output file. This is consistent with how all the other options work. + * -map_metadata now takes only an input metadata specifier and applies to + the next output file. Output metadata specifier is now part of the option + name, similarly to the AVOptions/map/codec feature above. + * -metadata can now be used to set metadata on streams and chapters, e.g. + -metadata:s:1 language=eng sets the language of the first stream to 'eng'. + This made -vlang/-alang/-slang options redundant, so they were removed. + * -qscale option now uses stream specifiers and applies to all streams, not + just video. I.e. plain -qscale number would now apply to all streams. To get + the old behavior, use -qscale:v. Also there is now a shortcut -q for -qscale + and -aq is now an alias for -q:a. + * -vbsf/-absf/-sbsf options were removed and replaced by a -bsf option which + uses stream specifiers. Use -bsf:v/a/s instead of the old options. + * -itsscale option now uses stream specifiers, so its argument is only the + scale parameter. + * -intra option was removed, use -g 0 for the same effect. + * -psnr option was removed, use -flags +psnr for the same effect. + * -vf option is now an alias to the new -filter option, which uses stream specifiers. + * -vframes/-aframes/-dframes options are now aliases to the new -frames option. + * -vtag/-atag/-stag options are now aliases to the new -tag option. +- XMV demuxer +- LOAS demuxer +- ashowinfo filter added +- Windows Media Image decoder +- amovie source added +- LATM muxer/demuxer +- Speex encoder via libspeex +- JSON output in ffprobe +- WTV muxer +- Optional C++ Support (needed for libstagefright) +- H.264 Decoding on Android via Stagefright +- Prores decoder +- BIN/XBIN/ADF/IDF text file decoder +- aconvert audio filter added +- audio support to lavfi input device added +- libcdio-paranoia input device for audio CD grabbing +- Apple ProRes decoder +- CELT in Ogg demuxing +- G.723.1 demuxer and decoder +- libmodplug support (--enable-libmodplug) +- VC-1 interlaced decoding +- libutvideo wrapper (--enable-libutvideo) +- aevalsrc audio source added +- Ut Video decoder +- Speex encoding via libspeex +- 4:2:2 H.264 decoding support +- 4:2:2 and 4:4:4 H.264 encoding with libx264 +- Pulseaudio input device +- Prores encoder +- Video Decoder Acceleration (VDA) HWAccel module. +- replacement Indeo 3 decoder +- new ffmpeg option: -map_channel +- volume audio filter added +- earwax audio filter added +- libv4l2 support (--enable-libv4l2) +- TLS/SSL and HTTPS protocol support +- AVOptions API rewritten and documented +- most of CODEC_FLAG2_*, some CODEC_FLAG_* and many codec-specific fields in + AVCodecContext deprecated. Codec private options should be used instead. +- Properly working defaults in libx264 wrapper, support for native presets. +- Encrypted OMA files support +- Discworld II BMV decoding support +- VBLE Decoder +- OS X Video Decoder Acceleration (VDA) support +- compact and csv output in ffprobe +- pan audio filter +- IFF Amiga Continuous Bitmap (ACBM) decoder +- ass filter +- CRI ADX audio format muxer and demuxer +- Playstation Portable PMP format demuxer +- Microsoft Windows ICO demuxer +- life source +- PCM format support in OMA demuxer +- CLJR encoder +- new option: -report +- Dxtory capture format decoder +- cellauto source +- Simple segmenting muxer +- Indeo 4 decoder +- SMJPEG demuxer + + +version 0.8: + +- many many things we forgot because we rather write code than changelogs +- WebM support in Matroska de/muxer +- low overhead Ogg muxing +- MMS-TCP support +- VP8 de/encoding via libvpx +- Demuxer for On2's IVF format +- Pictor/PC Paint decoder +- HE-AAC v2 decoder +- HE-AAC v2 encoding with libaacplus +- libfaad2 wrapper removed +- DTS-ES extension (XCh) decoding support +- native VP8 decoder +- RTSP tunneling over HTTP +- RTP depacketization of SVQ3 +- -strict inofficial replaced by -strict unofficial +- ffplay -exitonkeydown and -exitonmousedown options added +- native GSM / GSM MS decoder +- RTP depacketization of QDM2 +- ANSI/ASCII art playback system +- Lego Mindstorms RSO de/muxer +- libavcore added (and subsequently removed) +- SubRip subtitle file muxer and demuxer +- Chinese AVS encoding via libxavs +- ffprobe -show_packets option added +- RTP packetization of Theora and Vorbis +- RTP depacketization of MP4A-LATM +- RTP packetization and depacketization of VP8 +- hflip filter +- Apple HTTP Live Streaming demuxer +- a64 codec +- MMS-HTTP support +- G.722 ADPCM audio encoder/decoder +- R10k video decoder +- ocv_smooth filter +- frei0r wrapper filter +- change crop filter syntax to width:height:x:y +- make the crop filter accept parametric expressions +- make ffprobe accept AVFormatContext options +- yadif filter +- blackframe filter +- Demuxer for Leitch/Harris' VR native stream format (LXF) +- RTP depacketization of the X-QT QuickTime format +- SAP (Session Announcement Protocol, RFC 2974) muxer and demuxer +- cropdetect filter +- ffmpeg -crop* options removed +- transpose filter added +- ffmpeg -force_key_frames option added +- demuxer for receiving raw rtp:// URLs without an SDP description +- single stream LATM/LOAS decoder +- setpts filter added +- Win64 support for optimized x86 assembly functions +- MJPEG/AVI1 to JPEG/JFIF bitstream filter +- ASS subtitle encoder and decoder +- IEC 61937 encapsulation for E-AC-3, TrueHD, DTS-HD (for HDMI passthrough) +- overlay filter added +- rename aspect filter to setdar, and pixelaspect to setsar +- IEC 61937 demuxer +- Mobotix .mxg demuxer +- frei0r source added +- hqdn3d filter added +- RTP depacketization of QCELP +- FLAC parser added +- gradfun filter added +- AMR-WB decoder +- replace the ocv_smooth filter with a more generic ocv filter +- Windows Televison (WTV) demuxer +- FFmpeg metadata format muxer and demuxer +- SubRip (srt) subtitle encoder and decoder +- floating-point AC-3 encoder added +- Lagarith decoder +- ffmpeg -copytb option added +- IVF muxer added +- Wing Commander IV movies decoder added +- movie source added +- Bink version 'b' audio and video decoder +- Bitmap Brothers JV playback system +- Apple HTTP Live Streaming protocol handler +- sndio support for playback and record +- Linux framebuffer input device added +- Chronomaster DFA decoder +- DPX image encoder +- MicroDVD subtitle file muxer and demuxer +- Playstation Portable PMP format demuxer +- fieldorder video filter added +- AAC encoding via libvo-aacenc +- AMR-WB encoding via libvo-amrwbenc +- xWMA demuxer +- Mobotix MxPEG decoder +- VP8 frame-multithreading +- NEON optimizations for VP8 +- Lots of deprecated API cruft removed +- fft and imdct optimizations for AVX (Sandy Bridge) processors +- showinfo filter added +- SMPTE 302M AES3 audio decoder +- Apple Core Audio Format muxer +- 9bit and 10bit per sample support in the H.264 decoder +- 9bit and 10bit FFV1 encoding / decoding +- split filter added +- select filter added +- sdl output device added +- libmpcodecs video filter support (3 times as many filters than before) +- mpeg2 aspect ratio dection fixed +- libxvid aspect pickiness fixed +- Frame multithreaded decoding +- E-AC-3 audio encoder +- ac3enc: add channel coupling support +- floating-point sample format support to the ac3, eac3, dca, aac, and vorbis decoders. +- H264/MPEG frame-level multi-threading +- All av_metadata_* functions renamed to av_dict_* and moved to libavutil +- 4:4:4 H.264 decoding support +- 10-bit H.264 optimizations for x86 +- lut, lutrgb, and lutyuv filters added +- buffersink libavfilter sink added +- Bump libswscale for recently reported ABI break +- New J2K encoder (via OpenJPEG) + + +version 0.7: + +- all the changes for 0.8, but keeping API/ABI compatibility with the 0.6 release + + +version 0.6: + +- PB-frame decoding for H.263 +- deprecated vhook subsystem removed +- deprecated old scaler removed +- VQF demuxer +- Alpha channel scaler +- PCX encoder +- RTP packetization of H.263 +- RTP packetization of AMR +- RTP depacketization of Vorbis +- CorePNG decoding support +- Cook multichannel decoding support +- introduced avlanguage helpers in libavformat +- 8088flex TMV demuxer and decoder +- per-stream language-tags extraction in asfdec +- V210 decoder and encoder +- remaining GPL parts in AC-3 decoder converted to LGPL +- QCP demuxer +- SoX native format muxer and demuxer +- AMR-NB decoding/encoding, AMR-WB decoding via OpenCORE libraries +- DPX image decoder +- Electronic Arts Madcow decoder +- DivX (XSUB) subtitle encoder +- nonfree libamr support for AMR-NB/WB decoding/encoding removed +- experimental AAC encoder +- RTP depacketization of ASF and RTSP from WMS servers +- RTMP support in libavformat +- noX handling for OPT_BOOL X options +- Wave64 demuxer +- IEC-61937 compatible Muxer +- TwinVQ decoder +- Bluray (PGS) subtitle decoder +- LPCM support in MPEG-TS (HDMV RID as found on Blu-ray disks) +- WMA Pro decoder +- Core Audio Format demuxer +- ATRAC1 decoder +- MD STUDIO audio demuxer +- RF64 support in WAV demuxer +- MPEG-4 Audio Lossless Coding (ALS) decoder +- -formats option split into -formats, -codecs, -bsfs, and -protocols +- IV8 demuxer +- CDG demuxer and decoder +- R210 decoder +- Auravision Aura 1 and 2 decoders +- Deluxe Paint Animation playback system +- SIPR decoder +- Adobe Filmstrip muxer and demuxer +- RTP depacketization of H.263 +- Bink demuxer and audio/video decoders +- enable symbol versioning by default for linkers that support it +- IFF PBM/ILBM bitmap decoder +- concat protocol +- Indeo 5 decoder +- RTP depacketization of AMR +- WMA Voice decoder +- ffprobe tool +- AMR-NB decoder +- RTSP muxer +- HE-AAC v1 decoder +- Kega Game Video (KGV1) decoder +- VorbisComment writing for FLAC, Ogg FLAC and Ogg Speex files +- RTP depacketization of Theora +- HTTP Digest authentication +- RTMP/RTMPT/RTMPS/RTMPE/RTMPTE protocol support via librtmp +- Psygnosis YOP demuxer and video decoder +- spectral extension support in the E-AC-3 decoder +- unsharp video filter +- RTP hinting in the mov/3gp/mp4 muxer +- Dirac in Ogg demuxing +- seek to keyframes in Ogg +- 4:2:2 and 4:4:4 Theora decoding +- 35% faster VP3/Theora decoding +- faster AAC decoding +- faster H.264 decoding +- RealAudio 1.0 (14.4K) encoder + + +version 0.5: + +- DV50 AKA DVCPRO50 encoder, decoder, muxer and demuxer +- TechSmith Camtasia (TSCC) video decoder +- IBM Ultimotion (ULTI) video decoder +- Sierra Online audio file demuxer and decoder +- Apple QuickDraw (qdrw) video decoder +- Creative ADPCM audio decoder (16 bits as well as 8 bits schemes) +- Electronic Arts Multimedia (WVE/UV2/etc.) file demuxer +- Miro VideoXL (VIXL) video decoder +- H.261 video encoder +- QPEG video decoder +- Nullsoft Video (NSV) file demuxer +- Shorten audio decoder +- LOCO video decoder +- Apple Lossless Audio Codec (ALAC) decoder +- Winnov WNV1 video decoder +- Autodesk Animator Studio Codec (AASC) decoder +- Indeo 2 video decoder +- Fraps FPS1 video decoder +- Snow video encoder/decoder +- Sonic audio encoder/decoder +- Vorbis audio decoder +- Macromedia ADPCM decoder +- Duck TrueMotion 2 video decoder +- support for decoding FLX and DTA extensions in FLIC files +- H.264 custom quantization matrices support +- ffserver fixed, it should now be usable again +- QDM2 audio decoder +- Real Cooker audio decoder +- TrueSpeech audio decoder +- WMA2 audio decoder fixed, now all files should play correctly +- RealAudio 14.4 and 28.8 decoders fixed +- JPEG-LS decoder +- build system improvements +- tabs and trailing whitespace removed from the codebase +- CamStudio video decoder +- AIFF/AIFF-C audio format, encoding and decoding +- ADTS AAC file reading and writing +- Creative VOC file reading and writing +- American Laser Games multimedia (*.mm) playback system +- Zip Motion Blocks Video decoder +- improved Theora/VP3 decoder +- True Audio (TTA) decoder +- AVS demuxer and video decoder +- JPEG-LS encoder +- Smacker demuxer and decoder +- NuppelVideo/MythTV demuxer and RTjpeg decoder +- KMVC decoder +- MPEG-2 intra VLC support +- MPEG-2 4:2:2 encoder +- Flash Screen Video decoder +- GXF demuxer +- Chinese AVS decoder +- GXF muxer +- MXF demuxer +- VC-1/WMV3/WMV9 video decoder +- MacIntel support +- AviSynth support +- VMware video decoder +- VP5 video decoder +- VP6 video decoder +- WavPack lossless audio decoder +- Targa (.TGA) picture decoder +- Vorbis audio encoder +- Delphine Software .cin demuxer/audio and video decoder +- Tiertex .seq demuxer/video decoder +- MTV demuxer +- TIFF picture encoder and decoder +- GIF picture decoder +- Intel Music Coder decoder +- Zip Motion Blocks Video encoder +- Musepack decoder +- Flash Screen Video encoder +- Theora encoding via libtheora +- BMP encoder +- WMA encoder +- GSM-MS encoder and decoder +- DCA decoder +- DXA demuxer and decoder +- DNxHD decoder +- Gamecube movie (.THP) playback system +- Blackfin optimizations +- Interplay C93 demuxer and video decoder +- Bethsoft VID demuxer and video decoder +- CRYO APC demuxer +- ATRAC3 decoder +- V.Flash PTX decoder +- RoQ muxer, RoQ audio encoder +- Renderware TXD demuxer and decoder +- extern C declarations for C++ removed from headers +- sws_flags command line option +- codebook generator +- RoQ video encoder +- QTRLE encoder +- OS/2 support removed and restored again +- AC-3 decoder +- NUT muxer +- additional SPARC (VIS) optimizations +- Matroska muxer +- slice-based parallel H.264 decoding +- Monkey's Audio demuxer and decoder +- AMV audio and video decoder +- DNxHD encoder +- H.264 PAFF decoding +- Nellymoser ASAO decoder +- Beam Software SIFF demuxer and decoder +- libvorbis Vorbis decoding removed in favor of native decoder +- IntraX8 (J-Frame) subdecoder for WMV2 and VC-1 +- Ogg (Theora, Vorbis and FLAC) muxer +- The "device" muxers and demuxers are now in a new libavdevice library +- PC Paintbrush PCX decoder +- Sun Rasterfile decoder +- TechnoTrend PVA demuxer +- Linux Media Labs MPEG-4 (LMLM4) demuxer +- AVM2 (Flash 9) SWF muxer +- QT variant of IMA ADPCM encoder +- VFW grabber +- iPod/iPhone compatible mp4 muxer +- Mimic decoder +- MSN TCP Webcam stream demuxer +- RL2 demuxer / decoder +- IFF demuxer +- 8SVX audio decoder +- non-recursive Makefiles +- BFI demuxer +- MAXIS EA XA (.xa) demuxer / decoder +- BFI video decoder +- OMA demuxer +- MLP/TrueHD decoder +- Electronic Arts CMV decoder +- Motion Pixels Video decoder +- Motion Pixels MVI demuxer +- removed animated GIF decoder/demuxer +- D-Cinema audio muxer +- Electronic Arts TGV decoder +- Apple Lossless Audio Codec (ALAC) encoder +- AAC decoder +- floating point PCM encoder/decoder +- MXF muxer +- DV100 AKA DVCPRO HD decoder and demuxer +- E-AC-3 support added to AC-3 decoder +- Nellymoser ASAO encoder +- ASS and SSA demuxer and muxer +- liba52 wrapper removed +- SVQ3 watermark decoding support +- Speex decoding via libspeex +- Electronic Arts TGQ decoder +- RV40 decoder +- QCELP / PureVoice decoder +- RV30 decoder +- hybrid WavPack support +- R3D REDCODE demuxer +- ALSA support for playback and record +- Electronic Arts TQI decoder +- OpenJPEG based JPEG 2000 decoder +- NC (NC4600) camera file demuxer +- Gopher client support +- MXF D-10 muxer +- generic metadata API +- flash ScreenVideo2 encoder + + +version 0.4.9-pre1: + +- DV encoder, DV muxer +- Microsoft RLE video decoder +- Microsoft Video-1 decoder +- Apple Animation (RLE) decoder +- Apple Graphics (SMC) decoder +- Apple Video (RPZA) decoder +- Cinepak decoder +- Sega FILM (CPK) file demuxer +- Westwood multimedia support (VQA & AUD files) +- Id Quake II CIN playback support +- 8BPS video decoder +- FLIC playback support +- RealVideo 2.0 (RV20) decoder +- Duck TrueMotion v1 (DUCK) video decoder +- Sierra VMD demuxer and video decoder +- MSZH and ZLIB decoder support +- SVQ1 video encoder +- AMR-WB support +- PPC optimizations +- rate distortion optimal cbp support +- rate distorted optimal ac prediction for MPEG-4 +- rate distorted optimal lambda->qp support +- AAC encoding with libfaac +- Sunplus JPEG codec (SP5X) support +- use Lagrange multipler instead of QP for ratecontrol +- Theora/VP3 decoding support +- XA and ADX ADPCM codecs +- export MPEG-2 active display area / pan scan +- Add support for configuring with IBM XLC +- floating point AAN DCT +- initial support for zygo video (not complete) +- RGB ffv1 support +- new audio/video parser API +- av_log() system +- av_read_frame() and av_seek_frame() support +- missing last frame fixes +- seek by mouse in ffplay +- noise reduction of DCT coefficients +- H.263 OBMC & 4MV support +- H.263 alternative inter vlc support +- H.263 loop filter +- H.263 slice structured mode +- interlaced DCT support for MPEG-2 encoding +- stuffing to stay above min_bitrate +- MB type & QP visualization +- frame stepping for ffplay +- interlaced motion estimation +- alternate scantable support +- SVCD scan offset support +- closed GOP support +- SSE2 FDCT +- quantizer noise shaping +- G.726 ADPCM audio codec +- MS ADPCM encoding +- multithreaded/SMP motion estimation +- multithreaded/SMP encoding for MPEG-1/MPEG-2/MPEG-4/H.263 +- multithreaded/SMP decoding for MPEG-2 +- FLAC decoder +- Metrowerks CodeWarrior suppport +- H.263+ custom pcf support +- nicer output for 'ffmpeg -formats' +- Matroska demuxer +- SGI image format, encoding and decoding +- H.264 loop filter support +- H.264 CABAC support +- nicer looking arrows for the motion vector visualization +- improved VCD support +- audio timestamp drift compensation +- MPEG-2 YUV 422/444 support +- polyphase kaiser windowed sinc and blackman nuttall windowed sinc audio resample +- better image scaling +- H.261 support +- correctly interleave packets during encoding +- VIS optimized motion compensation +- intra_dc_precision>0 encoding support +- support reuse of motion vectors/MB types/field select values of the source video +- more accurate deblock filter +- padding support +- many optimizations and bugfixes +- FunCom ISS audio file demuxer and according ADPCM decoding + + +version 0.4.8: + +- MPEG-2 video encoding (Michael) +- Id RoQ playback subsystem (Mike Melanson and Tim Ferguson) +- Wing Commander III Movie (.mve) file playback subsystem (Mike Melanson + and Mario Brito) +- Xan DPCM audio decoder (Mario Brito) +- Interplay MVE playback subsystem (Mike Melanson) +- Duck DK3 and DK4 ADPCM audio decoders (Mike Melanson) + + +version 0.4.7: + +- RealAudio 1.0 (14_4) and 2.0 (28_8) native decoders. Author unknown, code from mplayerhq + (originally from public domain player for Amiga at http://www.honeypot.net/audio) +- current version now also compiles with older GCC (Fabrice) +- 4X multimedia playback system including 4xm file demuxer (Mike + Melanson), and 4X video and audio codecs (Michael) +- Creative YUV (CYUV) decoder (Mike Melanson) +- FFV1 codec (our very simple lossless intra only codec, compresses much better + than HuffYUV) (Michael) +- ASV1 (Asus), H.264, Intel indeo3 codecs have been added (various) +- tiny PNG encoder and decoder, tiny GIF decoder, PAM decoder (PPM with + alpha support), JPEG YUV colorspace support. (Fabrice Bellard) +- ffplay has been replaced with a newer version which uses SDL (optionally) + for multiplatform support (Fabrice) +- Sorenson Version 3 codec (SVQ3) support has been added (decoding only) - donated + by anonymous +- AMR format has been added (Johannes Carlsson) +- 3GP support has been added (Johannes Carlsson) +- VP3 codec has been added (Mike Melanson) +- more MPEG-1/2 fixes +- better multiplatform support, MS Visual Studio fixes (various) +- AltiVec optimizations (Magnus Damn and others) +- SH4 processor support has been added (BERO) +- new public interfaces (avcodec_get_pix_fmt) (Roman Shaposhnick) +- VOB streaming support (Brian Foley) +- better MP3 autodetection (Andriy Rysin) +- qpel encoding (Michael) +- 4mv+b frames encoding finally fixed (Michael) +- chroma ME (Michael) +- 5 comparison functions for ME (Michael) +- B-frame encoding speedup (Michael) +- WMV2 codec (unfinished - Michael) +- user specified diamond size for EPZS (Michael) +- Playstation STR playback subsystem, still experimental (Mike and Michael) +- ASV2 codec (Michael) +- CLJR decoder (Alex) + +.. And lots more new enhancements and fixes. + + +version 0.4.6: + +- completely new integer only MPEG audio layer 1/2/3 decoder rewritten + from scratch +- Recoded DCT and motion vector search with gcc (no longer depends on nasm) +- fix quantization bug in AC3 encoder +- added PCM codecs and format. Corrected WAV/AVI/ASF PCM issues +- added prototype ffplay program +- added GOB header parsing on H.263/H.263+ decoder (Juanjo) +- bug fix on MCBPC tables of H.263 (Juanjo) +- bug fix on DC coefficients of H.263 (Juanjo) +- added Advanced Prediction Mode on H.263/H.263+ decoder (Juanjo) +- now we can decode H.263 streams found in QuickTime files (Juanjo) +- now we can decode H.263 streams found in VIVO v1 files(Juanjo) +- preliminary RTP "friendly" mode for H.263/H.263+ coding. (Juanjo) +- added GOB header for H.263/H.263+ coding on RTP mode (Juanjo) +- now H.263 picture size is returned on the first decoded frame (Juanjo) +- added first regression tests +- added MPEG-2 TS demuxer +- new demux API for libav +- more accurate and faster IDCT (Michael) +- faster and entropy-controlled motion search (Michael) +- two pass video encoding (Michael) +- new video rate control (Michael) +- added MSMPEG4V1, MSMPEGV2 and WMV1 support (Michael) +- great performance improvement of video encoders and decoders (Michael) +- new and faster bit readers and vlc parsers (Michael) +- high quality encoding mode: tries all macroblock/VLC types (Michael) +- added DV video decoder +- preliminary RTP/RTSP support in ffserver and libavformat +- H.263+ AIC decoding/encoding support (Juanjo) +- VCD MPEG-PS mode (Juanjo) +- PSNR stuff (Juanjo) +- simple stats output (Juanjo) +- 16-bit and 15-bit RGB/BGR/GBR support (Bisqwit) + + +version 0.4.5: + +- some header fixes (Zdenek Kabelac ) +- many MMX optimizations (Nick Kurshev ) +- added configure system (actually a small shell script) +- added MPEG audio layer 1/2/3 decoding using LGPL'ed mpglib by + Michael Hipp (temporary solution - waiting for integer only + decoder) +- fixed VIDIOCSYNC interrupt +- added Intel H.263 decoding support ('I263' AVI fourCC) +- added Real Video 1.0 decoding (needs further testing) +- simplified image formats again. Added PGM format (=grey + pgm). Renamed old PGM to PGMYUV. +- fixed msmpeg4 slice issues (tell me if you still find problems) +- fixed OpenDivX bugs with newer versions (added VOL header decoding) +- added support for MPlayer interface +- added macroblock skip optimization +- added MJPEG decoder +- added mmx/mmxext IDCT from libmpeg2 +- added pgmyuvpipe, ppm, and ppm_pipe formats (original patch by Celer + ) +- added pixel format conversion layer (e.g. for MJPEG or PPM) +- added deinterlacing option +- MPEG-1/2 fixes +- MPEG-4 vol header fixes (Jonathan Marsden ) +- ARM optimizations (Lionel Ulmer ). +- Windows porting of file converter +- added MJPEG raw format (input/output) +- added JPEG image format support (input/output) + + +version 0.4.4: + +- fixed some std header definitions (Bjorn Lindgren + ). +- added MPEG demuxer (MPEG-1 and 2 compatible). +- added ASF demuxer +- added prototype RM demuxer +- added AC3 decoding (done with libac3 by Aaron Holtzman) +- added decoding codec parameter guessing (.e.g. for MPEG, because the + header does not include them) +- fixed header generation in MPEG-1, AVI and ASF muxer: wmplayer can now + play them (only tested video) +- fixed H.263 white bug +- fixed phase rounding in img resample filter +- add MMX code for polyphase img resample filter +- added CPU autodetection +- added generic title/author/copyright/comment string handling (ASF and RM + use them) +- added SWF demux to extract MP3 track (not usable yet because no MP3 + decoder) +- added fractional frame rate support +- codecs are no longer searched by read_header() (should fix ffserver + segfault) + + +version 0.4.3: + +- BGR24 patch (initial patch by Jeroen Vreeken ) +- fixed raw yuv output +- added motion rounding support in MPEG-4 +- fixed motion bug rounding in MSMPEG4 +- added B-frame handling in video core +- added full MPEG-1 decoding support +- added partial (frame only) MPEG-2 support +- changed the FOURCC code for H.263 to "U263" to be able to see the + +AVI/H.263 file with the UB Video H.263+ decoder. MPlayer works with + this +codec ;) (JuanJo). +- Halfpel motion estimation after MB type selection (JuanJo) +- added pgm and .Y.U.V output format +- suppressed 'img:' protocol. Simply use: /tmp/test%d.[pgm|Y] as input or + output. +- added pgmpipe I/O format (original patch from Martin Aumueller + , but changed completely since we use a format + instead of a protocol) + + +version 0.4.2: + +- added H.263/MPEG-4/MSMPEG4 decoding support. MPEG-4 decoding support + (for OpenDivX) is almost complete: 8x8 MVs and rounding are + missing. MSMPEG4 support is complete. +- added prototype MPEG-1 decoder. Only I- and P-frames handled yet (it + can decode ffmpeg MPEGs :-)). +- added libavcodec API documentation (see apiexample.c). +- fixed image polyphase bug (the bottom of some images could be + greenish) +- added support for non clipped motion vectors (decoding only) + and image sizes non-multiple of 16 +- added support for AC prediction (decoding only) +- added file overwrite confirmation (can be disabled with -y) +- added custom size picture to H.263 using H.263+ (Juanjo) + + +version 0.4.1: + +- added MSMPEG4 (aka DivX) compatible encoder. Changed default codec + of AVI and ASF to DIV3. +- added -me option to set motion estimation method + (default=log). suppressed redundant -hq option. +- added options -acodec and -vcodec to force a given codec (useful for + AVI for example) +- fixed -an option +- improved dct_quantize speed +- factorized some motion estimation code + + +version 0.4.0: + +- removing grab code from ffserver and moved it to ffmpeg. Added + multistream support to ffmpeg. +- added timeshifting support for live feeds (option ?date=xxx in the + URL) +- added high quality image resize code with polyphase filter (need + mmx/see optimization). Enable multiple image size support in ffserver. +- added multi live feed support in ffserver +- suppressed master feature from ffserver (it should be done with an + external program which opens the .ffm url and writes it to another + ffserver) +- added preliminary support for video stream parsing (WAV and AVI half + done). Added proper support for audio/video file conversion in + ffmpeg. +- added preliminary support for video file sending from ffserver +- redesigning I/O subsystem: now using URL based input and output + (see avio.h) +- added WAV format support +- added "tty user interface" to ffmpeg to stop grabbing gracefully +- added MMX/SSE optimizations to SAD (Sums of Absolutes Differences) + (Juan J. Sierralta P. a.k.a. "Juanjo" ) +- added MMX DCT from mpeg2_movie 1.5 (Juanjo) +- added new motion estimation algorithms, log and phods (Juanjo) +- changed directories: libav for format handling, libavcodec for + codecs + + +version 0.3.4: + +- added stereo in MPEG audio encoder + + +version 0.3.3: + +- added 'high quality' mode which use motion vectors. It can be used in + real time at low resolution. +- fixed rounding problems which caused quality problems at high + bitrates and large GOP size + + +version 0.3.2: small fixes + +- ASF fixes +- put_seek bug fix + + +version 0.3.1: added avi/divx support + +- added AVI support +- added MPEG-4 codec compatible with OpenDivX. It is based on the H.263 codec +- added sound for flash format (not tested) + + +version 0.3: initial public release diff --git a/ffmpeg/INSTALL.md b/ffmpeg/INSTALL.md new file mode 100644 index 0000000..5db9122 --- /dev/null +++ b/ffmpeg/INSTALL.md @@ -0,0 +1,17 @@ +#Installing FFmpeg: + +1. Type `./configure` to create the configuration. A list of configure +options is printed by running `configure --help`. + + `configure` can be launched from a directory different from the FFmpeg +sources to build the objects out of tree. To do this, use an absolute +path when launching `configure`, e.g. `/ffmpegdir/ffmpeg/configure`. + +2. Then type `make` to build FFmpeg. GNU Make 3.81 or later is required. + +3. Type `make install` to install all binaries and libraries you built. + +NOTICE +------ + + - Non system dependencies (e.g. libx264, libvpx) are disabled by default. diff --git a/ffmpeg/LICENSE.md b/ffmpeg/LICENSE.md new file mode 100644 index 0000000..e0a431b --- /dev/null +++ b/ffmpeg/LICENSE.md @@ -0,0 +1,105 @@ +#FFmpeg: + +Most files in FFmpeg are under the GNU Lesser General Public License version 2.1 +or later (LGPL v2.1+). Read the file COPYING.LGPLv2.1 for details. Some other +files have MIT/X11/BSD-style licenses. In combination the LGPL v2.1+ applies to +FFmpeg. + +Some optional parts of FFmpeg are licensed under the GNU General Public License +version 2 or later (GPL v2+). See the file COPYING.GPLv2 for details. None of +these parts are used by default, you have to explicitly pass --enable-gpl to +configure to activate them. In this case, FFmpeg's license changes to GPL v2+. + +Specifically, the GPL parts of FFmpeg are: + +- libpostproc +- libmpcodecs +- optional x86 optimizations in the files + libavcodec/x86/flac_dsp_gpl.asm + libavcodec/x86/idct_mmx.c +- libutvideo encoding/decoding wrappers in + libavcodec/libutvideo*.cpp +- the X11 grabber in libavdevice/x11grab.c +- the swresample test app in + libswresample/swresample-test.c +- the texi2pod.pl tool +- the following filters in libavfilter: + - f_ebur128.c + - vf_blackframe.c + - vf_boxblur.c + - vf_colormatrix.c + - vf_cropdetect.c + - vf_decimate.c + - vf_delogo.c + - vf_geq.c + - vf_histeq.c + - vf_hqdn3d.c + - vf_interlace.c + - vf_kerndeint.c + - vf_mcdeint.c + - vf_mp.c + - vf_owdenoise.c + - vf_perspective.c + - vf_phase.c + - vf_pp.c + - vf_pullup.c + - vf_sab.c + - vf_smartblur.c + - vf_spp.c + - vf_stereo3d.c + - vf_super2xsai.c + - vf_tinterlace.c + - vsrc_mptestsrc.c + +Should you, for whatever reason, prefer to use version 3 of the (L)GPL, then +the configure parameter --enable-version3 will activate this licensing option +for you. Read the file COPYING.LGPLv3 or, if you have enabled GPL parts, +COPYING.GPLv3 to learn the exact legal terms that apply in this case. + +There are a handful of files under other licensing terms, namely: + +* The files libavcodec/jfdctfst.c, libavcodec/jfdctint_template.c and + libavcodec/jrevdct.c are taken from libjpeg, see the top of the files for + licensing details. Specifically note that you must credit the IJG in the + documentation accompanying your program if you only distribute executables. + You must also indicate any changes including additions and deletions to + those three files in the documentation. + + +external libraries +================== + +FFmpeg can be combined with a number of external libraries, which sometimes +affect the licensing of binaries resulting from the combination. + +compatible libraries +-------------------- + +The following libraries are under GPL: + - frei0r + - libcdio + - libutvideo + - libvidstab + - libx264 + - libx265 + - libxavs + - libxvid +When combining them with FFmpeg, FFmpeg needs to be licensed as GPL as well by +passing --enable-gpl to configure. + +The OpenCORE and VisualOn libraries are under the Apache License 2.0. That +license is incompatible with the LGPL v2.1 and the GPL v2, but not with +version 3 of those licenses. So to combine these libraries with FFmpeg, the +license version needs to be upgraded by passing --enable-version3 to configure. + +incompatible libraries +---------------------- + +The Fraunhofer AAC library, FAAC and aacplus are under licenses which +are incompatible with the GPLv2 and v3. We do not know for certain if their +licenses are compatible with the LGPL. +If you wish to enable these libraries, pass --enable-nonfree to configure. +But note that if you enable any of these libraries the resulting binary will +be under a complex license mix that is more restrictive than the LGPL and that +may result in additional obligations. It is possible that these +restrictions cause the resulting binary to be unredistributeable. diff --git a/ffmpeg/MAINTAINERS b/ffmpeg/MAINTAINERS new file mode 100644 index 0000000..062ff39 --- /dev/null +++ b/ffmpeg/MAINTAINERS @@ -0,0 +1,580 @@ +FFmpeg maintainers +================== + +Below is a list of the people maintaining different parts of the +FFmpeg code. + +Please try to keep entries where you are the maintainer up to date! + +Names in () mean that the maintainer currently has no time to maintain the code. +A (CC
) after the name means that the maintainer prefers to be CC-ed on +patches and related discussions. + + +Project Leader +============== + +Michael Niedermayer + final design decisions + + +Applications +============ + +ffmpeg: + ffmpeg.c Michael Niedermayer + +ffplay: + ffplay.c Marton Balint + +ffprobe: + ffprobe.c Stefano Sabatini + +ffserver: + ffserver.c Reynaldo H. Verdejo Pinochet + +Commandline utility code: + cmdutils.c, cmdutils.h Michael Niedermayer + +QuickTime faststart: + tools/qt-faststart.c Baptiste Coudurier + + +Miscellaneous Areas +=================== + +documentation Stefano Sabatini, Mike Melanson, Timothy Gu +build system (configure, makefiles) Diego Biurrun, Mans Rullgard +project server Árpád Gereöffy, Michael Niedermayer, Reimar Doeffinger, Alexander Strasser +presets Robert Swain +metadata subsystem Aurelien Jacobs +release management Michael Niedermayer + + +Communication +============= + +website Deby Barbara Lepage +fate.ffmpeg.org Timothy Gu +Trac bug tracker Alexander Strasser, Michael Niedermayer, Carl Eugen Hoyos, Lou Logan +mailing lists Michael Niedermayer, Baptiste Coudurier, Lou Logan +Google+ Paul B Mahol, Michael Niedermayer, Alexander Strasser +Twitter Lou Logan +Launchpad Timothy Gu + + +libavutil +========= + +External Interfaces: + libavutil/avutil.h Michael Niedermayer +Internal Interfaces: + libavutil/common.h Michael Niedermayer + +Other: + bprint Nicolas George + bswap.h + des Reimar Doeffinger + dynarray.h Nicolas George + eval.c, eval.h Michael Niedermayer + float_dsp Loren Merritt + hash Reimar Doeffinger + intfloat* Michael Niedermayer + integer.c, integer.h Michael Niedermayer + lzo Reimar Doeffinger + mathematics.c, mathematics.h Michael Niedermayer + mem.c, mem.h Michael Niedermayer + opencl.c, opencl.h Wei Gao + opt.c, opt.h Michael Niedermayer + rational.c, rational.h Michael Niedermayer + rc4 Reimar Doeffinger + ripemd.c, ripemd.h James Almer + timecode Clément Bœsch + + +libavcodec +========== + +Generic Parts: + External Interfaces: + avcodec.h Michael Niedermayer + utility code: + utils.c Michael Niedermayer + audio and video frame extraction: + parser.c Michael Niedermayer + bitstream reading: + bitstream.c, bitstream.h Michael Niedermayer + CABAC: + cabac.h, cabac.c Michael Niedermayer + codec names: + codec_names.sh Nicolas George + DSP utilities: + dsputils.c, dsputils.h Michael Niedermayer + entropy coding: + rangecoder.c, rangecoder.h Michael Niedermayer + lzw.* Michael Niedermayer + floating point AAN DCT: + faandct.c, faandct.h Michael Niedermayer + Golomb coding: + golomb.c, golomb.h Michael Niedermayer + LPC: + lpc.c, lpc.h Justin Ruggles + motion estimation: + motion* Michael Niedermayer + rate control: + ratecontrol.c Michael Niedermayer + libxvid_rc.c Michael Niedermayer + simple IDCT: + simple_idct.c, simple_idct.h Michael Niedermayer + postprocessing: + libpostproc/* Michael Niedermayer + table generation: + tableprint.c, tableprint.h Reimar Doeffinger + fixed point FFT: + fft* Zeljko Lukac + Text Subtitles Clément Bœsch + +Codecs: + 4xm.c Michael Niedermayer + 8bps.c Roberto Togni + 8svx.c Jaikrishnan Menon + aasc.c Kostya Shishkov + ac3* Justin Ruggles + alacenc.c Jaikrishnan Menon + alsdec.c Thilo Borgmann + apedec.c Kostya Shishkov + ass* Aurelien Jacobs + asv* Michael Niedermayer + atrac3* Benjamin Larsson + atrac3plus* Maxim Poliakovski + bgmc.c, bgmc.h Thilo Borgmann + bink.c Kostya Shishkov + binkaudio.c Peter Ross + bmp.c Mans Rullgard, Kostya Shishkov + cavs* Stefan Gehrer + cdxl.c Paul B Mahol + celp_filters.* Vitor Sessak + cinepak.c Roberto Togni + cinepakenc.c Rl / Aetey G.T. AB + cljr Alex Beregszaszi + cllc.c Derek Buitenhuis + cook.c, cookdata.h Benjamin Larsson + cpia.c Stephan Hilb + crystalhd.c Philip Langdale + cscd.c Reimar Doeffinger + dca.c Kostya Shishkov, Benjamin Larsson + dnxhd* Baptiste Coudurier + dpcm.c Mike Melanson + dv.c Roman Shaposhnik + dvbsubdec.c Anshul Maheshwari + dxa.c Kostya Shishkov + eacmv*, eaidct*, eat* Peter Ross + exif.c, exif.h Thilo Borgmann + ffv1* Michael Niedermayer + ffwavesynth.c Nicolas George + fic.c Derek Buitenhuis + flac* Justin Ruggles + flashsv* Benjamin Larsson + flicvideo.c Mike Melanson + g722.c Martin Storsjo + g726.c Roman Shaposhnik + gifdec.c Baptiste Coudurier + h261* Michael Niedermayer + h263* Michael Niedermayer + h264* Loren Merritt, Michael Niedermayer + huffyuv* Michael Niedermayer, Christophe Gisquet + idcinvideo.c Mike Melanson + imc* Benjamin Larsson + indeo2* Kostya Shishkov + indeo5* Kostya Shishkov + interplayvideo.c Mike Melanson + ivi* Kostya Shishkov + jacosub* Clément Bœsch + jpeg2000* Nicolas Bertrand + jpeg_ls.c Kostya Shishkov + jvdec.c Peter Ross + kmvc.c Kostya Shishkov + lcl*.c Roberto Togni, Reimar Doeffinger + libcelt_dec.c Nicolas George + libdirac* David Conrad + libgsm.c Michel Bardiaux + libopenjpeg.c Jaikrishnan Menon + libopenjpegenc.c Michael Bradshaw + libschroedinger* David Conrad + libspeexdec.c Justin Ruggles + libtheoraenc.c David Conrad + libutvideo* Derek Buitenhuis + libvorbis.c David Conrad + libvpx* James Zern + libx264.c Mans Rullgard, Jason Garrett-Glaser + libx265.c Derek Buitenhuis + libxavs.c Stefan Gehrer + libzvbi-teletextdec.c Marton Balint + loco.c Kostya Shishkov + lzo.h, lzo.c Reimar Doeffinger + mdec.c Michael Niedermayer + mimic.c Ramiro Polla + mjpeg*.c Michael Niedermayer + mlp* Ramiro Polla + mmvideo.c Peter Ross + mpc* Kostya Shishkov + mpeg12.c, mpeg12data.h Michael Niedermayer + mpegvideo.c, mpegvideo.h Michael Niedermayer + mqc* Nicolas Bertrand + msmpeg4.c, msmpeg4data.h Michael Niedermayer + msrle.c Mike Melanson + msvideo1.c Mike Melanson + nellymoserdec.c Benjamin Larsson + nuv.c Reimar Doeffinger + paf.* Paul B Mahol + pcx.c Ivo van Poorten + pgssubdec.c Reimar Doeffinger + ptx.c Ivo van Poorten + qcelp* Reynaldo H. Verdejo Pinochet + qdm2.c, qdm2data.h Roberto Togni, Benjamin Larsson + qdrw.c Kostya Shishkov + qpeg.c Kostya Shishkov + qtrle.c Mike Melanson + ra144.c, ra144.h, ra288.c, ra288.h Roberto Togni + resample2.c Michael Niedermayer + rl2.c Sascha Sommer + rpza.c Roberto Togni + rtjpeg.c, rtjpeg.h Reimar Doeffinger + rv10.c Michael Niedermayer + rv3* Kostya Shishkov + rv4* Kostya Shishkov, Christophe Gisquet + s3tc* Ivo van Poorten + smacker.c Kostya Shishkov + smc.c Mike Melanson + smvjpegdec.c Ash Hughes + snow* Michael Niedermayer, Loren Merritt + sonic.c Alex Beregszaszi + srt* Aurelien Jacobs + sunrast.c Ivo van Poorten + svq3.c Michael Niedermayer + tak* Paul B Mahol + targa.c Kostya Shishkov + tiff.c Kostya Shishkov + truemotion1* Mike Melanson + truemotion2* Kostya Shishkov + truespeech.c Kostya Shishkov + tscc.c Kostya Shishkov + tta.c Alex Beregszaszi, Jaikrishnan Menon + ttaenc.c Paul B Mahol + txd.c Ivo van Poorten + ulti* Kostya Shishkov + v410*.c Derek Buitenhuis + vb.c Kostya Shishkov + vble.c Derek Buitenhuis + vc1* Kostya Shishkov, Christophe Gisquet + vcr1.c Michael Niedermayer + vda_h264_dec.c Xidorn Quan + vima.c Paul B Mahol + vmnc.c Kostya Shishkov + vorbisdec.c Denes Balatoni, David Conrad + vorbisenc.c Oded Shimon + vp3* Mike Melanson + vp5 Aurelien Jacobs + vp6 Aurelien Jacobs + vp8 David Conrad, Jason Garrett-Glaser, Ronald Bultje + vp9 Ronald Bultje, Clément Bœsch + vqavideo.c Mike Melanson + wavpack.c Kostya Shishkov + wmaprodec.c Sascha Sommer + wmavoice.c Ronald S. Bultje + wmv2.c Michael Niedermayer + wnv1.c Kostya Shishkov + xan.c Mike Melanson + xbm* Paul B Mahol + xface Stefano Sabatini + xl.c Kostya Shishkov + xvmc.c Ivan Kalvachev + xwd* Paul B Mahol + zerocodec.c Derek Buitenhuis + zmbv* Kostya Shishkov + +Hardware acceleration: + crystalhd.c Philip Langdale + dxva2* Laurent Aimar + libstagefright.cpp Mohamed Naufal + vaapi* Gwenole Beauchesne + vda* Sebastien Zwickert + vdpau* Carl Eugen Hoyos + + +libavdevice +=========== + External Interface: + libavdevice/avdevice.h + + + avfoundation.m Thilo Borgmann + dshow.c Roger Pack (CC rogerdpack@gmail.com) + fbdev_enc.c Lukasz Marek + gdigrab.c Roger Pack (CC rogerdpack@gmail.com) + iec61883.c Georg Lippitsch + lavfi Stefano Sabatini + libdc1394.c Roman Shaposhnik + opengl_enc.c Lukasz Marek + pulse_audio_enc.c Lukasz Marek + qtkit.m Thilo Borgmann + sdl Stefano Sabatini + v4l2.c Giorgio Vazzana + vfwcap.c Ramiro Polla + xv.c Lukasz Marek + +libavfilter +=========== + +Generic parts: + graphdump.c Nicolas George + +Filters: + af_adelay.c Paul B Mahol + af_aecho.c Paul B Mahol + af_afade.c Paul B Mahol + af_amerge.c Nicolas George + af_aphaser.c Paul B Mahol + af_aresample.c Michael Niedermayer + af_astats.c Paul B Mahol + af_astreamsync.c Nicolas George + af_atempo.c Pavel Koshevoy + af_biquads.c Paul B Mahol + af_compand.c Paul B Mahol + af_ladspa.c Paul B Mahol + af_pan.c Nicolas George + af_silenceremove.c Paul B Mahol + avf_avectorscope.c Paul B Mahol + avf_showcqt.c Muhammad Faiz + vf_blend.c Paul B Mahol + vf_colorbalance.c Paul B Mahol + vf_dejudder.c Nicholas Robbins + vf_delogo.c Jean Delvare (CC ) + vf_drawbox.c/drawgrid Andrey Utkin + vf_extractplanes.c Paul B Mahol + vf_histogram.c Paul B Mahol + vf_hqx.c Clément Bœsch + vf_idet.c Pascal Massimino + vf_il.c Paul B Mahol + vf_lenscorrection.c Daniel Oberhoff + vf_mergeplanes.c Paul B Mahol + vf_psnr.c Paul B Mahol + vf_scale.c Michael Niedermayer + vf_separatefields.c Paul B Mahol + vf_stereo3d.c Paul B Mahol + vf_telecine.c Paul B Mahol + vf_yadif.c Michael Niedermayer + +Sources: + vsrc_mandelbrot.c Michael Niedermayer + +libavformat +=========== + +Generic parts: + External Interface: + libavformat/avformat.h Michael Niedermayer + Utility Code: + libavformat/utils.c Michael Niedermayer + + +Muxers/Demuxers: + 4xm.c Mike Melanson + adtsenc.c Robert Swain + afc.c Paul B Mahol + aiffdec.c Baptiste Coudurier, Matthieu Bouron + aiffenc.c Baptiste Coudurier, Matthieu Bouron + ape.c Kostya Shishkov + ass* Aurelien Jacobs + astdec.c Paul B Mahol + astenc.c James Almer + avi* Michael Niedermayer + avisynth.c AvxSynth Team (avxsynth.testing at gmail dot com) + avr.c Paul B Mahol + bink.c Peter Ross + brstm.c Paul B Mahol + caf* Peter Ross + cdxl.c Paul B Mahol + crc.c Michael Niedermayer + daud.c Reimar Doeffinger + dtshddec.c Paul B Mahol + dv.c Roman Shaposhnik + dxa.c Kostya Shishkov + electronicarts.c Peter Ross + epafdec.c Paul B Mahol + ffm* Baptiste Coudurier + flac* Justin Ruggles + flic.c Mike Melanson + flvdec.c, flvenc.c Michael Niedermayer + gxf.c Reimar Doeffinger + gxfenc.c Baptiste Coudurier + hls.c Anssi Hannula + idcin.c Mike Melanson + idroqdec.c Mike Melanson + iff.c Jaikrishnan Menon + img2*.c Michael Niedermayer + ipmovie.c Mike Melanson + ircam* Paul B Mahol + iss.c Stefan Gehrer + jacosub* Clément Bœsch + jvdec.c Peter Ross + libmodplug.c Clément Bœsch + libnut.c Oded Shimon + lmlm4.c Ivo van Poorten + lvfdec.c Paul B Mahol + lxfdec.c Tomas Härdin + matroska.c Aurelien Jacobs + matroskadec.c Aurelien Jacobs + matroskaenc.c David Conrad + matroska subtitles (matroskaenc.c) John Peebles + metadata* Aurelien Jacobs + mgsts.c Paul B Mahol + microdvd* Aurelien Jacobs + mm.c Peter Ross + mov.c Michael Niedermayer, Baptiste Coudurier + movenc.c Baptiste Coudurier, Matthieu Bouron + mpc.c Kostya Shishkov + mpeg.c Michael Niedermayer + mpegenc.c Michael Niedermayer + mpegts.c Marton Balint + mpegtsenc.c Baptiste Coudurier + msnwc_tcp.c Ramiro Polla + mtv.c Reynaldo H. Verdejo Pinochet + mxf* Baptiste Coudurier + mxfdec.c Tomas Härdin + nistspheredec.c Paul B Mahol + nsvdec.c Francois Revol + nut* Michael Niedermayer + nuv.c Reimar Doeffinger + oggdec.c, oggdec.h David Conrad + oggenc.c Baptiste Coudurier + oggparse*.c David Conrad + oma.c Maxim Poliakovski + paf.c Paul B Mahol + psxstr.c Mike Melanson + pva.c Ivo van Poorten + pvfdec.c Paul B Mahol + r3d.c Baptiste Coudurier + raw.c Michael Niedermayer + rdt.c Ronald S. Bultje + rl2.c Sascha Sommer + rmdec.c, rmenc.c Ronald S. Bultje, Kostya Shishkov + rtmp* Kostya Shishkov + rtp.c, rtpenc.c Martin Storsjo + rtpdec_h261.*, rtpenc_h261.* Thomas Volkert + rtpdec_hevc.* Thomas Volkert + rtpdec_asf.* Ronald S. Bultje + rtpenc_mpv.*, rtpenc_aac.* Martin Storsjo + rtsp.c Luca Barbato + sbgdec.c Nicolas George + sdp.c Martin Storsjo + segafilm.c Mike Melanson + segment.c Stefano Sabatini + siff.c Kostya Shishkov + smacker.c Kostya Shishkov + smjpeg* Paul B Mahol + spdif* Anssi Hannula + srtdec.c Aurelien Jacobs + swf.c Baptiste Coudurier + takdec.c Paul B Mahol + tta.c Alex Beregszaszi + txd.c Ivo van Poorten + voc.c Aurelien Jacobs + wav.c Michael Niedermayer + wc3movie.c Mike Melanson + webm dash (matroskaenc.c) Vignesh Venkatasubramanian + webvtt* Matthew J Heaney + westwood.c Mike Melanson + wtv.c Peter Ross + wv.c Kostya Shishkov + wvenc.c Paul B Mahol + +Protocols: + bluray.c Petri Hintukainen + ftp.c Lukasz Marek + http.c Ronald S. Bultje + libssh.c Lukasz Marek + mms*.c Ronald S. Bultje + udp.c Luca Abeni + + +libswresample +============= + +Generic parts: + audioconvert.c Michael Niedermayer + dither.c Michael Niedermayer + rematrix*.c Michael Niedermayer + swresample*.c Michael Niedermayer + +Resamplers: + resample*.c Michael Niedermayer + soxr_resample.c Rob Sykes + + +Operating systems / CPU architectures +===================================== + +Alpha Mans Rullgard, Falk Hueffner +ARM Mans Rullgard +AVR32 Mans Rullgard +MIPS Mans Rullgard, Nedeljko Babic +Mac OS X / PowerPC Romain Dolbeau, Guillaume Poirier +Amiga / PowerPC Colin Ward +Linux / PowerPC Luca Barbato +Windows MinGW Alex Beregszaszi, Ramiro Polla +Windows Cygwin Victor Paesa +Windows MSVC Matthew Oliver +Windows ICL Matthew Oliver +ADI/Blackfin DSP Marc Hoffman +Sparc Roman Shaposhnik +x86 Michael Niedermayer + + +Releases +======== + +2.4 Michael Niedermayer +2.2 Michael Niedermayer +1.2 Michael Niedermayer + +If you want to maintain an older release, please contact us + + +GnuPG Fingerprints of maintainers and contributors +================================================== + +Alexander Strasser 1C96 78B7 83CB 8AA7 9AF5 D1EB A7D8 A57B A876 E58F +Anssi Hannula 1A92 FF42 2DD9 8D2E 8AF7 65A9 4278 C520 513D F3CB +Anton Khirnov 6D0C 6625 56F8 65D1 E5F5 814B B50A 1241 C067 07AB +Ash Hughes 694D 43D2 D180 C7C7 6421 ABD3 A641 D0B7 623D 6029 +Attila Kinali 11F0 F9A6 A1D2 11F6 C745 D10C 6520 BCDD F2DF E765 +Baptiste Coudurier 8D77 134D 20CC 9220 201F C5DB 0AC9 325C 5C1A BAAA +Ben Littler 3EE3 3723 E560 3214 A8CD 4DEB 2CDB FCE7 768C 8D2C +Benoit Fouet B22A 4F4F 43EF 636B BB66 FCDC 0023 AE1E 2985 49C8 +Clément Bœsch 52D0 3A82 D445 F194 DB8B 2B16 87EE 2CB8 F4B8 FCF9 +Daniel Verkamp 78A6 07ED 782C 653E C628 B8B9 F0EB 8DD8 2F0E 21C7 +Diego Biurrun 8227 1E31 B6D9 4994 7427 E220 9CAE D6CC 4757 FCC5 +FFmpeg release signing key FCF9 86EA 15E6 E293 A564 4F10 B432 2F04 D676 58D8 +Gwenole Beauchesne 2E63 B3A6 3E44 37E2 017D 2704 53C7 6266 B153 99C4 +Jaikrishnan Menon 61A1 F09F 01C9 2D45 78E1 C862 25DC 8831 AF70 D368 +Jean Delvare 7CA6 9F44 60F1 BDC4 1FD2 C858 A552 6B9B B3CD 4E6A +Justin Ruggles 3136 ECC0 C10D 6C04 5F43 CA29 FCBE CD2A 3787 1EBF +Loren Merritt ABD9 08F4 C920 3F65 D8BE 35D7 1540 DAA7 060F 56DE +Lou Logan 7D68 DC73 CBEF EABB 671A B6CF 621C 2E28 82F8 DC3A +Luca Barbato 6677 4209 213C 8843 5B67 29E7 E84C 78C2 84E9 0E34 +Michael Niedermayer 9FF2 128B 147E F673 0BAD F133 611E C787 040B 0FAB +Nicolas George 24CE 01CE 9ACC 5CEB 74D8 8D9D B063 D997 36E5 4C93 +Panagiotis Issaris 6571 13A3 33D9 3726 F728 AA98 F643 B12E ECF3 E029 +Peter Ross A907 E02F A6E5 0CD2 34CD 20D2 6760 79C5 AC40 DD6B +Reimar Doeffinger C61D 16E5 9E2C D10C 8958 38A4 0899 A2B9 06D4 D9C7 +Reinhard Tartler 9300 5DC2 7E87 6C37 ED7B CA9A 9808 3544 9453 48A4 +Reynaldo H. Verdejo Pinochet 6E27 CD34 170C C78E 4D4F 5F40 C18E 077F 3114 452A +Robert Swain EE7A 56EA 4A81 A7B5 2001 A521 67FA 362D A2FC 3E71 +Sascha Sommer 38A0 F88B 868E 9D3A 97D4 D6A0 E823 706F 1E07 0D3C +Stefano Sabatini 0D0B AD6B 5330 BBAD D3D6 6A0C 719C 2839 FC43 2D5F +Stephan Hilb 4F38 0B3A 5F39 B99B F505 E562 8D5C 5554 4E17 8863 +Tiancheng "Timothy" Gu 9456 AFC0 814A 8139 E994 8351 7FE6 B095 B582 B0D4 +Tim Nicholson 38CF DB09 3ED0 F607 8B67 6CED 0C0B FC44 8B0B FC83 +Tomas Härdin A79D 4E3D F38F 763F 91F5 8B33 A01E 8AE0 41BB 2551 +Wei Gao 4269 7741 857A 0E60 9EC5 08D2 4744 4EFA 62C1 87B9 diff --git a/ffmpeg/Makefile b/ffmpeg/Makefile new file mode 100644 index 0000000..57f6a91 --- /dev/null +++ b/ffmpeg/Makefile @@ -0,0 +1,198 @@ +MAIN_MAKEFILE=1 +include config.mak + +vpath %.c $(SRC_PATH) +vpath %.cpp $(SRC_PATH) +vpath %.h $(SRC_PATH) +vpath %.m $(SRC_PATH) +vpath %.S $(SRC_PATH) +vpath %.asm $(SRC_PATH) +vpath %.rc $(SRC_PATH) +vpath %.v $(SRC_PATH) +vpath %.texi $(SRC_PATH) +vpath %/fate_config.sh.template $(SRC_PATH) + +AVPROGS-$(CONFIG_FFMPEG) += ffmpeg +AVPROGS-$(CONFIG_FFPLAY) += ffplay +AVPROGS-$(CONFIG_FFPROBE) += ffprobe +AVPROGS-$(CONFIG_FFSERVER) += ffserver + +AVPROGS := $(AVPROGS-yes:%=%$(PROGSSUF)$(EXESUF)) +INSTPROGS = $(AVPROGS-yes:%=%$(PROGSSUF)$(EXESUF)) +PROGS += $(AVPROGS) + +AVBASENAMES = ffmpeg ffplay ffprobe ffserver +ALLAVPROGS = $(AVBASENAMES:%=%$(PROGSSUF)$(EXESUF)) +ALLAVPROGS_G = $(AVBASENAMES:%=%$(PROGSSUF)_g$(EXESUF)) + +$(foreach prog,$(AVBASENAMES),$(eval OBJS-$(prog) += cmdutils.o)) +$(foreach prog,$(AVBASENAMES),$(eval OBJS-$(prog)-$(CONFIG_OPENCL) += cmdutils_opencl.o)) + +OBJS-ffmpeg += ffmpeg_opt.o ffmpeg_filter.o +OBJS-ffmpeg-$(HAVE_VDPAU_X11) += ffmpeg_vdpau.o +OBJS-ffmpeg-$(HAVE_DXVA2_LIB) += ffmpeg_dxva2.o +OBJS-ffmpeg-$(CONFIG_VDA) += ffmpeg_vda.o + +TESTTOOLS = audiogen videogen rotozoom tiny_psnr tiny_ssim base64 +HOSTPROGS := $(TESTTOOLS:%=tests/%) doc/print_options +TOOLS = qt-faststart trasher uncoded_frame +TOOLS-$(CONFIG_ZLIB) += cws2fws + +# $(FFLIBS-yes) needs to be in linking order +FFLIBS-$(CONFIG_AVDEVICE) += avdevice +FFLIBS-$(CONFIG_AVFILTER) += avfilter +FFLIBS-$(CONFIG_AVFORMAT) += avformat +FFLIBS-$(CONFIG_AVCODEC) += avcodec +FFLIBS-$(CONFIG_AVRESAMPLE) += avresample +FFLIBS-$(CONFIG_POSTPROC) += postproc +FFLIBS-$(CONFIG_SWRESAMPLE) += swresample +FFLIBS-$(CONFIG_SWSCALE) += swscale + +FFLIBS := avutil + +DATA_FILES := $(wildcard $(SRC_PATH)/presets/*.ffpreset) $(SRC_PATH)/doc/ffprobe.xsd +EXAMPLES_FILES := $(wildcard $(SRC_PATH)/doc/examples/*.c) $(SRC_PATH)/doc/examples/Makefile $(SRC_PATH)/doc/examples/README + +SKIPHEADERS = cmdutils_common_opts.h compat/w32pthreads.h + +include $(SRC_PATH)/common.mak + +FF_EXTRALIBS := $(FFEXTRALIBS) +FF_DEP_LIBS := $(DEP_LIBS) + +all: $(AVPROGS) + +$(TOOLS): %$(EXESUF): %.o $(EXEOBJS) + $(LD) $(LDFLAGS) $(LDEXEFLAGS) $(LD_O) $^ $(ELIBS) + +tools/cws2fws$(EXESUF): ELIBS = $(ZLIB) +tools/uncoded_frame$(EXESUF): $(FF_DEP_LIBS) +tools/uncoded_frame$(EXESUF): ELIBS = $(FF_EXTRALIBS) + +config.h: .config +.config: $(wildcard $(FFLIBS:%=$(SRC_PATH)/lib%/all*.c)) + @-tput bold 2>/dev/null + @-printf '\nWARNING: $(?F) newer than config.h, rerun configure\n\n' + @-tput sgr0 2>/dev/null + +SUBDIR_VARS := CLEANFILES EXAMPLES FFLIBS HOSTPROGS TESTPROGS TOOLS \ + HEADERS ARCH_HEADERS BUILT_HEADERS SKIPHEADERS \ + ARMV5TE-OBJS ARMV6-OBJS ARMV8-OBJS VFP-OBJS NEON-OBJS \ + ALTIVEC-OBJS MMX-OBJS YASM-OBJS \ + MIPSFPU-OBJS MIPSDSPR2-OBJS MIPSDSPR1-OBJS MIPS32R2-OBJS \ + OBJS SLIBOBJS HOSTOBJS TESTOBJS + +define RESET +$(1) := +$(1)-yes := +endef + +define DOSUBDIR +$(foreach V,$(SUBDIR_VARS),$(eval $(call RESET,$(V)))) +SUBDIR := $(1)/ +include $(SRC_PATH)/$(1)/Makefile +-include $(SRC_PATH)/$(1)/$(ARCH)/Makefile +-include $(SRC_PATH)/$(1)/$(INTRINSICS)/Makefile +include $(SRC_PATH)/library.mak +endef + +$(foreach D,$(FFLIBS),$(eval $(call DOSUBDIR,lib$(D)))) + +include $(SRC_PATH)/doc/Makefile + +define DOPROG +OBJS-$(1) += $(1).o $(EXEOBJS) $(OBJS-$(1)-yes) +$(1)$(PROGSSUF)_g$(EXESUF): $$(OBJS-$(1)) +$$(OBJS-$(1)): CFLAGS += $(CFLAGS-$(1)) +$(1)$(PROGSSUF)_g$(EXESUF): LDFLAGS += $(LDFLAGS-$(1)) +$(1)$(PROGSSUF)_g$(EXESUF): FF_EXTRALIBS += $(LIBS-$(1)) +-include $$(OBJS-$(1):.o=.d) +endef + +$(foreach P,$(PROGS),$(eval $(call DOPROG,$(P:$(PROGSSUF)$(EXESUF)=)))) + +ffprobe.o cmdutils.o : libavutil/ffversion.h + +$(PROGS): %$(PROGSSUF)$(EXESUF): %$(PROGSSUF)_g$(EXESUF) + $(CP) $< $@ + $(STRIP) $@ + +%$(PROGSSUF)_g$(EXESUF): %.o $(FF_DEP_LIBS) + $(LD) $(LDFLAGS) $(LDEXEFLAGS) $(LD_O) $(OBJS-$*) $(FF_EXTRALIBS) + +OBJDIRS += tools + +-include $(wildcard tools/*.d) + +VERSION_SH = $(SRC_PATH)/version.sh +GIT_LOG = $(SRC_PATH)/.git/logs/HEAD + +.version: $(wildcard $(GIT_LOG)) $(VERSION_SH) config.mak +.version: M=@ + +libavutil/ffversion.h .version: + $(M)$(VERSION_SH) $(SRC_PATH) libavutil/ffversion.h $(EXTRA_VERSION) + $(Q)touch .version + +# force version.sh to run whenever version might have changed +-include .version + +ifdef AVPROGS +install: install-progs install-data +endif + +install: install-libs install-headers + +install-libs: install-libs-yes + +install-progs-yes: +install-progs-$(CONFIG_SHARED): install-libs + +install-progs: install-progs-yes $(AVPROGS) + $(Q)mkdir -p "$(BINDIR)" + $(INSTALL) -c -m 755 $(INSTPROGS) "$(BINDIR)" + +install-data: $(DATA_FILES) $(EXAMPLES_FILES) + $(Q)mkdir -p "$(DATADIR)/examples" + $(INSTALL) -m 644 $(DATA_FILES) "$(DATADIR)" + $(INSTALL) -m 644 $(EXAMPLES_FILES) "$(DATADIR)/examples" + +uninstall: uninstall-libs uninstall-headers uninstall-progs uninstall-data + +uninstall-progs: + $(RM) $(addprefix "$(BINDIR)/", $(ALLAVPROGS)) + +uninstall-data: + $(RM) -r "$(DATADIR)" + +clean:: + $(RM) $(ALLAVPROGS) $(ALLAVPROGS_G) + $(RM) $(CLEANSUFFIXES) + $(RM) $(CLEANSUFFIXES:%=tools/%) + $(RM) -r coverage-html + $(RM) -rf coverage.info lcov + +distclean:: + $(RM) $(DISTCLEANSUFFIXES) + $(RM) config.* .config libavutil/avconfig.h .version version.h libavutil/ffversion.h libavcodec/codec_names.h + +config: + $(SRC_PATH)/configure $(value FFMPEG_CONFIGURATION) + +check: all alltools examples testprogs fate + +include $(SRC_PATH)/tests/Makefile + +$(sort $(OBJDIRS)): + $(Q)mkdir -p $@ + +# Dummy rule to stop make trying to rebuild removed or renamed headers +%.h: + @: + +# Disable suffix rules. Most of the builtin rules are suffix rules, +# so this saves some time on slow systems. +.SUFFIXES: + +.PHONY: all all-yes alltools check *clean config install* +.PHONY: testprogs uninstall* diff --git a/ffmpeg/README.md b/ffmpeg/README.md new file mode 100644 index 0000000..182d726 --- /dev/null +++ b/ffmpeg/README.md @@ -0,0 +1,40 @@ +FFmpeg README +============= + +FFmpeg is a collection of libraries and tools to process multimedia content +such as audio, video, subtitles and related metadata. + +## Libraries + +* `libavcodec` provides implementation of a wider range of codecs. +* `libavformat` implements streaming protocols, container formats and basic I/O access. +* `libavutil` includes hashers, decompressors and miscellaneous utility functions. +* `libavfilter` provides a mean to alter decoded Audio and Video through chain of filters. +* `libavdevice` provides an abstraction to access capture and playback devices. +* `libswresample` implements audio mixing and resampling routines. +* `libswscale` implements color conversion and scaling routines. + +## Tools + +* [ffmpeg](http://ffmpeg.org/ffmpeg.html) is a command line toolbox to + manipulate, convert and stream multimedia content. +* [ffplay](http://ffmpeg.org/ffplay.html) is a minimalistic multimedia player. +* [ffprobe](http://ffmpeg.org/ffprobe.html) is a simple analisys tool to inspect + multimedia content. +* Additional small tools such as `aviocat`, `ismindex` and `qt-faststart`. + +## Documentation + +The offline documentation is available in the **doc/** directory. + +The online documentation is available in the main [website](http://ffmpeg.org) +and in the [wiki](http://trac.ffmpeg.org). + +### Examples + +Conding examples are available in the **doc/example** directory. + +## License + +FFmpeg codebase is mainly LGPL-licensed with optional components licensed under +GPL. Please refer to the LICENSE file for detailed information. diff --git a/ffmpeg/RELEASE b/ffmpeg/RELEASE new file mode 100644 index 0000000..35cee72 --- /dev/null +++ b/ffmpeg/RELEASE @@ -0,0 +1 @@ +2.4.3 diff --git a/ffmpeg/RELEASE_NOTES b/ffmpeg/RELEASE_NOTES new file mode 100644 index 0000000..9d0d7e4 --- /dev/null +++ b/ffmpeg/RELEASE_NOTES @@ -0,0 +1,83 @@ + ┌────────────────────────────────────────┐ + │ RELEASE NOTES for FFmpeg 2.4 "Fresnel" │ + └────────────────────────────────────────┘ + + The FFmpeg Project proudly presents FFmpeg 2.4 "Fresnel", just 2 months + after the release of 2.3. Since this wasn't a long time ago, the Changelog + is a bit short this time. + + The most important thing in this release is the major version bump of the + libraries. This means that this release is neither ABI-compatible nor + fully API-compatible. But on the other hand it is aligned with the Libav + 11 release series, and will as a result probably end up being maintained for + a long time. + + As usual, if you have any question on this release or any FFmpeg related + topic, feel free to join us on the #ffmpeg IRC channel (on + irc.freenode.net). + + ┌────────────────────────────┐ + │ 🔨 API Information │ + └────────────────────────────┘ + + FFmpeg 2.4 includes the following library versions: + + • libavutil 54.7.100 + • libavcodec 56.1.100 + • libavformat 56.4.101 + • libavdevice 56.0.100 + • libavfilter 5.1.100 + • libswscale 3.0.100 + • libswresample 1.1.100 + • libpostproc 53.0.100 + + Important API changes since 2.3: + + • The new field mime_type was added to AVProbeData, which can + cause crashes, if it is not initialized. + • Some deprecated functions were removed. + • The avfilter_graph_parse function was made compatible with Libav. + • The Matroska demuxer now outputs verbatim ASS packets. + + Please refer to the doc/APIchanges file for more information. + + ┌────────────────────────────┐ + │ ★ List of New Features │ + └────────────────────────────┘ + + ┌────────────────────────────┐ + │ libavformat │ + └────────────────────────────┘ + + • Icecast protocol. + • API for live metadata updates through event flags. + • UTF-16 support in text subtitles formats. + • The ASS muxer now reorders the Dialogue events properly. + • support for H.261 RTP payload format (RFC 4587) + • HEVC/H.265 RTP payload format (draft v6) depacketizer + + ┌────────────────────────────┐ + │ libavfilter │ + └────────────────────────────┘ + + • Ported lenscorrection filter from frei0r filter. + • Large optimizations in dctdnoiz to make it usable. + • Added codecview filter to visualize information exported by some codecs. + • Added silenceremove filter. + + ┌────────────────────────────┐ + │ libavutil │ + └────────────────────────────┘ + + • Added clip() function in eval. + + ┌────────────────────────────┐ + │ ⚠ Behaviour changes │ + └────────────────────────────┘ + + • dctdnoiz filter now uses a block size of 8x8 instead of 16x16 by default + • -vismv option is deprecated in favor of the codecview filter + • libmodplug is now detected through pkg-config + • HTML documentation generation through texi2html is deprecated in + favor of makeinfo/texi2any + • ICY metadata are now requested by default with the HTTP protocol diff --git a/ffmpeg/VERSION b/ffmpeg/VERSION new file mode 100644 index 0000000..35cee72 --- /dev/null +++ b/ffmpeg/VERSION @@ -0,0 +1 @@ +2.4.3 diff --git a/ffmpeg/arch.mak b/ffmpeg/arch.mak new file mode 100644 index 0000000..0e866d8 --- /dev/null +++ b/ffmpeg/arch.mak @@ -0,0 +1,15 @@ +OBJS-$(HAVE_ARMV5TE) += $(ARMV5TE-OBJS) $(ARMV5TE-OBJS-yes) +OBJS-$(HAVE_ARMV6) += $(ARMV6-OBJS) $(ARMV6-OBJS-yes) +OBJS-$(HAVE_ARMV8) += $(ARMV8-OBJS) $(ARMV8-OBJS-yes) +OBJS-$(HAVE_VFP) += $(VFP-OBJS) $(VFP-OBJS-yes) +OBJS-$(HAVE_NEON) += $(NEON-OBJS) $(NEON-OBJS-yes) + +OBJS-$(HAVE_MIPSFPU) += $(MIPSFPU-OBJS) $(MIPSFPU-OBJS-yes) +OBJS-$(HAVE_MIPS32R2) += $(MIPS32R2-OBJS) $(MIPS32R2-OBJS-yes) +OBJS-$(HAVE_MIPSDSPR1) += $(MIPSDSPR1-OBJS) $(MIPSDSPR1-OBJS-yes) +OBJS-$(HAVE_MIPSDSPR2) += $(MIPSDSPR2-OBJS) $(MIPSDSPR2-OBJS-yes) + +OBJS-$(HAVE_ALTIVEC) += $(ALTIVEC-OBJS) $(ALTIVEC-OBJS-yes) + +OBJS-$(HAVE_MMX) += $(MMX-OBJS) $(MMX-OBJS-yes) +OBJS-$(HAVE_YASM) += $(YASM-OBJS) $(YASM-OBJS-yes) diff --git a/ffmpeg/cmdutils.c b/ffmpeg/cmdutils.c new file mode 100644 index 0000000..1143ea1 --- /dev/null +++ b/ffmpeg/cmdutils.c @@ -0,0 +1,2052 @@ +/* + * Various utilities for command line tools + * Copyright (c) 2000-2003 Fabrice Bellard + * + * This file is part of FFmpeg. + * + * FFmpeg is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * FFmpeg is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with FFmpeg; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#include +#include +#include +#include +#include + +/* Include only the enabled headers since some compilers (namely, Sun + Studio) will not omit unused inline functions and create undefined + references to libraries that are not being built. */ + +#include "config.h" +#include "compat/va_copy.h" +#include "libavformat/avformat.h" +#include "libavfilter/avfilter.h" +#include "libavdevice/avdevice.h" +#include "libavresample/avresample.h" +#include "libswscale/swscale.h" +#include "libswresample/swresample.h" +#include "libpostproc/postprocess.h" +#include "libavutil/avassert.h" +#include "libavutil/avstring.h" +#include "libavutil/bprint.h" +#include "libavutil/mathematics.h" +#include "libavutil/imgutils.h" +#include "libavutil/parseutils.h" +#include "libavutil/pixdesc.h" +#include "libavutil/eval.h" +#include "libavutil/dict.h" +#include "libavutil/opt.h" +#include "libavutil/cpu.h" +#include "libavutil/ffversion.h" +#include "cmdutils.h" +#if CONFIG_NETWORK +#include "libavformat/network.h" +#endif +#if HAVE_SYS_RESOURCE_H +#include +#include +#endif + +static int init_report(const char *env); + +struct SwsContext *sws_opts; +AVDictionary *swr_opts; +AVDictionary *format_opts, *codec_opts, *resample_opts; + +static FILE *report_file; +static int report_file_level = AV_LOG_DEBUG; +int hide_banner = 0; + +void init_opts(void) +{ + + if(CONFIG_SWSCALE) + sws_opts = sws_getContext(16, 16, 0, 16, 16, 0, SWS_BICUBIC, + NULL, NULL, NULL); +} + +void uninit_opts(void) +{ +#if CONFIG_SWSCALE + sws_freeContext(sws_opts); + sws_opts = NULL; +#endif + + av_dict_free(&swr_opts); + av_dict_free(&format_opts); + av_dict_free(&codec_opts); + av_dict_free(&resample_opts); +} + +void log_callback_help(void *ptr, int level, const char *fmt, va_list vl) +{ + vfprintf(stdout, fmt, vl); +} + +static void log_callback_report(void *ptr, int level, const char *fmt, va_list vl) +{ + va_list vl2; + char line[1024]; + static int print_prefix = 1; + + va_copy(vl2, vl); + av_log_default_callback(ptr, level, fmt, vl); + av_log_format_line(ptr, level, fmt, vl2, line, sizeof(line), &print_prefix); + va_end(vl2); + if (report_file_level >= level) { + fputs(line, report_file); + fflush(report_file); + } +} + +static void (*program_exit)(int ret); + +void register_exit(void (*cb)(int ret)) +{ + program_exit = cb; +} + +void exit_program(int ret) +{ + if (program_exit) + program_exit(ret); + + exit(ret); +} + +double parse_number_or_die(const char *context, const char *numstr, int type, + double min, double max) +{ + char *tail; + const char *error; + double d = av_strtod(numstr, &tail); + if (*tail) + error = "Expected number for %s but found: %s\n"; + else if (d < min || d > max) + error = "The value for %s was %s which is not within %f - %f\n"; + else if (type == OPT_INT64 && (int64_t)d != d) + error = "Expected int64 for %s but found %s\n"; + else if (type == OPT_INT && (int)d != d) + error = "Expected int for %s but found %s\n"; + else + return d; + av_log(NULL, AV_LOG_FATAL, error, context, numstr, min, max); + exit_program(1); + return 0; +} + +int64_t parse_time_or_die(const char *context, const char *timestr, + int is_duration) +{ + int64_t us; + if (av_parse_time(&us, timestr, is_duration) < 0) { + av_log(NULL, AV_LOG_FATAL, "Invalid %s specification for %s: %s\n", + is_duration ? "duration" : "date", context, timestr); + exit_program(1); + } + return us; +} + +void show_help_options(const OptionDef *options, const char *msg, int req_flags, + int rej_flags, int alt_flags) +{ + const OptionDef *po; + int first; + + first = 1; + for (po = options; po->name; po++) { + char buf[64]; + + if (((po->flags & req_flags) != req_flags) || + (alt_flags && !(po->flags & alt_flags)) || + (po->flags & rej_flags)) + continue; + + if (first) { + printf("%s\n", msg); + first = 0; + } + av_strlcpy(buf, po->name, sizeof(buf)); + if (po->argname) { + av_strlcat(buf, " ", sizeof(buf)); + av_strlcat(buf, po->argname, sizeof(buf)); + } + printf("-%-17s %s\n", buf, po->help); + } + printf("\n"); +} + +void show_help_children(const AVClass *class, int flags) +{ + const AVClass *child = NULL; + if (class->option) { + av_opt_show2(&class, NULL, flags, 0); + printf("\n"); + } + + while (child = av_opt_child_class_next(class, child)) + show_help_children(child, flags); +} + +static const OptionDef *find_option(const OptionDef *po, const char *name) +{ + const char *p = strchr(name, ':'); + int len = p ? p - name : strlen(name); + + while (po->name) { + if (!strncmp(name, po->name, len) && strlen(po->name) == len) + break; + po++; + } + return po; +} + +/* _WIN32 means using the windows libc - cygwin doesn't define that + * by default. HAVE_COMMANDLINETOARGVW is true on cygwin, while + * it doesn't provide the actual command line via GetCommandLineW(). */ +#if HAVE_COMMANDLINETOARGVW && defined(_WIN32) +#include +#include +/* Will be leaked on exit */ +static char** win32_argv_utf8 = NULL; +static int win32_argc = 0; + +/** + * Prepare command line arguments for executable. + * For Windows - perform wide-char to UTF-8 conversion. + * Input arguments should be main() function arguments. + * @param argc_ptr Arguments number (including executable) + * @param argv_ptr Arguments list. + */ +static void prepare_app_arguments(int *argc_ptr, char ***argv_ptr) +{ + char *argstr_flat; + wchar_t **argv_w; + int i, buffsize = 0, offset = 0; + + if (win32_argv_utf8) { + *argc_ptr = win32_argc; + *argv_ptr = win32_argv_utf8; + return; + } + + win32_argc = 0; + argv_w = CommandLineToArgvW(GetCommandLineW(), &win32_argc); + if (win32_argc <= 0 || !argv_w) + return; + + /* determine the UTF-8 buffer size (including NULL-termination symbols) */ + for (i = 0; i < win32_argc; i++) + buffsize += WideCharToMultiByte(CP_UTF8, 0, argv_w[i], -1, + NULL, 0, NULL, NULL); + + win32_argv_utf8 = av_mallocz(sizeof(char *) * (win32_argc + 1) + buffsize); + argstr_flat = (char *)win32_argv_utf8 + sizeof(char *) * (win32_argc + 1); + if (!win32_argv_utf8) { + LocalFree(argv_w); + return; + } + + for (i = 0; i < win32_argc; i++) { + win32_argv_utf8[i] = &argstr_flat[offset]; + offset += WideCharToMultiByte(CP_UTF8, 0, argv_w[i], -1, + &argstr_flat[offset], + buffsize - offset, NULL, NULL); + } + win32_argv_utf8[i] = NULL; + LocalFree(argv_w); + + *argc_ptr = win32_argc; + *argv_ptr = win32_argv_utf8; +} +#else +static inline void prepare_app_arguments(int *argc_ptr, char ***argv_ptr) +{ + /* nothing to do */ +} +#endif /* HAVE_COMMANDLINETOARGVW */ + +static int write_option(void *optctx, const OptionDef *po, const char *opt, + const char *arg) +{ + /* new-style options contain an offset into optctx, old-style address of + * a global var*/ + void *dst = po->flags & (OPT_OFFSET | OPT_SPEC) ? + (uint8_t *)optctx + po->u.off : po->u.dst_ptr; + int *dstcount; + + if (po->flags & OPT_SPEC) { + SpecifierOpt **so = dst; + char *p = strchr(opt, ':'); + + dstcount = (int *)(so + 1); + *so = grow_array(*so, sizeof(**so), dstcount, *dstcount + 1); + (*so)[*dstcount - 1].specifier = av_strdup(p ? p + 1 : ""); + dst = &(*so)[*dstcount - 1].u; + } + + if (po->flags & OPT_STRING) { + char *str; + str = av_strdup(arg); + av_freep(dst); + *(char **)dst = str; + } else if (po->flags & OPT_BOOL || po->flags & OPT_INT) { + *(int *)dst = parse_number_or_die(opt, arg, OPT_INT64, INT_MIN, INT_MAX); + } else if (po->flags & OPT_INT64) { + *(int64_t *)dst = parse_number_or_die(opt, arg, OPT_INT64, INT64_MIN, INT64_MAX); + } else if (po->flags & OPT_TIME) { + *(int64_t *)dst = parse_time_or_die(opt, arg, 1); + } else if (po->flags & OPT_FLOAT) { + *(float *)dst = parse_number_or_die(opt, arg, OPT_FLOAT, -INFINITY, INFINITY); + } else if (po->flags & OPT_DOUBLE) { + *(double *)dst = parse_number_or_die(opt, arg, OPT_DOUBLE, -INFINITY, INFINITY); + } else if (po->u.func_arg) { + int ret = po->u.func_arg(optctx, opt, arg); + if (ret < 0) { + av_log(NULL, AV_LOG_ERROR, + "Failed to set value '%s' for option '%s': %s\n", + arg, opt, av_err2str(ret)); + return ret; + } + } + if (po->flags & OPT_EXIT) + exit_program(0); + + return 0; +} + +int parse_option(void *optctx, const char *opt, const char *arg, + const OptionDef *options) +{ + const OptionDef *po; + int ret; + + po = find_option(options, opt); + if (!po->name && opt[0] == 'n' && opt[1] == 'o') { + /* handle 'no' bool option */ + po = find_option(options, opt + 2); + if ((po->name && (po->flags & OPT_BOOL))) + arg = "0"; + } else if (po->flags & OPT_BOOL) + arg = "1"; + + if (!po->name) + po = find_option(options, "default"); + if (!po->name) { + av_log(NULL, AV_LOG_ERROR, "Unrecognized option '%s'\n", opt); + return AVERROR(EINVAL); + } + if (po->flags & HAS_ARG && !arg) { + av_log(NULL, AV_LOG_ERROR, "Missing argument for option '%s'\n", opt); + return AVERROR(EINVAL); + } + + ret = write_option(optctx, po, opt, arg); + if (ret < 0) + return ret; + + return !!(po->flags & HAS_ARG); +} + +void parse_options(void *optctx, int argc, char **argv, const OptionDef *options, + void (*parse_arg_function)(void *, const char*)) +{ + const char *opt; + int optindex, handleoptions = 1, ret; + + /* perform system-dependent conversions for arguments list */ + prepare_app_arguments(&argc, &argv); + + /* parse options */ + optindex = 1; + while (optindex < argc) { + opt = argv[optindex++]; + + if (handleoptions && opt[0] == '-' && opt[1] != '\0') { + if (opt[1] == '-' && opt[2] == '\0') { + handleoptions = 0; + continue; + } + opt++; + + if ((ret = parse_option(optctx, opt, argv[optindex], options)) < 0) + exit_program(1); + optindex += ret; + } else { + if (parse_arg_function) + parse_arg_function(optctx, opt); + } + } +} + +int parse_optgroup(void *optctx, OptionGroup *g) +{ + int i, ret; + + av_log(NULL, AV_LOG_DEBUG, "Parsing a group of options: %s %s.\n", + g->group_def->name, g->arg); + + for (i = 0; i < g->nb_opts; i++) { + Option *o = &g->opts[i]; + + if (g->group_def->flags && + !(g->group_def->flags & o->opt->flags)) { + av_log(NULL, AV_LOG_ERROR, "Option %s (%s) cannot be applied to " + "%s %s -- you are trying to apply an input option to an " + "output file or vice versa. Move this option before the " + "file it belongs to.\n", o->key, o->opt->help, + g->group_def->name, g->arg); + return AVERROR(EINVAL); + } + + av_log(NULL, AV_LOG_DEBUG, "Applying option %s (%s) with argument %s.\n", + o->key, o->opt->help, o->val); + + ret = write_option(optctx, o->opt, o->key, o->val); + if (ret < 0) + return ret; + } + + av_log(NULL, AV_LOG_DEBUG, "Successfully parsed a group of options.\n"); + + return 0; +} + +int locate_option(int argc, char **argv, const OptionDef *options, + const char *optname) +{ + const OptionDef *po; + int i; + + for (i = 1; i < argc; i++) { + const char *cur_opt = argv[i]; + + if (*cur_opt++ != '-') + continue; + + po = find_option(options, cur_opt); + if (!po->name && cur_opt[0] == 'n' && cur_opt[1] == 'o') + po = find_option(options, cur_opt + 2); + + if ((!po->name && !strcmp(cur_opt, optname)) || + (po->name && !strcmp(optname, po->name))) + return i; + + if (po->flags & HAS_ARG) + i++; + } + return 0; +} + +static void dump_argument(const char *a) +{ + const unsigned char *p; + + for (p = a; *p; p++) + if (!((*p >= '+' && *p <= ':') || (*p >= '@' && *p <= 'Z') || + *p == '_' || (*p >= 'a' && *p <= 'z'))) + break; + if (!*p) { + fputs(a, report_file); + return; + } + fputc('"', report_file); + for (p = a; *p; p++) { + if (*p == '\\' || *p == '"' || *p == '$' || *p == '`') + fprintf(report_file, "\\%c", *p); + else if (*p < ' ' || *p > '~') + fprintf(report_file, "\\x%02x", *p); + else + fputc(*p, report_file); + } + fputc('"', report_file); +} + +void parse_loglevel(int argc, char **argv, const OptionDef *options) +{ + int idx = locate_option(argc, argv, options, "loglevel"); + const char *env; + if (!idx) + idx = locate_option(argc, argv, options, "v"); + if (idx && argv[idx + 1]) + opt_loglevel(NULL, "loglevel", argv[idx + 1]); + idx = locate_option(argc, argv, options, "report"); + if ((env = getenv("FFREPORT")) || idx) { + init_report(env); + if (report_file) { + int i; + fprintf(report_file, "Command line:\n"); + for (i = 0; i < argc; i++) { + dump_argument(argv[i]); + fputc(i < argc - 1 ? ' ' : '\n', report_file); + } + fflush(report_file); + } + } + idx = locate_option(argc, argv, options, "hide_banner"); + if (idx) + hide_banner = 1; +} + +static const AVOption *opt_find(void *obj, const char *name, const char *unit, + int opt_flags, int search_flags) +{ + const AVOption *o = av_opt_find(obj, name, unit, opt_flags, search_flags); + if(o && !o->flags) + return NULL; + return o; +} + +#define FLAGS (o->type == AV_OPT_TYPE_FLAGS) ? AV_DICT_APPEND : 0 +int opt_default(void *optctx, const char *opt, const char *arg) +{ + const AVOption *o; + int consumed = 0; + char opt_stripped[128]; + const char *p; + const AVClass *cc = avcodec_get_class(), *fc = avformat_get_class(); +#if CONFIG_AVRESAMPLE + const AVClass *rc = avresample_get_class(); +#endif + const AVClass *sc, *swr_class; + + if (!strcmp(opt, "debug") || !strcmp(opt, "fdebug")) + av_log_set_level(AV_LOG_DEBUG); + + if (!(p = strchr(opt, ':'))) + p = opt + strlen(opt); + av_strlcpy(opt_stripped, opt, FFMIN(sizeof(opt_stripped), p - opt + 1)); + + if ((o = opt_find(&cc, opt_stripped, NULL, 0, + AV_OPT_SEARCH_CHILDREN | AV_OPT_SEARCH_FAKE_OBJ)) || + ((opt[0] == 'v' || opt[0] == 'a' || opt[0] == 's') && + (o = opt_find(&cc, opt + 1, NULL, 0, AV_OPT_SEARCH_FAKE_OBJ)))) { + av_dict_set(&codec_opts, opt, arg, FLAGS); + consumed = 1; + } + if ((o = opt_find(&fc, opt, NULL, 0, + AV_OPT_SEARCH_CHILDREN | AV_OPT_SEARCH_FAKE_OBJ))) { + av_dict_set(&format_opts, opt, arg, FLAGS); + if (consumed) + av_log(NULL, AV_LOG_VERBOSE, "Routing option %s to both codec and muxer layer\n", opt); + consumed = 1; + } +#if CONFIG_SWSCALE + sc = sws_get_class(); + if (!consumed && opt_find(&sc, opt, NULL, 0, + AV_OPT_SEARCH_CHILDREN | AV_OPT_SEARCH_FAKE_OBJ)) { + // XXX we only support sws_flags, not arbitrary sws options + int ret = av_opt_set(sws_opts, opt, arg, 0); + if (ret < 0) { + av_log(NULL, AV_LOG_ERROR, "Error setting option %s.\n", opt); + return ret; + } + consumed = 1; + } +#else + if (!consumed && !strcmp(opt, "sws_flags")) { + av_log(NULL, AV_LOG_WARNING, "Ignoring %s %s, due to disabled swscale\n", opt, arg); + consumed = 1; + } +#endif +#if CONFIG_SWRESAMPLE + swr_class = swr_get_class(); + if (!consumed && (o=opt_find(&swr_class, opt, NULL, 0, + AV_OPT_SEARCH_CHILDREN | AV_OPT_SEARCH_FAKE_OBJ))) { + struct SwrContext *swr = swr_alloc(); + int ret = av_opt_set(swr, opt, arg, 0); + swr_free(&swr); + if (ret < 0) { + av_log(NULL, AV_LOG_ERROR, "Error setting option %s.\n", opt); + return ret; + } + av_dict_set(&swr_opts, opt, arg, FLAGS); + consumed = 1; + } +#endif +#if CONFIG_AVRESAMPLE + if ((o=opt_find(&rc, opt, NULL, 0, + AV_OPT_SEARCH_CHILDREN | AV_OPT_SEARCH_FAKE_OBJ))) { + av_dict_set(&resample_opts, opt, arg, FLAGS); + consumed = 1; + } +#endif + + if (consumed) + return 0; + return AVERROR_OPTION_NOT_FOUND; +} + +/* + * Check whether given option is a group separator. + * + * @return index of the group definition that matched or -1 if none + */ +static int match_group_separator(const OptionGroupDef *groups, int nb_groups, + const char *opt) +{ + int i; + + for (i = 0; i < nb_groups; i++) { + const OptionGroupDef *p = &groups[i]; + if (p->sep && !strcmp(p->sep, opt)) + return i; + } + + return -1; +} + +/* + * Finish parsing an option group. + * + * @param group_idx which group definition should this group belong to + * @param arg argument of the group delimiting option + */ +static void finish_group(OptionParseContext *octx, int group_idx, + const char *arg) +{ + OptionGroupList *l = &octx->groups[group_idx]; + OptionGroup *g; + + GROW_ARRAY(l->groups, l->nb_groups); + g = &l->groups[l->nb_groups - 1]; + + *g = octx->cur_group; + g->arg = arg; + g->group_def = l->group_def; +#if CONFIG_SWSCALE + g->sws_opts = sws_opts; +#endif + g->swr_opts = swr_opts; + g->codec_opts = codec_opts; + g->format_opts = format_opts; + g->resample_opts = resample_opts; + + codec_opts = NULL; + format_opts = NULL; + resample_opts = NULL; +#if CONFIG_SWSCALE + sws_opts = NULL; +#endif + swr_opts = NULL; + init_opts(); + + memset(&octx->cur_group, 0, sizeof(octx->cur_group)); +} + +/* + * Add an option instance to currently parsed group. + */ +static void add_opt(OptionParseContext *octx, const OptionDef *opt, + const char *key, const char *val) +{ + int global = !(opt->flags & (OPT_PERFILE | OPT_SPEC | OPT_OFFSET)); + OptionGroup *g = global ? &octx->global_opts : &octx->cur_group; + + GROW_ARRAY(g->opts, g->nb_opts); + g->opts[g->nb_opts - 1].opt = opt; + g->opts[g->nb_opts - 1].key = key; + g->opts[g->nb_opts - 1].val = val; +} + +static void init_parse_context(OptionParseContext *octx, + const OptionGroupDef *groups, int nb_groups) +{ + static const OptionGroupDef global_group = { "global" }; + int i; + + memset(octx, 0, sizeof(*octx)); + + octx->nb_groups = nb_groups; + octx->groups = av_mallocz_array(octx->nb_groups, sizeof(*octx->groups)); + if (!octx->groups) + exit_program(1); + + for (i = 0; i < octx->nb_groups; i++) + octx->groups[i].group_def = &groups[i]; + + octx->global_opts.group_def = &global_group; + octx->global_opts.arg = ""; + + init_opts(); +} + +void uninit_parse_context(OptionParseContext *octx) +{ + int i, j; + + for (i = 0; i < octx->nb_groups; i++) { + OptionGroupList *l = &octx->groups[i]; + + for (j = 0; j < l->nb_groups; j++) { + av_freep(&l->groups[j].opts); + av_dict_free(&l->groups[j].codec_opts); + av_dict_free(&l->groups[j].format_opts); + av_dict_free(&l->groups[j].resample_opts); +#if CONFIG_SWSCALE + sws_freeContext(l->groups[j].sws_opts); +#endif + av_dict_free(&l->groups[j].swr_opts); + } + av_freep(&l->groups); + } + av_freep(&octx->groups); + + av_freep(&octx->cur_group.opts); + av_freep(&octx->global_opts.opts); + + uninit_opts(); +} + +int split_commandline(OptionParseContext *octx, int argc, char *argv[], + const OptionDef *options, + const OptionGroupDef *groups, int nb_groups) +{ + int optindex = 1; + int dashdash = -2; + + /* perform system-dependent conversions for arguments list */ + prepare_app_arguments(&argc, &argv); + + init_parse_context(octx, groups, nb_groups); + av_log(NULL, AV_LOG_DEBUG, "Splitting the commandline.\n"); + + while (optindex < argc) { + const char *opt = argv[optindex++], *arg; + const OptionDef *po; + int ret; + + av_log(NULL, AV_LOG_DEBUG, "Reading option '%s' ...", opt); + + if (opt[0] == '-' && opt[1] == '-' && !opt[2]) { + dashdash = optindex; + continue; + } + /* unnamed group separators, e.g. output filename */ + if (opt[0] != '-' || !opt[1] || dashdash+1 == optindex) { + finish_group(octx, 0, opt); + av_log(NULL, AV_LOG_DEBUG, " matched as %s.\n", groups[0].name); + continue; + } + opt++; + +#define GET_ARG(arg) \ +do { \ + arg = argv[optindex++]; \ + if (!arg) { \ + av_log(NULL, AV_LOG_ERROR, "Missing argument for option '%s'.\n", opt);\ + return AVERROR(EINVAL); \ + } \ +} while (0) + + /* named group separators, e.g. -i */ + if ((ret = match_group_separator(groups, nb_groups, opt)) >= 0) { + GET_ARG(arg); + finish_group(octx, ret, arg); + av_log(NULL, AV_LOG_DEBUG, " matched as %s with argument '%s'.\n", + groups[ret].name, arg); + continue; + } + + /* normal options */ + po = find_option(options, opt); + if (po->name) { + if (po->flags & OPT_EXIT) { + /* optional argument, e.g. -h */ + arg = argv[optindex++]; + } else if (po->flags & HAS_ARG) { + GET_ARG(arg); + } else { + arg = "1"; + } + + add_opt(octx, po, opt, arg); + av_log(NULL, AV_LOG_DEBUG, " matched as option '%s' (%s) with " + "argument '%s'.\n", po->name, po->help, arg); + continue; + } + + /* AVOptions */ + if (argv[optindex]) { + ret = opt_default(NULL, opt, argv[optindex]); + if (ret >= 0) { + av_log(NULL, AV_LOG_DEBUG, " matched as AVOption '%s' with " + "argument '%s'.\n", opt, argv[optindex]); + optindex++; + continue; + } else if (ret != AVERROR_OPTION_NOT_FOUND) { + av_log(NULL, AV_LOG_ERROR, "Error parsing option '%s' " + "with argument '%s'.\n", opt, argv[optindex]); + return ret; + } + } + + /* boolean -nofoo options */ + if (opt[0] == 'n' && opt[1] == 'o' && + (po = find_option(options, opt + 2)) && + po->name && po->flags & OPT_BOOL) { + add_opt(octx, po, opt, "0"); + av_log(NULL, AV_LOG_DEBUG, " matched as option '%s' (%s) with " + "argument 0.\n", po->name, po->help); + continue; + } + + av_log(NULL, AV_LOG_ERROR, "Unrecognized option '%s'.\n", opt); + return AVERROR_OPTION_NOT_FOUND; + } + + if (octx->cur_group.nb_opts || codec_opts || format_opts || resample_opts) + av_log(NULL, AV_LOG_WARNING, "Trailing options were found on the " + "commandline.\n"); + + av_log(NULL, AV_LOG_DEBUG, "Finished splitting the commandline.\n"); + + return 0; +} + +int opt_cpuflags(void *optctx, const char *opt, const char *arg) +{ + int ret; + unsigned flags = av_get_cpu_flags(); + + if ((ret = av_parse_cpu_caps(&flags, arg)) < 0) + return ret; + + av_force_cpu_flags(flags); + return 0; +} + +int opt_loglevel(void *optctx, const char *opt, const char *arg) +{ + const struct { const char *name; int level; } log_levels[] = { + { "quiet" , AV_LOG_QUIET }, + { "panic" , AV_LOG_PANIC }, + { "fatal" , AV_LOG_FATAL }, + { "error" , AV_LOG_ERROR }, + { "warning", AV_LOG_WARNING }, + { "info" , AV_LOG_INFO }, + { "verbose", AV_LOG_VERBOSE }, + { "debug" , AV_LOG_DEBUG }, + }; + char *tail; + int level; + int flags; + int i; + + flags = av_log_get_flags(); + tail = strstr(arg, "repeat"); + if (tail) + flags &= ~AV_LOG_SKIP_REPEATED; + else + flags |= AV_LOG_SKIP_REPEATED; + + av_log_set_flags(flags); + if (tail == arg) + arg += 6 + (arg[6]=='+'); + if(tail && !*arg) + return 0; + + for (i = 0; i < FF_ARRAY_ELEMS(log_levels); i++) { + if (!strcmp(log_levels[i].name, arg)) { + av_log_set_level(log_levels[i].level); + return 0; + } + } + + level = strtol(arg, &tail, 10); + if (*tail) { + av_log(NULL, AV_LOG_FATAL, "Invalid loglevel \"%s\". " + "Possible levels are numbers or:\n", arg); + for (i = 0; i < FF_ARRAY_ELEMS(log_levels); i++) + av_log(NULL, AV_LOG_FATAL, "\"%s\"\n", log_levels[i].name); + exit_program(1); + } + av_log_set_level(level); + return 0; +} + +static void expand_filename_template(AVBPrint *bp, const char *template, + struct tm *tm) +{ + int c; + + while ((c = *(template++))) { + if (c == '%') { + if (!(c = *(template++))) + break; + switch (c) { + case 'p': + av_bprintf(bp, "%s", program_name); + break; + case 't': + av_bprintf(bp, "%04d%02d%02d-%02d%02d%02d", + tm->tm_year + 1900, tm->tm_mon + 1, tm->tm_mday, + tm->tm_hour, tm->tm_min, tm->tm_sec); + break; + case '%': + av_bprint_chars(bp, c, 1); + break; + } + } else { + av_bprint_chars(bp, c, 1); + } + } +} + +static int init_report(const char *env) +{ + char *filename_template = NULL; + char *key, *val; + int ret, count = 0; + time_t now; + struct tm *tm; + AVBPrint filename; + + if (report_file) /* already opened */ + return 0; + time(&now); + tm = localtime(&now); + + while (env && *env) { + if ((ret = av_opt_get_key_value(&env, "=", ":", 0, &key, &val)) < 0) { + if (count) + av_log(NULL, AV_LOG_ERROR, + "Failed to parse FFREPORT environment variable: %s\n", + av_err2str(ret)); + break; + } + if (*env) + env++; + count++; + if (!strcmp(key, "file")) { + av_free(filename_template); + filename_template = val; + val = NULL; + } else if (!strcmp(key, "level")) { + char *tail; + report_file_level = strtol(val, &tail, 10); + if (*tail) { + av_log(NULL, AV_LOG_FATAL, "Invalid report file level\n"); + exit_program(1); + } + } else { + av_log(NULL, AV_LOG_ERROR, "Unknown key '%s' in FFREPORT\n", key); + } + av_free(val); + av_free(key); + } + + av_bprint_init(&filename, 0, 1); + expand_filename_template(&filename, + av_x_if_null(filename_template, "%p-%t.log"), tm); + av_free(filename_template); + if (!av_bprint_is_complete(&filename)) { + av_log(NULL, AV_LOG_ERROR, "Out of memory building report file name\n"); + return AVERROR(ENOMEM); + } + + report_file = fopen(filename.str, "w"); + if (!report_file) { + av_log(NULL, AV_LOG_ERROR, "Failed to open report \"%s\": %s\n", + filename.str, strerror(errno)); + return AVERROR(errno); + } + av_log_set_callback(log_callback_report); + av_log(NULL, AV_LOG_INFO, + "%s started on %04d-%02d-%02d at %02d:%02d:%02d\n" + "Report written to \"%s\"\n", + program_name, + tm->tm_year + 1900, tm->tm_mon + 1, tm->tm_mday, + tm->tm_hour, tm->tm_min, tm->tm_sec, + filename.str); + av_bprint_finalize(&filename, NULL); + return 0; +} + +int opt_report(const char *opt) +{ + return init_report(NULL); +} + +int opt_max_alloc(void *optctx, const char *opt, const char *arg) +{ + char *tail; + size_t max; + + max = strtol(arg, &tail, 10); + if (*tail) { + av_log(NULL, AV_LOG_FATAL, "Invalid max_alloc \"%s\".\n", arg); + exit_program(1); + } + av_max_alloc(max); + return 0; +} + +int opt_timelimit(void *optctx, const char *opt, const char *arg) +{ +#if HAVE_SETRLIMIT + int lim = parse_number_or_die(opt, arg, OPT_INT64, 0, INT_MAX); + struct rlimit rl = { lim, lim + 1 }; + if (setrlimit(RLIMIT_CPU, &rl)) + perror("setrlimit"); +#else + av_log(NULL, AV_LOG_WARNING, "-%s not implemented on this OS\n", opt); +#endif + return 0; +} + +void print_error(const char *filename, int err) +{ + char errbuf[128]; + const char *errbuf_ptr = errbuf; + + if (av_strerror(err, errbuf, sizeof(errbuf)) < 0) + errbuf_ptr = strerror(AVUNERROR(err)); + av_log(NULL, AV_LOG_ERROR, "%s: %s\n", filename, errbuf_ptr); +} + +static int warned_cfg = 0; + +#define INDENT 1 +#define SHOW_VERSION 2 +#define SHOW_CONFIG 4 +#define SHOW_COPYRIGHT 8 + +#define PRINT_LIB_INFO(libname, LIBNAME, flags, level) \ + if (CONFIG_##LIBNAME) { \ + const char *indent = flags & INDENT? " " : ""; \ + if (flags & SHOW_VERSION) { \ + unsigned int version = libname##_version(); \ + av_log(NULL, level, \ + "%slib%-11s %2d.%3d.%3d / %2d.%3d.%3d\n", \ + indent, #libname, \ + LIB##LIBNAME##_VERSION_MAJOR, \ + LIB##LIBNAME##_VERSION_MINOR, \ + LIB##LIBNAME##_VERSION_MICRO, \ + version >> 16, version >> 8 & 0xff, version & 0xff); \ + } \ + if (flags & SHOW_CONFIG) { \ + const char *cfg = libname##_configuration(); \ + if (strcmp(FFMPEG_CONFIGURATION, cfg)) { \ + if (!warned_cfg) { \ + av_log(NULL, level, \ + "%sWARNING: library configuration mismatch\n", \ + indent); \ + warned_cfg = 1; \ + } \ + av_log(NULL, level, "%s%-11s configuration: %s\n", \ + indent, #libname, cfg); \ + } \ + } \ + } \ + +static void print_all_libs_info(int flags, int level) +{ + PRINT_LIB_INFO(avutil, AVUTIL, flags, level); + PRINT_LIB_INFO(avcodec, AVCODEC, flags, level); + PRINT_LIB_INFO(avformat, AVFORMAT, flags, level); + PRINT_LIB_INFO(avdevice, AVDEVICE, flags, level); + PRINT_LIB_INFO(avfilter, AVFILTER, flags, level); + PRINT_LIB_INFO(avresample, AVRESAMPLE, flags, level); + PRINT_LIB_INFO(swscale, SWSCALE, flags, level); + PRINT_LIB_INFO(swresample,SWRESAMPLE, flags, level); + PRINT_LIB_INFO(postproc, POSTPROC, flags, level); +} + +static void print_program_info(int flags, int level) +{ + const char *indent = flags & INDENT? " " : ""; + + av_log(NULL, level, "%s version " FFMPEG_VERSION, program_name); + if (flags & SHOW_COPYRIGHT) + av_log(NULL, level, " Copyright (c) %d-%d the FFmpeg developers", + program_birth_year, CONFIG_THIS_YEAR); + av_log(NULL, level, "\n"); + av_log(NULL, level, "%sbuilt on %s %s with %s\n", + indent, __DATE__, __TIME__, CC_IDENT); + + av_log(NULL, level, "%sconfiguration: " FFMPEG_CONFIGURATION "\n", indent); +} + +static void print_buildconf(int flags, int level) +{ + const char *indent = flags & INDENT ? " " : ""; + char str[] = { FFMPEG_CONFIGURATION }; + char *conflist, *remove_tilde, *splitconf; + + // Change all the ' --' strings to '~--' so that + // they can be identified as tokens. + while ((conflist = strstr(str, " --")) != NULL) { + strncpy(conflist, "~--", 3); + } + + // Compensate for the weirdness this would cause + // when passing 'pkg-config --static'. + while ((remove_tilde = strstr(str, "pkg-config~")) != NULL) { + strncpy(remove_tilde, "pkg-config ", 11); + } + + splitconf = strtok(str, "~"); + av_log(NULL, level, "\n%sconfiguration:\n", indent); + while (splitconf != NULL) { + av_log(NULL, level, "%s%s%s\n", indent, indent, splitconf); + splitconf = strtok(NULL, "~"); + } +} + +void show_banner(int argc, char **argv, const OptionDef *options) +{ + int idx = locate_option(argc, argv, options, "version"); + if (hide_banner || idx) + return; + + print_program_info (INDENT|SHOW_COPYRIGHT, AV_LOG_INFO); + print_all_libs_info(INDENT|SHOW_CONFIG, AV_LOG_INFO); + print_all_libs_info(INDENT|SHOW_VERSION, AV_LOG_INFO); +} + +int show_version(void *optctx, const char *opt, const char *arg) +{ + av_log_set_callback(log_callback_help); + print_program_info (SHOW_COPYRIGHT, AV_LOG_INFO); + print_all_libs_info(SHOW_VERSION, AV_LOG_INFO); + + return 0; +} + +int show_buildconf(void *optctx, const char *opt, const char *arg) +{ + av_log_set_callback(log_callback_help); + print_buildconf (INDENT|0, AV_LOG_INFO); + + return 0; +} + +int show_license(void *optctx, const char *opt, const char *arg) +{ +#if CONFIG_NONFREE + printf( + "This version of %s has nonfree parts compiled in.\n" + "Therefore it is not legally redistributable.\n", + program_name ); +#elif CONFIG_GPLV3 + printf( + "%s is free software; you can redistribute it and/or modify\n" + "it under the terms of the GNU General Public License as published by\n" + "the Free Software Foundation; either version 3 of the License, or\n" + "(at your option) any later version.\n" + "\n" + "%s is distributed in the hope that it will be useful,\n" + "but WITHOUT ANY WARRANTY; without even the implied warranty of\n" + "MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n" + "GNU General Public License for more details.\n" + "\n" + "You should have received a copy of the GNU General Public License\n" + "along with %s. If not, see .\n", + program_name, program_name, program_name ); +#elif CONFIG_GPL + printf( + "%s is free software; you can redistribute it and/or modify\n" + "it under the terms of the GNU General Public License as published by\n" + "the Free Software Foundation; either version 2 of the License, or\n" + "(at your option) any later version.\n" + "\n" + "%s is distributed in the hope that it will be useful,\n" + "but WITHOUT ANY WARRANTY; without even the implied warranty of\n" + "MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n" + "GNU General Public License for more details.\n" + "\n" + "You should have received a copy of the GNU General Public License\n" + "along with %s; if not, write to the Free Software\n" + "Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA\n", + program_name, program_name, program_name ); +#elif CONFIG_LGPLV3 + printf( + "%s is free software; you can redistribute it and/or modify\n" + "it under the terms of the GNU Lesser General Public License as published by\n" + "the Free Software Foundation; either version 3 of the License, or\n" + "(at your option) any later version.\n" + "\n" + "%s is distributed in the hope that it will be useful,\n" + "but WITHOUT ANY WARRANTY; without even the implied warranty of\n" + "MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n" + "GNU Lesser General Public License for more details.\n" + "\n" + "You should have received a copy of the GNU Lesser General Public License\n" + "along with %s. If not, see .\n", + program_name, program_name, program_name ); +#else + printf( + "%s is free software; you can redistribute it and/or\n" + "modify it under the terms of the GNU Lesser General Public\n" + "License as published by the Free Software Foundation; either\n" + "version 2.1 of the License, or (at your option) any later version.\n" + "\n" + "%s is distributed in the hope that it will be useful,\n" + "but WITHOUT ANY WARRANTY; without even the implied warranty of\n" + "MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU\n" + "Lesser General Public License for more details.\n" + "\n" + "You should have received a copy of the GNU Lesser General Public\n" + "License along with %s; if not, write to the Free Software\n" + "Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA\n", + program_name, program_name, program_name ); +#endif + + return 0; +} + +static int is_device(const AVClass *avclass) +{ + if (!avclass) + return 0; + return avclass->category == AV_CLASS_CATEGORY_DEVICE_VIDEO_OUTPUT || + avclass->category == AV_CLASS_CATEGORY_DEVICE_VIDEO_INPUT || + avclass->category == AV_CLASS_CATEGORY_DEVICE_AUDIO_OUTPUT || + avclass->category == AV_CLASS_CATEGORY_DEVICE_AUDIO_INPUT || + avclass->category == AV_CLASS_CATEGORY_DEVICE_OUTPUT || + avclass->category == AV_CLASS_CATEGORY_DEVICE_INPUT; +} + +static int show_formats_devices(void *optctx, const char *opt, const char *arg, int device_only) +{ + AVInputFormat *ifmt = NULL; + AVOutputFormat *ofmt = NULL; + const char *last_name; + int is_dev; + + printf("%s\n" + " D. = Demuxing supported\n" + " .E = Muxing supported\n" + " --\n", device_only ? "Devices:" : "File formats:"); + last_name = "000"; + for (;;) { + int decode = 0; + int encode = 0; + const char *name = NULL; + const char *long_name = NULL; + + while ((ofmt = av_oformat_next(ofmt))) { + is_dev = is_device(ofmt->priv_class); + if (!is_dev && device_only) + continue; + if ((!name || strcmp(ofmt->name, name) < 0) && + strcmp(ofmt->name, last_name) > 0) { + name = ofmt->name; + long_name = ofmt->long_name; + encode = 1; + } + } + while ((ifmt = av_iformat_next(ifmt))) { + is_dev = is_device(ifmt->priv_class); + if (!is_dev && device_only) + continue; + if ((!name || strcmp(ifmt->name, name) < 0) && + strcmp(ifmt->name, last_name) > 0) { + name = ifmt->name; + long_name = ifmt->long_name; + encode = 0; + } + if (name && strcmp(ifmt->name, name) == 0) + decode = 1; + } + if (!name) + break; + last_name = name; + + printf(" %s%s %-15s %s\n", + decode ? "D" : " ", + encode ? "E" : " ", + name, + long_name ? long_name:" "); + } + return 0; +} + +int show_formats(void *optctx, const char *opt, const char *arg) +{ + return show_formats_devices(optctx, opt, arg, 0); +} + +int show_devices(void *optctx, const char *opt, const char *arg) +{ + return show_formats_devices(optctx, opt, arg, 1); +} + +#define PRINT_CODEC_SUPPORTED(codec, field, type, list_name, term, get_name) \ + if (codec->field) { \ + const type *p = codec->field; \ + \ + printf(" Supported " list_name ":"); \ + while (*p != term) { \ + get_name(*p); \ + printf(" %s", name); \ + p++; \ + } \ + printf("\n"); \ + } \ + +static void print_codec(const AVCodec *c) +{ + int encoder = av_codec_is_encoder(c); + + printf("%s %s [%s]:\n", encoder ? "Encoder" : "Decoder", c->name, + c->long_name ? c->long_name : ""); + + if (c->type == AVMEDIA_TYPE_VIDEO || + c->type == AVMEDIA_TYPE_AUDIO) { + printf(" Threading capabilities: "); + switch (c->capabilities & (CODEC_CAP_FRAME_THREADS | + CODEC_CAP_SLICE_THREADS)) { + case CODEC_CAP_FRAME_THREADS | + CODEC_CAP_SLICE_THREADS: printf("frame and slice"); break; + case CODEC_CAP_FRAME_THREADS: printf("frame"); break; + case CODEC_CAP_SLICE_THREADS: printf("slice"); break; + default: printf("no"); break; + } + printf("\n"); + } + + if (c->supported_framerates) { + const AVRational *fps = c->supported_framerates; + + printf(" Supported framerates:"); + while (fps->num) { + printf(" %d/%d", fps->num, fps->den); + fps++; + } + printf("\n"); + } + PRINT_CODEC_SUPPORTED(c, pix_fmts, enum AVPixelFormat, "pixel formats", + AV_PIX_FMT_NONE, GET_PIX_FMT_NAME); + PRINT_CODEC_SUPPORTED(c, supported_samplerates, int, "sample rates", 0, + GET_SAMPLE_RATE_NAME); + PRINT_CODEC_SUPPORTED(c, sample_fmts, enum AVSampleFormat, "sample formats", + AV_SAMPLE_FMT_NONE, GET_SAMPLE_FMT_NAME); + PRINT_CODEC_SUPPORTED(c, channel_layouts, uint64_t, "channel layouts", + 0, GET_CH_LAYOUT_DESC); + + if (c->priv_class) { + show_help_children(c->priv_class, + AV_OPT_FLAG_ENCODING_PARAM | + AV_OPT_FLAG_DECODING_PARAM); + } +} + +static char get_media_type_char(enum AVMediaType type) +{ + switch (type) { + case AVMEDIA_TYPE_VIDEO: return 'V'; + case AVMEDIA_TYPE_AUDIO: return 'A'; + case AVMEDIA_TYPE_DATA: return 'D'; + case AVMEDIA_TYPE_SUBTITLE: return 'S'; + case AVMEDIA_TYPE_ATTACHMENT:return 'T'; + default: return '?'; + } +} + +static const AVCodec *next_codec_for_id(enum AVCodecID id, const AVCodec *prev, + int encoder) +{ + while ((prev = av_codec_next(prev))) { + if (prev->id == id && + (encoder ? av_codec_is_encoder(prev) : av_codec_is_decoder(prev))) + return prev; + } + return NULL; +} + +static int compare_codec_desc(const void *a, const void *b) +{ + const AVCodecDescriptor * const *da = a; + const AVCodecDescriptor * const *db = b; + + return (*da)->type != (*db)->type ? (*da)->type - (*db)->type : + strcmp((*da)->name, (*db)->name); +} + +static unsigned get_codecs_sorted(const AVCodecDescriptor ***rcodecs) +{ + const AVCodecDescriptor *desc = NULL; + const AVCodecDescriptor **codecs; + unsigned nb_codecs = 0, i = 0; + + while ((desc = avcodec_descriptor_next(desc))) + nb_codecs++; + if (!(codecs = av_calloc(nb_codecs, sizeof(*codecs)))) { + av_log(NULL, AV_LOG_ERROR, "Out of memory\n"); + exit_program(1); + } + desc = NULL; + while ((desc = avcodec_descriptor_next(desc))) + codecs[i++] = desc; + av_assert0(i == nb_codecs); + qsort(codecs, nb_codecs, sizeof(*codecs), compare_codec_desc); + *rcodecs = codecs; + return nb_codecs; +} + +static void print_codecs_for_id(enum AVCodecID id, int encoder) +{ + const AVCodec *codec = NULL; + + printf(" (%s: ", encoder ? "encoders" : "decoders"); + + while ((codec = next_codec_for_id(id, codec, encoder))) + printf("%s ", codec->name); + + printf(")"); +} + +int show_codecs(void *optctx, const char *opt, const char *arg) +{ + const AVCodecDescriptor **codecs; + unsigned i, nb_codecs = get_codecs_sorted(&codecs); + + printf("Codecs:\n" + " D..... = Decoding supported\n" + " .E.... = Encoding supported\n" + " ..V... = Video codec\n" + " ..A... = Audio codec\n" + " ..S... = Subtitle codec\n" + " ...I.. = Intra frame-only codec\n" + " ....L. = Lossy compression\n" + " .....S = Lossless compression\n" + " -------\n"); + for (i = 0; i < nb_codecs; i++) { + const AVCodecDescriptor *desc = codecs[i]; + const AVCodec *codec = NULL; + + if (strstr(desc->name, "_deprecated")) + continue; + + printf(" "); + printf(avcodec_find_decoder(desc->id) ? "D" : "."); + printf(avcodec_find_encoder(desc->id) ? "E" : "."); + + printf("%c", get_media_type_char(desc->type)); + printf((desc->props & AV_CODEC_PROP_INTRA_ONLY) ? "I" : "."); + printf((desc->props & AV_CODEC_PROP_LOSSY) ? "L" : "."); + printf((desc->props & AV_CODEC_PROP_LOSSLESS) ? "S" : "."); + + printf(" %-20s %s", desc->name, desc->long_name ? desc->long_name : ""); + + /* print decoders/encoders when there's more than one or their + * names are different from codec name */ + while ((codec = next_codec_for_id(desc->id, codec, 0))) { + if (strcmp(codec->name, desc->name)) { + print_codecs_for_id(desc->id, 0); + break; + } + } + codec = NULL; + while ((codec = next_codec_for_id(desc->id, codec, 1))) { + if (strcmp(codec->name, desc->name)) { + print_codecs_for_id(desc->id, 1); + break; + } + } + + printf("\n"); + } + av_free(codecs); + return 0; +} + +static void print_codecs(int encoder) +{ + const AVCodecDescriptor **codecs; + unsigned i, nb_codecs = get_codecs_sorted(&codecs); + + printf("%s:\n" + " V..... = Video\n" + " A..... = Audio\n" + " S..... = Subtitle\n" + " .F.... = Frame-level multithreading\n" + " ..S... = Slice-level multithreading\n" + " ...X.. = Codec is experimental\n" + " ....B. = Supports draw_horiz_band\n" + " .....D = Supports direct rendering method 1\n" + " ------\n", + encoder ? "Encoders" : "Decoders"); + for (i = 0; i < nb_codecs; i++) { + const AVCodecDescriptor *desc = codecs[i]; + const AVCodec *codec = NULL; + + while ((codec = next_codec_for_id(desc->id, codec, encoder))) { + printf(" %c", get_media_type_char(desc->type)); + printf((codec->capabilities & CODEC_CAP_FRAME_THREADS) ? "F" : "."); + printf((codec->capabilities & CODEC_CAP_SLICE_THREADS) ? "S" : "."); + printf((codec->capabilities & CODEC_CAP_EXPERIMENTAL) ? "X" : "."); + printf((codec->capabilities & CODEC_CAP_DRAW_HORIZ_BAND)?"B" : "."); + printf((codec->capabilities & CODEC_CAP_DR1) ? "D" : "."); + + printf(" %-20s %s", codec->name, codec->long_name ? codec->long_name : ""); + if (strcmp(codec->name, desc->name)) + printf(" (codec %s)", desc->name); + + printf("\n"); + } + } + av_free(codecs); +} + +int show_decoders(void *optctx, const char *opt, const char *arg) +{ + print_codecs(0); + return 0; +} + +int show_encoders(void *optctx, const char *opt, const char *arg) +{ + print_codecs(1); + return 0; +} + +int show_bsfs(void *optctx, const char *opt, const char *arg) +{ + AVBitStreamFilter *bsf = NULL; + + printf("Bitstream filters:\n"); + while ((bsf = av_bitstream_filter_next(bsf))) + printf("%s\n", bsf->name); + printf("\n"); + return 0; +} + +int show_protocols(void *optctx, const char *opt, const char *arg) +{ + void *opaque = NULL; + const char *name; + + printf("Supported file protocols:\n" + "Input:\n"); + while ((name = avio_enum_protocols(&opaque, 0))) + printf("%s\n", name); + printf("Output:\n"); + while ((name = avio_enum_protocols(&opaque, 1))) + printf("%s\n", name); + return 0; +} + +int show_filters(void *optctx, const char *opt, const char *arg) +{ + const AVFilter av_unused(*filter) = NULL; + char descr[64], *descr_cur; + int i, j; + const AVFilterPad *pad; + + printf("Filters:\n" + " T.. = Timeline support\n" + " .S. = Slice threading\n" + " ..C = Commmand support\n" + " A = Audio input/output\n" + " V = Video input/output\n" + " N = Dynamic number and/or type of input/output\n" + " | = Source or sink filter\n"); +#if CONFIG_AVFILTER + while ((filter = avfilter_next(filter))) { + descr_cur = descr; + for (i = 0; i < 2; i++) { + if (i) { + *(descr_cur++) = '-'; + *(descr_cur++) = '>'; + } + pad = i ? filter->outputs : filter->inputs; + for (j = 0; pad && pad[j].name; j++) { + if (descr_cur >= descr + sizeof(descr) - 4) + break; + *(descr_cur++) = get_media_type_char(pad[j].type); + } + if (!j) + *(descr_cur++) = ((!i && (filter->flags & AVFILTER_FLAG_DYNAMIC_INPUTS)) || + ( i && (filter->flags & AVFILTER_FLAG_DYNAMIC_OUTPUTS))) ? 'N' : '|'; + } + *descr_cur = 0; + printf(" %c%c%c %-16s %-10s %s\n", + filter->flags & AVFILTER_FLAG_SUPPORT_TIMELINE ? 'T' : '.', + filter->flags & AVFILTER_FLAG_SLICE_THREADS ? 'S' : '.', + filter->process_command ? 'C' : '.', + filter->name, descr, filter->description); + } +#endif + return 0; +} + +int show_colors(void *optctx, const char *opt, const char *arg) +{ + const char *name; + const uint8_t *rgb; + int i; + + printf("%-32s #RRGGBB\n", "name"); + + for (i = 0; name = av_get_known_color_name(i, &rgb); i++) + printf("%-32s #%02x%02x%02x\n", name, rgb[0], rgb[1], rgb[2]); + + return 0; +} + +int show_pix_fmts(void *optctx, const char *opt, const char *arg) +{ + const AVPixFmtDescriptor *pix_desc = NULL; + + printf("Pixel formats:\n" + "I.... = Supported Input format for conversion\n" + ".O... = Supported Output format for conversion\n" + "..H.. = Hardware accelerated format\n" + "...P. = Paletted format\n" + "....B = Bitstream format\n" + "FLAGS NAME NB_COMPONENTS BITS_PER_PIXEL\n" + "-----\n"); + +#if !CONFIG_SWSCALE +# define sws_isSupportedInput(x) 0 +# define sws_isSupportedOutput(x) 0 +#endif + + while ((pix_desc = av_pix_fmt_desc_next(pix_desc))) { + enum AVPixelFormat pix_fmt = av_pix_fmt_desc_get_id(pix_desc); + printf("%c%c%c%c%c %-16s %d %2d\n", + sws_isSupportedInput (pix_fmt) ? 'I' : '.', + sws_isSupportedOutput(pix_fmt) ? 'O' : '.', + pix_desc->flags & AV_PIX_FMT_FLAG_HWACCEL ? 'H' : '.', + pix_desc->flags & AV_PIX_FMT_FLAG_PAL ? 'P' : '.', + pix_desc->flags & AV_PIX_FMT_FLAG_BITSTREAM ? 'B' : '.', + pix_desc->name, + pix_desc->nb_components, + av_get_bits_per_pixel(pix_desc)); + } + return 0; +} + +int show_layouts(void *optctx, const char *opt, const char *arg) +{ + int i = 0; + uint64_t layout, j; + const char *name, *descr; + + printf("Individual channels:\n" + "NAME DESCRIPTION\n"); + for (i = 0; i < 63; i++) { + name = av_get_channel_name((uint64_t)1 << i); + if (!name) + continue; + descr = av_get_channel_description((uint64_t)1 << i); + printf("%-14s %s\n", name, descr); + } + printf("\nStandard channel layouts:\n" + "NAME DECOMPOSITION\n"); + for (i = 0; !av_get_standard_channel_layout(i, &layout, &name); i++) { + if (name) { + printf("%-14s ", name); + for (j = 1; j; j <<= 1) + if ((layout & j)) + printf("%s%s", (layout & (j - 1)) ? "+" : "", av_get_channel_name(j)); + printf("\n"); + } + } + return 0; +} + +int show_sample_fmts(void *optctx, const char *opt, const char *arg) +{ + int i; + char fmt_str[128]; + for (i = -1; i < AV_SAMPLE_FMT_NB; i++) + printf("%s\n", av_get_sample_fmt_string(fmt_str, sizeof(fmt_str), i)); + return 0; +} + +static void show_help_codec(const char *name, int encoder) +{ + const AVCodecDescriptor *desc; + const AVCodec *codec; + + if (!name) { + av_log(NULL, AV_LOG_ERROR, "No codec name specified.\n"); + return; + } + + codec = encoder ? avcodec_find_encoder_by_name(name) : + avcodec_find_decoder_by_name(name); + + if (codec) + print_codec(codec); + else if ((desc = avcodec_descriptor_get_by_name(name))) { + int printed = 0; + + while ((codec = next_codec_for_id(desc->id, codec, encoder))) { + printed = 1; + print_codec(codec); + } + + if (!printed) { + av_log(NULL, AV_LOG_ERROR, "Codec '%s' is known to FFmpeg, " + "but no %s for it are available. FFmpeg might need to be " + "recompiled with additional external libraries.\n", + name, encoder ? "encoders" : "decoders"); + } + } else { + av_log(NULL, AV_LOG_ERROR, "Codec '%s' is not recognized by FFmpeg.\n", + name); + } +} + +static void show_help_demuxer(const char *name) +{ + const AVInputFormat *fmt = av_find_input_format(name); + + if (!fmt) { + av_log(NULL, AV_LOG_ERROR, "Unknown format '%s'.\n", name); + return; + } + + printf("Demuxer %s [%s]:\n", fmt->name, fmt->long_name); + + if (fmt->extensions) + printf(" Common extensions: %s.\n", fmt->extensions); + + if (fmt->priv_class) + show_help_children(fmt->priv_class, AV_OPT_FLAG_DECODING_PARAM); +} + +static void show_help_muxer(const char *name) +{ + const AVCodecDescriptor *desc; + const AVOutputFormat *fmt = av_guess_format(name, NULL, NULL); + + if (!fmt) { + av_log(NULL, AV_LOG_ERROR, "Unknown format '%s'.\n", name); + return; + } + + printf("Muxer %s [%s]:\n", fmt->name, fmt->long_name); + + if (fmt->extensions) + printf(" Common extensions: %s.\n", fmt->extensions); + if (fmt->mime_type) + printf(" Mime type: %s.\n", fmt->mime_type); + if (fmt->video_codec != AV_CODEC_ID_NONE && + (desc = avcodec_descriptor_get(fmt->video_codec))) { + printf(" Default video codec: %s.\n", desc->name); + } + if (fmt->audio_codec != AV_CODEC_ID_NONE && + (desc = avcodec_descriptor_get(fmt->audio_codec))) { + printf(" Default audio codec: %s.\n", desc->name); + } + if (fmt->subtitle_codec != AV_CODEC_ID_NONE && + (desc = avcodec_descriptor_get(fmt->subtitle_codec))) { + printf(" Default subtitle codec: %s.\n", desc->name); + } + + if (fmt->priv_class) + show_help_children(fmt->priv_class, AV_OPT_FLAG_ENCODING_PARAM); +} + +#if CONFIG_AVFILTER +static void show_help_filter(const char *name) +{ +#if CONFIG_AVFILTER + const AVFilter *f = avfilter_get_by_name(name); + int i, count; + + if (!name) { + av_log(NULL, AV_LOG_ERROR, "No filter name specified.\n"); + return; + } else if (!f) { + av_log(NULL, AV_LOG_ERROR, "Unknown filter '%s'.\n", name); + return; + } + + printf("Filter %s\n", f->name); + if (f->description) + printf(" %s\n", f->description); + + if (f->flags & AVFILTER_FLAG_SLICE_THREADS) + printf(" slice threading supported\n"); + + printf(" Inputs:\n"); + count = avfilter_pad_count(f->inputs); + for (i = 0; i < count; i++) { + printf(" #%d: %s (%s)\n", i, avfilter_pad_get_name(f->inputs, i), + media_type_string(avfilter_pad_get_type(f->inputs, i))); + } + if (f->flags & AVFILTER_FLAG_DYNAMIC_INPUTS) + printf(" dynamic (depending on the options)\n"); + else if (!count) + printf(" none (source filter)\n"); + + printf(" Outputs:\n"); + count = avfilter_pad_count(f->outputs); + for (i = 0; i < count; i++) { + printf(" #%d: %s (%s)\n", i, avfilter_pad_get_name(f->outputs, i), + media_type_string(avfilter_pad_get_type(f->outputs, i))); + } + if (f->flags & AVFILTER_FLAG_DYNAMIC_OUTPUTS) + printf(" dynamic (depending on the options)\n"); + else if (!count) + printf(" none (sink filter)\n"); + + if (f->priv_class) + show_help_children(f->priv_class, AV_OPT_FLAG_VIDEO_PARAM | AV_OPT_FLAG_FILTERING_PARAM | + AV_OPT_FLAG_AUDIO_PARAM); + if (f->flags & AVFILTER_FLAG_SUPPORT_TIMELINE) + printf("This filter has support for timeline through the 'enable' option.\n"); +#else + av_log(NULL, AV_LOG_ERROR, "Build without libavfilter; " + "can not to satisfy request\n"); +#endif +} +#endif + +int show_help(void *optctx, const char *opt, const char *arg) +{ + char *topic, *par; + av_log_set_callback(log_callback_help); + + topic = av_strdup(arg ? arg : ""); + par = strchr(topic, '='); + if (par) + *par++ = 0; + + if (!*topic) { + show_help_default(topic, par); + } else if (!strcmp(topic, "decoder")) { + show_help_codec(par, 0); + } else if (!strcmp(topic, "encoder")) { + show_help_codec(par, 1); + } else if (!strcmp(topic, "demuxer")) { + show_help_demuxer(par); + } else if (!strcmp(topic, "muxer")) { + show_help_muxer(par); +#if CONFIG_AVFILTER + } else if (!strcmp(topic, "filter")) { + show_help_filter(par); +#endif + } else { + show_help_default(topic, par); + } + + av_freep(&topic); + return 0; +} + +int read_yesno(void) +{ + int c = getchar(); + int yesno = (av_toupper(c) == 'Y'); + + while (c != '\n' && c != EOF) + c = getchar(); + + return yesno; +} + +int cmdutils_read_file(const char *filename, char **bufptr, size_t *size) +{ + int ret; + FILE *f = av_fopen_utf8(filename, "rb"); + + if (!f) { + av_log(NULL, AV_LOG_ERROR, "Cannot read file '%s': %s\n", filename, + strerror(errno)); + return AVERROR(errno); + } + fseek(f, 0, SEEK_END); + *size = ftell(f); + fseek(f, 0, SEEK_SET); + if (*size == (size_t)-1) { + av_log(NULL, AV_LOG_ERROR, "IO error: %s\n", strerror(errno)); + fclose(f); + return AVERROR(errno); + } + *bufptr = av_malloc(*size + 1); + if (!*bufptr) { + av_log(NULL, AV_LOG_ERROR, "Could not allocate file buffer\n"); + fclose(f); + return AVERROR(ENOMEM); + } + ret = fread(*bufptr, 1, *size, f); + if (ret < *size) { + av_free(*bufptr); + if (ferror(f)) { + av_log(NULL, AV_LOG_ERROR, "Error while reading file '%s': %s\n", + filename, strerror(errno)); + ret = AVERROR(errno); + } else + ret = AVERROR_EOF; + } else { + ret = 0; + (*bufptr)[(*size)++] = '\0'; + } + + fclose(f); + return ret; +} + +FILE *get_preset_file(char *filename, size_t filename_size, + const char *preset_name, int is_path, + const char *codec_name) +{ + FILE *f = NULL; + int i; + const char *base[3] = { getenv("FFMPEG_DATADIR"), + getenv("HOME"), + FFMPEG_DATADIR, }; + + if (is_path) { + av_strlcpy(filename, preset_name, filename_size); + f = fopen(filename, "r"); + } else { +#ifdef _WIN32 + char datadir[MAX_PATH], *ls; + base[2] = NULL; + + if (GetModuleFileNameA(GetModuleHandleA(NULL), datadir, sizeof(datadir) - 1)) + { + for (ls = datadir; ls < datadir + strlen(datadir); ls++) + if (*ls == '\\') *ls = '/'; + + if (ls = strrchr(datadir, '/')) + { + *ls = 0; + strncat(datadir, "/ffpresets", sizeof(datadir) - 1 - strlen(datadir)); + base[2] = datadir; + } + } +#endif + for (i = 0; i < 3 && !f; i++) { + if (!base[i]) + continue; + snprintf(filename, filename_size, "%s%s/%s.ffpreset", base[i], + i != 1 ? "" : "/.ffmpeg", preset_name); + f = fopen(filename, "r"); + if (!f && codec_name) { + snprintf(filename, filename_size, + "%s%s/%s-%s.ffpreset", + base[i], i != 1 ? "" : "/.ffmpeg", codec_name, + preset_name); + f = fopen(filename, "r"); + } + } + } + + return f; +} + +int check_stream_specifier(AVFormatContext *s, AVStream *st, const char *spec) +{ + int ret = avformat_match_stream_specifier(s, st, spec); + if (ret < 0) + av_log(s, AV_LOG_ERROR, "Invalid stream specifier: %s.\n", spec); + return ret; +} + +AVDictionary *filter_codec_opts(AVDictionary *opts, enum AVCodecID codec_id, + AVFormatContext *s, AVStream *st, AVCodec *codec) +{ + AVDictionary *ret = NULL; + AVDictionaryEntry *t = NULL; + int flags = s->oformat ? AV_OPT_FLAG_ENCODING_PARAM + : AV_OPT_FLAG_DECODING_PARAM; + char prefix = 0; + const AVClass *cc = avcodec_get_class(); + + if (!codec) + codec = s->oformat ? avcodec_find_encoder(codec_id) + : avcodec_find_decoder(codec_id); + + switch (st->codec->codec_type) { + case AVMEDIA_TYPE_VIDEO: + prefix = 'v'; + flags |= AV_OPT_FLAG_VIDEO_PARAM; + break; + case AVMEDIA_TYPE_AUDIO: + prefix = 'a'; + flags |= AV_OPT_FLAG_AUDIO_PARAM; + break; + case AVMEDIA_TYPE_SUBTITLE: + prefix = 's'; + flags |= AV_OPT_FLAG_SUBTITLE_PARAM; + break; + } + + while (t = av_dict_get(opts, "", t, AV_DICT_IGNORE_SUFFIX)) { + char *p = strchr(t->key, ':'); + + /* check stream specification in opt name */ + if (p) + switch (check_stream_specifier(s, st, p + 1)) { + case 1: *p = 0; break; + case 0: continue; + default: return NULL; + } + + if (av_opt_find(&cc, t->key, NULL, flags, AV_OPT_SEARCH_FAKE_OBJ) || + !codec || + (codec->priv_class && + av_opt_find(&codec->priv_class, t->key, NULL, flags, + AV_OPT_SEARCH_FAKE_OBJ))) + av_dict_set(&ret, t->key, t->value, 0); + else if (t->key[0] == prefix && + av_opt_find(&cc, t->key + 1, NULL, flags, + AV_OPT_SEARCH_FAKE_OBJ)) + av_dict_set(&ret, t->key + 1, t->value, 0); + + if (p) + *p = ':'; + } + return ret; +} + +AVDictionary **setup_find_stream_info_opts(AVFormatContext *s, + AVDictionary *codec_opts) +{ + int i; + AVDictionary **opts; + + if (!s->nb_streams) + return NULL; + opts = av_mallocz_array(s->nb_streams, sizeof(*opts)); + if (!opts) { + av_log(NULL, AV_LOG_ERROR, + "Could not alloc memory for stream options.\n"); + return NULL; + } + for (i = 0; i < s->nb_streams; i++) + opts[i] = filter_codec_opts(codec_opts, s->streams[i]->codec->codec_id, + s, s->streams[i], NULL); + return opts; +} + +void *grow_array(void *array, int elem_size, int *size, int new_size) +{ + if (new_size >= INT_MAX / elem_size) { + av_log(NULL, AV_LOG_ERROR, "Array too big.\n"); + exit_program(1); + } + if (*size < new_size) { + uint8_t *tmp = av_realloc(array, new_size*elem_size); + if (!tmp) { + av_log(NULL, AV_LOG_ERROR, "Could not alloc buffer.\n"); + exit_program(1); + } + memset(tmp + *size*elem_size, 0, (new_size-*size) * elem_size); + *size = new_size; + return tmp; + } + return array; +} diff --git a/ffmpeg/cmdutils.h b/ffmpeg/cmdutils.h new file mode 100644 index 0000000..76d11a5 --- /dev/null +++ b/ffmpeg/cmdutils.h @@ -0,0 +1,586 @@ +/* + * Various utilities for command line tools + * copyright (c) 2003 Fabrice Bellard + * + * This file is part of FFmpeg. + * + * FFmpeg is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * FFmpeg is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with FFmpeg; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#ifndef FFMPEG_CMDUTILS_H +#define FFMPEG_CMDUTILS_H + +#include + +#include "config.h" +#include "libavcodec/avcodec.h" +#include "libavfilter/avfilter.h" +#include "libavformat/avformat.h" +#include "libswscale/swscale.h" + +#ifdef _WIN32 +#undef main /* We don't want SDL to override our main() */ +#endif + +/** + * program name, defined by the program for show_version(). + */ +extern const char program_name[]; + +/** + * program birth year, defined by the program for show_banner() + */ +extern const int program_birth_year; + +extern AVCodecContext *avcodec_opts[AVMEDIA_TYPE_NB]; +extern AVFormatContext *avformat_opts; +extern struct SwsContext *sws_opts; +extern AVDictionary *swr_opts; +extern AVDictionary *format_opts, *codec_opts, *resample_opts; +extern int hide_banner; + +/** + * Register a program-specific cleanup routine. + */ +void register_exit(void (*cb)(int ret)); + +/** + * Wraps exit with a program-specific cleanup routine. + */ +void exit_program(int ret) av_noreturn; + +/** + * Initialize the cmdutils option system, in particular + * allocate the *_opts contexts. + */ +void init_opts(void); +/** + * Uninitialize the cmdutils option system, in particular + * free the *_opts contexts and their contents. + */ +void uninit_opts(void); + +/** + * Trivial log callback. + * Only suitable for opt_help and similar since it lacks prefix handling. + */ +void log_callback_help(void* ptr, int level, const char* fmt, va_list vl); + +/** + * Override the cpuflags. + */ +int opt_cpuflags(void *optctx, const char *opt, const char *arg); + +/** + * Fallback for options that are not explicitly handled, these will be + * parsed through AVOptions. + */ +int opt_default(void *optctx, const char *opt, const char *arg); + +/** + * Set the libav* libraries log level. + */ +int opt_loglevel(void *optctx, const char *opt, const char *arg); + +int opt_report(const char *opt); + +int opt_max_alloc(void *optctx, const char *opt, const char *arg); + +int opt_codec_debug(void *optctx, const char *opt, const char *arg); + +#if CONFIG_OPENCL +int opt_opencl(void *optctx, const char *opt, const char *arg); + +int opt_opencl_bench(void *optctx, const char *opt, const char *arg); +#endif + +/** + * Limit the execution time. + */ +int opt_timelimit(void *optctx, const char *opt, const char *arg); + +/** + * Parse a string and return its corresponding value as a double. + * Exit from the application if the string cannot be correctly + * parsed or the corresponding value is invalid. + * + * @param context the context of the value to be set (e.g. the + * corresponding command line option name) + * @param numstr the string to be parsed + * @param type the type (OPT_INT64 or OPT_FLOAT) as which the + * string should be parsed + * @param min the minimum valid accepted value + * @param max the maximum valid accepted value + */ +double parse_number_or_die(const char *context, const char *numstr, int type, + double min, double max); + +/** + * Parse a string specifying a time and return its corresponding + * value as a number of microseconds. Exit from the application if + * the string cannot be correctly parsed. + * + * @param context the context of the value to be set (e.g. the + * corresponding command line option name) + * @param timestr the string to be parsed + * @param is_duration a flag which tells how to interpret timestr, if + * not zero timestr is interpreted as a duration, otherwise as a + * date + * + * @see av_parse_time() + */ +int64_t parse_time_or_die(const char *context, const char *timestr, + int is_duration); + +typedef struct SpecifierOpt { + char *specifier; /**< stream/chapter/program/... specifier */ + union { + uint8_t *str; + int i; + int64_t i64; + float f; + double dbl; + } u; +} SpecifierOpt; + +typedef struct OptionDef { + const char *name; + int flags; +#define HAS_ARG 0x0001 +#define OPT_BOOL 0x0002 +#define OPT_EXPERT 0x0004 +#define OPT_STRING 0x0008 +#define OPT_VIDEO 0x0010 +#define OPT_AUDIO 0x0020 +#define OPT_INT 0x0080 +#define OPT_FLOAT 0x0100 +#define OPT_SUBTITLE 0x0200 +#define OPT_INT64 0x0400 +#define OPT_EXIT 0x0800 +#define OPT_DATA 0x1000 +#define OPT_PERFILE 0x2000 /* the option is per-file (currently ffmpeg-only). + implied by OPT_OFFSET or OPT_SPEC */ +#define OPT_OFFSET 0x4000 /* option is specified as an offset in a passed optctx */ +#define OPT_SPEC 0x8000 /* option is to be stored in an array of SpecifierOpt. + Implies OPT_OFFSET. Next element after the offset is + an int containing element count in the array. */ +#define OPT_TIME 0x10000 +#define OPT_DOUBLE 0x20000 +#define OPT_INPUT 0x40000 +#define OPT_OUTPUT 0x80000 + union { + void *dst_ptr; + int (*func_arg)(void *, const char *, const char *); + size_t off; + } u; + const char *help; + const char *argname; +} OptionDef; + +/** + * Print help for all options matching specified flags. + * + * @param options a list of options + * @param msg title of this group. Only printed if at least one option matches. + * @param req_flags print only options which have all those flags set. + * @param rej_flags don't print options which have any of those flags set. + * @param alt_flags print only options that have at least one of those flags set + */ +void show_help_options(const OptionDef *options, const char *msg, int req_flags, + int rej_flags, int alt_flags); + +/** + * Show help for all options with given flags in class and all its + * children. + */ +void show_help_children(const AVClass *class, int flags); + +/** + * Per-fftool specific help handler. Implemented in each + * fftool, called by show_help(). + */ +void show_help_default(const char *opt, const char *arg); + +/** + * Generic -h handler common to all fftools. + */ +int show_help(void *optctx, const char *opt, const char *arg); + +/** + * Parse the command line arguments. + * + * @param optctx an opaque options context + * @param argc number of command line arguments + * @param argv values of command line arguments + * @param options Array with the definitions required to interpret every + * option of the form: -option_name [argument] + * @param parse_arg_function Name of the function called to process every + * argument without a leading option name flag. NULL if such arguments do + * not have to be processed. + */ +void parse_options(void *optctx, int argc, char **argv, const OptionDef *options, + void (* parse_arg_function)(void *optctx, const char*)); + +/** + * Parse one given option. + * + * @return on success 1 if arg was consumed, 0 otherwise; negative number on error + */ +int parse_option(void *optctx, const char *opt, const char *arg, + const OptionDef *options); + +/** + * An option extracted from the commandline. + * Cannot use AVDictionary because of options like -map which can be + * used multiple times. + */ +typedef struct Option { + const OptionDef *opt; + const char *key; + const char *val; +} Option; + +typedef struct OptionGroupDef { + /**< group name */ + const char *name; + /** + * Option to be used as group separator. Can be NULL for groups which + * are terminated by a non-option argument (e.g. ffmpeg output files) + */ + const char *sep; + /** + * Option flags that must be set on each option that is + * applied to this group + */ + int flags; +} OptionGroupDef; + +typedef struct OptionGroup { + const OptionGroupDef *group_def; + const char *arg; + + Option *opts; + int nb_opts; + + AVDictionary *codec_opts; + AVDictionary *format_opts; + AVDictionary *resample_opts; + struct SwsContext *sws_opts; + AVDictionary *swr_opts; +} OptionGroup; + +/** + * A list of option groups that all have the same group type + * (e.g. input files or output files) + */ +typedef struct OptionGroupList { + const OptionGroupDef *group_def; + + OptionGroup *groups; + int nb_groups; +} OptionGroupList; + +typedef struct OptionParseContext { + OptionGroup global_opts; + + OptionGroupList *groups; + int nb_groups; + + /* parsing state */ + OptionGroup cur_group; +} OptionParseContext; + +/** + * Parse an options group and write results into optctx. + * + * @param optctx an app-specific options context. NULL for global options group + */ +int parse_optgroup(void *optctx, OptionGroup *g); + +/** + * Split the commandline into an intermediate form convenient for further + * processing. + * + * The commandline is assumed to be composed of options which either belong to a + * group (those with OPT_SPEC, OPT_OFFSET or OPT_PERFILE) or are global + * (everything else). + * + * A group (defined by an OptionGroupDef struct) is a sequence of options + * terminated by either a group separator option (e.g. -i) or a parameter that + * is not an option (doesn't start with -). A group without a separator option + * must always be first in the supplied groups list. + * + * All options within the same group are stored in one OptionGroup struct in an + * OptionGroupList, all groups with the same group definition are stored in one + * OptionGroupList in OptionParseContext.groups. The order of group lists is the + * same as the order of group definitions. + */ +int split_commandline(OptionParseContext *octx, int argc, char *argv[], + const OptionDef *options, + const OptionGroupDef *groups, int nb_groups); + +/** + * Free all allocated memory in an OptionParseContext. + */ +void uninit_parse_context(OptionParseContext *octx); + +/** + * Find the '-loglevel' option in the command line args and apply it. + */ +void parse_loglevel(int argc, char **argv, const OptionDef *options); + +/** + * Return index of option opt in argv or 0 if not found. + */ +int locate_option(int argc, char **argv, const OptionDef *options, + const char *optname); + +/** + * Check if the given stream matches a stream specifier. + * + * @param s Corresponding format context. + * @param st Stream from s to be checked. + * @param spec A stream specifier of the [v|a|s|d]:[\] form. + * + * @return 1 if the stream matches, 0 if it doesn't, <0 on error + */ +int check_stream_specifier(AVFormatContext *s, AVStream *st, const char *spec); + +/** + * Filter out options for given codec. + * + * Create a new options dictionary containing only the options from + * opts which apply to the codec with ID codec_id. + * + * @param opts dictionary to place options in + * @param codec_id ID of the codec that should be filtered for + * @param s Corresponding format context. + * @param st A stream from s for which the options should be filtered. + * @param codec The particular codec for which the options should be filtered. + * If null, the default one is looked up according to the codec id. + * @return a pointer to the created dictionary + */ +AVDictionary *filter_codec_opts(AVDictionary *opts, enum AVCodecID codec_id, + AVFormatContext *s, AVStream *st, AVCodec *codec); + +/** + * Setup AVCodecContext options for avformat_find_stream_info(). + * + * Create an array of dictionaries, one dictionary for each stream + * contained in s. + * Each dictionary will contain the options from codec_opts which can + * be applied to the corresponding stream codec context. + * + * @return pointer to the created array of dictionaries, NULL if it + * cannot be created + */ +AVDictionary **setup_find_stream_info_opts(AVFormatContext *s, + AVDictionary *codec_opts); + +/** + * Print an error message to stderr, indicating filename and a human + * readable description of the error code err. + * + * If strerror_r() is not available the use of this function in a + * multithreaded application may be unsafe. + * + * @see av_strerror() + */ +void print_error(const char *filename, int err); + +/** + * Print the program banner to stderr. The banner contents depend on the + * current version of the repository and of the libav* libraries used by + * the program. + */ +void show_banner(int argc, char **argv, const OptionDef *options); + +/** + * Print the version of the program to stdout. The version message + * depends on the current versions of the repository and of the libav* + * libraries. + * This option processing function does not utilize the arguments. + */ +int show_version(void *optctx, const char *opt, const char *arg); + +/** + * Print the build configuration of the program to stdout. The contents + * depend on the definition of FFMPEG_CONFIGURATION. + * This option processing function does not utilize the arguments. + */ +int show_buildconf(void *optctx, const char *opt, const char *arg); + +/** + * Print the license of the program to stdout. The license depends on + * the license of the libraries compiled into the program. + * This option processing function does not utilize the arguments. + */ +int show_license(void *optctx, const char *opt, const char *arg); + +/** + * Print a listing containing all the formats supported by the + * program (including devices). + * This option processing function does not utilize the arguments. + */ +int show_formats(void *optctx, const char *opt, const char *arg); + +/** + * Print a listing containing all the devices supported by the + * program. + * This option processing function does not utilize the arguments. + */ +int show_devices(void *optctx, const char *opt, const char *arg); + +/** + * Print a listing containing all the codecs supported by the + * program. + * This option processing function does not utilize the arguments. + */ +int show_codecs(void *optctx, const char *opt, const char *arg); + +/** + * Print a listing containing all the decoders supported by the + * program. + */ +int show_decoders(void *optctx, const char *opt, const char *arg); + +/** + * Print a listing containing all the encoders supported by the + * program. + */ +int show_encoders(void *optctx, const char *opt, const char *arg); + +/** + * Print a listing containing all the filters supported by the + * program. + * This option processing function does not utilize the arguments. + */ +int show_filters(void *optctx, const char *opt, const char *arg); + +/** + * Print a listing containing all the bit stream filters supported by the + * program. + * This option processing function does not utilize the arguments. + */ +int show_bsfs(void *optctx, const char *opt, const char *arg); + +/** + * Print a listing containing all the protocols supported by the + * program. + * This option processing function does not utilize the arguments. + */ +int show_protocols(void *optctx, const char *opt, const char *arg); + +/** + * Print a listing containing all the pixel formats supported by the + * program. + * This option processing function does not utilize the arguments. + */ +int show_pix_fmts(void *optctx, const char *opt, const char *arg); + +/** + * Print a listing containing all the standard channel layouts supported by + * the program. + * This option processing function does not utilize the arguments. + */ +int show_layouts(void *optctx, const char *opt, const char *arg); + +/** + * Print a listing containing all the sample formats supported by the + * program. + */ +int show_sample_fmts(void *optctx, const char *opt, const char *arg); + +/** + * Print a listing containing all the color names and values recognized + * by the program. + */ +int show_colors(void *optctx, const char *opt, const char *arg); + +/** + * Return a positive value if a line read from standard input + * starts with [yY], otherwise return 0. + */ +int read_yesno(void); + +/** + * Read the file with name filename, and put its content in a newly + * allocated 0-terminated buffer. + * + * @param filename file to read from + * @param bufptr location where pointer to buffer is returned + * @param size location where size of buffer is returned + * @return >= 0 in case of success, a negative value corresponding to an + * AVERROR error code in case of failure. + */ +int cmdutils_read_file(const char *filename, char **bufptr, size_t *size); + +/** + * Get a file corresponding to a preset file. + * + * If is_path is non-zero, look for the file in the path preset_name. + * Otherwise search for a file named arg.ffpreset in the directories + * $FFMPEG_DATADIR (if set), $HOME/.ffmpeg, and in the datadir defined + * at configuration time or in a "ffpresets" folder along the executable + * on win32, in that order. If no such file is found and + * codec_name is defined, then search for a file named + * codec_name-preset_name.avpreset in the above-mentioned directories. + * + * @param filename buffer where the name of the found filename is written + * @param filename_size size in bytes of the filename buffer + * @param preset_name name of the preset to search + * @param is_path tell if preset_name is a filename path + * @param codec_name name of the codec for which to look for the + * preset, may be NULL + */ +FILE *get_preset_file(char *filename, size_t filename_size, + const char *preset_name, int is_path, const char *codec_name); + +/** + * Realloc array to hold new_size elements of elem_size. + * Calls exit() on failure. + * + * @param array array to reallocate + * @param elem_size size in bytes of each element + * @param size new element count will be written here + * @param new_size number of elements to place in reallocated array + * @return reallocated array + */ +void *grow_array(void *array, int elem_size, int *size, int new_size); + +#define media_type_string av_get_media_type_string + +#define GROW_ARRAY(array, nb_elems)\ + array = grow_array(array, sizeof(*array), &nb_elems, nb_elems + 1) + +#define GET_PIX_FMT_NAME(pix_fmt)\ + const char *name = av_get_pix_fmt_name(pix_fmt); + +#define GET_SAMPLE_FMT_NAME(sample_fmt)\ + const char *name = av_get_sample_fmt_name(sample_fmt) + +#define GET_SAMPLE_RATE_NAME(rate)\ + char name[16];\ + snprintf(name, sizeof(name), "%d", rate); + +#define GET_CH_LAYOUT_NAME(ch_layout)\ + char name[16];\ + snprintf(name, sizeof(name), "0x%"PRIx64, ch_layout); + +#define GET_CH_LAYOUT_DESC(ch_layout)\ + char name[128];\ + av_get_channel_layout_string(name, sizeof(name), 0, ch_layout); + +#endif /* CMDUTILS_H */ diff --git a/ffmpeg/cmdutils_common_opts.h b/ffmpeg/cmdutils_common_opts.h new file mode 100644 index 0000000..49b5180 --- /dev/null +++ b/ffmpeg/cmdutils_common_opts.h @@ -0,0 +1,29 @@ + { "L" , OPT_EXIT, {.func_arg = show_license}, "show license" }, + { "h" , OPT_EXIT, {.func_arg = show_help}, "show help", "topic" }, + { "?" , OPT_EXIT, {.func_arg = show_help}, "show help", "topic" }, + { "help" , OPT_EXIT, {.func_arg = show_help}, "show help", "topic" }, + { "-help" , OPT_EXIT, {.func_arg = show_help}, "show help", "topic" }, + { "version" , OPT_EXIT, {.func_arg = show_version}, "show version" }, + { "buildconf" , OPT_EXIT, {.func_arg = show_buildconf}, "show build configuration" }, + { "formats" , OPT_EXIT, {.func_arg = show_formats }, "show available formats" }, + { "devices" , OPT_EXIT, {.func_arg = show_devices }, "show available devices" }, + { "codecs" , OPT_EXIT, {.func_arg = show_codecs }, "show available codecs" }, + { "decoders" , OPT_EXIT, {.func_arg = show_decoders }, "show available decoders" }, + { "encoders" , OPT_EXIT, {.func_arg = show_encoders }, "show available encoders" }, + { "bsfs" , OPT_EXIT, {.func_arg = show_bsfs }, "show available bit stream filters" }, + { "protocols" , OPT_EXIT, {.func_arg = show_protocols}, "show available protocols" }, + { "filters" , OPT_EXIT, {.func_arg = show_filters }, "show available filters" }, + { "pix_fmts" , OPT_EXIT, {.func_arg = show_pix_fmts }, "show available pixel formats" }, + { "layouts" , OPT_EXIT, {.func_arg = show_layouts }, "show standard channel layouts" }, + { "sample_fmts", OPT_EXIT, {.func_arg = show_sample_fmts }, "show available audio sample formats" }, + { "colors" , OPT_EXIT, {.func_arg = show_colors }, "show available color names" }, + { "loglevel" , HAS_ARG, {.func_arg = opt_loglevel}, "set logging level", "loglevel" }, + { "v", HAS_ARG, {.func_arg = opt_loglevel}, "set logging level", "loglevel" }, + { "report" , 0, {(void*)opt_report}, "generate a report" }, + { "max_alloc" , HAS_ARG, {.func_arg = opt_max_alloc}, "set maximum size of a single allocated block", "bytes" }, + { "cpuflags" , HAS_ARG | OPT_EXPERT, { .func_arg = opt_cpuflags }, "force specific cpu flags", "flags" }, + { "hide_banner", OPT_BOOL | OPT_EXPERT, {&hide_banner}, "do not show program banner", "hide_banner" }, +#if CONFIG_OPENCL + { "opencl_bench", OPT_EXIT, {.func_arg = opt_opencl_bench}, "run benchmark on all OpenCL devices and show results" }, + { "opencl_options", HAS_ARG, {.func_arg = opt_opencl}, "set OpenCL environment options" }, +#endif diff --git a/ffmpeg/cmdutils_opencl.c b/ffmpeg/cmdutils_opencl.c new file mode 100644 index 0000000..3dfd156 --- /dev/null +++ b/ffmpeg/cmdutils_opencl.c @@ -0,0 +1,274 @@ +/* + * Copyright (C) 2013 Lenny Wang + * + * This file is part of FFmpeg. + * + * FFmpeg is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * FFmpeg is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with FFmpeg; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#include "libavutil/opt.h" +#include "libavutil/time.h" +#include "libavutil/log.h" +#include "libavutil/opencl.h" +#include "cmdutils.h" + +typedef struct { + int platform_idx; + int device_idx; + char device_name[64]; + int64_t runtime; +} OpenCLDeviceBenchmark; + +const char *ocl_bench_source = AV_OPENCL_KERNEL( +inline unsigned char clip_uint8(int a) +{ + if (a & (~0xFF)) + return (-a)>>31; + else + return a; +} + +kernel void unsharp_bench( + global unsigned char *src, + global unsigned char *dst, + global int *mask, + int width, + int height) +{ + int i, j, local_idx, lc_idx, sum = 0; + int2 thread_idx, block_idx, global_idx, lm_idx; + thread_idx.x = get_local_id(0); + thread_idx.y = get_local_id(1); + block_idx.x = get_group_id(0); + block_idx.y = get_group_id(1); + global_idx.x = get_global_id(0); + global_idx.y = get_global_id(1); + local uchar data[32][32]; + local int lc[128]; + + for (i = 0; i <= 1; i++) { + lm_idx.y = -8 + (block_idx.y + i) * 16 + thread_idx.y; + lm_idx.y = lm_idx.y < 0 ? 0 : lm_idx.y; + lm_idx.y = lm_idx.y >= height ? height - 1: lm_idx.y; + for (j = 0; j <= 1; j++) { + lm_idx.x = -8 + (block_idx.x + j) * 16 + thread_idx.x; + lm_idx.x = lm_idx.x < 0 ? 0 : lm_idx.x; + lm_idx.x = lm_idx.x >= width ? width - 1: lm_idx.x; + data[i*16 + thread_idx.y][j*16 + thread_idx.x] = src[lm_idx.y*width + lm_idx.x]; + } + } + local_idx = thread_idx.y*16 + thread_idx.x; + if (local_idx < 128) + lc[local_idx] = mask[local_idx]; + barrier(CLK_LOCAL_MEM_FENCE); + + \n#pragma unroll\n + for (i = -4; i <= 4; i++) { + lm_idx.y = 8 + i + thread_idx.y; + \n#pragma unroll\n + for (j = -4; j <= 4; j++) { + lm_idx.x = 8 + j + thread_idx.x; + lc_idx = (i + 4)*8 + j + 4; + sum += (int)data[lm_idx.y][lm_idx.x] * lc[lc_idx]; + } + } + int temp = (int)data[thread_idx.y + 8][thread_idx.x + 8]; + int res = temp + (((temp - (int)((sum + 1<<15) >> 16))) >> 16); + if (global_idx.x < width && global_idx.y < height) + dst[global_idx.x + global_idx.y*width] = clip_uint8(res); +} +); + +#define OCLCHECK(method, ... ) \ +do { \ + status = method(__VA_ARGS__); \ + if (status != CL_SUCCESS) { \ + av_log(NULL, AV_LOG_ERROR, # method " error '%s'\n", \ + av_opencl_errstr(status)); \ + ret = AVERROR_EXTERNAL; \ + goto end; \ + } \ +} while (0) + +#define CREATEBUF(out, flags, size) \ +do { \ + out = clCreateBuffer(ext_opencl_env->context, flags, size, NULL, &status); \ + if (status != CL_SUCCESS) { \ + av_log(NULL, AV_LOG_ERROR, "Could not create OpenCL buffer\n"); \ + ret = AVERROR_EXTERNAL; \ + goto end; \ + } \ +} while (0) + +static void fill_rand_int(int *data, int n) +{ + int i; + srand(av_gettime()); + for (i = 0; i < n; i++) + data[i] = rand(); +} + +#define OPENCL_NB_ITER 5 +static int64_t run_opencl_bench(AVOpenCLExternalEnv *ext_opencl_env) +{ + int i, arg = 0, width = 1920, height = 1088; + int64_t start, ret = 0; + cl_int status; + size_t kernel_len; + char *inbuf; + int *mask; + int buf_size = width * height * sizeof(char); + int mask_size = sizeof(uint32_t) * 128; + + cl_mem cl_mask, cl_inbuf, cl_outbuf; + cl_kernel kernel = NULL; + cl_program program = NULL; + size_t local_work_size_2d[2] = {16, 16}; + size_t global_work_size_2d[2] = {(size_t)width, (size_t)height}; + + if (!(inbuf = av_malloc(buf_size)) || !(mask = av_malloc(mask_size))) { + av_log(NULL, AV_LOG_ERROR, "Out of memory\n"); + ret = AVERROR(ENOMEM); + goto end; + } + fill_rand_int((int*)inbuf, buf_size/4); + fill_rand_int(mask, mask_size/4); + + CREATEBUF(cl_mask, CL_MEM_READ_ONLY, mask_size); + CREATEBUF(cl_inbuf, CL_MEM_READ_ONLY, buf_size); + CREATEBUF(cl_outbuf, CL_MEM_READ_WRITE, buf_size); + + kernel_len = strlen(ocl_bench_source); + program = clCreateProgramWithSource(ext_opencl_env->context, 1, &ocl_bench_source, + &kernel_len, &status); + if (status != CL_SUCCESS || !program) { + av_log(NULL, AV_LOG_ERROR, "OpenCL unable to create benchmark program\n"); + ret = AVERROR_EXTERNAL; + goto end; + } + status = clBuildProgram(program, 1, &(ext_opencl_env->device_id), NULL, NULL, NULL); + if (status != CL_SUCCESS) { + av_log(NULL, AV_LOG_ERROR, "OpenCL unable to build benchmark program\n"); + ret = AVERROR_EXTERNAL; + goto end; + } + kernel = clCreateKernel(program, "unsharp_bench", &status); + if (status != CL_SUCCESS) { + av_log(NULL, AV_LOG_ERROR, "OpenCL unable to create benchmark kernel\n"); + ret = AVERROR_EXTERNAL; + goto end; + } + + OCLCHECK(clEnqueueWriteBuffer, ext_opencl_env->command_queue, cl_inbuf, CL_TRUE, 0, + buf_size, inbuf, 0, NULL, NULL); + OCLCHECK(clEnqueueWriteBuffer, ext_opencl_env->command_queue, cl_mask, CL_TRUE, 0, + mask_size, mask, 0, NULL, NULL); + OCLCHECK(clSetKernelArg, kernel, arg++, sizeof(cl_mem), &cl_inbuf); + OCLCHECK(clSetKernelArg, kernel, arg++, sizeof(cl_mem), &cl_outbuf); + OCLCHECK(clSetKernelArg, kernel, arg++, sizeof(cl_mem), &cl_mask); + OCLCHECK(clSetKernelArg, kernel, arg++, sizeof(cl_int), &width); + OCLCHECK(clSetKernelArg, kernel, arg++, sizeof(cl_int), &height); + + start = av_gettime_relative(); + for (i = 0; i < OPENCL_NB_ITER; i++) + OCLCHECK(clEnqueueNDRangeKernel, ext_opencl_env->command_queue, kernel, 2, NULL, + global_work_size_2d, local_work_size_2d, 0, NULL, NULL); + clFinish(ext_opencl_env->command_queue); + ret = (av_gettime_relative() - start)/OPENCL_NB_ITER; +end: + if (kernel) + clReleaseKernel(kernel); + if (program) + clReleaseProgram(program); + if (cl_inbuf) + clReleaseMemObject(cl_inbuf); + if (cl_outbuf) + clReleaseMemObject(cl_outbuf); + if (cl_mask) + clReleaseMemObject(cl_mask); + av_free(inbuf); + av_free(mask); + return ret; +} + +static int compare_ocl_device_desc(const void *a, const void *b) +{ + return ((OpenCLDeviceBenchmark*)a)->runtime - ((OpenCLDeviceBenchmark*)b)->runtime; +} + +int opt_opencl_bench(void *optctx, const char *opt, const char *arg) +{ + int i, j, nb_devices = 0, count = 0; + int64_t score = 0; + AVOpenCLDeviceList *device_list; + AVOpenCLDeviceNode *device_node = NULL; + OpenCLDeviceBenchmark *devices = NULL; + cl_platform_id platform; + + av_opencl_get_device_list(&device_list); + for (i = 0; i < device_list->platform_num; i++) + nb_devices += device_list->platform_node[i]->device_num; + if (!nb_devices) { + av_log(NULL, AV_LOG_ERROR, "No OpenCL device detected!\n"); + return AVERROR(EINVAL); + } + if (!(devices = av_malloc_array(nb_devices, sizeof(OpenCLDeviceBenchmark)))) { + av_log(NULL, AV_LOG_ERROR, "Could not allocate buffer\n"); + return AVERROR(ENOMEM); + } + + for (i = 0; i < device_list->platform_num; i++) { + for (j = 0; j < device_list->platform_node[i]->device_num; j++) { + device_node = device_list->platform_node[i]->device_node[j]; + platform = device_list->platform_node[i]->platform_id; + score = av_opencl_benchmark(device_node, platform, run_opencl_bench); + if (score > 0) { + devices[count].platform_idx = i; + devices[count].device_idx = j; + devices[count].runtime = score; + strcpy(devices[count].device_name, device_node->device_name); + count++; + } + } + } + qsort(devices, count, sizeof(OpenCLDeviceBenchmark), compare_ocl_device_desc); + fprintf(stderr, "platform_idx\tdevice_idx\tdevice_name\truntime\n"); + for (i = 0; i < count; i++) + fprintf(stdout, "%d\t%d\t%s\t%"PRId64"\n", + devices[i].platform_idx, devices[i].device_idx, + devices[i].device_name, devices[i].runtime); + + av_opencl_free_device_list(&device_list); + av_free(devices); + return 0; +} + +int opt_opencl(void *optctx, const char *opt, const char *arg) +{ + char *key, *value; + const char *opts = arg; + int ret = 0; + while (*opts) { + ret = av_opt_get_key_value(&opts, "=", ":", 0, &key, &value); + if (ret < 0) + return ret; + ret = av_opencl_set_option(key, value); + if (ret < 0) + return ret; + if (*opts) + opts++; + } + return ret; +} diff --git a/ffmpeg/common.mak b/ffmpeg/common.mak new file mode 100644 index 0000000..a493792 --- /dev/null +++ b/ffmpeg/common.mak @@ -0,0 +1,154 @@ +# +# common bits used by all libraries +# + +# first so "all" becomes default target +all: all-yes + +ifndef SUBDIR + +ifndef V +Q = @ +ECHO = printf "$(1)\t%s\n" $(2) +BRIEF = CC CXX HOSTCC HOSTLD AS YASM AR LD STRIP CP WINDRES +SILENT = DEPCC DEPHOSTCC DEPAS DEPYASM RANLIB RM + +MSG = $@ +M = @$(call ECHO,$(TAG),$@); +$(foreach VAR,$(BRIEF), \ + $(eval override $(VAR) = @$$(call ECHO,$(VAR),$$(MSG)); $($(VAR)))) +$(foreach VAR,$(SILENT),$(eval override $(VAR) = @$($(VAR)))) +$(eval INSTALL = @$(call ECHO,INSTALL,$$(^:$(SRC_DIR)/%=%)); $(INSTALL)) +endif + +ALLFFLIBS = avcodec avdevice avfilter avformat avresample avutil postproc swscale swresample + +# NASM requires -I path terminated with / +IFLAGS := -I. -I$(SRC_PATH)/ +CPPFLAGS := $(IFLAGS) $(CPPFLAGS) +CFLAGS += $(ECFLAGS) +CCFLAGS = $(CPPFLAGS) $(CFLAGS) +ASFLAGS := $(CPPFLAGS) $(ASFLAGS) +CXXFLAGS += $(CPPFLAGS) $(CFLAGS) +YASMFLAGS += $(IFLAGS:%=%/) -Pconfig.asm + +HOSTCCFLAGS = $(IFLAGS) $(HOSTCPPFLAGS) $(HOSTCFLAGS) +LDFLAGS := $(ALLFFLIBS:%=$(LD_PATH)lib%) $(LDFLAGS) + +define COMPILE + $(call $(1)DEP,$(1)) + $($(1)) $($(1)FLAGS) $($(1)_DEPFLAGS) $($(1)_C) $($(1)_O) $< +endef + +COMPILE_C = $(call COMPILE,CC) +COMPILE_CXX = $(call COMPILE,CXX) +COMPILE_S = $(call COMPILE,AS) +COMPILE_HOSTC = $(call COMPILE,HOSTCC) + +%.o: %.c + $(COMPILE_C) + +%.o: %.cpp + $(COMPILE_CXX) + +%.o: %.m + $(COMPILE_C) + +%.s: %.c + $(CC) $(CPPFLAGS) $(CFLAGS) -S -o $@ $< + +%.o: %.S + $(COMPILE_S) + +%_host.o: %.c + $(COMPILE_HOSTC) + +%.o: %.rc + $(WINDRES) $(IFLAGS) --preprocessor "$(DEPWINDRES) -E -xc-header -DRC_INVOKED $(CC_DEPFLAGS)" -o $@ $< + +%.i: %.c + $(CC) $(CCFLAGS) $(CC_E) $< + +%.h.c: + $(Q)echo '#include "$*.h"' >$@ + +%.ver: %.v + $(Q)sed 's/$$MAJOR/$($(basename $(@F))_VERSION_MAJOR)/' $^ > $@ + +%.c %.h: TAG = GEN + +# Dummy rule to stop make trying to rebuild removed or renamed headers +%.h: + @: + +# Disable suffix rules. Most of the builtin rules are suffix rules, +# so this saves some time on slow systems. +.SUFFIXES: + +# Do not delete intermediate files from chains of implicit rules +$(OBJS): +endif + +include $(SRC_PATH)/arch.mak + +OBJS += $(OBJS-yes) +SLIBOBJS += $(SLIBOBJS-yes) +FFLIBS := $($(NAME)_FFLIBS) $(FFLIBS-yes) $(FFLIBS) +TESTPROGS += $(TESTPROGS-yes) + +LDLIBS = $(FFLIBS:%=%$(BUILDSUF)) +FFEXTRALIBS := $(LDLIBS:%=$(LD_LIB)) $(EXTRALIBS) + +OBJS := $(sort $(OBJS:%=$(SUBDIR)%)) +SLIBOBJS := $(sort $(SLIBOBJS:%=$(SUBDIR)%)) +TESTOBJS := $(TESTOBJS:%=$(SUBDIR)%) $(TESTPROGS:%=$(SUBDIR)%-test.o) +TESTPROGS := $(TESTPROGS:%=$(SUBDIR)%-test$(EXESUF)) +HOSTOBJS := $(HOSTPROGS:%=$(SUBDIR)%.o) +HOSTPROGS := $(HOSTPROGS:%=$(SUBDIR)%$(HOSTEXESUF)) +TOOLS += $(TOOLS-yes) +TOOLOBJS := $(TOOLS:%=tools/%.o) +TOOLS := $(TOOLS:%=tools/%$(EXESUF)) +HEADERS += $(HEADERS-yes) + +PATH_LIBNAME = $(foreach NAME,$(1),lib$(NAME)/$($(CONFIG_SHARED:yes=S)LIBNAME)) +DEP_LIBS := $(foreach lib,$(FFLIBS),$(call PATH_LIBNAME,$(lib))) + +SRC_DIR := $(SRC_PATH)/lib$(NAME) +ALLHEADERS := $(subst $(SRC_DIR)/,$(SUBDIR),$(wildcard $(SRC_DIR)/*.h $(SRC_DIR)/$(ARCH)/*.h)) +SKIPHEADERS += $(ARCH_HEADERS:%=$(ARCH)/%) $(SKIPHEADERS-) +SKIPHEADERS := $(SKIPHEADERS:%=$(SUBDIR)%) +HOBJS = $(filter-out $(SKIPHEADERS:.h=.h.o),$(ALLHEADERS:.h=.h.o)) +checkheaders: $(HOBJS) +.SECONDARY: $(HOBJS:.o=.c) + +alltools: $(TOOLS) + +$(HOSTOBJS): %.o: %.c + $(COMPILE_HOSTC) + +$(HOSTPROGS): %$(HOSTEXESUF): %.o + $(HOSTLD) $(HOSTLDFLAGS) $(HOSTLD_O) $^ $(HOSTLIBS) + +$(OBJS): | $(sort $(dir $(OBJS))) +$(HOBJS): | $(sort $(dir $(HOBJS))) +$(HOSTOBJS): | $(sort $(dir $(HOSTOBJS))) +$(SLIBOBJS): | $(sort $(dir $(SLIBOBJS))) +$(TESTOBJS): | $(sort $(dir $(TESTOBJS))) +$(TOOLOBJS): | tools + +OBJDIRS := $(OBJDIRS) $(dir $(OBJS) $(HOBJS) $(HOSTOBJS) $(SLIBOBJS) $(TESTOBJS)) + +CLEANSUFFIXES = *.d *.o *~ *.h.c *.map *.ver *.ho *.gcno *.gcda +DISTCLEANSUFFIXES = *.pc +LIBSUFFIXES = *.a *.lib *.so *.so.* *.dylib *.dll *.def *.dll.a + +define RULES +clean:: + $(RM) $(OBJS) $(OBJS:.o=.d) + $(RM) $(HOSTPROGS) + $(RM) $(TOOLS) +endef + +$(eval $(RULES)) + +-include $(wildcard $(OBJS:.o=.d) $(HOSTOBJS:.o=.d) $(TESTOBJS:.o=.d) $(HOBJS:.o=.d) $(SLIBOBJS:.o=.d)) diff --git a/ffmpeg/compat/aix/math.h b/ffmpeg/compat/aix/math.h new file mode 100644 index 0000000..65a89c4 --- /dev/null +++ b/ffmpeg/compat/aix/math.h @@ -0,0 +1,31 @@ +/* + * Work around the class() function in AIX math.h clashing with + * identifiers named "class". + * + * This file is part of FFmpeg. + * + * FFmpeg is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * FFmpeg is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with FFmpeg; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#ifndef FFMPEG_COMPAT_AIX_MATH_H +#define FFMPEG_COMPAT_AIX_MATH_H + +#define class class_in_math_h_causes_problems + +#include_next + +#undef class + +#endif /* FFMPEG_COMPAT_AIX_MATH_H */ diff --git a/ffmpeg/compat/avisynth/avisynth_c.h b/ffmpeg/compat/avisynth/avisynth_c.h new file mode 100644 index 0000000..2d3002a --- /dev/null +++ b/ffmpeg/compat/avisynth/avisynth_c.h @@ -0,0 +1,880 @@ +// Avisynth C Interface Version 0.20 +// Copyright 2003 Kevin Atkinson + +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 2 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, +// MA 02110-1301 USA, or visit +// http://www.gnu.org/copyleft/gpl.html . +// +// As a special exception, I give you permission to link to the +// Avisynth C interface with independent modules that communicate with +// the Avisynth C interface solely through the interfaces defined in +// avisynth_c.h, regardless of the license terms of these independent +// modules, and to copy and distribute the resulting combined work +// under terms of your choice, provided that every copy of the +// combined work is accompanied by a complete copy of the source code +// of the Avisynth C interface and Avisynth itself (with the version +// used to produce the combined work), being distributed under the +// terms of the GNU General Public License plus this exception. An +// independent module is a module which is not derived from or based +// on Avisynth C Interface, such as 3rd-party filters, import and +// export plugins, or graphical user interfaces. + +// NOTE: this is a partial update of the Avisynth C interface to recognize +// new color spaces added in Avisynth 2.60. By no means is this document +// completely Avisynth 2.60 compliant. + +#ifndef __AVISYNTH_C__ +#define __AVISYNTH_C__ + +#ifdef __cplusplus +# define EXTERN_C extern "C" +#else +# define EXTERN_C +#endif + +#define AVSC_USE_STDCALL 1 + +#ifndef AVSC_USE_STDCALL +# define AVSC_CC __cdecl +#else +# define AVSC_CC __stdcall +#endif + +#define AVSC_INLINE static __inline + +#ifdef AVISYNTH_C_EXPORTS +# define AVSC_EXPORT EXTERN_C +# define AVSC_API(ret, name) EXTERN_C __declspec(dllexport) ret AVSC_CC name +#else +# define AVSC_EXPORT EXTERN_C __declspec(dllexport) +# ifndef AVSC_NO_DECLSPEC +# define AVSC_API(ret, name) EXTERN_C __declspec(dllimport) ret AVSC_CC name +# else +# define AVSC_API(ret, name) typedef ret (AVSC_CC *name##_func) +# endif +#endif + +typedef unsigned char BYTE; +#ifdef __GNUC__ +typedef long long int INT64; +#else +typedef __int64 INT64; +#endif + + +///////////////////////////////////////////////////////////////////// +// +// Constants +// + +#ifndef __AVISYNTH_H__ +enum { AVISYNTH_INTERFACE_VERSION = 4 }; +#endif + +enum {AVS_SAMPLE_INT8 = 1<<0, + AVS_SAMPLE_INT16 = 1<<1, + AVS_SAMPLE_INT24 = 1<<2, + AVS_SAMPLE_INT32 = 1<<3, + AVS_SAMPLE_FLOAT = 1<<4}; + +enum {AVS_PLANAR_Y=1<<0, + AVS_PLANAR_U=1<<1, + AVS_PLANAR_V=1<<2, + AVS_PLANAR_ALIGNED=1<<3, + AVS_PLANAR_Y_ALIGNED=AVS_PLANAR_Y|AVS_PLANAR_ALIGNED, + AVS_PLANAR_U_ALIGNED=AVS_PLANAR_U|AVS_PLANAR_ALIGNED, + AVS_PLANAR_V_ALIGNED=AVS_PLANAR_V|AVS_PLANAR_ALIGNED, + AVS_PLANAR_A=1<<4, + AVS_PLANAR_R=1<<5, + AVS_PLANAR_G=1<<6, + AVS_PLANAR_B=1<<7, + AVS_PLANAR_A_ALIGNED=AVS_PLANAR_A|AVS_PLANAR_ALIGNED, + AVS_PLANAR_R_ALIGNED=AVS_PLANAR_R|AVS_PLANAR_ALIGNED, + AVS_PLANAR_G_ALIGNED=AVS_PLANAR_G|AVS_PLANAR_ALIGNED, + AVS_PLANAR_B_ALIGNED=AVS_PLANAR_B|AVS_PLANAR_ALIGNED}; + + // Colorspace properties. +enum {AVS_CS_BGR = 1<<28, + AVS_CS_YUV = 1<<29, + AVS_CS_INTERLEAVED = 1<<30, + AVS_CS_PLANAR = 1<<31, + + AVS_CS_SHIFT_SUB_WIDTH = 0, + AVS_CS_SHIFT_SUB_HEIGHT = 1 << 3, + AVS_CS_SHIFT_SAMPLE_BITS = 1 << 4, + + AVS_CS_SUB_WIDTH_MASK = 7 << AVS_CS_SHIFT_SUB_WIDTH, + AVS_CS_SUB_WIDTH_1 = 3 << AVS_CS_SHIFT_SUB_WIDTH, // YV24 + AVS_CS_SUB_WIDTH_2 = 0 << AVS_CS_SHIFT_SUB_WIDTH, // YV12, I420, YV16 + AVS_CS_SUB_WIDTH_4 = 1 << AVS_CS_SHIFT_SUB_WIDTH, // YUV9, YV411 + + AVS_CS_VPLANEFIRST = 1 << 3, // YV12, YV16, YV24, YV411, YUV9 + AVS_CS_UPLANEFIRST = 1 << 4, // I420 + + AVS_CS_SUB_HEIGHT_MASK = 7 << AVS_CS_SHIFT_SUB_HEIGHT, + AVS_CS_SUB_HEIGHT_1 = 3 << AVS_CS_SHIFT_SUB_HEIGHT, // YV16, YV24, YV411 + AVS_CS_SUB_HEIGHT_2 = 0 << AVS_CS_SHIFT_SUB_HEIGHT, // YV12, I420 + AVS_CS_SUB_HEIGHT_4 = 1 << AVS_CS_SHIFT_SUB_HEIGHT, // YUV9 + + AVS_CS_SAMPLE_BITS_MASK = 7 << AVS_CS_SHIFT_SAMPLE_BITS, + AVS_CS_SAMPLE_BITS_8 = 0 << AVS_CS_SHIFT_SAMPLE_BITS, + AVS_CS_SAMPLE_BITS_16 = 1 << AVS_CS_SHIFT_SAMPLE_BITS, + AVS_CS_SAMPLE_BITS_32 = 2 << AVS_CS_SHIFT_SAMPLE_BITS, + + AVS_CS_PLANAR_MASK = AVS_CS_PLANAR | AVS_CS_INTERLEAVED | AVS_CS_YUV | AVS_CS_BGR | AVS_CS_SAMPLE_BITS_MASK | AVS_CS_SUB_HEIGHT_MASK | AVS_CS_SUB_WIDTH_MASK, + AVS_CS_PLANAR_FILTER = ~( AVS_CS_VPLANEFIRST | AVS_CS_UPLANEFIRST )}; + + // Specific colorformats +enum { + AVS_CS_UNKNOWN = 0, + AVS_CS_BGR24 = 1<<0 | AVS_CS_BGR | AVS_CS_INTERLEAVED, + AVS_CS_BGR32 = 1<<1 | AVS_CS_BGR | AVS_CS_INTERLEAVED, + AVS_CS_YUY2 = 1<<2 | AVS_CS_YUV | AVS_CS_INTERLEAVED, + // AVS_CS_YV12 = 1<<3 Reserved + // AVS_CS_I420 = 1<<4 Reserved + AVS_CS_RAW32 = 1<<5 | AVS_CS_INTERLEAVED, + + AVS_CS_YV24 = AVS_CS_PLANAR | AVS_CS_YUV | AVS_CS_SAMPLE_BITS_8 | AVS_CS_VPLANEFIRST | AVS_CS_SUB_HEIGHT_1 | AVS_CS_SUB_WIDTH_1, // YVU 4:4:4 planar + AVS_CS_YV16 = AVS_CS_PLANAR | AVS_CS_YUV | AVS_CS_SAMPLE_BITS_8 | AVS_CS_VPLANEFIRST | AVS_CS_SUB_HEIGHT_1 | AVS_CS_SUB_WIDTH_2, // YVU 4:2:2 planar + AVS_CS_YV12 = AVS_CS_PLANAR | AVS_CS_YUV | AVS_CS_SAMPLE_BITS_8 | AVS_CS_VPLANEFIRST | AVS_CS_SUB_HEIGHT_2 | AVS_CS_SUB_WIDTH_2, // YVU 4:2:0 planar + AVS_CS_I420 = AVS_CS_PLANAR | AVS_CS_YUV | AVS_CS_SAMPLE_BITS_8 | AVS_CS_UPLANEFIRST | AVS_CS_SUB_HEIGHT_2 | AVS_CS_SUB_WIDTH_2, // YUV 4:2:0 planar + AVS_CS_IYUV = AVS_CS_I420, + AVS_CS_YV411 = AVS_CS_PLANAR | AVS_CS_YUV | AVS_CS_SAMPLE_BITS_8 | AVS_CS_VPLANEFIRST | AVS_CS_SUB_HEIGHT_1 | AVS_CS_SUB_WIDTH_4, // YVU 4:1:1 planar + AVS_CS_YUV9 = AVS_CS_PLANAR | AVS_CS_YUV | AVS_CS_SAMPLE_BITS_8 | AVS_CS_VPLANEFIRST | AVS_CS_SUB_HEIGHT_4 | AVS_CS_SUB_WIDTH_4, // YVU 4:1:0 planar + AVS_CS_Y8 = AVS_CS_PLANAR | AVS_CS_INTERLEAVED | AVS_CS_YUV | AVS_CS_SAMPLE_BITS_8 // Y 4:0:0 planar +}; + +enum { + AVS_IT_BFF = 1<<0, + AVS_IT_TFF = 1<<1, + AVS_IT_FIELDBASED = 1<<2}; + +enum { + AVS_FILTER_TYPE=1, + AVS_FILTER_INPUT_COLORSPACE=2, + AVS_FILTER_OUTPUT_TYPE=9, + AVS_FILTER_NAME=4, + AVS_FILTER_AUTHOR=5, + AVS_FILTER_VERSION=6, + AVS_FILTER_ARGS=7, + AVS_FILTER_ARGS_INFO=8, + AVS_FILTER_ARGS_DESCRIPTION=10, + AVS_FILTER_DESCRIPTION=11}; + +enum { //SUBTYPES + AVS_FILTER_TYPE_AUDIO=1, + AVS_FILTER_TYPE_VIDEO=2, + AVS_FILTER_OUTPUT_TYPE_SAME=3, + AVS_FILTER_OUTPUT_TYPE_DIFFERENT=4}; + +enum { + AVS_CACHE_NOTHING=0, + AVS_CACHE_RANGE=1, + AVS_CACHE_ALL=2, + AVS_CACHE_AUDIO=3, + AVS_CACHE_AUDIO_NONE=4, + AVS_CACHE_AUDIO_AUTO=5 + }; + +#define AVS_FRAME_ALIGN 16 + +typedef struct AVS_Clip AVS_Clip; +typedef struct AVS_ScriptEnvironment AVS_ScriptEnvironment; + +///////////////////////////////////////////////////////////////////// +// +// AVS_VideoInfo +// + +// AVS_VideoInfo is layed out identicly to VideoInfo +typedef struct AVS_VideoInfo { + int width, height; // width=0 means no video + unsigned fps_numerator, fps_denominator; + int num_frames; + + int pixel_type; + + int audio_samples_per_second; // 0 means no audio + int sample_type; + INT64 num_audio_samples; + int nchannels; + + // Imagetype properties + + int image_type; +} AVS_VideoInfo; + +// useful functions of the above +AVSC_INLINE int avs_has_video(const AVS_VideoInfo * p) + { return (p->width!=0); } + +AVSC_INLINE int avs_has_audio(const AVS_VideoInfo * p) + { return (p->audio_samples_per_second!=0); } + +AVSC_INLINE int avs_is_rgb(const AVS_VideoInfo * p) + { return !!(p->pixel_type&AVS_CS_BGR); } + +AVSC_INLINE int avs_is_rgb24(const AVS_VideoInfo * p) + { return (p->pixel_type&AVS_CS_BGR24)==AVS_CS_BGR24; } // Clear out additional properties + +AVSC_INLINE int avs_is_rgb32(const AVS_VideoInfo * p) + { return (p->pixel_type & AVS_CS_BGR32) == AVS_CS_BGR32 ; } + +AVSC_INLINE int avs_is_yuv(const AVS_VideoInfo * p) + { return !!(p->pixel_type&AVS_CS_YUV ); } + +AVSC_INLINE int avs_is_yuy2(const AVS_VideoInfo * p) + { return (p->pixel_type & AVS_CS_YUY2) == AVS_CS_YUY2; } + +AVSC_INLINE int avs_is_yv24(const AVS_VideoInfo * p) + { return (p->pixel_type & AVS_CS_PLANAR_MASK) == (AVS_CS_YV24 & AVS_CS_PLANAR_FILTER); } + +AVSC_INLINE int avs_is_yv16(const AVS_VideoInfo * p) + { return (p->pixel_type & AVS_CS_PLANAR_MASK) == (AVS_CS_YV16 & AVS_CS_PLANAR_FILTER); } + +AVSC_INLINE int avs_is_yv12(const AVS_VideoInfo * p) + { return (p->pixel_type & AVS_CS_PLANAR_MASK) == (AVS_CS_YV12 & AVS_CS_PLANAR_FILTER); } + +AVSC_INLINE int avs_is_yv411(const AVS_VideoInfo * p) + { return (p->pixel_type & AVS_CS_PLANAR_MASK) == (AVS_CS_YV411 & AVS_CS_PLANAR_FILTER); } + +AVSC_INLINE int avs_is_y8(const AVS_VideoInfo * p) + { return (p->pixel_type & AVS_CS_PLANAR_MASK) == (AVS_CS_Y8 & AVS_CS_PLANAR_FILTER); } + +AVSC_INLINE int avs_is_property(const AVS_VideoInfo * p, int property) + { return ((p->pixel_type & property)==property ); } + +AVSC_INLINE int avs_is_planar(const AVS_VideoInfo * p) + { return !!(p->pixel_type & AVS_CS_PLANAR); } + +AVSC_INLINE int avs_is_color_space(const AVS_VideoInfo * p, int c_space) + { return avs_is_planar(p) ? ((p->pixel_type & AVS_CS_PLANAR_MASK) == (c_space & AVS_CS_PLANAR_FILTER)) : ((p->pixel_type & c_space) == c_space); } + +AVSC_INLINE int avs_is_field_based(const AVS_VideoInfo * p) + { return !!(p->image_type & AVS_IT_FIELDBASED); } + +AVSC_INLINE int avs_is_parity_known(const AVS_VideoInfo * p) + { return ((p->image_type & AVS_IT_FIELDBASED)&&(p->image_type & (AVS_IT_BFF | AVS_IT_TFF))); } + +AVSC_INLINE int avs_is_bff(const AVS_VideoInfo * p) + { return !!(p->image_type & AVS_IT_BFF); } + +AVSC_INLINE int avs_is_tff(const AVS_VideoInfo * p) + { return !!(p->image_type & AVS_IT_TFF); } + +AVSC_INLINE int avs_bits_per_pixel(const AVS_VideoInfo * p) +{ + switch (p->pixel_type) { + case AVS_CS_BGR24: return 24; + case AVS_CS_BGR32: return 32; + case AVS_CS_YUY2: return 16; + case AVS_CS_YV12: + case AVS_CS_I420: return 12; + default: return 0; + } +} +AVSC_INLINE int avs_bytes_from_pixels(const AVS_VideoInfo * p, int pixels) + { return pixels * (avs_bits_per_pixel(p)>>3); } // Will work on planar images, but will return only luma planes + +AVSC_INLINE int avs_row_size(const AVS_VideoInfo * p) + { return avs_bytes_from_pixels(p,p->width); } // Also only returns first plane on planar images + +AVSC_INLINE int avs_bmp_size(const AVS_VideoInfo * vi) + { if (avs_is_planar(vi)) {int p = vi->height * ((avs_row_size(vi)+3) & ~3); p+=p>>1; return p; } return vi->height * ((avs_row_size(vi)+3) & ~3); } + +AVSC_INLINE int avs_samples_per_second(const AVS_VideoInfo * p) + { return p->audio_samples_per_second; } + + +AVSC_INLINE int avs_bytes_per_channel_sample(const AVS_VideoInfo * p) +{ + switch (p->sample_type) { + case AVS_SAMPLE_INT8: return sizeof(signed char); + case AVS_SAMPLE_INT16: return sizeof(signed short); + case AVS_SAMPLE_INT24: return 3; + case AVS_SAMPLE_INT32: return sizeof(signed int); + case AVS_SAMPLE_FLOAT: return sizeof(float); + default: return 0; + } +} +AVSC_INLINE int avs_bytes_per_audio_sample(const AVS_VideoInfo * p) + { return p->nchannels*avs_bytes_per_channel_sample(p);} + +AVSC_INLINE INT64 avs_audio_samples_from_frames(const AVS_VideoInfo * p, INT64 frames) + { return ((INT64)(frames) * p->audio_samples_per_second * p->fps_denominator / p->fps_numerator); } + +AVSC_INLINE int avs_frames_from_audio_samples(const AVS_VideoInfo * p, INT64 samples) + { return (int)(samples * (INT64)p->fps_numerator / (INT64)p->fps_denominator / (INT64)p->audio_samples_per_second); } + +AVSC_INLINE INT64 avs_audio_samples_from_bytes(const AVS_VideoInfo * p, INT64 bytes) + { return bytes / avs_bytes_per_audio_sample(p); } + +AVSC_INLINE INT64 avs_bytes_from_audio_samples(const AVS_VideoInfo * p, INT64 samples) + { return samples * avs_bytes_per_audio_sample(p); } + +AVSC_INLINE int avs_audio_channels(const AVS_VideoInfo * p) + { return p->nchannels; } + +AVSC_INLINE int avs_sample_type(const AVS_VideoInfo * p) + { return p->sample_type;} + +// useful mutator +AVSC_INLINE void avs_set_property(AVS_VideoInfo * p, int property) + { p->image_type|=property; } + +AVSC_INLINE void avs_clear_property(AVS_VideoInfo * p, int property) + { p->image_type&=~property; } + +AVSC_INLINE void avs_set_field_based(AVS_VideoInfo * p, int isfieldbased) + { if (isfieldbased) p->image_type|=AVS_IT_FIELDBASED; else p->image_type&=~AVS_IT_FIELDBASED; } + +AVSC_INLINE void avs_set_fps(AVS_VideoInfo * p, unsigned numerator, unsigned denominator) +{ + unsigned x=numerator, y=denominator; + while (y) { // find gcd + unsigned t = x%y; x = y; y = t; + } + p->fps_numerator = numerator/x; + p->fps_denominator = denominator/x; +} + +AVSC_INLINE int avs_is_same_colorspace(AVS_VideoInfo * x, AVS_VideoInfo * y) +{ + return (x->pixel_type == y->pixel_type) + || (avs_is_yv12(x) && avs_is_yv12(y)); +} + +///////////////////////////////////////////////////////////////////// +// +// AVS_VideoFrame +// + +// VideoFrameBuffer holds information about a memory block which is used +// for video data. For efficiency, instances of this class are not deleted +// when the refcount reaches zero; instead they're stored in a linked list +// to be reused. The instances are deleted when the corresponding AVS +// file is closed. + +// AVS_VideoFrameBuffer is layed out identicly to VideoFrameBuffer +// DO NOT USE THIS STRUCTURE DIRECTLY +typedef struct AVS_VideoFrameBuffer { + BYTE * data; + int data_size; + // sequence_number is incremented every time the buffer is changed, so + // that stale views can tell they're no longer valid. + volatile long sequence_number; + + volatile long refcount; +} AVS_VideoFrameBuffer; + +// VideoFrame holds a "window" into a VideoFrameBuffer. + +// AVS_VideoFrame is layed out identicly to IVideoFrame +// DO NOT USE THIS STRUCTURE DIRECTLY +typedef struct AVS_VideoFrame { + volatile long refcount; + AVS_VideoFrameBuffer * vfb; + int offset, pitch, row_size, height, offsetU, offsetV, pitchUV; // U&V offsets are from top of picture. + int row_sizeUV, heightUV; +} AVS_VideoFrame; + +// Access functions for AVS_VideoFrame +AVSC_INLINE int avs_get_pitch(const AVS_VideoFrame * p) { + return p->pitch;} + +AVSC_INLINE int avs_get_pitch_p(const AVS_VideoFrame * p, int plane) { + switch (plane) { + case AVS_PLANAR_U: case AVS_PLANAR_V: return p->pitchUV;} + return p->pitch;} + +AVSC_INLINE int avs_get_row_size(const AVS_VideoFrame * p) { + return p->row_size; } + +AVSC_INLINE int avs_get_row_size_p(const AVS_VideoFrame * p, int plane) { + int r; + switch (plane) { + case AVS_PLANAR_U: case AVS_PLANAR_V: + if (p->pitchUV) return p->row_sizeUV; + else return 0; + case AVS_PLANAR_U_ALIGNED: case AVS_PLANAR_V_ALIGNED: + if (p->pitchUV) { + r = (p->row_sizeUV+AVS_FRAME_ALIGN-1)&(~(AVS_FRAME_ALIGN-1)); // Aligned rowsize + if (r < p->pitchUV) + return r; + return p->row_sizeUV; + } else return 0; + case AVS_PLANAR_Y_ALIGNED: + r = (p->row_size+AVS_FRAME_ALIGN-1)&(~(AVS_FRAME_ALIGN-1)); // Aligned rowsize + if (r <= p->pitch) + return r; + return p->row_size; + } + return p->row_size; +} + +AVSC_INLINE int avs_get_height(const AVS_VideoFrame * p) { + return p->height;} + +AVSC_INLINE int avs_get_height_p(const AVS_VideoFrame * p, int plane) { + switch (plane) { + case AVS_PLANAR_U: case AVS_PLANAR_V: + if (p->pitchUV) return p->heightUV; + return 0; + } + return p->height;} + +AVSC_INLINE const BYTE* avs_get_read_ptr(const AVS_VideoFrame * p) { + return p->vfb->data + p->offset;} + +AVSC_INLINE const BYTE* avs_get_read_ptr_p(const AVS_VideoFrame * p, int plane) +{ + switch (plane) { + case AVS_PLANAR_U: return p->vfb->data + p->offsetU; + case AVS_PLANAR_V: return p->vfb->data + p->offsetV; + default: return p->vfb->data + p->offset;} +} + +AVSC_INLINE int avs_is_writable(const AVS_VideoFrame * p) { + return (p->refcount == 1 && p->vfb->refcount == 1);} + +AVSC_INLINE BYTE* avs_get_write_ptr(const AVS_VideoFrame * p) +{ + if (avs_is_writable(p)) { + ++p->vfb->sequence_number; + return p->vfb->data + p->offset; + } else + return 0; +} + +AVSC_INLINE BYTE* avs_get_write_ptr_p(const AVS_VideoFrame * p, int plane) +{ + if (plane==AVS_PLANAR_Y && avs_is_writable(p)) { + ++p->vfb->sequence_number; + return p->vfb->data + p->offset; + } else if (plane==AVS_PLANAR_Y) { + return 0; + } else { + switch (plane) { + case AVS_PLANAR_U: return p->vfb->data + p->offsetU; + case AVS_PLANAR_V: return p->vfb->data + p->offsetV; + default: return p->vfb->data + p->offset; + } + } +} + + +AVSC_API(void, avs_release_video_frame)(AVS_VideoFrame *); +// makes a shallow copy of a video frame +AVSC_API(AVS_VideoFrame *, avs_copy_video_frame)(AVS_VideoFrame *); + +#ifndef AVSC_NO_DECLSPEC +AVSC_INLINE void avs_release_frame(AVS_VideoFrame * f) + {avs_release_video_frame(f);} +AVSC_INLINE AVS_VideoFrame * avs_copy_frame(AVS_VideoFrame * f) + {return avs_copy_video_frame(f);} +#endif + +///////////////////////////////////////////////////////////////////// +// +// AVS_Value +// + +// Treat AVS_Value as a fat pointer. That is use avs_copy_value +// and avs_release_value appropiaty as you would if AVS_Value was +// a pointer. + +// To maintain source code compatibility with future versions of the +// avisynth_c API don't use the AVS_Value directly. Use the helper +// functions below. + +// AVS_Value is layed out identicly to AVSValue +typedef struct AVS_Value AVS_Value; +struct AVS_Value { + short type; // 'a'rray, 'c'lip, 'b'ool, 'i'nt, 'f'loat, 's'tring, 'v'oid, or 'l'ong + // for some function e'rror + short array_size; + union { + void * clip; // do not use directly, use avs_take_clip + char boolean; + int integer; + float floating_pt; + const char * string; + const AVS_Value * array; + } d; +}; + +// AVS_Value should be initilized with avs_void. +// Should also set to avs_void after the value is released +// with avs_copy_value. Consider it the equalvent of setting +// a pointer to NULL +static const AVS_Value avs_void = {'v'}; + +AVSC_API(void, avs_copy_value)(AVS_Value * dest, AVS_Value src); +AVSC_API(void, avs_release_value)(AVS_Value); + +AVSC_INLINE int avs_defined(AVS_Value v) { return v.type != 'v'; } +AVSC_INLINE int avs_is_clip(AVS_Value v) { return v.type == 'c'; } +AVSC_INLINE int avs_is_bool(AVS_Value v) { return v.type == 'b'; } +AVSC_INLINE int avs_is_int(AVS_Value v) { return v.type == 'i'; } +AVSC_INLINE int avs_is_float(AVS_Value v) { return v.type == 'f' || v.type == 'i'; } +AVSC_INLINE int avs_is_string(AVS_Value v) { return v.type == 's'; } +AVSC_INLINE int avs_is_array(AVS_Value v) { return v.type == 'a'; } +AVSC_INLINE int avs_is_error(AVS_Value v) { return v.type == 'e'; } + +AVSC_API(AVS_Clip *, avs_take_clip)(AVS_Value, AVS_ScriptEnvironment *); +AVSC_API(void, avs_set_to_clip)(AVS_Value *, AVS_Clip *); + +AVSC_INLINE int avs_as_bool(AVS_Value v) + { return v.d.boolean; } +AVSC_INLINE int avs_as_int(AVS_Value v) + { return v.d.integer; } +AVSC_INLINE const char * avs_as_string(AVS_Value v) + { return avs_is_error(v) || avs_is_string(v) ? v.d.string : 0; } +AVSC_INLINE double avs_as_float(AVS_Value v) + { return avs_is_int(v) ? v.d.integer : v.d.floating_pt; } +AVSC_INLINE const char * avs_as_error(AVS_Value v) + { return avs_is_error(v) ? v.d.string : 0; } +AVSC_INLINE const AVS_Value * avs_as_array(AVS_Value v) + { return v.d.array; } +AVSC_INLINE int avs_array_size(AVS_Value v) + { return avs_is_array(v) ? v.array_size : 1; } +AVSC_INLINE AVS_Value avs_array_elt(AVS_Value v, int index) + { return avs_is_array(v) ? v.d.array[index] : v; } + +// only use these functions on an AVS_Value that does not already have +// an active value. Remember, treat AVS_Value as a fat pointer. +AVSC_INLINE AVS_Value avs_new_value_bool(int v0) + { AVS_Value v; v.type = 'b'; v.d.boolean = v0 == 0 ? 0 : 1; return v; } +AVSC_INLINE AVS_Value avs_new_value_int(int v0) + { AVS_Value v; v.type = 'i'; v.d.integer = v0; return v; } +AVSC_INLINE AVS_Value avs_new_value_string(const char * v0) + { AVS_Value v; v.type = 's'; v.d.string = v0; return v; } +AVSC_INLINE AVS_Value avs_new_value_float(float v0) + { AVS_Value v; v.type = 'f'; v.d.floating_pt = v0; return v;} +AVSC_INLINE AVS_Value avs_new_value_error(const char * v0) + { AVS_Value v; v.type = 'e'; v.d.string = v0; return v; } +#ifndef AVSC_NO_DECLSPEC +AVSC_INLINE AVS_Value avs_new_value_clip(AVS_Clip * v0) + { AVS_Value v; avs_set_to_clip(&v, v0); return v; } +#endif +AVSC_INLINE AVS_Value avs_new_value_array(AVS_Value * v0, int size) + { AVS_Value v; v.type = 'a'; v.d.array = v0; v.array_size = size; return v; } + +///////////////////////////////////////////////////////////////////// +// +// AVS_Clip +// + +AVSC_API(void, avs_release_clip)(AVS_Clip *); +AVSC_API(AVS_Clip *, avs_copy_clip)(AVS_Clip *); + +AVSC_API(const char *, avs_clip_get_error)(AVS_Clip *); // return 0 if no error + +AVSC_API(const AVS_VideoInfo *, avs_get_video_info)(AVS_Clip *); + +AVSC_API(int, avs_get_version)(AVS_Clip *); + +AVSC_API(AVS_VideoFrame *, avs_get_frame)(AVS_Clip *, int n); +// The returned video frame must be released with avs_release_video_frame + +AVSC_API(int, avs_get_parity)(AVS_Clip *, int n); +// return field parity if field_based, else parity of first field in frame + +AVSC_API(int, avs_get_audio)(AVS_Clip *, void * buf, + INT64 start, INT64 count); +// start and count are in samples + +AVSC_API(int, avs_set_cache_hints)(AVS_Clip *, + int cachehints, int frame_range); + +// This is the callback type used by avs_add_function +typedef AVS_Value (AVSC_CC * AVS_ApplyFunc) + (AVS_ScriptEnvironment *, AVS_Value args, void * user_data); + +typedef struct AVS_FilterInfo AVS_FilterInfo; +struct AVS_FilterInfo +{ + // these members should not be modified outside of the AVS_ApplyFunc callback + AVS_Clip * child; + AVS_VideoInfo vi; + AVS_ScriptEnvironment * env; + AVS_VideoFrame * (AVSC_CC * get_frame)(AVS_FilterInfo *, int n); + int (AVSC_CC * get_parity)(AVS_FilterInfo *, int n); + int (AVSC_CC * get_audio)(AVS_FilterInfo *, void * buf, + INT64 start, INT64 count); + int (AVSC_CC * set_cache_hints)(AVS_FilterInfo *, int cachehints, + int frame_range); + void (AVSC_CC * free_filter)(AVS_FilterInfo *); + + // Should be set when ever there is an error to report. + // It is cleared before any of the above methods are called + const char * error; + // this is to store whatever and may be modified at will + void * user_data; +}; + +// Create a new filter +// fi is set to point to the AVS_FilterInfo so that you can +// modify it once it is initilized. +// store_child should generally be set to true. If it is not +// set than ALL methods (the function pointers) must be defined +// If it is set than you do not need to worry about freeing the child +// clip. +AVSC_API(AVS_Clip *, avs_new_c_filter)(AVS_ScriptEnvironment * e, + AVS_FilterInfo * * fi, + AVS_Value child, int store_child); + +///////////////////////////////////////////////////////////////////// +// +// AVS_ScriptEnvironment +// + +// For GetCPUFlags. These are backwards-compatible with those in VirtualDub. +enum { + /* slowest CPU to support extension */ + AVS_CPU_FORCE = 0x01, // N/A + AVS_CPU_FPU = 0x02, // 386/486DX + AVS_CPU_MMX = 0x04, // P55C, K6, PII + AVS_CPU_INTEGER_SSE = 0x08, // PIII, Athlon + AVS_CPU_SSE = 0x10, // PIII, Athlon XP/MP + AVS_CPU_SSE2 = 0x20, // PIV, Hammer + AVS_CPU_3DNOW = 0x40, // K6-2 + AVS_CPU_3DNOW_EXT = 0x80, // Athlon + AVS_CPU_X86_64 = 0xA0, // Hammer (note: equiv. to 3DNow + SSE2, + // which only Hammer will have anyway) + AVS_CPUF_SSE3 = 0x100, // PIV+, K8 Venice + AVS_CPUF_SSSE3 = 0x200, // Core 2 + AVS_CPUF_SSE4 = 0x400, // Penryn, Wolfdale, Yorkfield + AVS_CPUF_SSE4_1 = 0x400, + AVS_CPUF_SSE4_2 = 0x800, // Nehalem +}; + +AVSC_API(const char *, avs_get_error)(AVS_ScriptEnvironment *); // return 0 if no error + +AVSC_API(long, avs_get_cpu_flags)(AVS_ScriptEnvironment *); +AVSC_API(int, avs_check_version)(AVS_ScriptEnvironment *, int version); + +AVSC_API(char *, avs_save_string)(AVS_ScriptEnvironment *, const char* s, int length); +AVSC_API(char *, avs_sprintf)(AVS_ScriptEnvironment *, const char * fmt, ...); + +AVSC_API(char *, avs_vsprintf)(AVS_ScriptEnvironment *, const char * fmt, void* val); + // note: val is really a va_list; I hope everyone typedefs va_list to a pointer + +AVSC_API(int, avs_add_function)(AVS_ScriptEnvironment *, + const char * name, const char * params, + AVS_ApplyFunc apply, void * user_data); + +AVSC_API(int, avs_function_exists)(AVS_ScriptEnvironment *, const char * name); + +AVSC_API(AVS_Value, avs_invoke)(AVS_ScriptEnvironment *, const char * name, + AVS_Value args, const char** arg_names); +// The returned value must be be released with avs_release_value + +AVSC_API(AVS_Value, avs_get_var)(AVS_ScriptEnvironment *, const char* name); +// The returned value must be be released with avs_release_value + +AVSC_API(int, avs_set_var)(AVS_ScriptEnvironment *, const char* name, AVS_Value val); + +AVSC_API(int, avs_set_global_var)(AVS_ScriptEnvironment *, const char* name, const AVS_Value val); + +//void avs_push_context(AVS_ScriptEnvironment *, int level=0); +//void avs_pop_context(AVS_ScriptEnvironment *); + +AVSC_API(AVS_VideoFrame *, avs_new_video_frame_a)(AVS_ScriptEnvironment *, + const AVS_VideoInfo * vi, int align); +// align should be at least 16 + +#ifndef AVSC_NO_DECLSPEC +AVSC_INLINE +AVS_VideoFrame * avs_new_video_frame(AVS_ScriptEnvironment * env, + const AVS_VideoInfo * vi) + {return avs_new_video_frame_a(env,vi,AVS_FRAME_ALIGN);} + +AVSC_INLINE +AVS_VideoFrame * avs_new_frame(AVS_ScriptEnvironment * env, + const AVS_VideoInfo * vi) + {return avs_new_video_frame_a(env,vi,AVS_FRAME_ALIGN);} +#endif + + +AVSC_API(int, avs_make_writable)(AVS_ScriptEnvironment *, AVS_VideoFrame * * pvf); + +AVSC_API(void, avs_bit_blt)(AVS_ScriptEnvironment *, BYTE* dstp, int dst_pitch, const BYTE* srcp, int src_pitch, int row_size, int height); + +typedef void (AVSC_CC *AVS_ShutdownFunc)(void* user_data, AVS_ScriptEnvironment * env); +AVSC_API(void, avs_at_exit)(AVS_ScriptEnvironment *, AVS_ShutdownFunc function, void * user_data); + +AVSC_API(AVS_VideoFrame *, avs_subframe)(AVS_ScriptEnvironment *, AVS_VideoFrame * src, int rel_offset, int new_pitch, int new_row_size, int new_height); +// The returned video frame must be be released + +AVSC_API(int, avs_set_memory_max)(AVS_ScriptEnvironment *, int mem); + +AVSC_API(int, avs_set_working_dir)(AVS_ScriptEnvironment *, const char * newdir); + +// avisynth.dll exports this; it's a way to use it as a library, without +// writing an AVS script or without going through AVIFile. +AVSC_API(AVS_ScriptEnvironment *, avs_create_script_environment)(int version); + +// this symbol is the entry point for the plugin and must +// be defined +AVSC_EXPORT +const char * AVSC_CC avisynth_c_plugin_init(AVS_ScriptEnvironment* env); + + +AVSC_API(void, avs_delete_script_environment)(AVS_ScriptEnvironment *); + + +AVSC_API(AVS_VideoFrame *, avs_subframe_planar)(AVS_ScriptEnvironment *, AVS_VideoFrame * src, int rel_offset, int new_pitch, int new_row_size, int new_height, int rel_offsetU, int rel_offsetV, int new_pitchUV); +// The returned video frame must be be released + +#ifdef AVSC_NO_DECLSPEC +// use LoadLibrary and related functions to dynamically load Avisynth instead of declspec(dllimport) +/* + The following functions needs to have been declared, probably from windows.h + + void* malloc(size_t) + void free(void*); + + HMODULE LoadLibrary(const char*); + void* GetProcAddress(HMODULE, const char*); + FreeLibrary(HMODULE); +*/ + + +typedef struct AVS_Library AVS_Library; + +#define AVSC_DECLARE_FUNC(name) name##_func name + +struct AVS_Library { + HMODULE handle; + + AVSC_DECLARE_FUNC(avs_add_function); + AVSC_DECLARE_FUNC(avs_at_exit); + AVSC_DECLARE_FUNC(avs_bit_blt); + AVSC_DECLARE_FUNC(avs_check_version); + AVSC_DECLARE_FUNC(avs_clip_get_error); + AVSC_DECLARE_FUNC(avs_copy_clip); + AVSC_DECLARE_FUNC(avs_copy_value); + AVSC_DECLARE_FUNC(avs_copy_video_frame); + AVSC_DECLARE_FUNC(avs_create_script_environment); + AVSC_DECLARE_FUNC(avs_delete_script_environment); + AVSC_DECLARE_FUNC(avs_function_exists); + AVSC_DECLARE_FUNC(avs_get_audio); + AVSC_DECLARE_FUNC(avs_get_cpu_flags); + AVSC_DECLARE_FUNC(avs_get_error); + AVSC_DECLARE_FUNC(avs_get_frame); + AVSC_DECLARE_FUNC(avs_get_parity); + AVSC_DECLARE_FUNC(avs_get_var); + AVSC_DECLARE_FUNC(avs_get_version); + AVSC_DECLARE_FUNC(avs_get_video_info); + AVSC_DECLARE_FUNC(avs_invoke); + AVSC_DECLARE_FUNC(avs_make_writable); + AVSC_DECLARE_FUNC(avs_new_c_filter); + AVSC_DECLARE_FUNC(avs_new_video_frame_a); + AVSC_DECLARE_FUNC(avs_release_clip); + AVSC_DECLARE_FUNC(avs_release_value); + AVSC_DECLARE_FUNC(avs_release_video_frame); + AVSC_DECLARE_FUNC(avs_save_string); + AVSC_DECLARE_FUNC(avs_set_cache_hints); + AVSC_DECLARE_FUNC(avs_set_global_var); + AVSC_DECLARE_FUNC(avs_set_memory_max); + AVSC_DECLARE_FUNC(avs_set_to_clip); + AVSC_DECLARE_FUNC(avs_set_var); + AVSC_DECLARE_FUNC(avs_set_working_dir); + AVSC_DECLARE_FUNC(avs_sprintf); + AVSC_DECLARE_FUNC(avs_subframe); + AVSC_DECLARE_FUNC(avs_subframe_planar); + AVSC_DECLARE_FUNC(avs_take_clip); + AVSC_DECLARE_FUNC(avs_vsprintf); +}; + +#undef AVSC_DECLARE_FUNC + + +AVSC_INLINE AVS_Library * avs_load_library() { + AVS_Library *library = (AVS_Library *)malloc(sizeof(AVS_Library)); + if (!library) + return NULL; + library->handle = LoadLibrary("avisynth"); + if (library->handle == NULL) + goto fail; + +#define __AVSC_STRINGIFY(x) #x +#define AVSC_STRINGIFY(x) __AVSC_STRINGIFY(x) +#define AVSC_LOAD_FUNC(name) {\ + library->name = (name##_func) GetProcAddress(library->handle, AVSC_STRINGIFY(name));\ + if (library->name == NULL)\ + goto fail;\ +} + + AVSC_LOAD_FUNC(avs_add_function); + AVSC_LOAD_FUNC(avs_at_exit); + AVSC_LOAD_FUNC(avs_bit_blt); + AVSC_LOAD_FUNC(avs_check_version); + AVSC_LOAD_FUNC(avs_clip_get_error); + AVSC_LOAD_FUNC(avs_copy_clip); + AVSC_LOAD_FUNC(avs_copy_value); + AVSC_LOAD_FUNC(avs_copy_video_frame); + AVSC_LOAD_FUNC(avs_create_script_environment); + AVSC_LOAD_FUNC(avs_delete_script_environment); + AVSC_LOAD_FUNC(avs_function_exists); + AVSC_LOAD_FUNC(avs_get_audio); + AVSC_LOAD_FUNC(avs_get_cpu_flags); + AVSC_LOAD_FUNC(avs_get_error); + AVSC_LOAD_FUNC(avs_get_frame); + AVSC_LOAD_FUNC(avs_get_parity); + AVSC_LOAD_FUNC(avs_get_var); + AVSC_LOAD_FUNC(avs_get_version); + AVSC_LOAD_FUNC(avs_get_video_info); + AVSC_LOAD_FUNC(avs_invoke); + AVSC_LOAD_FUNC(avs_make_writable); + AVSC_LOAD_FUNC(avs_new_c_filter); + AVSC_LOAD_FUNC(avs_new_video_frame_a); + AVSC_LOAD_FUNC(avs_release_clip); + AVSC_LOAD_FUNC(avs_release_value); + AVSC_LOAD_FUNC(avs_release_video_frame); + AVSC_LOAD_FUNC(avs_save_string); + AVSC_LOAD_FUNC(avs_set_cache_hints); + AVSC_LOAD_FUNC(avs_set_global_var); + AVSC_LOAD_FUNC(avs_set_memory_max); + AVSC_LOAD_FUNC(avs_set_to_clip); + AVSC_LOAD_FUNC(avs_set_var); + AVSC_LOAD_FUNC(avs_set_working_dir); + AVSC_LOAD_FUNC(avs_sprintf); + AVSC_LOAD_FUNC(avs_subframe); + AVSC_LOAD_FUNC(avs_subframe_planar); + AVSC_LOAD_FUNC(avs_take_clip); + AVSC_LOAD_FUNC(avs_vsprintf); + +#undef __AVSC_STRINGIFY +#undef AVSC_STRINGIFY +#undef AVSC_LOAD_FUNC + + return library; + +fail: + free(library); + return NULL; +} + +AVSC_INLINE void avs_free_library(AVS_Library *library) { + if (!library) + return; + FreeLibrary(library->handle); + free(library); +} +#endif + +#endif diff --git a/ffmpeg/compat/avisynth/avisynth_c_25.h b/ffmpeg/compat/avisynth/avisynth_c_25.h new file mode 100644 index 0000000..9288761 --- /dev/null +++ b/ffmpeg/compat/avisynth/avisynth_c_25.h @@ -0,0 +1,68 @@ +// Copyright (c) 2011 FFmpegSource Project +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. + +/* these are defines/functions that are used and were changed in the switch to 2.6 + * and are needed to maintain full compatility with 2.5 */ + +enum { + AVS_CS_YV12_25 = 1<<3 | AVS_CS_YUV | AVS_CS_PLANAR, // y-v-u, planar + AVS_CS_I420_25 = 1<<4 | AVS_CS_YUV | AVS_CS_PLANAR, // y-u-v, planar +}; + +AVSC_INLINE int avs_get_height_p_25(const AVS_VideoFrame * p, int plane) { + switch (plane) + { + case AVS_PLANAR_U: case AVS_PLANAR_V: + if (p->pitchUV) + return p->height>>1; + return 0; + } + return p->height;} + +AVSC_INLINE int avs_get_row_size_p_25(const AVS_VideoFrame * p, int plane) { + int r; + switch (plane) + { + case AVS_PLANAR_U: case AVS_PLANAR_V: + if (p->pitchUV) + return p->row_size>>1; + else + return 0; + case AVS_PLANAR_U_ALIGNED: case AVS_PLANAR_V_ALIGNED: + if (p->pitchUV) + { + r = ((p->row_size+AVS_FRAME_ALIGN-1)&(~(AVS_FRAME_ALIGN-1)) )>>1; // Aligned rowsize + if (r < p->pitchUV) + return r; + return p->row_size>>1; + } + else + return 0; + case AVS_PLANAR_Y_ALIGNED: + r = (p->row_size+AVS_FRAME_ALIGN-1)&(~(AVS_FRAME_ALIGN-1)); // Aligned rowsize + if (r <= p->pitch) + return r; + return p->row_size; + } + return p->row_size; +} + +AVSC_INLINE int avs_is_yv12_25(const AVS_VideoInfo * p) + { return ((p->pixel_type & AVS_CS_YV12_25) == AVS_CS_YV12_25)||((p->pixel_type & AVS_CS_I420_25) == AVS_CS_I420_25); } diff --git a/ffmpeg/compat/avisynth/avxsynth_c.h b/ffmpeg/compat/avisynth/avxsynth_c.h new file mode 100644 index 0000000..b20f460 --- /dev/null +++ b/ffmpeg/compat/avisynth/avxsynth_c.h @@ -0,0 +1,728 @@ +// Avisynth C Interface Version 0.20 +// Copyright 2003 Kevin Atkinson + +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 2 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, +// MA 02110-1301 USA, or visit +// http://www.gnu.org/copyleft/gpl.html . +// +// As a special exception, I give you permission to link to the +// Avisynth C interface with independent modules that communicate with +// the Avisynth C interface solely through the interfaces defined in +// avisynth_c.h, regardless of the license terms of these independent +// modules, and to copy and distribute the resulting combined work +// under terms of your choice, provided that every copy of the +// combined work is accompanied by a complete copy of the source code +// of the Avisynth C interface and Avisynth itself (with the version +// used to produce the combined work), being distributed under the +// terms of the GNU General Public License plus this exception. An +// independent module is a module which is not derived from or based +// on Avisynth C Interface, such as 3rd-party filters, import and +// export plugins, or graphical user interfaces. + +#ifndef __AVXSYNTH_C__ +#define __AVXSYNTH_C__ + +#include "windowsPorts/windows2linux.h" +#include + +#ifdef __cplusplus +# define EXTERN_C extern "C" +#else +# define EXTERN_C +#endif + +#define AVSC_USE_STDCALL 1 + +#ifndef AVSC_USE_STDCALL +# define AVSC_CC __cdecl +#else +# define AVSC_CC __stdcall +#endif + +#define AVSC_INLINE static __inline + +#ifdef AVISYNTH_C_EXPORTS +# define AVSC_EXPORT EXTERN_C +# define AVSC_API(ret, name) EXTERN_C __declspec(dllexport) ret AVSC_CC name +#else +# define AVSC_EXPORT EXTERN_C __declspec(dllexport) +# ifndef AVSC_NO_DECLSPEC +# define AVSC_API(ret, name) EXTERN_C __declspec(dllimport) ret AVSC_CC name +# else +# define AVSC_API(ret, name) typedef ret (AVSC_CC *name##_func) +# endif +#endif + +#ifdef __GNUC__ +typedef long long int INT64; +#else +typedef __int64 INT64; +#endif + + +///////////////////////////////////////////////////////////////////// +// +// Constants +// + +#ifndef __AVXSYNTH_H__ +enum { AVISYNTH_INTERFACE_VERSION = 3 }; +#endif + +enum {AVS_SAMPLE_INT8 = 1<<0, + AVS_SAMPLE_INT16 = 1<<1, + AVS_SAMPLE_INT24 = 1<<2, + AVS_SAMPLE_INT32 = 1<<3, + AVS_SAMPLE_FLOAT = 1<<4}; + +enum {AVS_PLANAR_Y=1<<0, + AVS_PLANAR_U=1<<1, + AVS_PLANAR_V=1<<2, + AVS_PLANAR_ALIGNED=1<<3, + AVS_PLANAR_Y_ALIGNED=AVS_PLANAR_Y|AVS_PLANAR_ALIGNED, + AVS_PLANAR_U_ALIGNED=AVS_PLANAR_U|AVS_PLANAR_ALIGNED, + AVS_PLANAR_V_ALIGNED=AVS_PLANAR_V|AVS_PLANAR_ALIGNED}; + + // Colorspace properties. +enum {AVS_CS_BGR = 1<<28, + AVS_CS_YUV = 1<<29, + AVS_CS_INTERLEAVED = 1<<30, + AVS_CS_PLANAR = 1<<31}; + + // Specific colorformats +enum { + AVS_CS_UNKNOWN = 0, + AVS_CS_BGR24 = 1<<0 | AVS_CS_BGR | AVS_CS_INTERLEAVED, + AVS_CS_BGR32 = 1<<1 | AVS_CS_BGR | AVS_CS_INTERLEAVED, + AVS_CS_YUY2 = 1<<2 | AVS_CS_YUV | AVS_CS_INTERLEAVED, + AVS_CS_YV12 = 1<<3 | AVS_CS_YUV | AVS_CS_PLANAR, // y-v-u, planar + AVS_CS_I420 = 1<<4 | AVS_CS_YUV | AVS_CS_PLANAR, // y-u-v, planar + AVS_CS_IYUV = 1<<4 | AVS_CS_YUV | AVS_CS_PLANAR // same as above +}; + +enum { + AVS_IT_BFF = 1<<0, + AVS_IT_TFF = 1<<1, + AVS_IT_FIELDBASED = 1<<2}; + +enum { + AVS_FILTER_TYPE=1, + AVS_FILTER_INPUT_COLORSPACE=2, + AVS_FILTER_OUTPUT_TYPE=9, + AVS_FILTER_NAME=4, + AVS_FILTER_AUTHOR=5, + AVS_FILTER_VERSION=6, + AVS_FILTER_ARGS=7, + AVS_FILTER_ARGS_INFO=8, + AVS_FILTER_ARGS_DESCRIPTION=10, + AVS_FILTER_DESCRIPTION=11}; + +enum { //SUBTYPES + AVS_FILTER_TYPE_AUDIO=1, + AVS_FILTER_TYPE_VIDEO=2, + AVS_FILTER_OUTPUT_TYPE_SAME=3, + AVS_FILTER_OUTPUT_TYPE_DIFFERENT=4}; + +enum { + AVS_CACHE_NOTHING=0, + AVS_CACHE_RANGE=1, + AVS_CACHE_ALL=2, + AVS_CACHE_AUDIO=3, + AVS_CACHE_AUDIO_NONE=4, + AVS_CACHE_AUDIO_AUTO=5 +}; + +#define AVS_FRAME_ALIGN 16 + +typedef struct AVS_Clip AVS_Clip; +typedef struct AVS_ScriptEnvironment AVS_ScriptEnvironment; + +///////////////////////////////////////////////////////////////////// +// +// AVS_VideoInfo +// + +// AVS_VideoInfo is layed out identicly to VideoInfo +typedef struct AVS_VideoInfo { + int width, height; // width=0 means no video + unsigned fps_numerator, fps_denominator; + int num_frames; + + int pixel_type; + + int audio_samples_per_second; // 0 means no audio + int sample_type; + INT64 num_audio_samples; + int nchannels; + + // Imagetype properties + + int image_type; +} AVS_VideoInfo; + +// useful functions of the above +AVSC_INLINE int avs_has_video(const AVS_VideoInfo * p) + { return (p->width!=0); } + +AVSC_INLINE int avs_has_audio(const AVS_VideoInfo * p) + { return (p->audio_samples_per_second!=0); } + +AVSC_INLINE int avs_is_rgb(const AVS_VideoInfo * p) + { return !!(p->pixel_type&AVS_CS_BGR); } + +AVSC_INLINE int avs_is_rgb24(const AVS_VideoInfo * p) + { return (p->pixel_type&AVS_CS_BGR24)==AVS_CS_BGR24; } // Clear out additional properties + +AVSC_INLINE int avs_is_rgb32(const AVS_VideoInfo * p) + { return (p->pixel_type & AVS_CS_BGR32) == AVS_CS_BGR32 ; } + +AVSC_INLINE int avs_is_yuv(const AVS_VideoInfo * p) + { return !!(p->pixel_type&AVS_CS_YUV ); } + +AVSC_INLINE int avs_is_yuy2(const AVS_VideoInfo * p) + { return (p->pixel_type & AVS_CS_YUY2) == AVS_CS_YUY2; } + +AVSC_INLINE int avs_is_yv12(const AVS_VideoInfo * p) + { return ((p->pixel_type & AVS_CS_YV12) == AVS_CS_YV12)||((p->pixel_type & AVS_CS_I420) == AVS_CS_I420); } + +AVSC_INLINE int avs_is_color_space(const AVS_VideoInfo * p, int c_space) + { return ((p->pixel_type & c_space) == c_space); } + +AVSC_INLINE int avs_is_property(const AVS_VideoInfo * p, int property) + { return ((p->pixel_type & property)==property ); } + +AVSC_INLINE int avs_is_planar(const AVS_VideoInfo * p) + { return !!(p->pixel_type & AVS_CS_PLANAR); } + +AVSC_INLINE int avs_is_field_based(const AVS_VideoInfo * p) + { return !!(p->image_type & AVS_IT_FIELDBASED); } + +AVSC_INLINE int avs_is_parity_known(const AVS_VideoInfo * p) + { return ((p->image_type & AVS_IT_FIELDBASED)&&(p->image_type & (AVS_IT_BFF | AVS_IT_TFF))); } + +AVSC_INLINE int avs_is_bff(const AVS_VideoInfo * p) + { return !!(p->image_type & AVS_IT_BFF); } + +AVSC_INLINE int avs_is_tff(const AVS_VideoInfo * p) + { return !!(p->image_type & AVS_IT_TFF); } + +AVSC_INLINE int avs_bits_per_pixel(const AVS_VideoInfo * p) +{ + switch (p->pixel_type) { + case AVS_CS_BGR24: return 24; + case AVS_CS_BGR32: return 32; + case AVS_CS_YUY2: return 16; + case AVS_CS_YV12: + case AVS_CS_I420: return 12; + default: return 0; + } +} +AVSC_INLINE int avs_bytes_from_pixels(const AVS_VideoInfo * p, int pixels) + { return pixels * (avs_bits_per_pixel(p)>>3); } // Will work on planar images, but will return only luma planes + +AVSC_INLINE int avs_row_size(const AVS_VideoInfo * p) + { return avs_bytes_from_pixels(p,p->width); } // Also only returns first plane on planar images + +AVSC_INLINE int avs_bmp_size(const AVS_VideoInfo * vi) + { if (avs_is_planar(vi)) {int p = vi->height * ((avs_row_size(vi)+3) & ~3); p+=p>>1; return p; } return vi->height * ((avs_row_size(vi)+3) & ~3); } + +AVSC_INLINE int avs_samples_per_second(const AVS_VideoInfo * p) + { return p->audio_samples_per_second; } + + +AVSC_INLINE int avs_bytes_per_channel_sample(const AVS_VideoInfo * p) +{ + switch (p->sample_type) { + case AVS_SAMPLE_INT8: return sizeof(signed char); + case AVS_SAMPLE_INT16: return sizeof(signed short); + case AVS_SAMPLE_INT24: return 3; + case AVS_SAMPLE_INT32: return sizeof(signed int); + case AVS_SAMPLE_FLOAT: return sizeof(float); + default: return 0; + } +} +AVSC_INLINE int avs_bytes_per_audio_sample(const AVS_VideoInfo * p) + { return p->nchannels*avs_bytes_per_channel_sample(p);} + +AVSC_INLINE INT64 avs_audio_samples_from_frames(const AVS_VideoInfo * p, INT64 frames) + { return ((INT64)(frames) * p->audio_samples_per_second * p->fps_denominator / p->fps_numerator); } + +AVSC_INLINE int avs_frames_from_audio_samples(const AVS_VideoInfo * p, INT64 samples) + { return (int)(samples * (INT64)p->fps_numerator / (INT64)p->fps_denominator / (INT64)p->audio_samples_per_second); } + +AVSC_INLINE INT64 avs_audio_samples_from_bytes(const AVS_VideoInfo * p, INT64 bytes) + { return bytes / avs_bytes_per_audio_sample(p); } + +AVSC_INLINE INT64 avs_bytes_from_audio_samples(const AVS_VideoInfo * p, INT64 samples) + { return samples * avs_bytes_per_audio_sample(p); } + +AVSC_INLINE int avs_audio_channels(const AVS_VideoInfo * p) + { return p->nchannels; } + +AVSC_INLINE int avs_sample_type(const AVS_VideoInfo * p) + { return p->sample_type;} + +// useful mutator +AVSC_INLINE void avs_set_property(AVS_VideoInfo * p, int property) + { p->image_type|=property; } + +AVSC_INLINE void avs_clear_property(AVS_VideoInfo * p, int property) + { p->image_type&=~property; } + +AVSC_INLINE void avs_set_field_based(AVS_VideoInfo * p, int isfieldbased) + { if (isfieldbased) p->image_type|=AVS_IT_FIELDBASED; else p->image_type&=~AVS_IT_FIELDBASED; } + +AVSC_INLINE void avs_set_fps(AVS_VideoInfo * p, unsigned numerator, unsigned denominator) +{ + unsigned x=numerator, y=denominator; + while (y) { // find gcd + unsigned t = x%y; x = y; y = t; + } + p->fps_numerator = numerator/x; + p->fps_denominator = denominator/x; +} + +AVSC_INLINE int avs_is_same_colorspace(AVS_VideoInfo * x, AVS_VideoInfo * y) +{ + return (x->pixel_type == y->pixel_type) + || (avs_is_yv12(x) && avs_is_yv12(y)); +} + +///////////////////////////////////////////////////////////////////// +// +// AVS_VideoFrame +// + +// VideoFrameBuffer holds information about a memory block which is used +// for video data. For efficiency, instances of this class are not deleted +// when the refcount reaches zero; instead they're stored in a linked list +// to be reused. The instances are deleted when the corresponding AVS +// file is closed. + +// AVS_VideoFrameBuffer is layed out identicly to VideoFrameBuffer +// DO NOT USE THIS STRUCTURE DIRECTLY +typedef struct AVS_VideoFrameBuffer { + unsigned char * data; + int data_size; + // sequence_number is incremented every time the buffer is changed, so + // that stale views can tell they're no longer valid. + long sequence_number; + + long refcount; +} AVS_VideoFrameBuffer; + +// VideoFrame holds a "window" into a VideoFrameBuffer. + +// AVS_VideoFrame is layed out identicly to IVideoFrame +// DO NOT USE THIS STRUCTURE DIRECTLY +typedef struct AVS_VideoFrame { + int refcount; + AVS_VideoFrameBuffer * vfb; + int offset, pitch, row_size, height, offsetU, offsetV, pitchUV; // U&V offsets are from top of picture. +} AVS_VideoFrame; + +// Access functions for AVS_VideoFrame +AVSC_INLINE int avs_get_pitch(const AVS_VideoFrame * p) { + return p->pitch;} + +AVSC_INLINE int avs_get_pitch_p(const AVS_VideoFrame * p, int plane) { + switch (plane) { + case AVS_PLANAR_U: case AVS_PLANAR_V: return p->pitchUV;} + return p->pitch;} + +AVSC_INLINE int avs_get_row_size(const AVS_VideoFrame * p) { + return p->row_size; } + +AVSC_INLINE int avs_get_row_size_p(const AVS_VideoFrame * p, int plane) { + int r; + switch (plane) { + case AVS_PLANAR_U: case AVS_PLANAR_V: + if (p->pitchUV) return p->row_size>>1; + else return 0; + case AVS_PLANAR_U_ALIGNED: case AVS_PLANAR_V_ALIGNED: + if (p->pitchUV) { + r = ((p->row_size+AVS_FRAME_ALIGN-1)&(~(AVS_FRAME_ALIGN-1)) )>>1; // Aligned rowsize + if (r < p->pitchUV) + return r; + return p->row_size>>1; + } else return 0; + case AVS_PLANAR_Y_ALIGNED: + r = (p->row_size+AVS_FRAME_ALIGN-1)&(~(AVS_FRAME_ALIGN-1)); // Aligned rowsize + if (r <= p->pitch) + return r; + return p->row_size; + } + return p->row_size; +} + +AVSC_INLINE int avs_get_height(const AVS_VideoFrame * p) { + return p->height;} + +AVSC_INLINE int avs_get_height_p(const AVS_VideoFrame * p, int plane) { + switch (plane) { + case AVS_PLANAR_U: case AVS_PLANAR_V: + if (p->pitchUV) return p->height>>1; + return 0; + } + return p->height;} + +AVSC_INLINE const unsigned char* avs_get_read_ptr(const AVS_VideoFrame * p) { + return p->vfb->data + p->offset;} + +AVSC_INLINE const unsigned char* avs_get_read_ptr_p(const AVS_VideoFrame * p, int plane) +{ + switch (plane) { + case AVS_PLANAR_U: return p->vfb->data + p->offsetU; + case AVS_PLANAR_V: return p->vfb->data + p->offsetV; + default: return p->vfb->data + p->offset;} +} + +AVSC_INLINE int avs_is_writable(const AVS_VideoFrame * p) { + return (p->refcount == 1 && p->vfb->refcount == 1);} + +AVSC_INLINE unsigned char* avs_get_write_ptr(const AVS_VideoFrame * p) +{ + if (avs_is_writable(p)) { + ++p->vfb->sequence_number; + return p->vfb->data + p->offset; + } else + return 0; +} + +AVSC_INLINE unsigned char* avs_get_write_ptr_p(const AVS_VideoFrame * p, int plane) +{ + if (plane==AVS_PLANAR_Y && avs_is_writable(p)) { + ++p->vfb->sequence_number; + return p->vfb->data + p->offset; + } else if (plane==AVS_PLANAR_Y) { + return 0; + } else { + switch (plane) { + case AVS_PLANAR_U: return p->vfb->data + p->offsetU; + case AVS_PLANAR_V: return p->vfb->data + p->offsetV; + default: return p->vfb->data + p->offset; + } + } +} + +#if defined __cplusplus +extern "C" +{ +#endif // __cplusplus +AVSC_API(void, avs_release_video_frame)(AVS_VideoFrame *); +// makes a shallow copy of a video frame +AVSC_API(AVS_VideoFrame *, avs_copy_video_frame)(AVS_VideoFrame *); +#if defined __cplusplus +} +#endif // __cplusplus + +#ifndef AVSC_NO_DECLSPEC +AVSC_INLINE void avs_release_frame(AVS_VideoFrame * f) + {avs_release_video_frame(f);} +AVSC_INLINE AVS_VideoFrame * avs_copy_frame(AVS_VideoFrame * f) + {return avs_copy_video_frame(f);} +#endif + +///////////////////////////////////////////////////////////////////// +// +// AVS_Value +// + +// Treat AVS_Value as a fat pointer. That is use avs_copy_value +// and avs_release_value appropiaty as you would if AVS_Value was +// a pointer. + +// To maintain source code compatibility with future versions of the +// avisynth_c API don't use the AVS_Value directly. Use the helper +// functions below. + +// AVS_Value is layed out identicly to AVSValue +typedef struct AVS_Value AVS_Value; +struct AVS_Value { + short type; // 'a'rray, 'c'lip, 'b'ool, 'i'nt, 'f'loat, 's'tring, 'v'oid, or 'l'ong + // for some function e'rror + short array_size; + union { + void * clip; // do not use directly, use avs_take_clip + char boolean; + int integer; + INT64 integer64; // match addition of __int64 to avxplugin.h + float floating_pt; + const char * string; + const AVS_Value * array; + } d; +}; + +// AVS_Value should be initilized with avs_void. +// Should also set to avs_void after the value is released +// with avs_copy_value. Consider it the equalvent of setting +// a pointer to NULL +static const AVS_Value avs_void = {'v'}; + +AVSC_API(void, avs_copy_value)(AVS_Value * dest, AVS_Value src); +AVSC_API(void, avs_release_value)(AVS_Value); + +AVSC_INLINE int avs_defined(AVS_Value v) { return v.type != 'v'; } +AVSC_INLINE int avs_is_clip(AVS_Value v) { return v.type == 'c'; } +AVSC_INLINE int avs_is_bool(AVS_Value v) { return v.type == 'b'; } +AVSC_INLINE int avs_is_int(AVS_Value v) { return v.type == 'i'; } +AVSC_INLINE int avs_is_float(AVS_Value v) { return v.type == 'f' || v.type == 'i'; } +AVSC_INLINE int avs_is_string(AVS_Value v) { return v.type == 's'; } +AVSC_INLINE int avs_is_array(AVS_Value v) { return v.type == 'a'; } +AVSC_INLINE int avs_is_error(AVS_Value v) { return v.type == 'e'; } + +#if defined __cplusplus +extern "C" +{ +#endif // __cplusplus +AVSC_API(AVS_Clip *, avs_take_clip)(AVS_Value, AVS_ScriptEnvironment *); +AVSC_API(void, avs_set_to_clip)(AVS_Value *, AVS_Clip *); +#if defined __cplusplus +} +#endif // __cplusplus + +AVSC_INLINE int avs_as_bool(AVS_Value v) + { return v.d.boolean; } +AVSC_INLINE int avs_as_int(AVS_Value v) + { return v.d.integer; } +AVSC_INLINE const char * avs_as_string(AVS_Value v) + { return avs_is_error(v) || avs_is_string(v) ? v.d.string : 0; } +AVSC_INLINE double avs_as_float(AVS_Value v) + { return avs_is_int(v) ? v.d.integer : v.d.floating_pt; } +AVSC_INLINE const char * avs_as_error(AVS_Value v) + { return avs_is_error(v) ? v.d.string : 0; } +AVSC_INLINE const AVS_Value * avs_as_array(AVS_Value v) + { return v.d.array; } +AVSC_INLINE int avs_array_size(AVS_Value v) + { return avs_is_array(v) ? v.array_size : 1; } +AVSC_INLINE AVS_Value avs_array_elt(AVS_Value v, int index) + { return avs_is_array(v) ? v.d.array[index] : v; } + +// only use these functions on am AVS_Value that does not already have +// an active value. Remember, treat AVS_Value as a fat pointer. +AVSC_INLINE AVS_Value avs_new_value_bool(int v0) + { AVS_Value v; v.type = 'b'; v.d.boolean = v0 == 0 ? 0 : 1; return v; } +AVSC_INLINE AVS_Value avs_new_value_int(int v0) + { AVS_Value v; v.type = 'i'; v.d.integer = v0; return v; } +AVSC_INLINE AVS_Value avs_new_value_string(const char * v0) + { AVS_Value v; v.type = 's'; v.d.string = v0; return v; } +AVSC_INLINE AVS_Value avs_new_value_float(float v0) + { AVS_Value v; v.type = 'f'; v.d.floating_pt = v0; return v;} +AVSC_INLINE AVS_Value avs_new_value_error(const char * v0) + { AVS_Value v; v.type = 'e'; v.d.string = v0; return v; } +#ifndef AVSC_NO_DECLSPEC +AVSC_INLINE AVS_Value avs_new_value_clip(AVS_Clip * v0) + { AVS_Value v; avs_set_to_clip(&v, v0); return v; } +#endif +AVSC_INLINE AVS_Value avs_new_value_array(AVS_Value * v0, int size) + { AVS_Value v; v.type = 'a'; v.d.array = v0; v.array_size = size; return v; } + +///////////////////////////////////////////////////////////////////// +// +// AVS_Clip +// +#if defined __cplusplus +extern "C" +{ +#endif // __cplusplus +AVSC_API(void, avs_release_clip)(AVS_Clip *); +AVSC_API(AVS_Clip *, avs_copy_clip)(AVS_Clip *); + +AVSC_API(const char *, avs_clip_get_error)(AVS_Clip *); // return 0 if no error + +AVSC_API(const AVS_VideoInfo *, avs_get_video_info)(AVS_Clip *); + +AVSC_API(int, avs_get_version)(AVS_Clip *); + +AVSC_API(AVS_VideoFrame *, avs_get_frame)(AVS_Clip *, int n); +// The returned video frame must be released with avs_release_video_frame + +AVSC_API(int, avs_get_parity)(AVS_Clip *, int n); +// return field parity if field_based, else parity of first field in frame + +AVSC_API(int, avs_get_audio)(AVS_Clip *, void * buf, + INT64 start, INT64 count); +// start and count are in samples + +AVSC_API(int, avs_set_cache_hints)(AVS_Clip *, + int cachehints, size_t frame_range); +#if defined __cplusplus +} +#endif // __cplusplus + +// This is the callback type used by avs_add_function +typedef AVS_Value (AVSC_CC * AVS_ApplyFunc) + (AVS_ScriptEnvironment *, AVS_Value args, void * user_data); + +typedef struct AVS_FilterInfo AVS_FilterInfo; +struct AVS_FilterInfo +{ + // these members should not be modified outside of the AVS_ApplyFunc callback + AVS_Clip * child; + AVS_VideoInfo vi; + AVS_ScriptEnvironment * env; + AVS_VideoFrame * (AVSC_CC * get_frame)(AVS_FilterInfo *, int n); + int (AVSC_CC * get_parity)(AVS_FilterInfo *, int n); + int (AVSC_CC * get_audio)(AVS_FilterInfo *, void * buf, + INT64 start, INT64 count); + int (AVSC_CC * set_cache_hints)(AVS_FilterInfo *, int cachehints, + int frame_range); + void (AVSC_CC * free_filter)(AVS_FilterInfo *); + + // Should be set when ever there is an error to report. + // It is cleared before any of the above methods are called + const char * error; + // this is to store whatever and may be modified at will + void * user_data; +}; + +// Create a new filter +// fi is set to point to the AVS_FilterInfo so that you can +// modify it once it is initilized. +// store_child should generally be set to true. If it is not +// set than ALL methods (the function pointers) must be defined +// If it is set than you do not need to worry about freeing the child +// clip. +#if defined __cplusplus +extern "C" +{ +#endif // __cplusplus +AVSC_API(AVS_Clip *, avs_new_c_filter)(AVS_ScriptEnvironment * e, + AVS_FilterInfo * * fi, + AVS_Value child, int store_child); +#if defined __cplusplus +} +#endif // __cplusplus + + +///////////////////////////////////////////////////////////////////// +// +// AVS_ScriptEnvironment +// + +// For GetCPUFlags. These are backwards-compatible with those in VirtualDub. +enum { + /* slowest CPU to support extension */ + AVS_CPU_FORCE = 0x01, // N/A + AVS_CPU_FPU = 0x02, // 386/486DX + AVS_CPU_MMX = 0x04, // P55C, K6, PII + AVS_CPU_INTEGER_SSE = 0x08, // PIII, Athlon + AVS_CPU_SSE = 0x10, // PIII, Athlon XP/MP + AVS_CPU_SSE2 = 0x20, // PIV, Hammer + AVS_CPU_3DNOW = 0x40, // K6-2 + AVS_CPU_3DNOW_EXT = 0x80, // Athlon + AVS_CPU_X86_64 = 0xA0, // Hammer (note: equiv. to 3DNow + SSE2, + // which only Hammer will have anyway) +}; + +#if defined __cplusplus +extern "C" +{ +#endif // __cplusplus +AVSC_API(const char *, avs_get_error)(AVS_ScriptEnvironment *); // return 0 if no error + +AVSC_API(long, avs_get_cpu_flags)(AVS_ScriptEnvironment *); +AVSC_API(int, avs_check_version)(AVS_ScriptEnvironment *, int version); + +AVSC_API(char *, avs_save_string)(AVS_ScriptEnvironment *, const char* s, int length); +AVSC_API(char *, avs_sprintf)(AVS_ScriptEnvironment *, const char * fmt, ...); + +AVSC_API(char *, avs_vsprintf)(AVS_ScriptEnvironment *, const char * fmt, va_list val); + // note: val is really a va_list; I hope everyone typedefs va_list to a pointer + +AVSC_API(int, avs_add_function)(AVS_ScriptEnvironment *, + const char * name, const char * params, + AVS_ApplyFunc apply, void * user_data); + +AVSC_API(int, avs_function_exists)(AVS_ScriptEnvironment *, const char * name); + +AVSC_API(AVS_Value, avs_invoke)(AVS_ScriptEnvironment *, const char * name, + AVS_Value args, const char** arg_names); +// The returned value must be be released with avs_release_value + +AVSC_API(AVS_Value, avs_get_var)(AVS_ScriptEnvironment *, const char* name); +// The returned value must be be released with avs_release_value + +AVSC_API(int, avs_set_var)(AVS_ScriptEnvironment *, const char* name, AVS_Value val); + +AVSC_API(int, avs_set_global_var)(AVS_ScriptEnvironment *, const char* name, const AVS_Value val); + +//void avs_push_context(AVS_ScriptEnvironment *, int level=0); +//void avs_pop_context(AVS_ScriptEnvironment *); + +AVSC_API(AVS_VideoFrame *, avs_new_video_frame_a)(AVS_ScriptEnvironment *, + const AVS_VideoInfo * vi, int align); +// align should be at least 16 +#if defined __cplusplus +} +#endif // __cplusplus + +#ifndef AVSC_NO_DECLSPEC +AVSC_INLINE +AVS_VideoFrame * avs_new_video_frame(AVS_ScriptEnvironment * env, + const AVS_VideoInfo * vi) + {return avs_new_video_frame_a(env,vi,AVS_FRAME_ALIGN);} + +AVSC_INLINE +AVS_VideoFrame * avs_new_frame(AVS_ScriptEnvironment * env, + const AVS_VideoInfo * vi) + {return avs_new_video_frame_a(env,vi,AVS_FRAME_ALIGN);} +#endif + +#if defined __cplusplus +extern "C" +{ +#endif // __cplusplus +AVSC_API(int, avs_make_writable)(AVS_ScriptEnvironment *, AVS_VideoFrame * * pvf); + +AVSC_API(void, avs_bit_blt)(AVS_ScriptEnvironment *, unsigned char* dstp, int dst_pitch, const unsigned char* srcp, int src_pitch, int row_size, int height); + +typedef void (AVSC_CC *AVS_ShutdownFunc)(void* user_data, AVS_ScriptEnvironment * env); +AVSC_API(void, avs_at_exit)(AVS_ScriptEnvironment *, AVS_ShutdownFunc function, void * user_data); + +AVSC_API(AVS_VideoFrame *, avs_subframe)(AVS_ScriptEnvironment *, AVS_VideoFrame * src, int rel_offset, int new_pitch, int new_row_size, int new_height); +// The returned video frame must be be released + +AVSC_API(int, avs_set_memory_max)(AVS_ScriptEnvironment *, int mem); + +AVSC_API(int, avs_set_working_dir)(AVS_ScriptEnvironment *, const char * newdir); + +// avisynth.dll exports this; it's a way to use it as a library, without +// writing an AVS script or without going through AVIFile. +AVSC_API(AVS_ScriptEnvironment *, avs_create_script_environment)(int version); +#if defined __cplusplus +} +#endif // __cplusplus + +// this symbol is the entry point for the plugin and must +// be defined +AVSC_EXPORT +const char * AVSC_CC avisynth_c_plugin_init(AVS_ScriptEnvironment* env); + + +#if defined __cplusplus +extern "C" +{ +#endif // __cplusplus +AVSC_API(void, avs_delete_script_environment)(AVS_ScriptEnvironment *); + + +AVSC_API(AVS_VideoFrame *, avs_subframe_planar)(AVS_ScriptEnvironment *, AVS_VideoFrame * src, int rel_offset, int new_pitch, int new_row_size, int new_height, int rel_offsetU, int rel_offsetV, int new_pitchUV); +// The returned video frame must be be released +#if defined __cplusplus +} +#endif // __cplusplus + +#endif //__AVXSYNTH_C__ diff --git a/ffmpeg/compat/avisynth/windowsPorts/basicDataTypeConversions.h b/ffmpeg/compat/avisynth/windowsPorts/basicDataTypeConversions.h new file mode 100644 index 0000000..ff367d5 --- /dev/null +++ b/ffmpeg/compat/avisynth/windowsPorts/basicDataTypeConversions.h @@ -0,0 +1,85 @@ +#ifndef __DATA_TYPE_CONVERSIONS_H__ +#define __DATA_TYPE_CONVERSIONS_H__ + +#include +#include + +#ifdef __cplusplus +namespace avxsynth { +#endif // __cplusplus + +typedef int64_t __int64; +typedef int32_t __int32; +#ifdef __cplusplus +typedef bool BOOL; +#else +typedef uint32_t BOOL; +#endif // __cplusplus +typedef void* HMODULE; +typedef void* LPVOID; +typedef void* PVOID; +typedef PVOID HANDLE; +typedef HANDLE HWND; +typedef HANDLE HINSTANCE; +typedef void* HDC; +typedef void* HBITMAP; +typedef void* HICON; +typedef void* HFONT; +typedef void* HGDIOBJ; +typedef void* HBRUSH; +typedef void* HMMIO; +typedef void* HACMSTREAM; +typedef void* HACMDRIVER; +typedef void* HIC; +typedef void* HACMOBJ; +typedef HACMSTREAM* LPHACMSTREAM; +typedef void* HACMDRIVERID; +typedef void* LPHACMDRIVER; +typedef unsigned char BYTE; +typedef BYTE* LPBYTE; +typedef char TCHAR; +typedef TCHAR* LPTSTR; +typedef const TCHAR* LPCTSTR; +typedef char* LPSTR; +typedef LPSTR LPOLESTR; +typedef const char* LPCSTR; +typedef LPCSTR LPCOLESTR; +typedef wchar_t WCHAR; +typedef unsigned short WORD; +typedef unsigned int UINT; +typedef UINT MMRESULT; +typedef uint32_t DWORD; +typedef DWORD COLORREF; +typedef DWORD FOURCC; +typedef DWORD HRESULT; +typedef DWORD* LPDWORD; +typedef DWORD* DWORD_PTR; +typedef int32_t LONG; +typedef int32_t* LONG_PTR; +typedef LONG_PTR LRESULT; +typedef uint32_t ULONG; +typedef uint32_t* ULONG_PTR; +//typedef __int64_t intptr_t; +typedef uint64_t _fsize_t; + + +// +// Structures +// + +typedef struct _GUID { + DWORD Data1; + WORD Data2; + WORD Data3; + BYTE Data4[8]; +} GUID; + +typedef GUID REFIID; +typedef GUID CLSID; +typedef CLSID* LPCLSID; +typedef GUID IID; + +#ifdef __cplusplus +}; // namespace avxsynth +#endif // __cplusplus +#endif // __DATA_TYPE_CONVERSIONS_H__ diff --git a/ffmpeg/compat/avisynth/windowsPorts/windows2linux.h b/ffmpeg/compat/avisynth/windowsPorts/windows2linux.h new file mode 100644 index 0000000..5476afe --- /dev/null +++ b/ffmpeg/compat/avisynth/windowsPorts/windows2linux.h @@ -0,0 +1,77 @@ +#ifndef __WINDOWS2LINUX_H__ +#define __WINDOWS2LINUX_H__ + +/* + * LINUX SPECIFIC DEFINITIONS +*/ +// +// Data types conversions +// +#include +#include +#include "basicDataTypeConversions.h" + +#ifdef __cplusplus +namespace avxsynth { +#endif // __cplusplus +// +// purposefully define the following MSFT definitions +// to mean nothing (as they do not mean anything on Linux) +// +#define __stdcall +#define __cdecl +#define noreturn +#define __declspec(x) +#define STDAPI extern "C" HRESULT +#define STDMETHODIMP HRESULT __stdcall +#define STDMETHODIMP_(x) x __stdcall + +#define STDMETHOD(x) virtual HRESULT x +#define STDMETHOD_(a, x) virtual a x + +#ifndef TRUE +#define TRUE true +#endif + +#ifndef FALSE +#define FALSE false +#endif + +#define S_OK (0x00000000) +#define S_FALSE (0x00000001) +#define E_NOINTERFACE (0X80004002) +#define E_POINTER (0x80004003) +#define E_FAIL (0x80004005) +#define E_OUTOFMEMORY (0x8007000E) + +#define INVALID_HANDLE_VALUE ((HANDLE)((LONG_PTR)-1)) +#define FAILED(hr) ((hr) & 0x80000000) +#define SUCCEEDED(hr) (!FAILED(hr)) + + +// +// Functions +// +#define MAKEDWORD(a,b,c,d) ((a << 24) | (b << 16) | (c << 8) | (d)) +#define MAKEWORD(a,b) ((a << 8) | (b)) + +#define lstrlen strlen +#define lstrcpy strcpy +#define lstrcmpi strcasecmp +#define _stricmp strcasecmp +#define InterlockedIncrement(x) __sync_fetch_and_add((x), 1) +#define InterlockedDecrement(x) __sync_fetch_and_sub((x), 1) +// Windows uses (new, old) ordering but GCC has (old, new) +#define InterlockedCompareExchange(x,y,z) __sync_val_compare_and_swap(x,z,y) + +#define UInt32x32To64(a, b) ( (uint64_t) ( ((uint64_t)((uint32_t)(a))) * ((uint32_t)(b)) ) ) +#define Int64ShrlMod32(a, b) ( (uint64_t) ( (uint64_t)(a) >> (b) ) ) +#define Int32x32To64(a, b) ((__int64)(((__int64)((long)(a))) * ((long)(b)))) + +#define MulDiv(nNumber, nNumerator, nDenominator) (int32_t) (((int64_t) (nNumber) * (int64_t) (nNumerator) + (int64_t) ((nDenominator)/2)) / (int64_t) (nDenominator)) + +#ifdef __cplusplus +}; // namespace avxsynth +#endif // __cplusplus + +#endif // __WINDOWS2LINUX_H__ diff --git a/ffmpeg/compat/float/float.h b/ffmpeg/compat/float/float.h new file mode 100644 index 0000000..1f0d3ab --- /dev/null +++ b/ffmpeg/compat/float/float.h @@ -0,0 +1,35 @@ +/* + * Work around broken floating point limits on some systems. + * + * This file is part of FFmpeg. + * + * FFmpeg is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * FFmpeg is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with FFmpeg; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#include_next + +#ifdef FLT_MAX +#undef FLT_MAX +#define FLT_MAX 3.40282346638528859812e+38F + +#undef FLT_MIN +#define FLT_MIN 1.17549435082228750797e-38F + +#undef DBL_MAX +#define DBL_MAX ((double)1.79769313486231570815e+308L) + +#undef DBL_MIN +#define DBL_MIN ((double)2.22507385850720138309e-308L) +#endif diff --git a/ffmpeg/compat/float/limits.h b/ffmpeg/compat/float/limits.h new file mode 100644 index 0000000..7ea374a --- /dev/null +++ b/ffmpeg/compat/float/limits.h @@ -0,0 +1,22 @@ +/* + * Work around broken floating point limits on some systems. + * + * This file is part of FFmpeg. + * + * FFmpeg is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * FFmpeg is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with FFmpeg; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#include_next +#include diff --git a/ffmpeg/compat/getopt.c b/ffmpeg/compat/getopt.c new file mode 100644 index 0000000..41a641f --- /dev/null +++ b/ffmpeg/compat/getopt.c @@ -0,0 +1,84 @@ +/* + * This file is part of FFmpeg. + * + * FFmpeg is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * FFmpeg is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with FFmpeg; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +/* + * This file was copied from the following newsgroup posting: + * + * Newsgroups: mod.std.unix + * Subject: public domain AT&T getopt source + * Date: 3 Nov 85 19:34:15 GMT + * + * Here's something you've all been waiting for: the AT&T public domain + * source for getopt(3). It is the code which was given out at the 1985 + * UNIFORUM conference in Dallas. I obtained it by electronic mail + * directly from AT&T. The people there assure me that it is indeed + * in the public domain. + */ + +#include +#include + +static int opterr = 1; +static int optind = 1; +static int optopt; +static char *optarg; + +static int getopt(int argc, char *argv[], char *opts) +{ + static int sp = 1; + int c; + char *cp; + + if (sp == 1) { + if (optind >= argc || + argv[optind][0] != '-' || argv[optind][1] == '\0') + return EOF; + else if (!strcmp(argv[optind], "--")) { + optind++; + return EOF; + } + } + optopt = c = argv[optind][sp]; + if (c == ':' || !(cp = strchr(opts, c))) { + fprintf(stderr, ": illegal option -- %c\n", c); + if (argv[optind][++sp] == '\0') { + optind++; + sp = 1; + } + return '?'; + } + if (*++cp == ':') { + if (argv[optind][sp+1] != '\0') + optarg = &argv[optind++][sp+1]; + else if(++optind >= argc) { + fprintf(stderr, ": option requires an argument -- %c\n", c); + sp = 1; + return '?'; + } else + optarg = argv[optind++]; + sp = 1; + } else { + if (argv[optind][++sp] == '\0') { + sp = 1; + optind++; + } + optarg = NULL; + } + + return c; +} diff --git a/ffmpeg/compat/msvcrt/snprintf.c b/ffmpeg/compat/msvcrt/snprintf.c new file mode 100644 index 0000000..c64653f --- /dev/null +++ b/ffmpeg/compat/msvcrt/snprintf.c @@ -0,0 +1,71 @@ +/* + * C99-compatible snprintf() and vsnprintf() implementations + * Copyright (c) 2012 Ronald S. Bultje + * + * This file is part of FFmpeg. + * + * FFmpeg is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * FFmpeg is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with FFmpeg; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#include +#include +#include +#include + +#include "compat/va_copy.h" +#include "libavutil/error.h" + +#if defined(__MINGW32__) +#define EOVERFLOW EFBIG +#endif + +int avpriv_snprintf(char *s, size_t n, const char *fmt, ...) +{ + va_list ap; + int ret; + + va_start(ap, fmt); + ret = avpriv_vsnprintf(s, n, fmt, ap); + va_end(ap); + + return ret; +} + +int avpriv_vsnprintf(char *s, size_t n, const char *fmt, + va_list ap) +{ + int ret; + va_list ap_copy; + + if (n == 0) + return _vscprintf(fmt, ap); + else if (n > INT_MAX) + return AVERROR(EOVERFLOW); + + /* we use n - 1 here because if the buffer is not big enough, the MS + * runtime libraries don't add a terminating zero at the end. MSDN + * recommends to provide _snprintf/_vsnprintf() a buffer size that + * is one less than the actual buffer, and zero it before calling + * _snprintf/_vsnprintf() to workaround this problem. + * See http://msdn.microsoft.com/en-us/library/1kt27hek(v=vs.80).aspx */ + memset(s, 0, n); + va_copy(ap_copy, ap); + ret = _vsnprintf(s, n - 1, fmt, ap_copy); + va_end(ap_copy); + if (ret == -1) + ret = _vscprintf(fmt, ap); + + return ret; +} diff --git a/ffmpeg/compat/msvcrt/snprintf.h b/ffmpeg/compat/msvcrt/snprintf.h new file mode 100644 index 0000000..f02113c --- /dev/null +++ b/ffmpeg/compat/msvcrt/snprintf.h @@ -0,0 +1,38 @@ +/* + * C99-compatible snprintf() and vsnprintf() implementations + * Copyright (c) 2012 Ronald S. Bultje + * + * This file is part of FFmpeg. + * + * FFmpeg is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * FFmpeg is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with FFmpeg; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#ifndef COMPAT_SNPRINTF_H +#define COMPAT_SNPRINTF_H + +#include +#include + +int avpriv_snprintf(char *s, size_t n, const char *fmt, ...); +int avpriv_vsnprintf(char *s, size_t n, const char *fmt, va_list ap); + +#undef snprintf +#undef _snprintf +#undef vsnprintf +#define snprintf avpriv_snprintf +#define _snprintf avpriv_snprintf +#define vsnprintf avpriv_vsnprintf + +#endif /* COMPAT_SNPRINTF_H */ diff --git a/ffmpeg/compat/os2threads.h b/ffmpeg/compat/os2threads.h new file mode 100644 index 0000000..441ac43 --- /dev/null +++ b/ffmpeg/compat/os2threads.h @@ -0,0 +1,164 @@ +/* + * Copyright (c) 2011 KO Myung-Hun + * + * This file is part of FFmpeg. + * + * FFmpeg is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * FFmpeg is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with FFmpeg; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +/** + * @file + * os2threads to pthreads wrapper + */ + +#ifndef AVCODEC_OS2PTHREADS_H +#define AVCODEC_OS2PTHREADS_H + +#define INCL_DOS +#include + +#undef __STRICT_ANSI__ /* for _beginthread() */ +#include + +#include "libavutil/mem.h" + +typedef TID pthread_t; +typedef void pthread_attr_t; + +typedef HMTX pthread_mutex_t; +typedef void pthread_mutexattr_t; + +typedef struct { + HEV event_sem; + int wait_count; +} pthread_cond_t; + +typedef void pthread_condattr_t; + +struct thread_arg { + void *(*start_routine)(void *); + void *arg; +}; + +static void thread_entry(void *arg) +{ + struct thread_arg *thread_arg = arg; + + thread_arg->start_routine(thread_arg->arg); + + av_free(thread_arg); +} + +static av_always_inline int pthread_create(pthread_t *thread, const pthread_attr_t *attr, void *(*start_routine)(void*), void *arg) +{ + struct thread_arg *thread_arg; + + thread_arg = av_mallocz(sizeof(struct thread_arg)); + + thread_arg->start_routine = start_routine; + thread_arg->arg = arg; + + *thread = _beginthread(thread_entry, NULL, 256 * 1024, thread_arg); + + return 0; +} + +static av_always_inline int pthread_join(pthread_t thread, void **value_ptr) +{ + DosWaitThread((PTID)&thread, DCWW_WAIT); + + return 0; +} + +static av_always_inline int pthread_mutex_init(pthread_mutex_t *mutex, const pthread_mutexattr_t *attr) +{ + DosCreateMutexSem(NULL, (PHMTX)mutex, 0, FALSE); + + return 0; +} + +static av_always_inline int pthread_mutex_destroy(pthread_mutex_t *mutex) +{ + DosCloseMutexSem(*(PHMTX)mutex); + + return 0; +} + +static av_always_inline int pthread_mutex_lock(pthread_mutex_t *mutex) +{ + DosRequestMutexSem(*(PHMTX)mutex, SEM_INDEFINITE_WAIT); + + return 0; +} + +static av_always_inline int pthread_mutex_unlock(pthread_mutex_t *mutex) +{ + DosReleaseMutexSem(*(PHMTX)mutex); + + return 0; +} + +static av_always_inline int pthread_cond_init(pthread_cond_t *cond, const pthread_condattr_t *attr) +{ + DosCreateEventSem(NULL, &cond->event_sem, DCE_POSTONE, FALSE); + + cond->wait_count = 0; + + return 0; +} + +static av_always_inline int pthread_cond_destroy(pthread_cond_t *cond) +{ + DosCloseEventSem(cond->event_sem); + + return 0; +} + +static av_always_inline int pthread_cond_signal(pthread_cond_t *cond) +{ + if (cond->wait_count > 0) { + DosPostEventSem(cond->event_sem); + + cond->wait_count--; + } + + return 0; +} + +static av_always_inline int pthread_cond_broadcast(pthread_cond_t *cond) +{ + while (cond->wait_count > 0) { + DosPostEventSem(cond->event_sem); + + cond->wait_count--; + } + + return 0; +} + +static av_always_inline int pthread_cond_wait(pthread_cond_t *cond, pthread_mutex_t *mutex) +{ + cond->wait_count++; + + pthread_mutex_unlock(mutex); + + DosWaitEventSem(cond->event_sem, SEM_INDEFINITE_WAIT); + + pthread_mutex_lock(mutex); + + return 0; +} + +#endif /* AVCODEC_OS2PTHREADS_H */ diff --git a/ffmpeg/compat/plan9/head b/ffmpeg/compat/plan9/head new file mode 100755 index 0000000..2840b2d --- /dev/null +++ b/ffmpeg/compat/plan9/head @@ -0,0 +1,10 @@ +#!/bin/sh + +n=10 + +case "$1" in + -n) n=$2; shift 2 ;; + -n*) n=${1#-n}; shift ;; +esac + +exec sed ${n}q "$@" diff --git a/ffmpeg/compat/plan9/main.c b/ffmpeg/compat/plan9/main.c new file mode 100644 index 0000000..d46f96d --- /dev/null +++ b/ffmpeg/compat/plan9/main.c @@ -0,0 +1,34 @@ +/* + * This file is part of FFmpeg. + * + * FFmpeg is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * FFmpeg is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with FFmpeg; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +int plan9_main(int argc, char **argv); + +#undef main +int main(int argc, char **argv) +{ + /* The setfcr() function in lib9 is broken, must use asm. */ +#ifdef __i386 + short fcr; + __asm__ volatile ("fstcw %0 \n" + "or $63, %0 \n" + "fldcw %0 \n" + : "=m"(fcr)); +#endif + + return plan9_main(argc, argv); +} diff --git a/ffmpeg/compat/plan9/printf b/ffmpeg/compat/plan9/printf new file mode 100755 index 0000000..1a70a9e --- /dev/null +++ b/ffmpeg/compat/plan9/printf @@ -0,0 +1,2 @@ +#!/bin/sh +exec awk "BEGIN { for (i = 2; i < ARGC; i++) printf \"$1\", ARGV[i] }" "$@" diff --git a/ffmpeg/compat/strtod.c b/ffmpeg/compat/strtod.c new file mode 100644 index 0000000..3a9452e --- /dev/null +++ b/ffmpeg/compat/strtod.c @@ -0,0 +1,93 @@ +/* + * C99-compatible strtod() implementation + * Copyright (c) 2012 Ronald S. Bultje + * + * This file is part of FFmpeg. + * + * FFmpeg is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * FFmpeg is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with FFmpeg; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#include +#include + +#include "libavutil/avstring.h" +#include "libavutil/mathematics.h" + +static char *check_nan_suffix(char *s) +{ + char *start = s; + + if (*s++ != '(') + return start; + + while ((*s >= 'a' && *s <= 'z') || (*s >= 'A' && *s <= 'Z') || + (*s >= '0' && *s <= '9') || *s == '_') + s++; + + return *s == ')' ? s + 1 : start; +} + +#undef strtod +double strtod(const char *, char **); + +double avpriv_strtod(const char *nptr, char **endptr) +{ + char *end; + double res; + + /* Skip leading spaces */ + while (av_isspace(*nptr)) + nptr++; + + if (!av_strncasecmp(nptr, "infinity", 8)) { + end = nptr + 8; + res = INFINITY; + } else if (!av_strncasecmp(nptr, "inf", 3)) { + end = nptr + 3; + res = INFINITY; + } else if (!av_strncasecmp(nptr, "+infinity", 9)) { + end = nptr + 9; + res = INFINITY; + } else if (!av_strncasecmp(nptr, "+inf", 4)) { + end = nptr + 4; + res = INFINITY; + } else if (!av_strncasecmp(nptr, "-infinity", 9)) { + end = nptr + 9; + res = -INFINITY; + } else if (!av_strncasecmp(nptr, "-inf", 4)) { + end = nptr + 4; + res = -INFINITY; + } else if (!av_strncasecmp(nptr, "nan", 3)) { + end = check_nan_suffix(nptr + 3); + res = NAN; + } else if (!av_strncasecmp(nptr, "+nan", 4) || + !av_strncasecmp(nptr, "-nan", 4)) { + end = check_nan_suffix(nptr + 4); + res = NAN; + } else if (!av_strncasecmp(nptr, "0x", 2) || + !av_strncasecmp(nptr, "-0x", 3) || + !av_strncasecmp(nptr, "+0x", 3)) { + /* FIXME this doesn't handle exponents, non-integers (float/double) + * and numbers too large for long long */ + res = strtoll(nptr, &end, 16); + } else { + res = strtod(nptr, &end); + } + + if (endptr) + *endptr = end; + + return res; +} diff --git a/ffmpeg/compat/tms470/math.h b/ffmpeg/compat/tms470/math.h new file mode 100644 index 0000000..6234cc5 --- /dev/null +++ b/ffmpeg/compat/tms470/math.h @@ -0,0 +1,30 @@ +/* + * This file is part of FFmpeg. + * + * FFmpeg is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * FFmpeg is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with FFmpeg; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#ifndef FFMPEG_COMPAT_TMS470_MATH_H +#define FFMPEG_COMPAT_TMS470_MATH_H + +#include_next + +#undef INFINITY +#undef NAN + +#define INFINITY (*(const float*)((const unsigned []){ 0x7f800000 })) +#define NAN (*(const float*)((const unsigned []){ 0x7fc00000 })) + +#endif /* FFMPEG_COMPAT_TMS470_MATH_H */ diff --git a/ffmpeg/compat/va_copy.h b/ffmpeg/compat/va_copy.h new file mode 100644 index 0000000..3cb5ebe --- /dev/null +++ b/ffmpeg/compat/va_copy.h @@ -0,0 +1,29 @@ +/* + * MSVC Compatible va_copy macro + * Copyright (c) 2012 Derek Buitenhuis + * + * This file is part of FFmpeg. + * + * FFmpeg is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * FFmpeg is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with FFmpeg; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#include + +#if !defined(va_copy) && defined(_MSC_VER) +#define va_copy(dst, src) ((dst) = (src)) +#endif +#if !defined(va_copy) && defined(__GNUC__) && __GNUC__ < 3 +#define va_copy(dst, src) __va_copy(dst, src) +#endif diff --git a/ffmpeg/compat/w32pthreads.h b/ffmpeg/compat/w32pthreads.h new file mode 100644 index 0000000..2a7f323 --- /dev/null +++ b/ffmpeg/compat/w32pthreads.h @@ -0,0 +1,296 @@ +/* + * Copyright (C) 2010-2011 x264 project + * + * Authors: Steven Walters + * Pegasys Inc. + * + * This file is part of FFmpeg. + * + * FFmpeg is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * FFmpeg is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with FFmpeg; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +/** + * @file + * w32threads to pthreads wrapper + */ + +#ifndef FFMPEG_COMPAT_W32PTHREADS_H +#define FFMPEG_COMPAT_W32PTHREADS_H + +/* Build up a pthread-like API using underlying Windows API. Have only static + * methods so as to not conflict with a potentially linked in pthread-win32 + * library. + * As most functions here are used without checking return values, + * only implement return values as necessary. */ + +#define WIN32_LEAN_AND_MEAN +#include +#include + +#include "libavutil/attributes.h" +#include "libavutil/common.h" +#include "libavutil/internal.h" +#include "libavutil/mem.h" + +typedef struct pthread_t { + void *handle; + void *(*func)(void* arg); + void *arg; + void *ret; +} pthread_t; + +/* the conditional variable api for windows 6.0+ uses critical sections and + * not mutexes */ +typedef CRITICAL_SECTION pthread_mutex_t; + +/* This is the CONDITIONAL_VARIABLE typedef for using Window's native + * conditional variables on kernels 6.0+. + * MinGW does not currently have this typedef. */ +typedef struct pthread_cond_t { + void *ptr; +} pthread_cond_t; + +/* function pointers to conditional variable API on windows 6.0+ kernels */ +#if _WIN32_WINNT < 0x0600 +static void (WINAPI *cond_broadcast)(pthread_cond_t *cond); +static void (WINAPI *cond_init)(pthread_cond_t *cond); +static void (WINAPI *cond_signal)(pthread_cond_t *cond); +static BOOL (WINAPI *cond_wait)(pthread_cond_t *cond, pthread_mutex_t *mutex, + DWORD milliseconds); +#else +#define cond_init InitializeConditionVariable +#define cond_broadcast WakeAllConditionVariable +#define cond_signal WakeConditionVariable +#define cond_wait SleepConditionVariableCS + +#define CreateEvent(a, reset, init, name) \ + CreateEventEx(a, name, \ + (reset ? CREATE_EVENT_MANUAL_RESET : 0) | \ + (init ? CREATE_EVENT_INITIAL_SET : 0), \ + EVENT_ALL_ACCESS) +// CreateSemaphoreExA seems to be desktop-only, but as long as we don't +// use named semaphores, it doesn't matter if we use the W version. +#define CreateSemaphore(a, b, c, d) \ + CreateSemaphoreExW(a, b, c, d, 0, SEMAPHORE_ALL_ACCESS) +#define InitializeCriticalSection(x) InitializeCriticalSectionEx(x, 0, 0) +#define WaitForSingleObject(a, b) WaitForSingleObjectEx(a, b, FALSE) +#endif + +static av_unused unsigned __stdcall attribute_align_arg win32thread_worker(void *arg) +{ + pthread_t *h = arg; + h->ret = h->func(h->arg); + return 0; +} + +static av_unused int pthread_create(pthread_t *thread, const void *unused_attr, + void *(*start_routine)(void*), void *arg) +{ + thread->func = start_routine; + thread->arg = arg; + thread->handle = (void*)_beginthreadex(NULL, 0, win32thread_worker, thread, + 0, NULL); + return !thread->handle; +} + +static av_unused void pthread_join(pthread_t thread, void **value_ptr) +{ + DWORD ret = WaitForSingleObject(thread.handle, INFINITE); + if (ret != WAIT_OBJECT_0) + return; + if (value_ptr) + *value_ptr = thread.ret; + CloseHandle(thread.handle); +} + +static inline int pthread_mutex_init(pthread_mutex_t *m, void* attr) +{ + InitializeCriticalSection(m); + return 0; +} +static inline int pthread_mutex_destroy(pthread_mutex_t *m) +{ + DeleteCriticalSection(m); + return 0; +} +static inline int pthread_mutex_lock(pthread_mutex_t *m) +{ + EnterCriticalSection(m); + return 0; +} +static inline int pthread_mutex_unlock(pthread_mutex_t *m) +{ + LeaveCriticalSection(m); + return 0; +} + +/* for pre-Windows 6.0 platforms we need to define and use our own condition + * variable and api */ +typedef struct win32_cond_t { + pthread_mutex_t mtx_broadcast; + pthread_mutex_t mtx_waiter_count; + volatile int waiter_count; + HANDLE semaphore; + HANDLE waiters_done; + volatile int is_broadcast; +} win32_cond_t; + +static av_unused int pthread_cond_init(pthread_cond_t *cond, const void *unused_attr) +{ + win32_cond_t *win32_cond = NULL; + if (cond_init) { + cond_init(cond); + return 0; + } + + /* non native condition variables */ + win32_cond = av_mallocz(sizeof(win32_cond_t)); + if (!win32_cond) + return ENOMEM; + cond->ptr = win32_cond; + win32_cond->semaphore = CreateSemaphore(NULL, 0, 0x7fffffff, NULL); + if (!win32_cond->semaphore) + return ENOMEM; + win32_cond->waiters_done = CreateEvent(NULL, TRUE, FALSE, NULL); + if (!win32_cond->waiters_done) + return ENOMEM; + + pthread_mutex_init(&win32_cond->mtx_waiter_count, NULL); + pthread_mutex_init(&win32_cond->mtx_broadcast, NULL); + return 0; +} + +static av_unused void pthread_cond_destroy(pthread_cond_t *cond) +{ + win32_cond_t *win32_cond = cond->ptr; + /* native condition variables do not destroy */ + if (cond_init) + return; + + /* non native condition variables */ + CloseHandle(win32_cond->semaphore); + CloseHandle(win32_cond->waiters_done); + pthread_mutex_destroy(&win32_cond->mtx_waiter_count); + pthread_mutex_destroy(&win32_cond->mtx_broadcast); + av_freep(&win32_cond); + cond->ptr = NULL; +} + +static av_unused void pthread_cond_broadcast(pthread_cond_t *cond) +{ + win32_cond_t *win32_cond = cond->ptr; + int have_waiter; + + if (cond_broadcast) { + cond_broadcast(cond); + return; + } + + /* non native condition variables */ + pthread_mutex_lock(&win32_cond->mtx_broadcast); + pthread_mutex_lock(&win32_cond->mtx_waiter_count); + have_waiter = 0; + + if (win32_cond->waiter_count) { + win32_cond->is_broadcast = 1; + have_waiter = 1; + } + + if (have_waiter) { + ReleaseSemaphore(win32_cond->semaphore, win32_cond->waiter_count, NULL); + pthread_mutex_unlock(&win32_cond->mtx_waiter_count); + WaitForSingleObject(win32_cond->waiters_done, INFINITE); + ResetEvent(win32_cond->waiters_done); + win32_cond->is_broadcast = 0; + } else + pthread_mutex_unlock(&win32_cond->mtx_waiter_count); + pthread_mutex_unlock(&win32_cond->mtx_broadcast); +} + +static av_unused int pthread_cond_wait(pthread_cond_t *cond, pthread_mutex_t *mutex) +{ + win32_cond_t *win32_cond = cond->ptr; + int last_waiter; + if (cond_wait) { + cond_wait(cond, mutex, INFINITE); + return 0; + } + + /* non native condition variables */ + pthread_mutex_lock(&win32_cond->mtx_broadcast); + pthread_mutex_lock(&win32_cond->mtx_waiter_count); + win32_cond->waiter_count++; + pthread_mutex_unlock(&win32_cond->mtx_waiter_count); + pthread_mutex_unlock(&win32_cond->mtx_broadcast); + + // unlock the external mutex + pthread_mutex_unlock(mutex); + WaitForSingleObject(win32_cond->semaphore, INFINITE); + + pthread_mutex_lock(&win32_cond->mtx_waiter_count); + win32_cond->waiter_count--; + last_waiter = !win32_cond->waiter_count || !win32_cond->is_broadcast; + pthread_mutex_unlock(&win32_cond->mtx_waiter_count); + + if (last_waiter) + SetEvent(win32_cond->waiters_done); + + // lock the external mutex + return pthread_mutex_lock(mutex); +} + +static av_unused void pthread_cond_signal(pthread_cond_t *cond) +{ + win32_cond_t *win32_cond = cond->ptr; + int have_waiter; + if (cond_signal) { + cond_signal(cond); + return; + } + + pthread_mutex_lock(&win32_cond->mtx_broadcast); + + /* non-native condition variables */ + pthread_mutex_lock(&win32_cond->mtx_waiter_count); + have_waiter = win32_cond->waiter_count; + pthread_mutex_unlock(&win32_cond->mtx_waiter_count); + + if (have_waiter) { + ReleaseSemaphore(win32_cond->semaphore, 1, NULL); + WaitForSingleObject(win32_cond->waiters_done, INFINITE); + ResetEvent(win32_cond->waiters_done); + } + + pthread_mutex_unlock(&win32_cond->mtx_broadcast); +} + +static av_unused void w32thread_init(void) +{ +#if _WIN32_WINNT < 0x0600 + HANDLE kernel_dll = GetModuleHandle(TEXT("kernel32.dll")); + /* if one is available, then they should all be available */ + cond_init = + (void*)GetProcAddress(kernel_dll, "InitializeConditionVariable"); + cond_broadcast = + (void*)GetProcAddress(kernel_dll, "WakeAllConditionVariable"); + cond_signal = + (void*)GetProcAddress(kernel_dll, "WakeConditionVariable"); + cond_wait = + (void*)GetProcAddress(kernel_dll, "SleepConditionVariableCS"); +#endif + +} + +#endif /* FFMPEG_COMPAT_W32PTHREADS_H */ diff --git a/ffmpeg/compat/windows/makedef b/ffmpeg/compat/windows/makedef new file mode 100755 index 0000000..fcaf108 --- /dev/null +++ b/ffmpeg/compat/windows/makedef @@ -0,0 +1,132 @@ +#!/bin/sh + +# Copyright (c) 2013, Derek Buitenhuis +# +# Permission to use, copy, modify, and/or distribute this software for any +# purpose with or without fee is hereby granted, provided that the above +# copyright notice and this permission notice appear in all copies. +# +# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +# WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +# MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +# ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +# WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +# ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF +# OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + +# mktemp isn't POSIX, so supply an implementation +mktemp() { + echo "${2%%XXX*}.${HOSTNAME}.${UID}.$$" +} + +if [ $# -lt 2 ]; then + echo "Usage: makedef " >&2 + exit 0 +fi + +vscript=$1 +shift + +if [ ! -f "$vscript" ]; then + echo "Version script does not exist" >&2 + exit 1 +fi + +for object in "$@"; do + if [ ! -f "$object" ]; then + echo "Object does not exist: ${object}" >&2 + exit 1 + fi +done + +# Create a lib temporarily to dump symbols from. +# It's just much easier to do it this way +libname=$(mktemp -u "library").lib + +trap 'rm -f -- $libname' EXIT + +lib -out:${libname} $@ >/dev/null +if [ $? != 0 ]; then + echo "Could not create temporary library." >&2 + exit 1 +fi + +IFS=' +' + +# Determine if we're building for x86 or x86_64 and +# set the symbol prefix accordingly. +prefix="" +arch=$(dumpbin -headers ${libname} | + tr '\t' ' ' | + grep '^ \+.\+machine \+(.\+)' | + head -1 | + sed -e 's/^ \{1,\}.\{1,\} \{1,\}machine \{1,\}(\(...\)).*/\1/') + +if [ "${arch}" = "x86" ]; then + prefix="_" +else + if [ "${arch}" != "ARM" ] && [ "${arch}" != "x64" ]; then + echo "Unknown machine type." >&2 + exit 1 + fi +fi + +started=0 +regex="none" + +for line in $(cat ${vscript} | tr '\t' ' '); do + # We only care about global symbols + echo "${line}" | grep -q '^ \+global:' + if [ $? = 0 ]; then + started=1 + line=$(echo "${line}" | sed -e 's/^ \{1,\}global: *//') + else + echo "${line}" | grep -q '^ \+local:' + if [ $? = 0 ]; then + started=0 + fi + fi + + if [ ${started} = 0 ]; then + continue + fi + + # Handle multiple symbols on one line + IFS=';' + + # Work around stupid expansion to filenames + line=$(echo "${line}" | sed -e 's/\*/.\\+/g') + for exp in ${line}; do + # Remove leading and trailing whitespace + exp=$(echo "${exp}" | sed -e 's/^ *//' -e 's/ *$//') + + if [ "${regex}" = "none" ]; then + regex="${exp}" + else + regex="${regex};${exp}" + fi + done + + IFS=' +' +done + +dump=$(dumpbin -linkermember:1 ${libname}) + +rm ${libname} + +IFS=';' +list="" +for exp in ${regex}; do + list="${list}"' +'$(echo "${dump}" | + sed -e '/public symbols/,$!d' -e '/^ \{1,\}Summary/,$d' -e "s/ \{1,\}${prefix}/ /" -e 's/ \{1,\}/ /g' | + tail -n +2 | + cut -d' ' -f3 | + grep "^${exp}" | + sed -e 's/^/ /') +done + +echo "EXPORTS" +echo "${list}" | sort | uniq | tail -n +2 diff --git a/ffmpeg/configure b/ffmpeg/configure new file mode 100755 index 0000000..618dfab --- /dev/null +++ b/ffmpeg/configure @@ -0,0 +1,5723 @@ +#!/bin/sh +# +# FFmpeg configure script +# +# Copyright (c) 2000-2002 Fabrice Bellard +# Copyright (c) 2005-2008 Diego Biurrun +# Copyright (c) 2005-2008 Mans Rullgard +# + +# Prevent locale nonsense from breaking basic text processing. +LC_ALL=C +export LC_ALL + +# make sure we are running under a compatible shell +# try to make this part work with most shells + +try_exec(){ + echo "Trying shell $1" + type "$1" > /dev/null 2>&1 && exec "$@" +} + +unset foo +(: ${foo%%bar}) 2> /dev/null +E1="$?" + +(: ${foo?}) 2> /dev/null +E2="$?" + +if test "$E1" != 0 || test "$E2" = 0; then + echo "Broken shell detected. Trying alternatives." + export FF_CONF_EXEC + if test "0$FF_CONF_EXEC" -lt 1; then + FF_CONF_EXEC=1 + try_exec bash "$0" "$@" + fi + if test "0$FF_CONF_EXEC" -lt 2; then + FF_CONF_EXEC=2 + try_exec ksh "$0" "$@" + fi + if test "0$FF_CONF_EXEC" -lt 3; then + FF_CONF_EXEC=3 + try_exec /usr/xpg4/bin/sh "$0" "$@" + fi + echo "No compatible shell script interpreter found." + echo "This configure script requires a POSIX-compatible shell" + echo "such as bash or ksh." + echo "THIS IS NOT A BUG IN FFMPEG, DO NOT REPORT IT AS SUCH." + echo "Instead, install a working POSIX-compatible shell." + echo "Disabling this configure test will create a broken FFmpeg." + if test "$BASH_VERSION" = '2.04.0(1)-release'; then + echo "This bash version ($BASH_VERSION) is broken on your platform." + echo "Upgrade to a later version if available." + fi + exit 1 +fi + +test -d /usr/xpg4/bin && PATH=/usr/xpg4/bin:$PATH + +show_help(){ + cat <> $logfile +} + +log_file(){ + log BEGIN $1 + pr -n -t $1 >> $logfile + log END $1 +} + +echolog(){ + log "$@" + echo "$@" +} + +warn(){ + log "WARNING: $*" + WARNINGS="${WARNINGS}WARNING: $*\n" +} + +die(){ + echolog "$@" + cat <>file; + } else if (file ~ /\\.asm\$/) { + printf(\"%%define %s %d\\n\", c, v) >>file; + } else if (file ~ /\\.mak\$/) { + n = -v ? \"\" : \"!\"; + printf(\"%s%s=yes\\n\", n, c) >>file; + } else if (file ~ /\\.texi\$/) { + pre = -v ? \"\" : \"@c \"; + yesno = \$2; + c2 = tolower(c); + gsub(/_/, \"-\", c2); + printf(\"%s@set %s %s\\n\", pre, c2, yesno) >>file; + } + } + }" +} + +print_enabled(){ + suf=$1 + shift + for v; do + enabled $v && printf "%s\n" ${v%$suf}; + done +} + +append(){ + var=$1 + shift + eval "$var=\"\$$var $*\"" +} + +prepend(){ + var=$1 + shift + eval "$var=\"$* \$$var\"" +} + +unique(){ + var=$1 + uniq_list="" + for tok in $(eval echo \$$var); do + uniq_list="$(filter_out $tok $uniq_list) $tok" + done + eval "$var=\"${uniq_list}\"" +} + +add_cppflags(){ + append CPPFLAGS "$@" +} + +add_cflags(){ + append CFLAGS $($cflags_filter "$@") +} + +add_cxxflags(){ + append CXXFLAGS $($cflags_filter "$@") +} + +add_asflags(){ + append ASFLAGS $($asflags_filter "$@") +} + +add_ldflags(){ + append LDFLAGS $($ldflags_filter "$@") +} + +add_ldexeflags(){ + append LDEXEFLAGS $($ldflags_filter "$@") +} + +add_stripflags(){ + append ASMSTRIPFLAGS "$@" +} + +add_extralibs(){ + prepend extralibs $($ldflags_filter "$@") +} + +add_host_cppflags(){ + append host_cppflags "$@" +} + +add_host_cflags(){ + append host_cflags $($host_cflags_filter "$@") +} + +add_host_ldflags(){ + append host_ldflags $($host_ldflags_filter "$@") +} + +add_compat(){ + append compat_objs $1 + shift + map 'add_cppflags -D$v' "$@" +} + +check_cmd(){ + log "$@" + "$@" >> $logfile 2>&1 +} + +check_stat(){ + log check_stat "$@" + stat "$1" >> $logfile 2>&1 +} + +cc_o(){ + eval printf '%s\\n' $CC_O +} + +cc_e(){ + eval printf '%s\\n' $CC_E +} + +check_cc(){ + log check_cc "$@" + cat > $TMPC + log_file $TMPC + check_cmd $cc $CPPFLAGS $CFLAGS "$@" $CC_C $(cc_o $TMPO) $TMPC +} + +check_cxx(){ + log check_cxx "$@" + cat > $TMPCPP + log_file $TMPCPP + check_cmd $cxx $CPPFLAGS $CFLAGS $CXXFLAGS "$@" $CXX_C -o $TMPO $TMPCPP +} + +check_oc(){ + log check_oc "$@" + cat > $TMPM + log_file $TMPM + check_cmd $cc -Werror=missing-prototypes $CPPFLAGS $CFLAGS "$@" $CC_C $(cc_o $TMPO) $TMPM +} + +check_cpp(){ + log check_cpp "$@" + cat > $TMPC + log_file $TMPC + check_cmd $cc $CPPFLAGS $CFLAGS "$@" $(cc_e $TMPO) $TMPC +} + +as_o(){ + eval printf '%s\\n' $AS_O +} + +check_as(){ + log check_as "$@" + cat > $TMPS + log_file $TMPS + check_cmd $as $CPPFLAGS $ASFLAGS "$@" $AS_C $(as_o $TMPO) $TMPS +} + +check_inline_asm(){ + log check_inline_asm "$@" + name="$1" + code="$2" + shift 2 + disable $name + check_cc "$@" < $TMPS + log_file $TMPS + shift 1 + check_cmd $yasmexe $YASMFLAGS -Werror "$@" -o $TMPO $TMPS +} + +ld_o(){ + eval printf '%s\\n' $LD_O +} + +check_ld(){ + log check_ld "$@" + type=$1 + shift 1 + flags=$(filter_out '-l*|*.so' $@) + libs=$(filter '-l*|*.so' $@) + check_$type $($cflags_filter $flags) || return + flags=$($ldflags_filter $flags) + libs=$($ldflags_filter $libs) + check_cmd $ld $LDFLAGS $flags $(ld_o $TMPE) $TMPO $libs $extralibs +} + +print_include(){ + hdr=$1 + test "${hdr%.h}" = "${hdr}" && + echo "#include $hdr" || + echo "#include <$hdr>" +} + +check_code(){ + log check_code "$@" + check=$1 + headers=$2 + code=$3 + shift 3 + { + for hdr in $headers; do + print_include $hdr + done + echo "int main(void) { $code; return 0; }" + } | check_$check "$@" +} + +check_cppflags(){ + log check_cppflags "$@" + check_cc "$@" < +int x; +EOF +} + +check_header_oc(){ + log check_header_oc "$@" + rm -f -- "$TMPO" + header=$1 + shift + disable_safe $header + { + echo "#include <$header>" + echo "int main(void) { return 0; }" + } | check_oc && check_stat "$TMPO" && enable_safe $headers +} + +check_func(){ + log check_func "$@" + func=$1 + shift + disable $func + check_ld "cc" "$@" < +float foo(float f, float g) { return $func($args); } +int main(void){ return (int) foo; } +EOF +} + +check_func_headers(){ + log check_func_headers "$@" + headers=$1 + funcs=$2 + shift 2 + { + for hdr in $headers; do + print_include $hdr + done + for func in $funcs; do + echo "long check_$func(void) { return (long) $func; }" + done + echo "int main(void) { return 0; }" + } | check_ld "cc" "$@" && enable $funcs && enable_safe $headers +} + +check_class_headers_cpp(){ + log check_class_headers_cpp "$@" + headers=$1 + classes=$2 + shift 2 + { + for hdr in $headers; do + echo "#include <$hdr>" + done + echo "int main(void) { " + i=1 + for class in $classes; do + echo "$class obj$i;" + i=$(expr $i + 1) + done + echo "return 0; }" + } | check_ld "cxx" "$@" && enable $funcs && enable_safe $headers +} + +check_cpp_condition(){ + log check_cpp_condition "$@" + header=$1 + condition=$2 + shift 2 + check_cpp "$@" < +#if !($condition) +#error "unsatisfied condition: $condition" +#endif +EOF +} + +check_lib(){ + log check_lib "$@" + header="$1" + func="$2" + shift 2 + check_header $header && check_func $func "$@" && add_extralibs "$@" +} + +check_lib2(){ + log check_lib2 "$@" + headers="$1" + funcs="$2" + shift 2 + check_func_headers "$headers" "$funcs" "$@" && add_extralibs "$@" +} + +check_lib_cpp(){ + log check_lib_cpp "$@" + headers="$1" + classes="$2" + shift 2 + check_class_headers_cpp "$headers" "$classes" "$@" && add_extralibs "$@" +} + +check_pkg_config(){ + log check_pkg_config "$@" + pkgandversion="$1" + pkg="${1%% *}" + headers="$2" + funcs="$3" + shift 3 + check_cmd $pkg_config --exists --print-errors $pkgandversion || return + pkg_cflags=$($pkg_config --cflags $pkg_config_flags $pkg) + pkg_libs=$($pkg_config --libs $pkg_config_flags $pkg) + check_func_headers "$headers" "$funcs" $pkg_cflags $pkg_libs "$@" && + set_safe ${pkg}_cflags $pkg_cflags && + set_safe ${pkg}_libs $pkg_libs +} + +check_exec(){ + check_ld "cc" "$@" && { enabled cross_compile || $TMPE >> $logfile 2>&1; } +} + +check_exec_crash(){ + code=$(cat) + + # exit() is not async signal safe. _Exit (C99) and _exit (POSIX) + # are safe but may not be available everywhere. Thus we use + # raise(SIGTERM) instead. The check is run in a subshell so we + # can redirect the "Terminated" message from the shell. SIGBUS + # is not defined by standard C so it is used conditionally. + + (check_exec "$@") >> $logfile 2>&1 < +static void sighandler(int sig){ + raise(SIGTERM); +} +int foo(void){ + $code +} +int (*func_ptr)(void) = foo; +int main(void){ + signal(SIGILL, sighandler); + signal(SIGFPE, sighandler); + signal(SIGSEGV, sighandler); +#ifdef SIGBUS + signal(SIGBUS, sighandler); +#endif + return func_ptr(); +} +EOF +} + +check_type(){ + log check_type "$@" + headers=$1 + type=$2 + shift 2 + disable_safe "$type" + check_code cc "$headers" "$type v" "$@" && enable_safe "$type" +} + +check_struct(){ + log check_struct "$@" + headers=$1 + struct=$2 + member=$3 + shift 3 + disable_safe "${struct}_${member}" + check_code cc "$headers" "const void *p = &(($struct *)0)->$member" "$@" && + enable_safe "${struct}_${member}" +} + +check_builtin(){ + log check_builtin "$@" + name=$1 + headers=$2 + builtin=$3 + shift 3 + disable "$name" + check_code ld "$headers" "$builtin" "cc" "$@" && enable "$name" +} + +check_compile_assert(){ + log check_compile_assert "$@" + name=$1 + headers=$2 + condition=$3 + shift 3 + disable "$name" + check_code cc "$headers" "char c[2 * !!($condition) - 1]" "$@" && enable "$name" +} + +require(){ + name="$1" + header="$2" + func="$3" + shift 3 + check_lib $header $func "$@" || die "ERROR: $name not found" +} + +require2(){ + name="$1" + headers="$2" + func="$3" + shift 3 + check_lib2 "$headers" $func "$@" || die "ERROR: $name not found" +} + +require_cpp(){ + name="$1" + headers="$2" + classes="$3" + shift 3 + check_lib_cpp "$headers" "$classes" "$@" || die "ERROR: $name not found" +} + +require_pkg_config(){ + pkg="$1" + check_pkg_config "$@" || die "ERROR: $pkg not found" + add_cflags $(get_safe ${pkg}_cflags) + add_extralibs $(get_safe ${pkg}_libs) +} + +require_libfreetype(){ + log require_libfreetype "$@" + pkg="freetype2" + check_cmd $pkg_config --exists --print-errors $pkg \ + || die "ERROR: $pkg not found" + pkg_cflags=$($pkg_config --cflags $pkg_config_flags $pkg) + pkg_libs=$($pkg_config --libs $pkg_config_flags $pkg) + { + echo "#include " + echo "#include FT_FREETYPE_H" + echo "long check_func(void) { return (long) FT_Init_FreeType; }" + echo "int main(void) { return 0; }" + } | check_ld "cc" $pkg_cflags $pkg_libs \ + && set_safe ${pkg}_cflags $pkg_cflags \ + && set_safe ${pkg}_libs $pkg_libs \ + || die "ERROR: $pkg not found" + add_cflags $(get_safe ${pkg}_cflags) + add_extralibs $(get_safe ${pkg}_libs) +} + +hostcc_e(){ + eval printf '%s\\n' $HOSTCC_E +} + +hostcc_o(){ + eval printf '%s\\n' $HOSTCC_O +} + +check_host_cc(){ + log check_host_cc "$@" + cat > $TMPC + log_file $TMPC + check_cmd $host_cc $host_cflags "$@" $HOSTCC_C $(hostcc_o $TMPO) $TMPC +} + +check_host_cpp(){ + log check_host_cpp "$@" + cat > $TMPC + log_file $TMPC + check_cmd $host_cc $host_cppflags $host_cflags "$@" $(hostcc_e $TMPO) $TMPC +} + +check_host_cppflags(){ + log check_host_cppflags "$@" + check_host_cc "$@" < +#if !($condition) +#error "unsatisfied condition: $condition" +#endif +EOF +} + +apply(){ + file=$1 + shift + "$@" < "$file" > "$file.tmp" && mv "$file.tmp" "$file" || rm "$file.tmp" +} + +cp_if_changed(){ + cmp -s "$1" "$2" && echo "$2 is unchanged" && return + mkdir -p "$(dirname $2)" + $cp_f "$1" "$2" +} + +# CONFIG_LIST contains configurable options, while HAVE_LIST is for +# system-dependent things. + +COMPONENT_LIST=" + bsfs + decoders + demuxers + encoders + filters + hwaccels + indevs + muxers + outdevs + parsers + protocols +" + +EXAMPLE_LIST=" + avio_reading_example + decoding_encoding_example + demuxing_decoding_example + extract_mvs_example + filter_audio_example + filtering_audio_example + filtering_video_example + metadata_example + muxing_example + remuxing_example + resampling_audio_example + scaling_video_example + transcode_aac_example + transcoding_example +" + +EXTERNAL_LIBRARY_LIST=" + avisynth + bzlib + crystalhd + decklink + frei0r + gnutls + iconv + ladspa + libaacplus + libass + libbluray + libbs2b + libcaca + libcdio + libcelt + libdc1394 + libfaac + libfdk_aac + libflite + libfontconfig + libfreetype + libfribidi + libgme + libgsm + libiec61883 + libilbc + libmodplug + libmp3lame + libnut + libopencore_amrnb + libopencore_amrwb + libopencv + libopenjpeg + libopus + libpulse + libquvi + librtmp + libschroedinger + libshine + libsmbclient + libsoxr + libspeex + libssh + libstagefright_h264 + libtheora + libtwolame + libutvideo + libv4l2 + libvidstab + libvo_aacenc + libvo_amrwbenc + libvorbis + libvpx + libwavpack + libwebp + libx264 + libx265 + libxavs + libxvid + libzmq + libzvbi + lzma + openal + opencl + opengl + openssl + x11grab + xlib + zlib +" + +DOCUMENT_LIST=" + doc + htmlpages + manpages + podpages + txtpages +" + +FEATURE_LIST=" + ftrapv + gray + hardcoded_tables + runtime_cpudetect + safe_bitstream_reader + shared + small + static + swscale_alpha +" + +HWACCEL_LIST=" + dxva2 + vaapi + vda + vdpau + xvmc +" + +LIBRARY_LIST=" + avcodec + avdevice + avfilter + avformat + avresample + avutil + postproc + swresample + swscale +" + +LICENSE_LIST=" + gpl + nonfree + version3 +" + +PROGRAM_LIST=" + ffplay + ffprobe + ffserver + ffmpeg +" + +SUBSYSTEM_LIST=" + dct + dwt + error_resilience + faan + fast_unaligned + fft + lsp + lzo + mdct + pixelutils + network + rdft +" + +CONFIG_LIST=" + $COMPONENT_LIST + $DOCUMENT_LIST + $EXAMPLE_LIST + $EXTERNAL_LIBRARY_LIST + $FEATURE_LIST + $HWACCEL_LIST + $LICENSE_LIST + $LIBRARY_LIST + $PROGRAM_LIST + $SUBSYSTEM_LIST + fontconfig + incompatible_libav_abi + memalign_hack + memory_poisoning + neon_clobber_test + pic + pod2man + raise_major + thumb + xmm_clobber_test +" + +THREADS_LIST=" + pthreads + os2threads + w32threads +" + +ATOMICS_LIST=" + atomics_gcc + atomics_suncc + atomics_win32 +" + +ARCH_LIST=" + aarch64 + alpha + arm + avr32 + avr32_ap + avr32_uc + bfin + ia64 + m68k + mips + mips64 + parisc + ppc + ppc64 + s390 + sh4 + sparc + sparc64 + tilegx + tilepro + tomi + x86 + x86_32 + x86_64 +" + +ARCH_EXT_LIST_ARM=" + armv5te + armv6 + armv6t2 + armv8 + neon + vfp + vfpv3 + setend +" + +ARCH_EXT_LIST_MIPS=" + mipsfpu + mips32r2 + mipsdspr1 + mipsdspr2 +" + +ARCH_EXT_LIST_X86_SIMD=" + amd3dnow + amd3dnowext + avx + avx2 + fma3 + fma4 + mmx + mmxext + sse + sse2 + sse3 + sse4 + sse42 + ssse3 + xop +" + +ARCH_EXT_LIST_PPC=" + altivec + dcbzl + ldbrx + ppc4xx + vsx +" + +ARCH_EXT_LIST_X86=" + $ARCH_EXT_LIST_X86_SIMD + cpunop + i686 +" + +ARCH_EXT_LIST=" + $ARCH_EXT_LIST_ARM + $ARCH_EXT_LIST_PPC + $ARCH_EXT_LIST_X86 + $ARCH_EXT_LIST_MIPS + loongson +" + +ARCH_FEATURES=" + aligned_stack + fast_64bit + fast_clz + fast_cmov + local_aligned_8 + local_aligned_16 + local_aligned_32 + simd_align_16 +" + +BUILTIN_LIST=" + atomic_cas_ptr + machine_rw_barrier + MemoryBarrier + mm_empty + rdtsc + sarestart + sync_val_compare_and_swap +" +HAVE_LIST_CMDLINE=" + inline_asm + symver + yasm +" + +HAVE_LIST_PUB=" + bigendian + fast_unaligned + incompatible_libav_abi +" + +HEADERS_LIST=" + alsa_asoundlib_h + altivec_h + arpa_inet_h + asm_types_h + cdio_paranoia_h + cdio_paranoia_paranoia_h + CL_cl_h + dev_bktr_ioctl_bt848_h + dev_bktr_ioctl_meteor_h + dev_ic_bt8xx_h + dev_video_bktr_ioctl_bt848_h + dev_video_meteor_ioctl_meteor_h + direct_h + dlfcn_h + dxva_h + ES2_gl_h + gsm_h + io_h + mach_mach_time_h + machine_ioctl_bt848_h + machine_ioctl_meteor_h + malloc_h + openjpeg_1_5_openjpeg_h + OpenGL_gl3_h + poll_h + sndio_h + soundcard_h + sys_mman_h + sys_param_h + sys_resource_h + sys_select_h + sys_soundcard_h + sys_time_h + sys_un_h + sys_videoio_h + termios_h + unistd_h + windows_h + winsock2_h +" + +INTRINSICS_LIST=" + intrinsics_neon +" + +MATH_FUNCS=" + atanf + atan2f + cbrt + cbrtf + cosf + exp2 + exp2f + expf + fminf + isinf + isnan + ldexpf + llrint + llrintf + log2 + log2f + log10f + lrint + lrintf + powf + rint + round + roundf + sinf + trunc + truncf +" + +SYSTEM_FUNCS=" + access + aligned_malloc + clock_gettime + closesocket + CommandLineToArgvW + CoTaskMemFree + CryptGenRandom + dlopen + fcntl + flt_lim + fork + getaddrinfo + gethrtime + getopt + GetProcessAffinityMask + GetProcessMemoryInfo + GetProcessTimes + getrusage + getservbyport + GetSystemTimeAsFileTime + gettimeofday + glob + glXGetProcAddress + inet_aton + isatty + jack_port_get_latency_range + kbhit + localtime_r + lzo1x_999_compress + mach_absolute_time + MapViewOfFile + memalign + mkstemp + mmap + mprotect + nanosleep + PeekNamedPipe + posix_memalign + pthread_cancel + sched_getaffinity + SetConsoleTextAttribute + setmode + setrlimit + Sleep + strerror_r + sysconf + sysctl + usleep + VirtualAlloc + wglGetProcAddress +" + +TOOLCHAIN_FEATURES=" + as_dn_directive + as_func + asm_mod_q + attribute_may_alias + attribute_packed + ebp_available + ebx_available + gnu_as + gnu_windres + ibm_asm + inline_asm_labels + inline_asm_nonlocal_labels + inline_asm_direct_symbol_refs + pragma_deprecated + rsync_contimeout + symver_asm_label + symver_gnu_asm + vfp_args + xform_asm + xmm_clobbers +" + +TYPES_LIST=" + socklen_t + struct_addrinfo + struct_group_source_req + struct_ip_mreq_source + struct_ipv6_mreq + struct_pollfd + struct_rusage_ru_maxrss + struct_sctp_event_subscribe + struct_sockaddr_in6 + struct_sockaddr_sa_len + struct_sockaddr_storage + struct_stat_st_mtim_tv_nsec + struct_v4l2_frmivalenum_discrete +" + +HAVE_LIST=" + $ARCH_EXT_LIST + $(add_suffix _external $ARCH_EXT_LIST) + $(add_suffix _inline $ARCH_EXT_LIST) + $ARCH_FEATURES + $ATOMICS_LIST + $BUILTIN_LIST + $HAVE_LIST_CMDLINE + $HAVE_LIST_PUB + $HEADERS_LIST + $INTRINSICS_LIST + $MATH_FUNCS + $SYSTEM_FUNCS + $THREADS_LIST + $TOOLCHAIN_FEATURES + $TYPES_LIST + atomics_native + dos_paths + dxva2api_cobj + dxva2_lib + libc_msvcrt + libdc1394_1 + libdc1394_2 + makeinfo + makeinfo_html + perl + pod2man + sdl + texi2html + threads + vdpau_x11 + xlib +" + +# options emitted with CONFIG_ prefix but not available on the command line +CONFIG_EXTRA=" + aandcttables + ac3dsp + audio_frame_queue + audiodsp + blockdsp + bswapdsp + cabac + dvprofile + exif + faandct + faanidct + fdctdsp + frame_thread_encoder + gcrypt + golomb + gplv3 + h263dsp + h264chroma + h264dsp + h264pred + h264qpel + hpeldsp + huffman + huffyuvdsp + huffyuvencdsp + idctdsp + iirfilter + intrax8 + lgplv3 + llauddsp + llviddsp + lpc + me_cmp + mpeg_er + mpegaudio + mpegaudiodsp + mpegvideo + mpegvideoenc + nettle + pixblockdsp + qpeldsp + rangecoder + riffdec + riffenc + rtpdec + rtpenc_chain + sinewin + startcode + tpeldsp + videodsp + vp3dsp + wma_freqs +" + +CMDLINE_SELECT=" + $ARCH_EXT_LIST + $CONFIG_LIST + $HAVE_LIST_CMDLINE + $THREADS_LIST + asm + cross_compile + debug + extra_warnings + logging + lto + optimizations + rpath + stripping +" + +PATHS_LIST=" + bindir + datadir + docdir + incdir + libdir + mandir + prefix + shlibdir +" + +CMDLINE_SET=" + $PATHS_LIST + ar + arch + as + assert_level + build_suffix + cc + cpu + cross_prefix + cxx + dep_cc + doxygen + extra_version + gas + host_cc + host_cflags + host_ld + host_ldflags + host_libs + host_os + install + ld + logfile + malloc_prefix + nm + optflags + pkg_config + pkg_config_flags + progs_suffix + random_seed + ranlib + samples + strip + sws_max_filter_size + sysinclude + sysroot + target_exec + target_os + target_path + target_samples + tempprefix + toolchain + valgrind + yasmexe +" + +CMDLINE_APPEND=" + extra_cflags + extra_cxxflags + host_cppflags +" + +# code dependency declarations + +# architecture extensions + +armv5te_deps="arm" +armv6_deps="arm" +armv6t2_deps="arm" +armv8_deps="aarch64" +neon_deps_any="aarch64 arm" +intrinsics_neon_deps="neon" +vfp_deps_any="aarch64 arm" +vfpv3_deps="vfp" +setend_deps="arm" + +map 'eval ${v}_inline_deps=inline_asm' $ARCH_EXT_LIST_ARM + +mipsfpu_deps="mips" +mips32r2_deps="mips" +mipsdspr1_deps="mips" +mipsdspr2_deps="mips" + +altivec_deps="ppc" +ppc4xx_deps="ppc" +vsx_deps="ppc" + +cpunop_deps="i686" +x86_64_select="i686" +x86_64_suggest="fast_cmov" + +amd3dnow_deps="mmx" +amd3dnowext_deps="amd3dnow" +i686_deps="x86" +mmx_deps="x86" +mmxext_deps="mmx" +sse_deps="mmxext" +sse2_deps="sse" +sse3_deps="sse2" +ssse3_deps="sse3" +sse4_deps="ssse3" +sse42_deps="sse4" +avx_deps="sse42" +xop_deps="avx" +fma3_deps="avx" +fma4_deps="avx" +avx2_deps="avx" + +mmx_external_deps="yasm" +mmx_inline_deps="inline_asm" +mmx_suggest="mmx_external mmx_inline" + +for ext in $(filter_out mmx $ARCH_EXT_LIST_X86_SIMD); do + eval dep=\$${ext}_deps + eval ${ext}_external_deps='"${dep}_external"' + eval ${ext}_inline_deps='"${dep}_inline"' + eval ${ext}_suggest='"${ext}_external ${ext}_inline"' +done + +aligned_stack_if_any="aarch64 ppc x86" +fast_64bit_if_any="aarch64 alpha ia64 mips64 parisc64 ppc64 sparc64 x86_64" +fast_clz_if_any="aarch64 alpha avr32 mips ppc x86" +fast_unaligned_if_any="aarch64 ppc x86" +simd_align_16_if_any="altivec neon sse" + +# system capabilities + +symver_if_any="symver_asm_label symver_gnu_asm" + +# threading support +atomics_gcc_if="sync_val_compare_and_swap" +atomics_suncc_if="atomic_cas_ptr machine_rw_barrier" +atomics_win32_if="MemoryBarrier" +atomics_native_if_any="$ATOMICS_LIST" +w32threads_deps="atomics_native" +threads_if_any="$THREADS_LIST" + +# subsystems +dct_select="rdft" +error_resilience_select="me_cmp" +faandct_deps="faan fdctdsp" +faanidct_deps="faan idctdsp" +frame_thread_encoder_deps="encoders threads" +intrax8_select="error_resilience" +mdct_select="fft" +rdft_select="fft" +me_cmp_select="fdctdsp idctdsp pixblockdsp" +mpeg_er_select="error_resilience" +mpegaudio_select="mpegaudiodsp" +mpegaudiodsp_select="dct" +mpegvideo_select="blockdsp h264chroma hpeldsp idctdsp me_cmp videodsp" +mpegvideoenc_select="me_cmp mpegvideo pixblockdsp qpeldsp" + +# decoders / encoders +aac_decoder_select="mdct sinewin" +aac_encoder_select="audio_frame_queue iirfilter mdct sinewin" +aac_latm_decoder_select="aac_decoder aac_latm_parser" +ac3_decoder_select="ac3_parser ac3dsp bswapdsp mdct" +ac3_fixed_decoder_select="ac3_parser ac3dsp bswapdsp mdct" +ac3_encoder_select="ac3dsp audiodsp mdct me_cmp" +ac3_fixed_encoder_select="ac3dsp audiodsp mdct me_cmp" +aic_decoder_select="golomb idctdsp" +alac_encoder_select="lpc" +als_decoder_select="bswapdsp" +amrnb_decoder_select="lsp" +amrwb_decoder_select="lsp" +amv_decoder_select="sp5x_decoder exif" +amv_encoder_select="aandcttables mpegvideoenc" +ape_decoder_select="bswapdsp llauddsp" +asv1_decoder_select="blockdsp bswapdsp idctdsp" +asv1_encoder_select="bswapdsp fdctdsp pixblockdsp" +asv2_decoder_select="blockdsp bswapdsp idctdsp" +asv2_encoder_select="bswapdsp fdctdsp pixblockdsp" +atrac1_decoder_select="mdct sinewin" +atrac3_decoder_select="mdct" +atrac3p_decoder_select="mdct sinewin" +avrn_decoder_select="exif" +bink_decoder_select="blockdsp hpeldsp" +binkaudio_dct_decoder_select="mdct rdft dct sinewin wma_freqs" +binkaudio_rdft_decoder_select="mdct rdft sinewin wma_freqs" +cavs_decoder_select="blockdsp golomb h264chroma idctdsp qpeldsp videodsp" +cllc_decoder_select="bswapdsp" +comfortnoise_encoder_select="lpc" +cook_decoder_select="audiodsp mdct sinewin" +cscd_decoder_select="lzo" +cscd_decoder_suggest="zlib" +dca_decoder_select="mdct" +dirac_decoder_select="dwt golomb videodsp mpegvideoenc" +dnxhd_decoder_select="blockdsp idctdsp" +dnxhd_encoder_select="aandcttables blockdsp fdctdsp idctdsp mpegvideoenc pixblockdsp" +dvvideo_decoder_select="dvprofile idctdsp" +dvvideo_encoder_select="dvprofile fdctdsp me_cmp pixblockdsp" +dxa_decoder_select="zlib" +eac3_decoder_select="ac3_decoder" +eac3_encoder_select="ac3_encoder" +eamad_decoder_select="aandcttables blockdsp bswapdsp idctdsp mpegvideo" +eatgq_decoder_select="aandcttables" +eatqi_decoder_select="aandcttables blockdsp bswapdsp idctdsp mpeg1video_decoder" +exr_decoder_select="zlib" +ffv1_decoder_select="golomb rangecoder" +ffv1_encoder_select="rangecoder" +ffvhuff_decoder_select="huffyuv_decoder" +ffvhuff_encoder_select="huffyuv_encoder" +fic_decoder_select="golomb" +flac_decoder_select="golomb" +flac_encoder_select="bswapdsp golomb lpc" +flashsv_decoder_select="zlib" +flashsv_encoder_select="zlib" +flashsv2_encoder_select="zlib" +flashsv2_decoder_select="zlib" +flv_decoder_select="h263_decoder" +flv_encoder_select="h263_encoder" +fourxm_decoder_select="blockdsp bswapdsp" +fraps_decoder_select="bswapdsp huffman" +g2m_decoder_select="blockdsp idctdsp zlib" +g729_decoder_select="audiodsp" +h261_decoder_select="mpeg_er mpegvideo" +h261_encoder_select="aandcttables mpegvideoenc" +h263_decoder_select="error_resilience h263_parser h263dsp mpeg_er mpegvideo qpeldsp" +h263_encoder_select="aandcttables h263dsp mpegvideoenc" +h263i_decoder_select="h263_decoder" +h263p_encoder_select="h263_encoder" +h264_decoder_select="cabac golomb h264chroma h264dsp h264pred h264qpel startcode videodsp" +h264_decoder_suggest="error_resilience" +hevc_decoder_select="bswapdsp cabac golomb videodsp" +huffyuv_decoder_select="bswapdsp huffyuvdsp llviddsp" +huffyuv_encoder_select="bswapdsp huffman huffyuvencdsp llviddsp" +iac_decoder_select="imc_decoder" +imc_decoder_select="bswapdsp fft mdct sinewin" +indeo3_decoder_select="hpeldsp" +interplay_video_decoder_select="hpeldsp" +jpegls_decoder_select="golomb mjpeg_decoder" +jpegls_encoder_select="golomb" +jv_decoder_select="blockdsp" +lagarith_decoder_select="huffyuvdsp" +ljpeg_encoder_select="aandcttables idctdsp" +loco_decoder_select="golomb" +mdec_decoder_select="blockdsp idctdsp mpegvideo" +metasound_decoder_select="lsp mdct sinewin" +mimic_decoder_select="blockdsp bswapdsp hpeldsp idctdsp" +mjpeg_decoder_select="blockdsp hpeldsp exif idctdsp" +mjpeg_encoder_select="aandcttables mpegvideoenc" +mjpegb_decoder_select="mjpeg_decoder" +mlp_decoder_select="mlp_parser" +motionpixels_decoder_select="bswapdsp" +mp1_decoder_select="mpegaudio" +mp1float_decoder_select="mpegaudio" +mp2_decoder_select="mpegaudio" +mp2float_decoder_select="mpegaudio" +mp3_decoder_select="mpegaudio" +mp3adu_decoder_select="mpegaudio" +mp3adufloat_decoder_select="mpegaudio" +mp3float_decoder_select="mpegaudio" +mp3on4_decoder_select="mpegaudio" +mp3on4float_decoder_select="mpegaudio" +mpc7_decoder_select="bswapdsp mpegaudiodsp" +mpc8_decoder_select="mpegaudiodsp" +mpeg_xvmc_decoder_deps="X11_extensions_XvMClib_h" +mpeg_xvmc_decoder_select="mpeg2video_decoder" +mpegvideo_decoder_select="error_resilience mpeg_er mpegvideo" +mpeg1video_decoder_select="error_resilience mpeg_er mpegvideo" +mpeg1video_encoder_select="aandcttables mpegvideoenc h263dsp" +mpeg2video_decoder_select="error_resilience mpeg_er mpegvideo" +mpeg2video_encoder_select="aandcttables mpegvideoenc h263dsp" +mpeg4_decoder_select="h263_decoder mpeg4video_parser" +mpeg4_encoder_select="h263_encoder" +msmpeg4v1_decoder_select="h263_decoder" +msmpeg4v2_decoder_select="h263_decoder" +msmpeg4v2_encoder_select="h263_encoder" +msmpeg4v3_decoder_select="h263_decoder" +msmpeg4v3_encoder_select="h263_encoder" +mss2_decoder_select="error_resilience mpeg_er qpeldsp vc1_decoder" +mxpeg_decoder_select="mjpeg_decoder" +nellymoser_decoder_select="mdct sinewin" +nellymoser_encoder_select="audio_frame_queue mdct sinewin" +nuv_decoder_select="idctdsp lzo" +on2avc_decoder_select="mdct" +opus_decoder_deps="swresample" +png_decoder_select="zlib" +png_encoder_select="huffyuvencdsp zlib" +prores_decoder_select="blockdsp idctdsp" +prores_encoder_select="fdctdsp" +qcelp_decoder_select="lsp" +qdm2_decoder_select="mdct rdft mpegaudiodsp" +ra_144_encoder_select="audio_frame_queue lpc audiodsp" +ra_144_decoder_select="audiodsp" +ralf_decoder_select="golomb" +rawvideo_decoder_select="bswapdsp" +rtjpeg_decoder_select="me_cmp" +rv10_decoder_select="error_resilience h263_decoder h263dsp mpeg_er" +rv10_encoder_select="h263_encoder" +rv20_decoder_select="error_resilience h263_decoder h263dsp mpeg_er" +rv20_encoder_select="h263_encoder" +rv30_decoder_select="error_resilience golomb h264chroma h264pred h264qpel mpeg_er mpegvideo videodsp" +rv40_decoder_select="error_resilience golomb h264chroma h264pred h264qpel mpeg_er mpegvideo videodsp" +shorten_decoder_select="golomb" +sipr_decoder_select="lsp" +snow_decoder_select="dwt h264qpel hpeldsp me_cmp rangecoder videodsp" +snow_encoder_select="aandcttables dwt h264qpel hpeldsp me_cmp mpegvideoenc rangecoder" +sonic_decoder_select="golomb rangecoder" +sonic_encoder_select="golomb rangecoder" +sonic_ls_encoder_select="golomb rangecoder" +sp5x_decoder_select="mjpeg_decoder" +svq1_decoder_select="hpeldsp" +svq1_encoder_select="aandcttables hpeldsp me_cmp mpegvideoenc" +svq3_decoder_select="h264_decoder hpeldsp tpeldsp" +svq3_decoder_suggest="zlib" +tak_decoder_select="audiodsp" +theora_decoder_select="vp3_decoder" +thp_decoder_select="mjpeg_decoder" +tiff_decoder_suggest="zlib lzma" +tiff_encoder_suggest="zlib" +truehd_decoder_select="mlp_parser" +truemotion2_decoder_select="bswapdsp" +truespeech_decoder_select="bswapdsp" +tscc_decoder_select="zlib" +twinvq_decoder_select="mdct lsp sinewin" +utvideo_decoder_select="bswapdsp" +utvideo_encoder_select="bswapdsp huffman huffyuvencdsp" +vble_decoder_select="huffyuvdsp" +vc1_decoder_select="blockdsp error_resilience h263_decoder h264chroma h264qpel intrax8 mpeg_er qpeldsp startcode" +vc1image_decoder_select="vc1_decoder" +vorbis_decoder_select="mdct" +vorbis_encoder_select="mdct" +vp3_decoder_select="hpeldsp vp3dsp videodsp" +vp5_decoder_select="h264chroma hpeldsp videodsp vp3dsp" +vp6_decoder_select="h264chroma hpeldsp huffman videodsp vp3dsp" +vp6a_decoder_select="vp6_decoder" +vp6f_decoder_select="vp6_decoder" +vp7_decoder_select="h264pred videodsp" +vp8_decoder_select="h264pred videodsp" +vp9_decoder_select="videodsp vp9_parser" +webp_decoder_select="vp8_decoder" +wmalossless_decoder_select="llauddsp" +wmapro_decoder_select="mdct sinewin wma_freqs" +wmav1_decoder_select="mdct sinewin wma_freqs" +wmav1_encoder_select="mdct sinewin wma_freqs" +wmav2_decoder_select="mdct sinewin wma_freqs" +wmav2_encoder_select="mdct sinewin wma_freqs" +wmavoice_decoder_select="lsp rdft dct mdct sinewin" +wmv1_decoder_select="h263_decoder" +wmv1_encoder_select="h263_encoder" +wmv2_decoder_select="blockdsp h263_decoder idctdsp intrax8 videodsp" +wmv2_encoder_select="h263_encoder" +wmv3_decoder_select="vc1_decoder" +wmv3image_decoder_select="wmv3_decoder" +zerocodec_decoder_select="zlib" +zlib_decoder_select="zlib" +zlib_encoder_select="zlib" +zmbv_decoder_select="zlib" +zmbv_encoder_select="zlib" + +# hardware accelerators +crystalhd_deps="libcrystalhd_libcrystalhd_if_h" +dxva2_deps="dxva2api_h" +vaapi_deps="va_va_h" +vda_deps="VideoDecodeAcceleration_VDADecoder_h pthreads" +vda_extralibs="-framework CoreFoundation -framework VideoDecodeAcceleration -framework QuartzCore" +vdpau_deps="vdpau_vdpau_h vdpau_vdpau_x11_h" +xvmc_deps="X11_extensions_XvMClib_h" + +h263_vaapi_hwaccel_deps="vaapi" +h263_vaapi_hwaccel_select="h263_decoder" +h263_vdpau_hwaccel_deps="vdpau" +h263_vdpau_hwaccel_select="h263_decoder" +h264_crystalhd_decoder_select="crystalhd h264_mp4toannexb_bsf h264_parser" +h264_dxva2_hwaccel_deps="dxva2" +h264_dxva2_hwaccel_select="h264_decoder" +h264_vaapi_hwaccel_deps="vaapi" +h264_vaapi_hwaccel_select="h264_decoder" +h264_vda_decoder_deps="vda" +h264_vda_decoder_select="h264_decoder" +h264_vda_hwaccel_deps="vda" +h264_vda_hwaccel_select="h264_decoder" +h264_vda_old_hwaccel_deps="vda" +h264_vda_old_hwaccel_select="h264_decoder" +h264_vdpau_decoder_deps="vdpau" +h264_vdpau_decoder_select="h264_decoder" +h264_vdpau_hwaccel_deps="vdpau" +h264_vdpau_hwaccel_select="h264_decoder" +mpeg_vdpau_decoder_deps="vdpau" +mpeg_vdpau_decoder_select="mpeg2video_decoder" +mpeg_xvmc_hwaccel_deps="xvmc" +mpeg_xvmc_hwaccel_select="mpeg2video_decoder" +mpeg1_vdpau_decoder_deps="vdpau" +mpeg1_vdpau_decoder_select="mpeg1video_decoder" +mpeg1_vdpau_hwaccel_deps="vdpau" +mpeg1_vdpau_hwaccel_select="mpeg1video_decoder" +mpeg1_xvmc_hwaccel_deps="xvmc" +mpeg1_xvmc_hwaccel_select="mpeg1video_decoder" +mpeg2_crystalhd_decoder_select="crystalhd" +mpeg2_dxva2_hwaccel_deps="dxva2" +mpeg2_dxva2_hwaccel_select="mpeg2video_decoder" +mpeg2_vaapi_hwaccel_deps="vaapi" +mpeg2_vaapi_hwaccel_select="mpeg2video_decoder" +mpeg2_vdpau_hwaccel_deps="vdpau" +mpeg2_vdpau_hwaccel_select="mpeg2video_decoder" +mpeg2_xvmc_hwaccel_deps="xvmc" +mpeg2_xvmc_hwaccel_select="mpeg2video_decoder" +mpeg4_crystalhd_decoder_select="crystalhd" +mpeg4_vaapi_hwaccel_deps="vaapi" +mpeg4_vaapi_hwaccel_select="mpeg4_decoder" +mpeg4_vdpau_decoder_deps="vdpau" +mpeg4_vdpau_decoder_select="mpeg4_decoder" +mpeg4_vdpau_hwaccel_deps="vdpau" +mpeg4_vdpau_hwaccel_select="mpeg4_decoder" +msmpeg4_crystalhd_decoder_select="crystalhd" +vc1_crystalhd_decoder_select="crystalhd" +vc1_dxva2_hwaccel_deps="dxva2" +vc1_dxva2_hwaccel_select="vc1_decoder" +vc1_vaapi_hwaccel_deps="vaapi" +vc1_vaapi_hwaccel_select="vc1_decoder" +vc1_vdpau_decoder_deps="vdpau" +vc1_vdpau_decoder_select="vc1_decoder" +vc1_vdpau_hwaccel_deps="vdpau" +vc1_vdpau_hwaccel_select="vc1_decoder" +wmv3_crystalhd_decoder_select="crystalhd" +wmv3_dxva2_hwaccel_select="vc1_dxva2_hwaccel" +wmv3_vaapi_hwaccel_select="vc1_vaapi_hwaccel" +wmv3_vdpau_decoder_select="vc1_vdpau_decoder" +wmv3_vdpau_hwaccel_select="vc1_vdpau_hwaccel" + +# parsers +h264_parser_select="h264_decoder" +hevc_parser_select="hevc_decoder" +mpegvideo_parser_select="mpegvideo" +mpeg4video_parser_select="error_resilience h263dsp mpeg_er mpegvideo qpeldsp" +vc1_parser_select="mpegvideo startcode vc1_decoder" + +# external libraries +libaacplus_encoder_deps="libaacplus" +libcelt_decoder_deps="libcelt" +libfaac_encoder_deps="libfaac" +libfaac_encoder_select="audio_frame_queue" +libfdk_aac_decoder_deps="libfdk_aac" +libfdk_aac_encoder_deps="libfdk_aac" +libfdk_aac_encoder_select="audio_frame_queue" +libgme_demuxer_deps="libgme" +libgsm_decoder_deps="libgsm" +libgsm_encoder_deps="libgsm" +libgsm_ms_decoder_deps="libgsm" +libgsm_ms_encoder_deps="libgsm" +libilbc_decoder_deps="libilbc" +libilbc_encoder_deps="libilbc" +libmodplug_demuxer_deps="libmodplug" +libmp3lame_encoder_deps="libmp3lame" +libmp3lame_encoder_select="audio_frame_queue" +libopencore_amrnb_decoder_deps="libopencore_amrnb" +libopencore_amrnb_encoder_deps="libopencore_amrnb" +libopencore_amrnb_encoder_select="audio_frame_queue" +libopencore_amrwb_decoder_deps="libopencore_amrwb" +libopenjpeg_decoder_deps="libopenjpeg" +libopenjpeg_encoder_deps="libopenjpeg" +libopus_decoder_deps="libopus" +libopus_encoder_deps="libopus" +libopus_encoder_select="audio_frame_queue" +libquvi_demuxer_deps="libquvi" +libschroedinger_decoder_deps="libschroedinger" +libschroedinger_encoder_deps="libschroedinger" +libshine_encoder_deps="libshine" +libshine_encoder_select="audio_frame_queue" +libspeex_decoder_deps="libspeex" +libspeex_encoder_deps="libspeex" +libspeex_encoder_select="audio_frame_queue" +libstagefright_h264_decoder_deps="libstagefright_h264" +libtheora_encoder_deps="libtheora" +libtwolame_encoder_deps="libtwolame" +libvo_aacenc_encoder_deps="libvo_aacenc" +libvo_aacenc_encoder_select="audio_frame_queue" +libvo_amrwbenc_encoder_deps="libvo_amrwbenc" +libvorbis_decoder_deps="libvorbis" +libvorbis_encoder_deps="libvorbis" +libvorbis_encoder_select="audio_frame_queue" +libvpx_vp8_decoder_deps="libvpx" +libvpx_vp8_encoder_deps="libvpx" +libvpx_vp9_decoder_deps="libvpx" +libvpx_vp9_encoder_deps="libvpx" +libwavpack_encoder_deps="libwavpack" +libwebp_encoder_deps="libwebp" +libx264_encoder_deps="libx264" +libx264rgb_encoder_deps="libx264" +libx265_encoder_deps="libx265" +libxavs_encoder_deps="libxavs" +libxvid_encoder_deps="libxvid" +libutvideo_decoder_deps="libutvideo" +libutvideo_encoder_deps="libutvideo" +libzvbi_teletext_decoder_deps="libzvbi" + +# demuxers / muxers +ac3_demuxer_select="ac3_parser" +asf_demuxer_select="riffdec" +asf_muxer_select="riffenc" +asf_stream_muxer_select="asf_muxer" +avi_demuxer_select="riffdec exif" +avi_muxer_select="riffenc" +avisynth_demuxer_deps="avisynth" +avisynth_demuxer_select="riffdec" +caf_demuxer_select="riffdec" +dirac_demuxer_select="dirac_parser" +dts_demuxer_select="dca_parser" +dtshd_demuxer_select="dca_parser" +dv_demuxer_select="dvprofile" +dv_muxer_select="dvprofile" +dxa_demuxer_select="riffdec" +eac3_demuxer_select="ac3_parser" +f4v_muxer_select="mov_muxer" +flac_demuxer_select="flac_parser" +hds_muxer_select="flv_muxer" +hls_muxer_select="mpegts_muxer" +image2_alias_pix_demuxer_select="image2_demuxer" +image2_brender_pix_demuxer_select="image2_demuxer" +ipod_muxer_select="mov_muxer" +ismv_muxer_select="mov_muxer" +libnut_demuxer_deps="libnut" +libnut_muxer_deps="libnut" +matroska_audio_muxer_select="matroska_muxer" +matroska_demuxer_select="riffdec" +matroska_demuxer_suggest="bzlib lzo zlib" +matroska_muxer_select="riffenc" +mmf_muxer_select="riffenc" +mov_demuxer_select="riffdec" +mov_demuxer_suggest="zlib" +mov_muxer_select="riffenc rtpenc_chain" +mp3_demuxer_select="mpegaudio_parser" +mp4_muxer_select="mov_muxer" +mpegts_muxer_select="adts_muxer latm_muxer" +mpegtsraw_demuxer_select="mpegts_demuxer" +mxf_d10_muxer_select="mxf_muxer" +nut_muxer_select="riffenc" +nuv_demuxer_select="riffdec" +oga_muxer_select="ogg_muxer" +ogg_demuxer_select="golomb" +opus_muxer_select="ogg_muxer" +psp_muxer_select="mov_muxer" +rtp_demuxer_select="sdp_demuxer" +rtpdec_select="asf_demuxer rm_demuxer rtp_protocol mpegts_demuxer mov_demuxer" +rtsp_demuxer_select="http_protocol rtpdec" +rtsp_muxer_select="rtp_muxer http_protocol rtp_protocol rtpenc_chain" +sap_demuxer_select="sdp_demuxer" +sap_muxer_select="rtp_muxer rtp_protocol rtpenc_chain" +sdp_demuxer_select="rtpdec" +smoothstreaming_muxer_select="ismv_muxer" +spdif_muxer_select="aac_parser" +spx_muxer_select="ogg_muxer" +tak_demuxer_select="tak_parser" +tg2_muxer_select="mov_muxer" +tgp_muxer_select="mov_muxer" +vobsub_demuxer_select="mpegps_demuxer" +w64_demuxer_select="wav_demuxer" +w64_muxer_select="wav_muxer" +wav_demuxer_select="riffdec" +wav_muxer_select="riffenc" +webm_muxer_select="riffenc" +wtv_demuxer_select="riffdec" +wtv_muxer_select="riffenc" +xmv_demuxer_select="riffdec" +xwma_demuxer_select="riffdec" + +# indevs / outdevs +alsa_indev_deps="alsa_asoundlib_h snd_pcm_htimestamp" +alsa_outdev_deps="alsa_asoundlib_h" +avfoundation_indev_extralibs="-framework CoreVideo -framework Foundation -framework AVFoundation -framework CoreMedia" +avfoundation_indev_select="avfoundation" +bktr_indev_deps_any="dev_bktr_ioctl_bt848_h machine_ioctl_bt848_h dev_video_bktr_ioctl_bt848_h dev_ic_bt8xx_h" +caca_outdev_deps="libcaca" +decklink_outdev_deps="decklink pthreads" +decklink_outdev_extralibs="-lstdc++" +dshow_indev_deps="IBaseFilter" +dshow_indev_extralibs="-lpsapi -lole32 -lstrmiids -luuid" +dv1394_indev_deps="dv1394" +dv1394_indev_select="dv_demuxer" +fbdev_indev_deps="linux_fb_h" +fbdev_outdev_deps="linux_fb_h" +gdigrab_indev_deps="CreateDIBSection" +gdigrab_indev_extralibs="-lgdi32" +gdigrab_indev_select="bmp_decoder" +iec61883_indev_deps="libiec61883" +jack_indev_deps="jack_jack_h sem_timedwait" +lavfi_indev_deps="avfilter" +libcdio_indev_deps="libcdio" +libdc1394_indev_deps="libdc1394" +libv4l2_indev_deps="libv4l2" +openal_indev_deps="openal" +opengl_outdev_deps="opengl" +oss_indev_deps_any="soundcard_h sys_soundcard_h" +oss_outdev_deps_any="soundcard_h sys_soundcard_h" +pulse_indev_deps="libpulse" +pulse_outdev_deps="libpulse" +qtkit_indev_extralibs="-framework QTKit -framework Foundation -framework QuartzCore" +qtkit_indev_select="qtkit" +sdl_outdev_deps="sdl" +sndio_indev_deps="sndio_h" +sndio_outdev_deps="sndio_h" +v4l_indev_deps="linux_videodev_h" +v4l2_indev_deps_any="linux_videodev2_h sys_videoio_h" +v4l2_outdev_deps_any="linux_videodev2_h sys_videoio_h" +vfwcap_indev_deps="capCreateCaptureWindow vfwcap_defines" +vfwcap_indev_extralibs="-lavicap32" +xv_outdev_deps="X11_extensions_Xvlib_h XvGetPortAttribute" +xv_outdev_extralibs="-lXv -lX11 -lXext" +x11grab_indev_deps="x11grab" + +# protocols +bluray_protocol_deps="libbluray" +ffrtmpcrypt_protocol_deps="!librtmp_protocol" +ffrtmpcrypt_protocol_deps_any="gcrypt nettle openssl" +ffrtmpcrypt_protocol_select="tcp_protocol" +ffrtmphttp_protocol_deps="!librtmp_protocol" +ffrtmphttp_protocol_select="http_protocol" +ftp_protocol_select="tcp_protocol" +gopher_protocol_select="network" +http_protocol_select="tcp_protocol" +httpproxy_protocol_select="tcp_protocol" +https_protocol_select="tls_protocol" +icecast_protocol_select="http_protocol" +librtmp_protocol_deps="librtmp" +librtmpe_protocol_deps="librtmp" +librtmps_protocol_deps="librtmp" +librtmpt_protocol_deps="librtmp" +librtmpte_protocol_deps="librtmp" +libsmbclient_protocol_deps="libsmbclient gplv3" +libssh_protocol_deps="libssh" +mmsh_protocol_select="http_protocol" +mmst_protocol_select="network" +rtmp_protocol_deps="!librtmp_protocol" +rtmp_protocol_select="tcp_protocol" +rtmpe_protocol_select="ffrtmpcrypt_protocol" +rtmps_protocol_deps="!librtmp_protocol" +rtmps_protocol_select="tls_protocol" +rtmpt_protocol_select="ffrtmphttp_protocol" +rtmpte_protocol_select="ffrtmpcrypt_protocol ffrtmphttp_protocol" +rtmpts_protocol_select="ffrtmphttp_protocol https_protocol" +rtp_protocol_select="udp_protocol" +sctp_protocol_deps="struct_sctp_event_subscribe" +sctp_protocol_select="network" +srtp_protocol_select="rtp_protocol" +tcp_protocol_select="network" +tls_protocol_deps_any="openssl gnutls" +tls_protocol_select="tcp_protocol" +udp_protocol_select="network" +unix_protocol_deps="sys_un_h" +unix_protocol_select="network" + +# filters +aconvert_filter_deps="swresample" +amovie_filter_deps="avcodec avformat" +aresample_filter_deps="swresample" +ass_filter_deps="libass" +asyncts_filter_deps="avresample" +atempo_filter_deps="avcodec" +atempo_filter_select="rdft" +azmq_filter_deps="libzmq" +blackframe_filter_deps="gpl" +boxblur_filter_deps="gpl" +bs2b_filter_deps="libbs2b" +colormatrix_filter_deps="gpl" +cropdetect_filter_deps="gpl" +delogo_filter_deps="gpl" +deshake_filter_select="pixelutils" +drawtext_filter_deps="libfreetype" +ebur128_filter_deps="gpl" +flite_filter_deps="libflite" +frei0r_filter_deps="frei0r dlopen" +frei0r_filter_extralibs='$ldl' +frei0r_src_filter_deps="frei0r dlopen" +frei0r_src_filter_extralibs='$ldl' +geq_filter_deps="gpl" +histeq_filter_deps="gpl" +hqdn3d_filter_deps="gpl" +interlace_filter_deps="gpl" +kerndeint_filter_deps="gpl" +ladspa_filter_deps="ladspa dlopen" +ladspa_filter_extralibs='$ldl' +mcdeint_filter_deps="avcodec gpl" +movie_filter_deps="avcodec avformat" +mp_filter_deps="gpl avcodec swscale inline_asm" +mpdecimate_filter_deps="gpl" +mpdecimate_filter_select="pixelutils" +mptestsrc_filter_deps="gpl" +negate_filter_deps="lut_filter" +perspective_filter_deps="gpl" +ocv_filter_deps="libopencv" +owdenoise_filter_deps="gpl" +pan_filter_deps="swresample" +phase_filter_deps="gpl" +pp_filter_deps="gpl postproc" +pullup_filter_deps="gpl" +removelogo_filter_deps="avcodec avformat swscale" +resample_filter_deps="avresample" +sab_filter_deps="gpl swscale" +scale_filter_deps="swscale" +select_filter_select="pixelutils" +smartblur_filter_deps="gpl swscale" +showspectrum_filter_deps="avcodec" +showspectrum_filter_select="rdft" +spp_filter_deps="gpl avcodec" +spp_filter_select="fft idctdsp fdctdsp me_cmp pixblockdsp" +stereo3d_filter_deps="gpl" +subtitles_filter_deps="avformat avcodec libass" +super2xsai_filter_deps="gpl" +tinterlace_filter_deps="gpl" +vidstabdetect_filter_deps="libvidstab" +vidstabtransform_filter_deps="libvidstab" +pixfmts_super2xsai_test_deps="super2xsai_filter" +tinterlace_merge_test_deps="tinterlace_filter" +tinterlace_pad_test_deps="tinterlace_filter" +zmq_filter_deps="libzmq" +zoompan_filter_deps="swscale" + +# examples +avio_reading="avformat avcodec avutil" +avcodec_example_deps="avcodec avutil" +decoding_encoding_example_deps="avcodec avformat avutil" +demuxing_decoding_example_deps="avcodec avformat avutil" +extract_mvs_example_deps="avcodec avformat avutil" +filter_audio_example_deps="avfilter avutil" +filtering_audio_example_deps="avfilter avcodec avformat avutil" +filtering_video_example_deps="avfilter avcodec avformat avutil" +metadata_example_deps="avformat avutil" +muxing_example_deps="avcodec avformat avutil swscale" +remuxing_example_deps="avcodec avformat avutil" +resampling_audio_example_deps="avutil swresample" +scaling_video_example_deps="avutil swscale" +transcode_aac_example_deps="avcodec avformat swresample" +transcoding_example_deps="avfilter avcodec avformat avutil" + +# libraries, in linking order +avcodec_deps="avutil" +avdevice_deps="avformat avcodec avutil" +avfilter_deps="avutil" +avformat_deps="avcodec avutil" +avresample_deps="avutil" +postproc_deps="avutil gpl" +swresample_deps="avutil" +swscale_deps="avutil" + +# programs +ffmpeg_deps="avcodec avfilter avformat swresample" +ffmpeg_select="aformat_filter anull_filter atrim_filter format_filter + null_filter + setpts_filter trim_filter" +ffplay_deps="avcodec avformat swscale swresample sdl" +ffplay_libs='$sdl_libs' +ffplay_select="rdft crop_filter transpose_filter hflip_filter vflip_filter rotate_filter" +ffprobe_deps="avcodec avformat" +ffserver_deps="avformat fork sarestart" +ffserver_select="ffm_muxer rtp_protocol rtsp_demuxer" + +# documentation +podpages_deps="perl" +manpages_deps="perl pod2man" +htmlpages_deps="perl" +htmlpages_deps_any="makeinfo_html texi2html" +txtpages_deps="perl makeinfo" +doc_deps_any="manpages htmlpages podpages txtpages" + +# default parameters + +logfile="config.log" + +# installation paths +prefix_default="/usr/local" +bindir_default='${prefix}/bin' +datadir_default='${prefix}/share/ffmpeg' +docdir_default='${prefix}/share/doc/ffmpeg' +incdir_default='${prefix}/include' +libdir_default='${prefix}/lib' +mandir_default='${prefix}/share/man' +shlibdir_default="$libdir_default" + +# toolchain +ar_default="ar" +cc_default="gcc" +cxx_default="g++" +host_cc_default="gcc" +cp_f="cp -f" +doxygen_default="doxygen" +install="install" +ln_s="ln -s -f" +nm_default="nm -g" +objformat="elf" +pkg_config_default=pkg-config +ranlib_default="ranlib" +strip_default="strip" +yasmexe_default="yasm" +windres_default="windres" + +# OS +target_os_default=$(tolower $(uname -s)) +host_os=$target_os_default + +# machine +if test "$target_os_default" = aix; then + arch_default=$(uname -p) + strip_default="strip -X32_64" +else + arch_default=$(uname -m) +fi +cpu="generic" +intrinsics="none" + +# configurable options +enable $PROGRAM_LIST +enable $DOCUMENT_LIST +enable $EXAMPLE_LIST +enable $(filter_out avresample $LIBRARY_LIST) +enable stripping + +enable asm +enable debug +enable doc +enable faan faandct faanidct +enable optimizations +enable runtime_cpudetect +enable safe_bitstream_reader +enable static +enable swscale_alpha + +sws_max_filter_size_default=256 +set_default sws_max_filter_size + +# Enable hwaccels by default. +enable dxva2 vaapi vda vdpau xvmc +enable xlib + +# build settings +SHFLAGS='-shared -Wl,-soname,$$(@F)' +LIBPREF="lib" +LIBSUF=".a" +FULLNAME='$(NAME)$(BUILDSUF)' +LIBNAME='$(LIBPREF)$(FULLNAME)$(LIBSUF)' +SLIBPREF="lib" +SLIBSUF=".so" +SLIBNAME='$(SLIBPREF)$(FULLNAME)$(SLIBSUF)' +SLIBNAME_WITH_VERSION='$(SLIBNAME).$(LIBVERSION)' +SLIBNAME_WITH_MAJOR='$(SLIBNAME).$(LIBMAJOR)' +LIB_INSTALL_EXTRA_CMD='$$(RANLIB) "$(LIBDIR)/$(LIBNAME)"' +SLIB_INSTALL_NAME='$(SLIBNAME_WITH_VERSION)' +SLIB_INSTALL_LINKS='$(SLIBNAME_WITH_MAJOR) $(SLIBNAME)' + +asflags_filter=echo +cflags_filter=echo +ldflags_filter=echo + +AS_C='-c' +AS_O='-o $@' +CC_C='-c' +CC_E='-E -o $@' +CC_O='-o $@' +CXX_C='-c' +CXX_O='-o $@' +LD_O='-o $@' +LD_LIB='-l%' +LD_PATH='-L' +HOSTCC_C='-c' +HOSTCC_E='-E -o $@' +HOSTCC_O='-o $@' +HOSTLD_O='-o $@' + +host_libs='-lm' +host_cflags_filter=echo +host_ldflags_filter=echo + +target_path='$(CURDIR)' + +# since the object filename is not given with the -MM flag, the compiler +# is only able to print the basename, and we must add the path ourselves +DEPCMD='$(DEP$(1)) $(DEP$(1)FLAGS) $($(1)DEP_FLAGS) $< | sed -e "/^\#.*/d" -e "s,^[[:space:]]*$(*F)\\.o,$(@D)/$(*F).o," > $(@:.o=.d)' +DEPFLAGS='-MM' + +# find source path +if test -f configure; then + source_path=. +else + source_path=$(cd $(dirname "$0"); pwd) + echo "$source_path" | grep -q '[[:blank:]]' && + die "Out of tree builds are impossible with whitespace in source path." + test -e "$source_path/config.h" && + die "Out of tree builds are impossible with config.h in source dir." +fi + +for v in "$@"; do + r=${v#*=} + l=${v%"$r"} + r=$(sh_quote "$r") + FFMPEG_CONFIGURATION="${FFMPEG_CONFIGURATION# } ${l}${r}" +done + +find_things(){ + thing=$1 + pattern=$2 + file=$source_path/$3 + sed -n "s/^[^#]*$pattern.*([^,]*, *\([^,]*\)\(,.*\)*).*/\1_$thing/p" "$file" +} + +ENCODER_LIST=$(find_things encoder ENC libavcodec/allcodecs.c) +DECODER_LIST=$(find_things decoder DEC libavcodec/allcodecs.c) +HWACCEL_LIST=$(find_things hwaccel HWACCEL libavcodec/allcodecs.c) +PARSER_LIST=$(find_things parser PARSER libavcodec/allcodecs.c) +BSF_LIST=$(find_things bsf BSF libavcodec/allcodecs.c) +MUXER_LIST=$(find_things muxer _MUX libavformat/allformats.c) +DEMUXER_LIST=$(find_things demuxer DEMUX libavformat/allformats.c) +OUTDEV_LIST=$(find_things outdev OUTDEV libavdevice/alldevices.c) +INDEV_LIST=$(find_things indev _IN libavdevice/alldevices.c) +PROTOCOL_LIST=$(find_things protocol PROTOCOL libavformat/allformats.c) +FILTER_LIST=$(find_things filter FILTER libavfilter/allfilters.c) + +ALL_COMPONENTS=" + $BSF_LIST + $DECODER_LIST + $DEMUXER_LIST + $ENCODER_LIST + $FILTER_LIST + $HWACCEL_LIST + $INDEV_LIST + $MUXER_LIST + $OUTDEV_LIST + $PARSER_LIST + $PROTOCOL_LIST +" + +for n in $COMPONENT_LIST; do + v=$(toupper ${n%s})_LIST + eval enable \$$v + eval ${n}_if_any="\$$v" +done + +enable $ARCH_EXT_LIST + +die_unknown(){ + echo "Unknown option \"$1\"." + echo "See $0 --help for available options." + exit 1 +} + +print_3_columns() { + cat | tr ' ' '\n' | sort | pr -r -3 -t +} + +show_list() { + suffix=_$1 + shift + echo $* | sed s/$suffix//g | print_3_columns + exit 0 +} + +rand_list(){ + IFS=', ' + set -- $* + unset IFS + for thing; do + comp=${thing%:*} + prob=${thing#$comp} + prob=${prob#:} + is_in ${comp} $COMPONENT_LIST && eval comp=\$$(toupper ${comp%s})_LIST + echo "prob ${prob:-0.5}" + printf '%s\n' $comp + done +} + +do_random(){ + action=$1 + shift + random_seed=$(awk "BEGIN { srand($random_seed); print srand() }") + $action $(rand_list "$@" | awk "BEGIN { srand($random_seed) } \$1 == \"prob\" { prob = \$2; next } rand() < prob { print }") +} + +for opt do + optval="${opt#*=}" + case "$opt" in + --extra-ldflags=*) + add_ldflags $optval + ;; + --extra-ldexeflags=*) + add_ldexeflags $optval + ;; + --extra-libs=*) + add_extralibs $optval + ;; + --disable-devices) + disable $INDEV_LIST $OUTDEV_LIST + ;; + --enable-debug=*) + debuglevel="$optval" + ;; + --disable-programs) + disable $PROGRAM_LIST + ;; + --disable-everything) + map 'eval unset \${$(toupper ${v%s})_LIST}' $COMPONENT_LIST + ;; + --disable-all) + map 'eval unset \${$(toupper ${v%s})_LIST}' $COMPONENT_LIST + disable $LIBRARY_LIST $PROGRAM_LIST doc + ;; + --enable-random|--disable-random) + action=${opt%%-random} + do_random ${action#--} $COMPONENT_LIST + ;; + --enable-random=*|--disable-random=*) + action=${opt%%-random=*} + do_random ${action#--} $optval + ;; + --enable-*=*|--disable-*=*) + eval $(echo "${opt%%=*}" | sed 's/--/action=/;s/-/ thing=/') + is_in "${thing}s" $COMPONENT_LIST || die_unknown "$opt" + eval list=\$$(toupper $thing)_LIST + name=$(echo "${optval}" | sed "s/,/_${thing}|/g")_${thing} + list=$(filter "$name" $list) + [ "$list" = "" ] && warn "Option $opt did not match anything" + $action $list + ;; + --enable-?*|--disable-?*) + eval $(echo "$opt" | sed 's/--/action=/;s/-/ option=/;s/-/_/g') + if is_in $option $COMPONENT_LIST; then + test $action = disable && action=unset + eval $action \$$(toupper ${option%s})_LIST + elif is_in $option $CMDLINE_SELECT; then + $action $option + else + die_unknown $opt + fi + ;; + --list-*) + NAME="${opt#--list-}" + is_in $NAME $COMPONENT_LIST || die_unknown $opt + NAME=${NAME%s} + eval show_list $NAME \$$(toupper $NAME)_LIST + ;; + --help|-h) show_help + ;; + --fatal-warnings) enable fatal_warnings + ;; + *) + optname="${opt%%=*}" + optname="${optname#--}" + optname=$(echo "$optname" | sed 's/-/_/g') + if is_in $optname $CMDLINE_SET; then + eval $optname='$optval' + elif is_in $optname $CMDLINE_APPEND; then + append $optname "$optval" + else + die_unknown $opt + fi + ;; + esac +done + +disabled logging && logfile=/dev/null + +echo "# $0 $FFMPEG_CONFIGURATION" > $logfile +set >> $logfile + +test -n "$cross_prefix" && enable cross_compile + +if enabled cross_compile; then + test -n "$arch" && test -n "$target_os" || + die "Must specify target arch and OS when cross-compiling" +fi + +ar_default="${cross_prefix}${ar_default}" +cc_default="${cross_prefix}${cc_default}" +cxx_default="${cross_prefix}${cxx_default}" +nm_default="${cross_prefix}${nm_default}" +pkg_config_default="${cross_prefix}${pkg_config_default}" +ranlib_default="${cross_prefix}${ranlib_default}" +strip_default="${cross_prefix}${strip_default}" +windres_default="${cross_prefix}${windres_default}" + +sysinclude_default="${sysroot}/usr/include" + +test -n "$valgrind" && toolchain="valgrind-memcheck" + +case "$toolchain" in + clang-asan) + cc_default="clang" + add_cflags -fsanitize=address + add_ldflags -fsanitize=address + ;; + clang-tsan) + cc_default="clang" + add_cflags -fsanitize=thread -pie + add_ldflags -fsanitize=thread -pie + ;; + clang-usan) + cc_default="clang" + add_cflags -fsanitize=undefined + add_ldflags -fsanitize=undefined + ;; + gcc-asan) + cc_default="gcc" + add_cflags -fsanitize=address + add_ldflags -fsanitize=address + ;; + gcc-tsan) + cc_default="gcc" + add_cflags -fsanitize=thread -pie -fPIC + add_ldflags -fsanitize=thread -pie -fPIC + ;; + gcc-usan) + cc_default="gcc" + add_cflags -fsanitize=undefined + add_ldflags -fsanitize=undefined + ;; + valgrind-massif) + target_exec_default=${valgrind:-"valgrind"} + target_exec_args="--tool=massif --alloc-fn=av_malloc --alloc-fn=av_mallocz --alloc-fn=av_calloc --alloc-fn=av_fast_padded_malloc --alloc-fn=av_fast_malloc --alloc-fn=av_realloc_f --alloc-fn=av_fast_realloc --alloc-fn=av_realloc" + ;; + valgrind-memcheck) + target_exec_default=${valgrind:-"valgrind"} + target_exec_args="--error-exitcode=1 --malloc-fill=0x2a --track-origins=yes --leak-check=full --gen-suppressions=all --suppressions=$source_path/tests/fate-valgrind.supp" + ;; + msvc) + # Check whether the current MSVC version needs the C99 converter. + # From MSVC 2013 (compiler major version 18) onwards, it does actually + # support enough of C99 to build ffmpeg. Default to the new + # behaviour if the regexp was unable to match anything, since this + # successfully parses the version number of existing supported + # versions that require the converter (MSVC 2010 and 2012). + cl_major_ver=$(cl 2>&1 | sed -n 's/.*Version \([[:digit:]]\{1,\}\)\..*/\1/p') + if [ -z "$cl_major_ver" ] || [ $cl_major_ver -ge 18 ]; then + cc_default="cl" + else + cc_default="c99wrap cl" + fi + ld_default="link" + nm_default="dumpbin -symbols" + ar_default="lib" + target_os_default="win32" + # Use a relative path for TMPDIR. This makes sure all the + # ffconf temp files are written with a relative path, avoiding + # issues with msys/win32 path conversion for MSVC parameters + # such as -Fo or -out:. + TMPDIR=. + ;; + icl) + cc_default="icl" + ld_default="xilink" + nm_default="dumpbin -symbols" + ar_default="xilib" + target_os_default="win32" + TMPDIR=. + ;; + gcov) + add_cflags -fprofile-arcs -ftest-coverage + add_ldflags -fprofile-arcs -ftest-coverage + ;; + hardened) + add_cflags -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 -fno-strict-overflow -fstack-protector-all + add_ldflags -Wl,-z,relro -Wl,-z,now + ;; + ?*) + die "Unknown toolchain $toolchain" + ;; +esac + +set_default arch cc cxx doxygen pkg_config ranlib strip sysinclude \ + target_exec target_os yasmexe +enabled cross_compile || host_cc_default=$cc +set_default host_cc + +if ! $pkg_config --version >/dev/null 2>&1; then + warn "$pkg_config not found, library detection may fail." + pkg_config=false +fi + +if test $doxygen != $doxygen_default && \ + ! $doxygen --version >/dev/null 2>&1; then + warn "Specified doxygen \"$doxygen\" not found, API documentation will fail to build." +fi + +exesuf() { + case $1 in + mingw32*|win32|win64|cygwin*|*-dos|freedos|opendos|os/2*|symbian) echo .exe ;; + esac +} + +EXESUF=$(exesuf $target_os) +HOSTEXESUF=$(exesuf $host_os) + +# set temporary file name +: ${TMPDIR:=$TEMPDIR} +: ${TMPDIR:=$TMP} +: ${TMPDIR:=/tmp} + +if [ -n "$tempprefix" ] ; then + mktemp(){ + echo $tempprefix.${HOSTNAME}.${UID} + } +elif ! check_cmd mktemp -u XXXXXX; then + # simple replacement for missing mktemp + # NOT SAFE FOR GENERAL USE + mktemp(){ + echo "${2%%XXX*}.${HOSTNAME}.${UID}.$$" + } +fi + +tmpfile(){ + tmp=$(mktemp -u "${TMPDIR}/ffconf.XXXXXXXX")$2 && + (set -C; exec > $tmp) 2>/dev/null || + die "Unable to create temporary file in $TMPDIR." + append TMPFILES $tmp + eval $1=$tmp +} + +trap 'rm -f -- $TMPFILES' EXIT + +tmpfile TMPASM .asm +tmpfile TMPC .c +tmpfile TMPCPP .cpp +tmpfile TMPE $EXESUF +tmpfile TMPH .h +tmpfile TMPM .m +tmpfile TMPO .o +tmpfile TMPS .S +tmpfile TMPSH .sh +tmpfile TMPV .ver + +unset -f mktemp + +chmod +x $TMPE + +# make sure we can execute files in $TMPDIR +cat > $TMPSH 2>> $logfile <> $logfile 2>&1 +if ! $TMPSH >> $logfile 2>&1; then + cat <&1 | grep -q '^GNU assembler'; then + true # no-op to avoid reading stdin in following checks + elif $_cc -v 2>&1 | grep -q '^gcc.*LLVM'; then + _type=llvm_gcc + gcc_extra_ver=$(expr "$($_cc --version | head -n1)" : '.*\((.*)\)') + _ident="llvm-gcc $($_cc -dumpversion) $gcc_extra_ver" + _depflags='-MMD -MF $(@:.o=.d) -MT $@' + _cflags_speed='-O3' + _cflags_size='-Os' + elif $_cc -v 2>&1 | grep -qi ^gcc; then + _type=gcc + gcc_version=$($_cc --version | head -n1) + gcc_basever=$($_cc -dumpversion) + gcc_pkg_ver=$(expr "$gcc_version" : '[^ ]* \(([^)]*)\)') + gcc_ext_ver=$(expr "$gcc_version" : ".*$gcc_pkg_ver $gcc_basever \\(.*\\)") + _ident=$(cleanws "gcc $gcc_basever $gcc_pkg_ver $gcc_ext_ver") + if ! $_cc -dumpversion | grep -q '^2\.'; then + _depflags='-MMD -MF $(@:.o=.d) -MT $@' + fi + _cflags_speed='-O3' + _cflags_size='-Os' + elif $_cc --version 2>/dev/null | grep -q ^icc; then + _type=icc + _ident=$($_cc --version | head -n1) + _depflags='-MMD' + _cflags_speed='-O3' + _cflags_size='-Os' + _cflags_noopt='-O1' + _flags_filter=icc_flags + elif $_cc -v 2>&1 | grep -q xlc; then + _type=xlc + _ident=$($_cc -qversion 2>/dev/null | head -n1) + _cflags_speed='-O5' + _cflags_size='-O5 -qcompact' + elif $_cc -V 2>/dev/null | grep -q Compaq; then + _type=ccc + _ident=$($_cc -V | head -n1 | cut -d' ' -f1-3) + _DEPFLAGS='-M' + _cflags_speed='-fast' + _cflags_size='-O1' + _flags_filter=ccc_flags + elif $_cc --vsn 2>/dev/null | grep -Eq "ARM (C/C\+\+ )?Compiler"; then + test -d "$sysroot" || die "No valid sysroot specified." + _type=armcc + _ident=$($_cc --vsn | grep -i build | head -n1 | sed 's/.*: //') + armcc_conf="$PWD/armcc.conf" + $_cc --arm_linux_configure \ + --arm_linux_config_file="$armcc_conf" \ + --configure_sysroot="$sysroot" \ + --configure_cpp_headers="$sysinclude" >>$logfile 2>&1 || + die "Error creating armcc configuration file." + $_cc --vsn | grep -q RVCT && armcc_opt=rvct || armcc_opt=armcc + _flags="--arm_linux_config_file=$armcc_conf --translate_gcc" + as_default="${cross_prefix}gcc" + _depflags='-MMD' + _cflags_speed='-O3' + _cflags_size='-Os' + elif $_cc -version 2>/dev/null | grep -Eq 'TMS470|TI ARM'; then + _type=tms470 + _ident=$($_cc -version | head -n1 | tr -s ' ') + _flags='--gcc --abi=eabi -me' + _cc_e='-ppl -fe=$@' + _cc_o='-fe=$@' + _depflags='-ppa -ppd=$(@:.o=.d)' + _cflags_speed='-O3 -mf=5' + _cflags_size='-O3 -mf=2' + _flags_filter=tms470_flags + elif $_cc -v 2>&1 | grep -q clang; then + _type=clang + _ident=$($_cc --version | head -n1) + _depflags='-MMD -MF $(@:.o=.d) -MT $@' + _cflags_speed='-O3' + _cflags_size='-Os' + elif $_cc -V 2>&1 | grep -q Sun; then + _type=suncc + _ident=$($_cc -V 2>&1 | head -n1 | cut -d' ' -f 2-) + _DEPCMD='$(DEP$(1)) $(DEP$(1)FLAGS) $($(1)DEP_FLAGS) $< | sed -e "1s,^.*: ,$@: ," -e "\$$!s,\$$, \\\," -e "1!s,^.*: , ," > $(@:.o=.d)' + _DEPFLAGS='-xM1 -xc99' + _ldflags='-std=c99' + _cflags_speed='-O5' + _cflags_size='-O5 -xspace' + _flags_filter=suncc_flags + elif $_cc -v 2>&1 | grep -q 'PathScale\|Path64'; then + _type=pathscale + _ident=$($_cc -v 2>&1 | head -n1 | tr -d :) + _depflags='-MMD -MF $(@:.o=.d) -MT $@' + _cflags_speed='-O2' + _cflags_size='-Os' + _flags_filter='filter_out -Wdisabled-optimization' + elif $_cc -v 2>&1 | grep -q Open64; then + _type=open64 + _ident=$($_cc -v 2>&1 | head -n1 | tr -d :) + _depflags='-MMD -MF $(@:.o=.d) -MT $@' + _cflags_speed='-O2' + _cflags_size='-Os' + _flags_filter='filter_out -Wdisabled-optimization|-Wtype-limits|-fno-signed-zeros' + elif $_cc -V 2>&1 | grep -q Portland; then + _type=pgi + _ident="PGI $($_cc -V 2>&1 | awk '/^pgcc/ { print $2; exit }')" + opt_common='-alias=ansi -Mdse -Mlre -Mpre' + _cflags_speed="-O3 -Mautoinline -Munroll=c:4 $opt_common" + _cflags_size="-O2 -Munroll=c:1 $opt_common" + _cflags_noopt="-O" + _flags_filter=pgi_flags + elif $_cc 2>&1 | grep -q 'Microsoft.*ARM.*Assembler'; then + _type=armasm + _ident=$($_cc | head -n1) + # 4509: "This form of conditional instruction is deprecated" + _flags="-nologo -ignore 4509" + _flags_filter=armasm_flags + elif $_cc 2>&1 | grep -q Microsoft; then + _type=msvc + _ident=$($cc 2>&1 | head -n1) + _DEPCMD='$(DEP$(1)) $(DEP$(1)FLAGS) $($(1)DEP_FLAGS) $< 2>&1 | awk '\''/including/ { sub(/^.*file: */, ""); gsub(/\\/, "/"); if (!match($$0, / /)) print "$@:", $$0 }'\'' > $(@:.o=.d)' + _DEPFLAGS='$(CPPFLAGS) $(CFLAGS) -showIncludes -Zs' + _cflags_speed="-O2" + _cflags_size="-O1" + if $_cc 2>&1 | grep -q Linker; then + _ld_o='-out:$@' + else + _ld_o='-Fe$@' + fi + _cc_o='-Fo$@' + _cc_e='-P -Fi$@' + _flags_filter=msvc_flags + _ld_lib='lib%.a' + _ld_path='-libpath:' + _flags='-nologo' + _cflags='-D_USE_MATH_DEFINES -D_CRT_SECURE_NO_WARNINGS -Dinline=__inline -FIstdlib.h -Dstrtoll=_strtoi64' + if [ $pfx = hostcc ]; then + append _cflags -Dsnprintf=_snprintf + fi + disable stripping + elif $_cc 2>&1 | grep -q Intel; then + _type=icl + _ident=$($cc 2>&1 | head -n1) + _depflags='-QMMD -QMF$(@:.o=.d) -QMT$@' + # Not only is O3 broken on 13.x+ but it is slower on all previous + # versions (tested) as well. + _cflags_speed="-O2" + _cflags_size="-O1 -Oi" # -O1 without -Oi miscompiles stuff + if $_cc 2>&1 | grep -q Linker; then + _ld_o='-out:$@' + else + _ld_o='-Fe$@' + fi + _cc_o='-Fo$@' + _cc_e='-P' + _flags_filter=icl_flags + _ld_lib='lib%.a' + _ld_path='-libpath:' + # -Qdiag-error to make icl error when seeing certain unknown arguments + _flags='-nologo -Qdiag-error:4044,10157' + # -Qvec- -Qsimd- to prevent miscompilation, -GS, fp:precise for consistency + # with MSVC which enables it by default. + _cflags='-D_USE_MATH_DEFINES -FIstdlib.h -Dstrtoll=_strtoi64 -Qms0 -Qvec- -Qsimd- -GS -fp:precise' + if [ $pfx = hostcc ]; then + append _cflags -Dsnprintf=_snprintf + fi + elif $_cc --version 2>/dev/null | grep -q ^cparser; then + _type=cparser + _ident=$($_cc --version | head -n1) + _depflags='-MMD' + _cflags_speed='-O4' + _cflags_size='-O2' + _flags_filter=cparser_flags + fi + + eval ${pfx}_type=\$_type + eval ${pfx}_ident=\$_ident +} + +set_ccvars(){ + eval ${1}_C=\${_cc_c-\${${1}_C}} + eval ${1}_E=\${_cc_e-\${${1}_E}} + eval ${1}_O=\${_cc_o-\${${1}_O}} + + if [ -n "$_depflags" ]; then + eval ${1}_DEPFLAGS=\$_depflags + else + eval ${1}DEP=\${_DEPCMD:-\$DEPCMD} + eval ${1}DEP_FLAGS=\${_DEPFLAGS:-\$DEPFLAGS} + eval DEP${1}FLAGS=\$_flags + fi +} + +probe_cc cc "$cc" +cflags_filter=$_flags_filter +cflags_speed=$_cflags_speed +cflags_size=$_cflags_size +cflags_noopt=$_cflags_noopt +add_cflags $_flags $_cflags +cc_ldflags=$_ldflags +set_ccvars CC + +probe_cc hostcc "$host_cc" +host_cflags_filter=$_flags_filter +add_host_cflags $_flags $_cflags +set_ccvars HOSTCC + +test -n "$cc_type" && enable $cc_type || + warn "Unknown C compiler $cc, unable to select optimal CFLAGS" + +: ${as_default:=$cc} +: ${dep_cc_default:=$cc} +: ${ld_default:=$cc} +: ${host_ld_default:=$host_cc} +set_default ar as dep_cc ld host_ld windres + +probe_cc as "$as" +asflags_filter=$_flags_filter +add_asflags $_flags $_cflags +set_ccvars AS + +probe_cc ld "$ld" +ldflags_filter=$_flags_filter +add_ldflags $_flags $_ldflags +test "$cc_type" != "$ld_type" && add_ldflags $cc_ldflags +LD_O=${_ld_o-$LD_O} +LD_LIB=${_ld_lib-$LD_LIB} +LD_PATH=${_ld_path-$LD_PATH} + +probe_cc hostld "$host_ld" +host_ldflags_filter=$_flags_filter +add_host_ldflags $_flags $_ldflags +HOSTLD_O=${_ld_o-$HOSTLD_O} + +if [ -z "$CC_DEPFLAGS" ] && [ "$dep_cc" != "$cc" ]; then + probe_cc depcc "$dep_cc" + CCDEP=${_DEPCMD:-$DEPCMD} + CCDEP_FLAGS=${_DEPFLAGS:=$DEPFLAGS} + DEPCCFLAGS=$_flags +fi + +if $ar 2>&1 | grep -q Microsoft; then + arflags="-nologo" + ar_o='-out:$@' +elif $ar 2>&1 | grep -q 'Texas Instruments'; then + arflags="rq" + ar_o='$@' +elif $ar 2>&1 | grep -q 'Usage: ar.*-X.*any'; then + arflags='-Xany -r -c' + ar_o='$@' +else + arflags="rc" + ar_o='$@' +fi + +add_cflags $extra_cflags +add_cxxflags $extra_cxxflags +add_asflags $extra_cflags + +if test -n "$sysroot"; then + case "$cc_type" in + gcc|llvm_gcc|clang) + add_cppflags --sysroot="$sysroot" + add_ldflags --sysroot="$sysroot" +# On Darwin --sysroot may be ignored, -isysroot always affects headers and linking + add_cppflags -isysroot "$sysroot" + add_ldflags -isysroot "$sysroot" + ;; + tms470) + add_cppflags -I"$sysinclude" + add_ldflags --sysroot="$sysroot" + ;; + esac +fi + +if test "$cpu" = host; then + enabled cross_compile && + die "--cpu=host makes no sense when cross-compiling." + + case "$cc_type" in + gcc|llvm_gcc) + check_native(){ + $cc $1=native -v -c -o $TMPO $TMPC >$TMPE 2>&1 || return + sed -n "/cc1.*$1=/{ + s/.*$1=\\([^ ]*\\).*/\\1/ + p + q + }" $TMPE + } + cpu=$(check_native -march || check_native -mcpu) + ;; + esac + + test "${cpu:-host}" = host && + die "--cpu=host not supported with compiler $cc" +fi + +# Deal with common $arch aliases +case "$arch" in + aarch64|arm64) + arch="aarch64" + ;; + arm*|iPad*|iPhone*) + arch="arm" + ;; + mips*|IP*) + arch="mips" + ;; + parisc*|hppa*) + arch="parisc" + ;; + "Power Macintosh"|ppc*|powerpc*) + arch="ppc" + ;; + s390|s390x) + arch="s390" + ;; + sh4|sh) + arch="sh4" + ;; + sun4u|sparc*) + arch="sparc" + ;; + tilegx|tile-gx) + arch="tilegx" + ;; + i[3-6]86*|i86pc|BePC|x86pc|x86_64|x86_32|amd64) + arch="x86" + ;; +esac + +is_in $arch $ARCH_LIST || warn "unknown architecture $arch" +enable $arch + +# Add processor-specific flags +if enabled aarch64; then + + case $cpu in + armv*) + cpuflags="-march=$cpu" + ;; + *) + cpuflags="-mcpu=$cpu" + ;; + esac + +elif enabled alpha; then + + cpuflags="-mcpu=$cpu" + +elif enabled arm; then + + check_arm_arch() { + check_cpp_condition stddef.h \ + "defined __ARM_ARCH_${1}__ || defined __TARGET_ARCH_${2:-$1}" \ + $cpuflags + } + + probe_arm_arch() { + if check_arm_arch 4; then echo armv4; + elif check_arm_arch 4T; then echo armv4t; + elif check_arm_arch 5; then echo armv5; + elif check_arm_arch 5E; then echo armv5e; + elif check_arm_arch 5T; then echo armv5t; + elif check_arm_arch 5TE; then echo armv5te; + elif check_arm_arch 5TEJ; then echo armv5te; + elif check_arm_arch 6; then echo armv6; + elif check_arm_arch 6J; then echo armv6j; + elif check_arm_arch 6K; then echo armv6k; + elif check_arm_arch 6Z; then echo armv6z; + elif check_arm_arch 6ZK; then echo armv6zk; + elif check_arm_arch 6T2; then echo armv6t2; + elif check_arm_arch 7; then echo armv7; + elif check_arm_arch 7A 7_A; then echo armv7-a; + elif check_arm_arch 7R 7_R; then echo armv7-r; + elif check_arm_arch 7M 7_M; then echo armv7-m; + elif check_arm_arch 7EM 7E_M; then echo armv7-m; + elif check_arm_arch 8A 8_A; then echo armv8-a; + fi + } + + [ "$cpu" = generic ] && cpu=$(probe_arm_arch) + + case $cpu in + armv*) + cpuflags="-march=$cpu" + subarch=$(echo $cpu | sed 's/[^a-z0-9]//g') + ;; + *) + cpuflags="-mcpu=$cpu" + case $cpu in + cortex-a*) subarch=armv7a ;; + cortex-r*) subarch=armv7r ;; + cortex-m*) enable thumb; subarch=armv7m ;; + arm11*) subarch=armv6 ;; + arm[79]*e*|arm9[24]6*|arm96*|arm102[26]) subarch=armv5te ;; + armv4*|arm7*|arm9[24]*) subarch=armv4 ;; + *) subarch=$(probe_arm_arch) ;; + esac + ;; + esac + + case "$subarch" in + armv5t*) enable fast_clz ;; + armv[6-8]*) + enable fast_clz + disabled fast_unaligned || enable fast_unaligned + ;; + esac + +elif enabled avr32; then + + case $cpu in + ap7[02]0[0-2]) + subarch="avr32_ap" + cpuflags="-mpart=$cpu" + ;; + ap) + subarch="avr32_ap" + cpuflags="-march=$cpu" + ;; + uc3[ab]*) + subarch="avr32_uc" + cpuflags="-mcpu=$cpu" + ;; + uc) + subarch="avr32_uc" + cpuflags="-march=$cpu" + ;; + esac + +elif enabled bfin; then + + cpuflags="-mcpu=$cpu" + +elif enabled mips; then + + cpuflags="-march=$cpu" + + case $cpu in + 24kc) + disable mipsfpu + disable mipsdspr1 + disable mipsdspr2 + ;; + 24kf*) + disable mipsdspr1 + disable mipsdspr2 + ;; + 24kec|34kc|1004kc) + disable mipsfpu + disable mipsdspr2 + ;; + 24kef*|34kf*|1004kf*) + disable mipsdspr2 + ;; + 74kc) + disable mipsfpu + ;; + esac + +elif enabled ppc; then + + disable ldbrx + disable vsx + + case $(tolower $cpu) in + 601|ppc601|powerpc601) + cpuflags="-mcpu=601" + disable altivec + ;; + 603*|ppc603*|powerpc603*) + cpuflags="-mcpu=603" + disable altivec + ;; + 604*|ppc604*|powerpc604*) + cpuflags="-mcpu=604" + disable altivec + ;; + g3|75*|ppc75*|powerpc75*) + cpuflags="-mcpu=750" + disable altivec + ;; + g4|745*|ppc745*|powerpc745*) + cpuflags="-mcpu=7450" + ;; + 74*|ppc74*|powerpc74*) + cpuflags="-mcpu=7400" + ;; + g5|970|ppc970|powerpc970) + cpuflags="-mcpu=970" + ;; + power[3-8]*) + cpuflags="-mcpu=$cpu" + ;; + cell) + cpuflags="-mcpu=cell" + enable ldbrx + ;; + e500mc) + cpuflags="-mcpu=e500mc" + disable altivec + ;; + e500v2) + cpuflags="-mcpu=8548 -mhard-float -mfloat-gprs=double" + disable altivec + disable dcbzl + ;; + e500) + cpuflags="-mcpu=8540 -mhard-float" + disable altivec + disable dcbzl + ;; + esac + +elif enabled sparc; then + + case $cpu in + cypress|f93[04]|tsc701|sparcl*|supersparc|hypersparc|niagara|v[789]) + cpuflags="-mcpu=$cpu" + ;; + ultrasparc*|niagara[234]) + cpuflags="-mcpu=$cpu" + ;; + esac + +elif enabled x86; then + + case $cpu in + i[345]86|pentium) + cpuflags="-march=$cpu" + disable i686 + disable mmx + ;; + # targets that do NOT support nopl and conditional mov (cmov) + pentium-mmx|k6|k6-[23]|winchip-c6|winchip2|c3) + cpuflags="-march=$cpu" + disable i686 + ;; + # targets that do support nopl and conditional mov (cmov) + i686|pentiumpro|pentium[23]|pentium-m|athlon|athlon-tbird|athlon-4|athlon-[mx]p|athlon64*|k8*|opteron*|athlon-fx\ + |core*|atom|bonnell|nehalem|westmere|silvermont|sandybridge|ivybridge|haswell|broadwell|amdfam10|barcelona|b[dt]ver*) + cpuflags="-march=$cpu" + enable i686 + enable fast_cmov + ;; + # targets that do support conditional mov but on which it's slow + pentium4|pentium4m|prescott|nocona) + cpuflags="-march=$cpu" + enable i686 + disable fast_cmov + ;; + esac + +fi + +if [ "$cpu" != generic ]; then + add_cflags $cpuflags + add_asflags $cpuflags +fi + +# compiler sanity check +check_exec < +EOF +check_cc -D_LARGEFILE_SOURCE < +EOF + +add_host_cppflags -D_ISOC99_SOURCE +check_host_cflags -std=c99 +check_host_cflags -Wall +check_host_cflags -O3 + +check_64bit(){ + arch32=$1 + arch64=$2 + expr=$3 + check_code cc "" "int test[2*($expr) - 1]" && + subarch=$arch64 || subarch=$arch32 +} + +case "$arch" in + aarch64|alpha|ia64) + spic=$shared + ;; + mips) + check_64bit mips mips64 '_MIPS_SIM > 1' + spic=$shared + ;; + parisc) + check_64bit parisc parisc64 'sizeof(void *) > 4' + spic=$shared + ;; + ppc) + check_64bit ppc ppc64 'sizeof(void *) > 4' + spic=$shared + ;; + s390) + check_64bit s390 s390x 'sizeof(void *) > 4' + spic=$shared + ;; + sparc) + check_64bit sparc sparc64 'sizeof(void *) > 4' + spic=$shared + ;; + x86) + check_64bit x86_32 x86_64 'sizeof(void *) > 4' + if test "$subarch" = "x86_64"; then + spic=$shared + fi + ;; + ppc) + check_cc < mapfile && + add_ldflags -Wl,-M,mapfile + nm_default='nm -P -g' + ;; + netbsd) + disable symver + oss_indev_extralibs="-lossaudio" + oss_outdev_extralibs="-lossaudio" + enabled gcc || check_ldflags -Wl,-zmuldefs + ;; + openbsd|bitrig) + disable symver + SHFLAGS='-shared' + SLIB_INSTALL_NAME='$(SLIBNAME).$(LIBMAJOR).$(LIBMINOR)' + SLIB_INSTALL_LINKS= + oss_indev_extralibs="-lossaudio" + oss_outdev_extralibs="-lossaudio" + ;; + dragonfly) + disable symver + ;; + freebsd) + ;; + bsd/os) + add_extralibs -lpoll -lgnugetopt + strip="strip -d" + ;; + darwin) + enabled ppc && add_asflags -force_cpusubtype_ALL + SHFLAGS='-dynamiclib -Wl,-single_module -Wl,-install_name,$(SHLIBDIR)/$(SLIBNAME_WITH_MAJOR),-current_version,$(LIBVERSION),-compatibility_version,$(LIBMAJOR)' + enabled x86_32 && append SHFLAGS -Wl,-read_only_relocs,suppress + strip="${strip} -x" + add_ldflags -Wl,-dynamic,-search_paths_first + SLIBSUF=".dylib" + SLIBNAME_WITH_VERSION='$(SLIBPREF)$(FULLNAME).$(LIBVERSION)$(SLIBSUF)' + SLIBNAME_WITH_MAJOR='$(SLIBPREF)$(FULLNAME).$(LIBMAJOR)$(SLIBSUF)' + objformat="macho" + enabled x86_64 && objformat="macho64" + enabled_any pic shared || + { check_cflags -mdynamic-no-pic && add_asflags -mdynamic-no-pic; } + ;; + mingw32*) + if test $target_os = "mingw32ce"; then + disable network + else + target_os=mingw32 + fi + LIBTARGET=i386 + if enabled x86_64; then + LIBTARGET="i386:x86-64" + elif enabled arm; then + LIBTARGET=arm-wince + fi + enabled shared && ! enabled small && check_cmd $windres --version && enable gnu_windres + check_ldflags -Wl,--nxcompat + check_ldflags -Wl,--dynamicbase + shlibdir_default="$bindir_default" + SLIBPREF="" + SLIBSUF=".dll" + SLIBNAME_WITH_VERSION='$(SLIBPREF)$(FULLNAME)-$(LIBVERSION)$(SLIBSUF)' + SLIBNAME_WITH_MAJOR='$(SLIBPREF)$(FULLNAME)-$(LIBMAJOR)$(SLIBSUF)' + dlltool="${cross_prefix}dlltool" + if check_cmd lib.exe -list; then + SLIB_EXTRA_CMD=-'sed -e "s/ @[^ ]*//" $$(@:$(SLIBSUF)=.orig.def) > $$(@:$(SLIBSUF)=.def); lib.exe /machine:$(LIBTARGET) /def:$$(@:$(SLIBSUF)=.def) /out:$(SUBDIR)$(SLIBNAME:$(SLIBSUF)=.lib)' + if enabled x86_64; then + LIBTARGET=x64 + fi + elif check_cmd $dlltool --version; then + SLIB_EXTRA_CMD=-'sed -e "s/ @[^ ]*//" $$(@:$(SLIBSUF)=.orig.def) > $$(@:$(SLIBSUF)=.def); $(DLLTOOL) -m $(LIBTARGET) -d $$(@:$(SLIBSUF)=.def) -l $(SUBDIR)$(SLIBNAME:$(SLIBSUF)=.lib) -D $(SLIBNAME_WITH_MAJOR)' + fi + SLIB_INSTALL_NAME='$(SLIBNAME_WITH_MAJOR)' + SLIB_INSTALL_LINKS= + SLIB_INSTALL_EXTRA_SHLIB='$(SLIBNAME:$(SLIBSUF)=.lib)' + SLIB_INSTALL_EXTRA_LIB='lib$(SLIBNAME:$(SLIBSUF)=.dll.a) $(SLIBNAME_WITH_MAJOR:$(SLIBSUF)=.def)' + SHFLAGS='-shared -Wl,--output-def,$$(@:$(SLIBSUF)=.orig.def) -Wl,--out-implib,$(SUBDIR)lib$(SLIBNAME:$(SLIBSUF)=.dll.a) -Wl,--enable-runtime-pseudo-reloc -Wl,--enable-auto-image-base' + objformat="win32" + ranlib=: + enable dos_paths + ;; + win32|win64) + disable symver + if enabled shared; then + # Link to the import library instead of the normal static library + # for shared libs. + LD_LIB='%.lib' + # Cannot build both shared and static libs with MSVC or icl. + disable static + fi + shlibdir_default="$bindir_default" + SLIBPREF="" + SLIBSUF=".dll" + SLIBNAME_WITH_VERSION='$(SLIBPREF)$(FULLNAME)-$(LIBVERSION)$(SLIBSUF)' + SLIBNAME_WITH_MAJOR='$(SLIBPREF)$(FULLNAME)-$(LIBMAJOR)$(SLIBSUF)' + SLIB_CREATE_DEF_CMD='$(SRC_PATH)/compat/windows/makedef $(SUBDIR)lib$(NAME).ver $(OBJS) > $$(@:$(SLIBSUF)=.def)' + SLIB_INSTALL_NAME='$(SLIBNAME_WITH_MAJOR)' + SLIB_INSTALL_LINKS= + SLIB_INSTALL_EXTRA_SHLIB='$(SLIBNAME:$(SLIBSUF)=.lib)' + SLIB_INSTALL_EXTRA_LIB='$(SLIBNAME_WITH_MAJOR:$(SLIBSUF)=.def)' + SHFLAGS='-dll -def:$$(@:$(SLIBSUF)=.def) -implib:$(SUBDIR)$(SLIBNAME:$(SLIBSUF)=.lib)' + objformat="win32" + ranlib=: + enable dos_paths + ;; + cygwin*) + target_os=cygwin + shlibdir_default="$bindir_default" + SLIBPREF="cyg" + SLIBSUF=".dll" + SLIBNAME_WITH_VERSION='$(SLIBPREF)$(FULLNAME)-$(LIBVERSION)$(SLIBSUF)' + SLIBNAME_WITH_MAJOR='$(SLIBPREF)$(FULLNAME)-$(LIBMAJOR)$(SLIBSUF)' + SLIB_INSTALL_NAME='$(SLIBNAME_WITH_MAJOR)' + SLIB_INSTALL_LINKS= + SLIB_INSTALL_EXTRA_LIB='lib$(FULLNAME).dll.a' + SHFLAGS='-shared -Wl,--out-implib,$(SUBDIR)lib$(FULLNAME).dll.a' + objformat="win32" + enable dos_paths + enabled shared && ! enabled small && check_cmd $windres --version && enable gnu_windres + ;; + *-dos|freedos|opendos) + network_extralibs="-lsocket" + objformat="coff" + enable dos_paths + add_cppflags -U__STRICT_ANSI__ + ;; + linux) + enable dv1394 + ;; + irix*) + target_os=irix + ranlib="echo ignoring ranlib" + ;; + os/2*) + strip="lxlite -CS" + ln_s="cp -f" + objformat="aout" + add_cppflags -D_GNU_SOURCE + add_ldflags -Zomf -Zbin-files -Zargs-wild -Zmap + SHFLAGS='$(SUBDIR)$(NAME).def -Zdll -Zomf' + LIBSUF="_s.a" + SLIBPREF="" + SLIBSUF=".dll" + SLIBNAME_WITH_VERSION='$(SLIBPREF)$(NAME)-$(LIBVERSION)$(SLIBSUF)' + SLIBNAME_WITH_MAJOR='$(SLIBPREF)$(shell echo $(NAME) | cut -c1-6)$(LIBMAJOR)$(SLIBSUF)' + SLIB_CREATE_DEF_CMD='echo LIBRARY $(SLIBNAME_WITH_MAJOR) INITINSTANCE TERMINSTANCE > $(SUBDIR)$(NAME).def; \ + echo PROTMODE >> $(SUBDIR)$(NAME).def; \ + echo CODE PRELOAD MOVEABLE DISCARDABLE >> $(SUBDIR)$(NAME).def; \ + echo DATA PRELOAD MOVEABLE MULTIPLE NONSHARED >> $(SUBDIR)$(NAME).def; \ + echo EXPORTS >> $(SUBDIR)$(NAME).def; \ + emxexp -o $(OBJS) >> $(SUBDIR)$(NAME).def' + SLIB_EXTRA_CMD='emximp -o $(SUBDIR)$(LIBPREF)$(NAME)_dll.a $(SUBDIR)$(NAME).def; \ + emximp -o $(SUBDIR)$(LIBPREF)$(NAME)_dll.lib $(SUBDIR)$(NAME).def;' + SLIB_INSTALL_EXTRA_LIB='$(LIBPREF)$(NAME)_dll.a $(LIBPREF)$(NAME)_dll.lib' + enable dos_paths + enable_weak os2threads + ;; + gnu/kfreebsd) + add_cppflags -D_BSD_SOURCE + ;; + gnu) + ;; + qnx) + add_cppflags -D_QNX_SOURCE + network_extralibs="-lsocket" + ;; + symbian) + SLIBSUF=".dll" + enable dos_paths + add_cflags --include=$sysinclude/gcce/gcce.h -fvisibility=default + add_cppflags -D__GCCE__ -D__SYMBIAN32__ -DSYMBIAN_OE_POSIX_SIGNALS + add_ldflags -Wl,--target1-abs,--no-undefined \ + -Wl,-Ttext,0x80000,-Tdata,0x1000000 -shared \ + -Wl,--entry=_E32Startup -Wl,-u,_E32Startup + add_extralibs -l:eexe.lib -l:usrt2_2.lib -l:dfpaeabi.dso \ + -l:drtaeabi.dso -l:scppnwdl.dso -lsupc++ -lgcc \ + -l:libc.dso -l:libm.dso -l:euser.dso -l:libcrt0.lib + ;; + osf1) + add_cppflags -D_OSF_SOURCE -D_POSIX_PII -D_REENTRANT + ;; + minix) + ;; + plan9) + add_cppflags -D_C99_SNPRINTF_EXTENSION \ + -D_REENTRANT_SOURCE \ + -D_RESEARCH_SOURCE \ + -DFD_SETSIZE=96 \ + -DHAVE_SOCK_OPTS + add_compat strtod.o strtod=avpriv_strtod + network_extralibs='-lbsd' + exeobjs=compat/plan9/main.o + disable ffserver + cp_f='cp' + ;; + none) + ;; + *) + die "Unknown OS '$target_os'." + ;; +esac + +# determine libc flavour + +probe_libc(){ + pfx=$1 + pfx_no_=${pfx%_} + # uclibc defines __GLIBC__, so it needs to be checked before glibc. + if check_${pfx}cpp_condition features.h "defined __UCLIBC__"; then + eval ${pfx}libc_type=uclibc + add_${pfx}cppflags -D_POSIX_C_SOURCE=200112 -D_XOPEN_SOURCE=600 + elif check_${pfx}cpp_condition features.h "defined __GLIBC__"; then + eval ${pfx}libc_type=glibc + add_${pfx}cppflags -D_POSIX_C_SOURCE=200112 -D_XOPEN_SOURCE=600 + # MinGW headers can be installed on Cygwin, so check for newlib first. + elif check_${pfx}cpp_condition newlib.h "defined _NEWLIB_VERSION"; then + eval ${pfx}libc_type=newlib + add_${pfx}cppflags -U__STRICT_ANSI__ + # MinGW64 is backwards compatible with MinGW32, so check for it first. + elif check_${pfx}cpp_condition _mingw.h "defined __MINGW64_VERSION_MAJOR"; then + eval ${pfx}libc_type=mingw64 + if check_${pfx}cpp_condition _mingw.h "__MINGW64_VERSION_MAJOR < 3"; then + add_compat msvcrt/snprintf.o + add_cflags "-include $source_path/compat/msvcrt/snprintf.h" + fi + add_${pfx}cppflags -U__STRICT_ANSI__ -D__USE_MINGW_ANSI_STDIO=1 + eval test \$${pfx_no_}cc_type = "gcc" && + add_${pfx}cppflags -D__printf__=__gnu_printf__ + elif check_${pfx}cpp_condition _mingw.h "defined __MINGW_VERSION" || + check_${pfx}cpp_condition _mingw.h "defined __MINGW32_VERSION"; then + eval ${pfx}libc_type=mingw32 + check_${pfx}cpp_condition _mingw.h "__MINGW32_MAJOR_VERSION > 3 || \ + (__MINGW32_MAJOR_VERSION == 3 && __MINGW32_MINOR_VERSION >= 15)" || + die "ERROR: MinGW32 runtime version must be >= 3.15." + add_${pfx}cppflags -U__STRICT_ANSI__ -D__USE_MINGW_ANSI_STDIO=1 + eval test \$${pfx_no_}cc_type = "gcc" && + add_${pfx}cppflags -D__printf__=__gnu_printf__ + elif check_${pfx}cpp_condition crtversion.h "defined _VC_CRT_MAJOR_VERSION"; then + eval ${pfx}libc_type=msvcrt + # The MSVC 2010 headers (Win 7.0 SDK) set _WIN32_WINNT to + # 0x601 by default unless something else is set by the user. + # This can easily lead to us detecting functions only present + # in such new versions and producing binaries requiring windows 7.0. + # Therefore explicitly set the default to XP unless the user has + # set something else on the command line. + check_${pfx}cpp_condition stdlib.h "defined(_WIN32_WINNT)" || + add_${pfx}cppflags -D_WIN32_WINNT=0x0502 + elif check_${pfx}cpp_condition stddef.h "defined __KLIBC__"; then + eval ${pfx}libc_type=klibc + elif check_${pfx}cpp_condition sys/cdefs.h "defined __BIONIC__"; then + eval ${pfx}libc_type=bionic + elif check_${pfx}cpp_condition sys/brand.h "defined LABELED_BRAND_NAME"; then + eval ${pfx}libc_type=solaris + add_${pfx}cppflags -D__EXTENSIONS__ -D_XOPEN_SOURCE=600 + fi +} + +probe_libc +test -n "$libc_type" && enable libc_$libc_type +probe_libc host_ +test -n "$host_libc_type" && enable host_libc_$host_libc_type + +case $libc_type in + bionic) + add_compat strtod.o strtod=avpriv_strtod + ;; + msvcrt) + add_compat strtod.o strtod=avpriv_strtod + add_compat msvcrt/snprintf.o snprintf=avpriv_snprintf \ + _snprintf=avpriv_snprintf \ + vsnprintf=avpriv_vsnprintf + ;; +esac + +# hacks for compiler/libc/os combinations + +if enabled_all tms470 libc_glibc; then + CPPFLAGS="-I${source_path}/compat/tms470 ${CPPFLAGS}" + add_cppflags -D__USER_LABEL_PREFIX__= + add_cppflags -D__builtin_memset=memset + add_cppflags -D__gnuc_va_list=va_list -D_VA_LIST_DEFINED + add_cflags -pds=48 # incompatible redefinition of macro +fi + +if enabled_all ccc libc_glibc; then + add_ldflags -Wl,-z,now # calls to libots crash without this +fi + +check_compile_assert flt_lim "float.h limits.h" "DBL_MAX == (double)DBL_MAX" || + add_cppflags '-I\$(SRC_PATH)/compat/float' + +esc(){ + echo "$*" | sed 's/%/%25/g;s/:/%3a/g' +} + +echo "config:$arch:$subarch:$cpu:$target_os:$(esc $cc_ident):$(esc $FFMPEG_CONFIGURATION)" >config.fate + +check_cpp_condition stdlib.h "defined(__PIC__) || defined(__pic__) || defined(PIC)" && enable_weak pic + +set_default $PATHS_LIST +set_default nm + +# we need to build at least one lib type +if ! enabled_any static shared; then + cat <= 2.0.0" aacplus.h aacplusEncOpen -laacplus +enabled libass && require_pkg_config libass ass/ass.h ass_library_init +enabled libbluray && require_pkg_config libbluray libbluray/bluray.h bd_open +enabled libbs2b && require_pkg_config libbs2b bs2b.h bs2b_open +enabled libcelt && require libcelt celt/celt.h celt_decode -lcelt0 && + { check_lib celt/celt.h celt_decoder_create_custom -lcelt0 || + die "ERROR: libcelt must be installed and version must be >= 0.11.0."; } +enabled libcaca && require_pkg_config caca caca.h caca_create_canvas +enabled libfaac && require2 libfaac "stdint.h faac.h" faacEncGetVersion -lfaac +enabled libfdk_aac && require libfdk_aac fdk-aac/aacenc_lib.h aacEncOpen -lfdk-aac +flite_libs="-lflite_cmu_time_awb -lflite_cmu_us_awb -lflite_cmu_us_kal -lflite_cmu_us_kal16 -lflite_cmu_us_rms -lflite_cmu_us_slt -lflite_usenglish -lflite_cmulex -lflite" +enabled libflite && require2 libflite "flite/flite.h" flite_init $flite_libs +enabled fontconfig && enable libfontconfig +enabled libfontconfig && require_pkg_config fontconfig "fontconfig/fontconfig.h" FcInit +enabled libfreetype && require_libfreetype +enabled libfribidi && require_pkg_config fribidi fribidi.h fribidi_version_info +enabled libgme && require libgme gme/gme.h gme_new_emu -lgme -lstdc++ +enabled libgsm && { for gsm_hdr in "gsm.h" "gsm/gsm.h"; do + check_lib "${gsm_hdr}" gsm_create -lgsm && break; + done || die "ERROR: libgsm not found"; } +enabled libilbc && require libilbc ilbc.h WebRtcIlbcfix_InitDecode -lilbc +enabled libmodplug && require_pkg_config libmodplug libmodplug/modplug.h ModPlug_Load +enabled libmp3lame && require "libmp3lame >= 3.98.3" lame/lame.h lame_set_VBR_quality -lmp3lame +enabled libnut && require libnut libnut.h nut_demuxer_init -lnut +enabled libopencore_amrnb && require libopencore_amrnb opencore-amrnb/interf_dec.h Decoder_Interface_init -lopencore-amrnb +enabled libopencore_amrwb && require libopencore_amrwb opencore-amrwb/dec_if.h D_IF_init -lopencore-amrwb +enabled libopencv && require_pkg_config opencv opencv/cxcore.h cvCreateImageHeader +enabled libopenjpeg && { check_lib openjpeg-1.5/openjpeg.h opj_version -lopenjpeg -DOPJ_STATIC || + check_lib openjpeg.h opj_version -lopenjpeg -DOPJ_STATIC || + die "ERROR: libopenjpeg not found"; } +enabled libopus && require_pkg_config opus opus_multistream.h opus_multistream_decoder_create +enabled libpulse && require_pkg_config libpulse pulse/pulseaudio.h pa_context_new +enabled libquvi && require_pkg_config libquvi quvi/quvi.h quvi_init +enabled librtmp && require_pkg_config librtmp librtmp/rtmp.h RTMP_Socket +enabled libschroedinger && require_pkg_config schroedinger-1.0 schroedinger/schro.h schro_init +enabled libshine && require_pkg_config shine shine/layer3.h shine_encode_buffer +enabled libsmbclient && { { check_pkg_config smbclient libsmbclient.h smbc_init && + require_pkg_config smbclient libsmbclient.h smbc_init; } || + require smbclient libsmbclient.h smbc_init -lsmbclient; } +enabled libsoxr && require libsoxr soxr.h soxr_create -lsoxr +enabled libssh && require_pkg_config libssh libssh/sftp.h sftp_init +enabled libspeex && require_pkg_config speex speex/speex.h speex_decoder_init -lspeex +enabled libstagefright_h264 && require_cpp libstagefright_h264 "binder/ProcessState.h media/stagefright/MetaData.h + media/stagefright/MediaBufferGroup.h media/stagefright/MediaDebug.h media/stagefright/MediaDefs.h + media/stagefright/OMXClient.h media/stagefright/OMXCodec.h" android::OMXClient -lstagefright -lmedia -lutils -lbinder -lgnustl_static +enabled libtheora && require libtheora theora/theoraenc.h th_info_init -ltheoraenc -ltheoradec -logg +enabled libtwolame && require libtwolame twolame.h twolame_init -ltwolame && + { check_lib twolame.h twolame_encode_buffer_float32_interleaved -ltwolame || + die "ERROR: libtwolame must be installed and version must be >= 0.3.10"; } +enabled libutvideo && require_cpp utvideo "stdint.h stdlib.h utvideo/utvideo.h utvideo/Codec.h" 'CCodec*' -lutvideo -lstdc++ +enabled libv4l2 && require_pkg_config libv4l2 libv4l2.h v4l2_ioctl +enabled libvidstab && require_pkg_config "vidstab >= 0.98" vid.stab/libvidstab.h vsMotionDetectInit +enabled libvo_aacenc && require libvo_aacenc vo-aacenc/voAAC.h voGetAACEncAPI -lvo-aacenc +enabled libvo_amrwbenc && require libvo_amrwbenc vo-amrwbenc/enc_if.h E_IF_init -lvo-amrwbenc +enabled libvorbis && require libvorbis vorbis/vorbisenc.h vorbis_info_init -lvorbisenc -lvorbis -logg +enabled libvpx && { + enabled libvpx_vp8_decoder && { check_lib2 "vpx/vpx_decoder.h vpx/vp8dx.h" vpx_codec_dec_init_ver -lvpx || + die "ERROR: libvpx decoder version must be >=0.9.1"; } + enabled libvpx_vp8_encoder && { check_lib2 "vpx/vpx_encoder.h vpx/vp8cx.h" "vpx_codec_enc_init_ver VP8E_SET_MAX_INTRA_BITRATE_PCT" -lvpx || + die "ERROR: libvpx encoder version must be >=0.9.7"; } + enabled libvpx_vp9_decoder && { check_lib2 "vpx/vpx_decoder.h vpx/vp8dx.h" "vpx_codec_vp9_dx" -lvpx || disable libvpx_vp9_decoder; } + enabled libvpx_vp9_encoder && { check_lib2 "vpx/vpx_encoder.h vpx/vp8cx.h" "vpx_codec_vp9_cx VP9E_SET_AQ_MODE" -lvpx || disable libvpx_vp9_encoder; } } +enabled libwavpack && require libwavpack wavpack/wavpack.h WavpackOpenFileOutput -lwavpack +enabled libwebp && require_pkg_config libwebp webp/encode.h WebPGetEncoderVersion && + { check_code cc webp/encode.h "WebPPicture wp; wp.use_argb++" || + die "ERROR: libwebp too old."; } +enabled libx264 && require libx264 x264.h x264_encoder_encode -lx264 && + { check_cpp_condition x264.h "X264_BUILD >= 118" || + die "ERROR: libx264 must be installed and version must be >= 0.118."; } +enabled libx265 && require_pkg_config x265 x265.h x265_encoder_encode && + { check_cpp_condition x265.h "X265_BUILD >= 17" || + die "ERROR: libx265 version must be >= 17."; } +enabled libxavs && require libxavs xavs.h xavs_encoder_encode -lxavs +enabled libxvid && require libxvid xvid.h xvid_global -lxvidcore +enabled libzmq && require_pkg_config libzmq zmq.h zmq_ctx_new +enabled libzvbi && require libzvbi libzvbi.h vbi_decoder_new -lzvbi +enabled openal && { { for al_libs in "${OPENAL_LIBS}" "-lopenal" "-lOpenAL32"; do + check_lib 'AL/al.h' alGetError "${al_libs}" && break; done } || + die "ERROR: openal not found"; } && + { check_cpp_condition "AL/al.h" "defined(AL_VERSION_1_1)" || + die "ERROR: openal must be installed and version must be 1.1 or compatible"; } +enabled opencl && { check_lib2 OpenCL/cl.h clEnqueueNDRangeKernel -Wl,-framework,OpenCL || + check_lib2 CL/cl.h clEnqueueNDRangeKernel -lOpenCL || + die "ERROR: opencl not found"; } && + { check_cpp_condition "OpenCL/cl.h" "defined(CL_VERSION_1_2)" || + check_cpp_condition "CL/cl.h" "defined(CL_VERSION_1_2)" || + die "ERROR: opencl must be installed and version must be 1.2 or compatible"; } +enabled opengl && { check_lib GL/glx.h glXGetProcAddress "-lGL" || + check_lib2 windows.h wglGetProcAddress "-lopengl32 -lgdi32" || + check_lib2 OpenGL/gl3.h glGetError "-Wl,-framework,OpenGL" || + check_lib2 ES2/gl.h glGetError "-isysroot=${sysroot} -Wl,-framework,OpenGLES" || + die "ERROR: opengl not found." + } +enabled openssl && { check_lib openssl/ssl.h SSL_library_init -lssl -lcrypto || + check_lib openssl/ssl.h SSL_library_init -lssl32 -leay32 || + check_lib openssl/ssl.h SSL_library_init -lssl -lcrypto -lws2_32 -lgdi32 || + die "ERROR: openssl not found"; } +enabled qtkit_indev && { check_header_oc QTKit/QTKit.h || disable qtkit_indev; } + +if enabled gnutls; then + { check_lib nettle/bignum.h nettle_mpz_get_str_256 -lnettle -lhogweed -lgmp && enable nettle; } || + { check_lib gcrypt.h gcry_mpi_new -lgcrypt && enable gcrypt; } +fi + +# libdc1394 check +if enabled libdc1394; then + { check_lib dc1394/dc1394.h dc1394_new -ldc1394 -lraw1394 && + enable libdc1394_2; } || + { check_lib libdc1394/dc1394_control.h dc1394_create_handle -ldc1394_control -lraw1394 && + enable libdc1394_1; } || + die "ERROR: No version of libdc1394 found " +fi + +SDL_CONFIG="${cross_prefix}sdl-config" +if check_pkg_config sdl SDL_events.h SDL_PollEvent; then + check_cpp_condition SDL.h "(SDL_MAJOR_VERSION<<16 | SDL_MINOR_VERSION<<8 | SDL_PATCHLEVEL) >= 0x010201" $sdl_cflags && + check_cpp_condition SDL.h "(SDL_MAJOR_VERSION<<16 | SDL_MINOR_VERSION<<8 | SDL_PATCHLEVEL) < 0x010300" $sdl_cflags && + enable sdl +else + if "${SDL_CONFIG}" --version > /dev/null 2>&1; then + sdl_cflags=$("${SDL_CONFIG}" --cflags) + sdl_libs=$("${SDL_CONFIG}" --libs) + check_func_headers SDL_version.h SDL_Linked_Version $sdl_cflags $sdl_libs && + check_cpp_condition SDL.h "(SDL_MAJOR_VERSION<<16 | SDL_MINOR_VERSION<<8 | SDL_PATCHLEVEL) >= 0x010201" $sdl_cflags && + check_cpp_condition SDL.h "(SDL_MAJOR_VERSION<<16 | SDL_MINOR_VERSION<<8 | SDL_PATCHLEVEL) < 0x010300" $sdl_cflags && + enable sdl + fi +fi +enabled sdl && add_cflags $sdl_cflags && add_extralibs $sdl_libs + +makeinfo --version > /dev/null 2>&1 && enable makeinfo || disable makeinfo +enabled makeinfo && (makeinfo --version | \ + grep -q 'makeinfo (GNU texinfo) 5' > /dev/null 2>&1) \ + && enable makeinfo_html || disable makeinfo_html +disabled makeinfo_html && texi2html --help 2> /dev/null | grep -q 'init-file' && enable texi2html || disable texi2html +perl -v > /dev/null 2>&1 && enable perl || disable perl +pod2man --help > /dev/null 2>&1 && enable pod2man || disable pod2man +rsync --help 2> /dev/null | grep -q 'contimeout' && enable rsync_contimeout || disable rsync_contimeout + +check_header linux/fb.h +check_header linux/videodev.h +check_header linux/videodev2.h +check_code cc linux/videodev2.h "struct v4l2_frmsizeenum vfse; vfse.discrete.width = 0;" && enable_safe struct_v4l2_frmivalenum_discrete + +check_header sys/videoio.h + +check_func_headers "windows.h vfw.h" capCreateCaptureWindow "$vfwcap_indev_extralibs" +# check that WM_CAP_DRIVER_CONNECT is defined to the proper value +# w32api 3.12 had it defined wrong +check_cpp_condition vfw.h "WM_CAP_DRIVER_CONNECT > WM_USER" && enable vfwcap_defines + +check_type "dshow.h" IBaseFilter + +# check for ioctl_meteor.h, ioctl_bt848.h and alternatives +{ check_header dev/bktr/ioctl_meteor.h && + check_header dev/bktr/ioctl_bt848.h; } || +{ check_header machine/ioctl_meteor.h && + check_header machine/ioctl_bt848.h; } || +{ check_header dev/video/meteor/ioctl_meteor.h && + check_header dev/video/bktr/ioctl_bt848.h; } || +check_header dev/ic/bt8xx.h + +check_header sndio.h +if check_struct sys/soundcard.h audio_buf_info bytes; then + enable_safe sys/soundcard.h +else + check_cc -D__BSD_VISIBLE -D__XSI_VISIBLE < + audio_buf_info abc; +EOF +fi +check_header soundcard.h + +enabled_any alsa_indev alsa_outdev && + check_lib2 alsa/asoundlib.h snd_pcm_htimestamp -lasound + +enabled jack_indev && check_lib2 jack/jack.h jack_client_open -ljack && check_func sem_timedwait && + check_func jack_port_get_latency_range -ljack + +enabled_any sndio_indev sndio_outdev && check_lib2 sndio.h sio_open -lsndio + +if enabled libcdio; then + check_lib2 "cdio/cdda.h cdio/paranoia.h" cdio_cddap_open -lcdio_paranoia -lcdio_cdda -lcdio || + check_lib2 "cdio/paranoia/cdda.h cdio/paranoia/paranoia.h" cdio_cddap_open -lcdio_paranoia -lcdio_cdda -lcdio || + die "ERROR: libcdio-paranoia not found" +fi + +enabled xlib && + check_lib X11/Xlib.h XOpenDisplay -lX11 || disable xlib + +enabled x11grab && +require Xext X11/extensions/XShm.h XShmCreateImage -lXext && +require Xfixes X11/extensions/Xfixes.h XFixesGetCursorImage -lXfixes && +{ enabled xlib || die "ERROR: Xlib not found"; } + +check_func_headers "windows.h" CreateDIBSection "$gdigrab_indev_extralibs" + +enabled dxva2api_h && + check_cc < +#include +#include +int main(void) { IDirectXVideoDecoder *o = NULL; IDirectXVideoDecoder_Release(o); return 0; } +EOF + +enabled vaapi && + check_lib va/va.h vaInitialize -lva || + disable vaapi + +enabled vdpau && + check_cpp_condition vdpau/vdpau.h "defined VDP_DECODER_PROFILE_MPEG4_PART2_ASP" || + disable vdpau + +enabled vdpau && enabled xlib && + check_func_headers "vdpau/vdpau.h vdpau/vdpau_x11.h" vdp_device_create_x11 -lvdpau && + prepend ffmpeg_libs $($ldflags_filter "-lvdpau") && + enable vdpau_x11 + +# Funny iconv installations are not unusual, so check it after all flags have been set +disabled iconv || check_func_headers iconv.h iconv || check_lib2 iconv.h iconv -liconv || disable iconv + +enabled debug && add_cflags -g"$debuglevel" && add_asflags -g"$debuglevel" + +# add some useful compiler flags if supported +check_cflags -Wdeclaration-after-statement +check_cflags -Wall +check_cflags -Wdisabled-optimization +check_cflags -Wpointer-arith +check_cflags -Wredundant-decls +check_cflags -Wwrite-strings +check_cflags -Wtype-limits +check_cflags -Wundef +check_cflags -Wmissing-prototypes +check_cflags -Wno-pointer-to-int-cast +check_cflags -Wstrict-prototypes +check_cflags -Wempty-body +enabled extra_warnings && check_cflags -Winline + +check_disable_warning(){ + warning_flag=-W${1#-Wno-} + test_cflags $warning_flag && add_cflags $1 +} + +check_disable_warning -Wno-parentheses +check_disable_warning -Wno-switch +check_disable_warning -Wno-format-zero-length +check_disable_warning -Wno-pointer-sign + +# add some linker flags +check_ldflags -Wl,--warn-common +check_ldflags -Wl,-rpath-link=libpostproc:libswresample:libswscale:libavfilter:libavdevice:libavformat:libavcodec:libavutil:libavresample +enabled rpath && add_ldexeflags -Wl,-rpath,$libdir +test_ldflags -Wl,-Bsymbolic && append SHFLAGS -Wl,-Bsymbolic + +# add some strip flags +# -wN '..@*' is more selective than -x, but not available everywhere. +check_stripflags -wN \'..@*\' || check_stripflags -x + +enabled neon_clobber_test && + check_ldflags -Wl,--wrap,avcodec_open2 \ + -Wl,--wrap,avcodec_decode_audio4 \ + -Wl,--wrap,avcodec_decode_video2 \ + -Wl,--wrap,avcodec_decode_subtitle2 \ + -Wl,--wrap,avcodec_encode_audio2 \ + -Wl,--wrap,avcodec_encode_video2 \ + -Wl,--wrap,avcodec_encode_subtitle \ + -Wl,--wrap,swr_convert \ + -Wl,--wrap,avresample_convert || + disable neon_clobber_test + +enabled xmm_clobber_test && + check_ldflags -Wl,--wrap,avcodec_open2 \ + -Wl,--wrap,avcodec_decode_audio4 \ + -Wl,--wrap,avcodec_decode_video2 \ + -Wl,--wrap,avcodec_decode_subtitle2 \ + -Wl,--wrap,avcodec_encode_audio2 \ + -Wl,--wrap,avcodec_encode_video \ + -Wl,--wrap,avcodec_encode_video2 \ + -Wl,--wrap,avcodec_encode_subtitle \ + -Wl,--wrap,swr_convert \ + -Wl,--wrap,avresample_convert \ + -Wl,--wrap,sws_scale || + disable xmm_clobber_test + +echo "X{};" > $TMPV +if test_ldflags -Wl,--version-script,$TMPV; then + append SHFLAGS '-Wl,--version-script,\$(SUBDIR)lib\$(NAME).ver' + check_cc <= 1400" && + add_cflags -Qansi-alias + # Some inline asm is not compilable in debug + if enabled debug; then + disable ebp_available + disable ebx_available + fi + fi + # msvcrt10 x64 incorrectly enables log2, only msvcrt12 onwards actually has log2. + check_cpp_condition crtversion.h "_VC_CRT_MAJOR_VERSION >= 12" || disable log2 +fi + +case $as_type in + clang) + add_asflags -Qunused-arguments + ;; +esac + +case $ld_type in + clang) + check_ldflags -Qunused-arguments + ;; +esac + +case $target_os in + osf1) + enabled ccc && add_ldflags '-Wl,-expect_unresolved,*' + ;; + plan9) + add_cppflags -Dmain=plan9_main + ;; +esac + +enable frame_thread_encoder + +enabled asm || { arch=c; disable $ARCH_LIST $ARCH_EXT_LIST; } + +check_deps $CONFIG_LIST \ + $CONFIG_EXTRA \ + $HAVE_LIST \ + $ALL_COMPONENTS \ + +enabled threads && ! enabled pthreads && ! enabled atomics_native && die "non pthread threading without atomics not supported, try adding --enable-pthreads or --cpu=i486 or higher if you are on x86" + + +if test $target_os = "haiku"; then + disable memalign + disable posix_memalign +fi + +enabled_all dxva2 dxva2api_cobj CoTaskMemFree && + prepend ffmpeg_libs $($ldflags_filter "-lole32") && + enable dxva2_lib + +! enabled_any memalign posix_memalign aligned_malloc && + enabled simd_align_16 && enable memalign_hack + +# add_dep lib dep +# -> enable ${lib}_deps_${dep} +# -> add $dep to ${lib}_deps only once +add_dep() { + lib=$1 + dep=$2 + enabled "${lib}_deps_${dep}" && return 0 + enable "${lib}_deps_${dep}" + prepend "${lib}_deps" $dep +} + +# merge deps lib components +# merge all ${component}_deps into ${lib}_deps and ${lib}_deps_* +merge_deps() { + lib=$1 + shift + for comp in $*; do + enabled $comp || continue + eval "dep=\"\$${comp}_deps\"" + for d in $dep; do + add_dep $lib $d + done + done +} + +merge_deps libavfilter $FILTER_LIST + +map 'enabled $v && intrinsics=${v#intrinsics_}' $INTRINSICS_LIST + +for thread in $THREADS_LIST; do + if enabled $thread; then + test -n "$thread_type" && + die "ERROR: Only one thread type must be selected." || + thread_type="$thread" + fi +done + +enabled zlib && add_cppflags -DZLIB_CONST + +# conditional library dependencies, in linking order +enabled aconvert_filter && prepend avfilter_deps "swresample" +enabled amovie_filter && prepend avfilter_deps "avformat avcodec" +enabled aresample_filter && prepend avfilter_deps "swresample" +enabled asyncts_filter && prepend avfilter_deps "avresample" +enabled atempo_filter && prepend avfilter_deps "avcodec" +enabled ebur128_filter && enabled swresample && prepend avfilter_deps "swresample" +enabled elbg_filter && prepend avfilter_deps "avcodec" +enabled mcdeint_filter && prepend avfilter_deps "avcodec" +enabled movie_filter && prepend avfilter_deps "avformat avcodec" +enabled mp_filter && prepend avfilter_deps "avcodec" +enabled pan_filter && prepend avfilter_deps "swresample" +enabled pp_filter && prepend avfilter_deps "postproc" +enabled removelogo_filter && prepend avfilter_deps "avformat avcodec swscale" +enabled resample_filter && prepend avfilter_deps "avresample" +enabled sab_filter && prepend avfilter_deps "swscale" +enabled scale_filter && prepend avfilter_deps "swscale" +enabled showspectrum_filter && prepend avfilter_deps "avcodec" +enabled smartblur_filter && prepend avfilter_deps "swscale" +enabled subtitles_filter && prepend avfilter_deps "avformat avcodec" + +enabled lavfi_indev && prepend avdevice_deps "avfilter" + +enabled opus_decoder && prepend avcodec_deps "swresample" + +expand_deps(){ + lib_deps=${1}_deps + eval "deps=\$$lib_deps" + append $lib_deps $(map 'eval echo \$${v}_deps' $deps) + unique $lib_deps +} + +#we have to remove gpl from the deps here as some code assumes all lib deps are libs +postproc_deps="$(filter_out 'gpl' $postproc_deps)" + +map 'expand_deps $v' $LIBRARY_LIST + +echo "install prefix $prefix" +echo "source path $source_path" +echo "C compiler $cc" +echo "C library $libc_type" +if test "$host_cc" != "$cc"; then + echo "host C compiler $host_cc" + echo "host C library $host_libc_type" +fi +echo "ARCH $arch ($cpu)" +if test "$build_suffix" != ""; then + echo "build suffix $build_suffix" +fi +if test "$progs_suffix" != ""; then + echo "progs suffix $progs_suffix" +fi +if test "$extra_version" != ""; then + echo "version string suffix $extra_version" +fi +echo "big-endian ${bigendian-no}" +echo "runtime cpu detection ${runtime_cpudetect-no}" +if enabled x86; then + echo "${yasmexe} ${yasm-no}" + echo "MMX enabled ${mmx-no}" + echo "MMXEXT enabled ${mmxext-no}" + echo "3DNow! enabled ${amd3dnow-no}" + echo "3DNow! extended enabled ${amd3dnowext-no}" + echo "SSE enabled ${sse-no}" + echo "SSSE3 enabled ${ssse3-no}" + echo "AVX enabled ${avx-no}" + echo "XOP enabled ${xop-no}" + echo "FMA3 enabled ${fma3-no}" + echo "FMA4 enabled ${fma4-no}" + echo "i686 features enabled ${i686-no}" + echo "CMOV is fast ${fast_cmov-no}" + echo "EBX available ${ebx_available-no}" + echo "EBP available ${ebp_available-no}" +fi +if enabled aarch64; then + echo "NEON enabled ${neon-no}" + echo "VFP enabled ${vfp-no}" +fi +if enabled arm; then + echo "ARMv5TE enabled ${armv5te-no}" + echo "ARMv6 enabled ${armv6-no}" + echo "ARMv6T2 enabled ${armv6t2-no}" + echo "VFP enabled ${vfp-no}" + echo "NEON enabled ${neon-no}" + echo "THUMB enabled ${thumb-no}" +fi +if enabled mips; then + echo "MIPS FPU enabled ${mipsfpu-no}" + echo "MIPS32R2 enabled ${mips32r2-no}" + echo "MIPS DSP R1 enabled ${mipsdspr1-no}" + echo "MIPS DSP R2 enabled ${mipsdspr2-no}" +fi +if enabled ppc; then + echo "AltiVec enabled ${altivec-no}" + echo "PPC 4xx optimizations ${ppc4xx-no}" + echo "PPC VSX optimizations ${vsx-no}" + echo "dcbzl available ${dcbzl-no}" +fi +echo "debug symbols ${debug-no}" +echo "strip symbols ${stripping-no}" +echo "optimize for size ${small-no}" +echo "optimizations ${optimizations-no}" +echo "static ${static-no}" +echo "shared ${shared-no}" +echo "postprocessing support ${postproc-no}" +echo "new filter support ${avfilter-no}" +echo "network support ${network-no}" +echo "threading support ${thread_type-no}" +echo "safe bitstream reader ${safe_bitstream_reader-no}" +echo "SDL support ${sdl-no}" +echo "opencl enabled ${opencl-no}" +echo "texi2html enabled ${texi2html-no}" +echo "perl enabled ${perl-no}" +echo "pod2man enabled ${pod2man-no}" +echo "makeinfo enabled ${makeinfo-no}" +echo "makeinfo supports HTML ${makeinfo_html-no}" +test -n "$random_seed" && + echo "random seed ${random_seed}" +echo + +echo "External libraries:" +print_enabled '' $EXTERNAL_LIBRARY_LIST | print_3_columns +echo + +for type in decoder encoder hwaccel parser demuxer muxer protocol filter bsf indev outdev; do + echo "Enabled ${type}s:" + eval list=\$$(toupper $type)_LIST + print_enabled '_*' $list | print_3_columns + echo +done + +license="LGPL version 2.1 or later" +if enabled nonfree; then + license="nonfree and unredistributable" +elif enabled gplv3; then + license="GPL version 3 or later" +elif enabled lgplv3; then + license="LGPL version 3 or later" +elif enabled gpl; then + license="GPL version 2 or later" +fi + +echo "License: $license" + +echo "Creating config.mak, config.h, and doc/config.texi..." + +test -e Makefile || echo "include $source_path/Makefile" > Makefile + +enabled stripping || strip="echo skipping strip" + +config_files="$TMPH config.mak doc/config.texi" + +cat > config.mak <> config.mak + eval echo "${lcname}_VERSION_MAJOR=\$${name}_VERSION_MAJOR" >> config.mak + eval echo "${lcname}_VERSION_MINOR=\$${name}_VERSION_MINOR" >> config.mak +} + +map 'get_version $v' $LIBRARY_LIST + +map 'eval echo "${v}_FFLIBS=\$${v}_deps" >> config.mak' $LIBRARY_LIST + +print_program_libs(){ + eval "program_libs=\$${1}_libs" + eval echo "LIBS-${1}=${program_libs}" >> config.mak +} + +map 'print_program_libs $v' $PROGRAM_LIST + +cat > $TMPH <>$TMPH + +test -n "$malloc_prefix" && + echo "#define MALLOC_PREFIX $malloc_prefix" >>$TMPH + +if enabled yasm; then + append config_files $TMPASM + printf '' >$TMPASM +fi + +enabled getenv || echo "#define getenv(x) NULL" >> $TMPH + + +mkdir -p doc +echo "@c auto-generated by configure" > doc/config.texi + +print_config ARCH_ "$config_files" $ARCH_LIST +print_config HAVE_ "$config_files" $HAVE_LIST +print_config CONFIG_ "$config_files" $CONFIG_LIST \ + $CONFIG_EXTRA \ + $ALL_COMPONENTS \ + +echo "#endif /* FFMPEG_CONFIG_H */" >> $TMPH +echo "endif # FFMPEG_CONFIG_MAK" >> config.mak + +# Do not overwrite an unchanged config.h to avoid superfluous rebuilds. +cp_if_changed $TMPH config.h +touch .config + +enabled yasm && cp_if_changed $TMPASM config.asm + +cat > $TMPH <> $TMPH + +cp_if_changed $TMPH libavutil/avconfig.h + +if test -n "$WARNINGS"; then + printf "\n$WARNINGS" + enabled fatal_warnings && exit 1 +fi + +# build pkg-config files + +lib_version(){ + eval printf "\"lib${1}${build_suffix} >= \$LIB$(toupper ${1})_VERSION, \"" +} + +pkgconfig_generate(){ + name=$1 + shortname=${name#lib}${build_suffix} + comment=$2 + version=$3 + libs=$4 + requires=$(map 'lib_version $v' $(eval echo \$${name#lib}_deps)) + requires=${requires%, } + enabled ${name#lib} || return 0 + mkdir -p $name + cat < $name/$name${build_suffix}.pc +prefix=$prefix +exec_prefix=\${prefix} +libdir=$libdir +includedir=$incdir + +Name: $name +Description: $comment +Version: $version +Requires: $(enabled shared || echo $requires) +Requires.private: $(enabled shared && echo $requires) +Conflicts: +Libs: -L\${libdir} $(enabled rpath && echo "-Wl,-rpath,\${libdir}") -l${shortname} $(enabled shared || echo $libs) +Libs.private: $(enabled shared && echo $libs) +Cflags: -I\${includedir} +EOF + +mkdir -p doc/examples/pc-uninstalled +includedir=${source_path} +[ "$includedir" = . ] && includedir="\${pcfiledir}/../../.." + cat < doc/examples/pc-uninstalled/$name.pc +prefix= +exec_prefix= +libdir=\${pcfiledir}/../../../$name +includedir=${includedir} + +Name: $name +Description: $comment +Version: $version +Requires: $requires +Conflicts: +Libs: -L\${libdir} -Wl,-rpath,\${libdir} -l${shortname} $(enabled shared || echo $libs) +Cflags: -I\${includedir} +EOF +} + +pkgconfig_generate libavutil "FFmpeg utility library" "$LIBAVUTIL_VERSION" "$LIBM" +pkgconfig_generate libavcodec "FFmpeg codec library" "$LIBAVCODEC_VERSION" "$extralibs" +pkgconfig_generate libavformat "FFmpeg container format library" "$LIBAVFORMAT_VERSION" "$extralibs" +pkgconfig_generate libavdevice "FFmpeg device handling library" "$LIBAVDEVICE_VERSION" "$extralibs" +pkgconfig_generate libavfilter "FFmpeg audio/video filtering library" "$LIBAVFILTER_VERSION" "$extralibs" +pkgconfig_generate libpostproc "FFmpeg postprocessing library" "$LIBPOSTPROC_VERSION" "" +pkgconfig_generate libavresample "Libav audio resampling library" "$LIBAVRESAMPLE_VERSION" "$LIBM" +pkgconfig_generate libswscale "FFmpeg image rescaling library" "$LIBSWSCALE_VERSION" "$LIBM" +pkgconfig_generate libswresample "FFmpeg audio resampling library" "$LIBSWRESAMPLE_VERSION" "$LIBM" diff --git a/ffmpeg/doc/APIchanges b/ffmpeg/doc/APIchanges new file mode 100644 index 0000000..8a28029 --- /dev/null +++ b/ffmpeg/doc/APIchanges @@ -0,0 +1,2211 @@ +Never assume the API of libav* to be stable unless at least 1 month has passed +since the last major version increase or the API was added. + +The last version increases were: +libavcodec: 2014-08-09 +libavdevice: 2014-08-09 +libavfilter: 2014-08-09 +libavformat: 2014-08-09 +libavresample: 2014-08-09 +libpostproc: 2014-08-09 +libswresample: 2014-08-09 +libswscale: 2014-08-09 +libavutil: 2014-08-09 + + +API changes, most recent first: + + +-------- 8< --------- FFmpeg 2.4 was cut here -------- 8< --------- + +2014-08-28 - f30a815 / 9301486 - lavc 56.1.100 / 56.1.0 - avcodec.h + Add AV_PKT_DATA_STEREO3D to export container-level stereo3d information. + +2014-08-25 - 215db29 / b263f8f - lavf 56.3.100 / 56.3.0 - avformat.h + Add AVFormatContext.max_ts_probe. + +2014-08-23 - 8fc9bd0 - lavu 54.7.100 - dict.h + AV_DICT_DONT_STRDUP_KEY and AV_DICT_DONT_STRDUP_VAL arguments are now + freed even on error. This is consistent with the behaviour all users + of it we could find expect. + +2014-08-21 - 980a5b0 - lavu 54.6.100 - frame.h motion_vector.h + Add AV_FRAME_DATA_MOTION_VECTORS side data and AVMotionVector structure + +2014-08-16 - b7d5e01 - lswr 1.1.100 - swresample.h + Add AVFrame based API + +2014-08-16 - c2829dc - lavu 54.4.100 - dict.h + Add av_dict_set_int helper function. + +2014-08-13 - c8571c6 / 8ddc326 - lavu 54.3.100 / 54.3.0 - mem.h + Add av_strndup(). + +2014-08-13 - 2ba4577 / a8c104a - lavu 54.2.100 / 54.2.0 - opt.h + Add av_opt_get_dict_val/set_dict_val with AV_OPT_TYPE_DICT to support + dictionary types being set as options. + +2014-08-13 - afbd4b8 - lavf 56.01.0 - avformat.h + Add AVFormatContext.event_flags and AVStream.event_flags for signaling to + the user when events happen in the file/stream. + +2014-08-10 - 78eaaa8 / fb1ddcd - lavr 2.1.0 - avresample.h + Add avresample_convert_frame() and avresample_config(). + +2014-08-10 - 78eaaa8 / fb1ddcd - lavu 54.1.100 / 54.1.0 - error.h + Add AVERROR_INPUT_CHANGED and AVERROR_OUTPUT_CHANGED. + +2014-08-08 - 3841f2a / d35b94f - lavc 55.73.102 / 55.57.4 - avcodec.h + Deprecate FF_IDCT_XVIDMMX define and xvidmmx idct option. + Replaced by FF_IDCT_XVID and xvid respectively. + +2014-08-08 - 5c3c671 - lavf 55.53.100 - avio.h + Add avio_feof() and deprecate url_feof(). + +2014-08-07 - bb78903 - lsws 2.1.3 - swscale.h + sws_getContext is not going to be removed in the future. + +2014-08-07 - a561662 / ad1ee5f - lavc 55.73.101 / 55.57.3 - avcodec.h + reordered_opaque is not going to be removed in the future. + +2014-08-02 - 28a2107 - lavu 52.98.100 - pixelutils.h + Add pixelutils API with SAD functions + +2014-08-04 - 6017c98 / e9abafc - lavu 52.97.100 / 53.22.0 - pixfmt.h + Add AV_PIX_FMT_YA16 pixel format for 16 bit packed gray with alpha. + +2014-08-04 - 4c8bc6f / e96c3b8 - lavu 52.96.101 / 53.21.1 - avstring.h + Rename AV_PIX_FMT_Y400A to AV_PIX_FMT_YA8 to better identify the format. + An alias pixel format and color space name are provided for compatibility. + +2014-08-04 - 073c074 / d2962e9 - lavu 52.96.100 / 53.21.0 - pixdesc.h + Support name aliases for pixel formats. + +2014-08-03 - 71d008e / 1ef9e83 - lavc 55.72.101 / 55.57.2 - avcodec.h +2014-08-03 - 71d008e / 1ef9e83 - lavu 52.95.100 / 53.20.0 - frame.h + Deprecate AVCodecContext.dtg_active_format and use side-data instead. + +2014-08-03 - e680c73 - lavc 55.72.100 - avcodec.h + Add get_pixels() to AVDCT + +2014-08-03 - 9400603 / 9f17685 - lavc 55.71.101 / 55.57.1 - avcodec.h + Deprecate unused FF_IDCT_IPP define and ipp avcodec option. + Deprecate unused FF_DEBUG_PTS define and pts avcodec option. + Deprecate unused FF_CODER_TYPE_DEFLATE define and deflate avcodec option. + Deprecate unused FF_DCT_INT define and int avcodec option. + Deprecate unused avcodec option scenechange_factor. + +2014-07-30 - ba3e331 - lavu 52.94.100 - frame.h + Add av_frame_side_data_name() + +2014-07-29 - 80a3a66 / 3a19405 - lavf 56.01.100 / 56.01.0 - avformat.h + Add mime_type field to AVProbeData, which now MUST be initialized in + order to avoid uninitialized reads of the mime_type pointer, likely + leading to crashes. + Typically, this means you will do 'AVProbeData pd = { 0 };' instead of + 'AVProbeData pd;'. + +2014-07-29 - 31e0b5d / 69e7336 - lavu 52.92.100 / 53.19.0 - avstring.h + Make name matching function from lavf public as av_match_name(). + +2014-07-28 - 2e5c8b0 / c5fca01 - lavc 55.71.100 / 55.57.0 - avcodec.h + Add AV_CODEC_PROP_REORDER to mark codecs supporting frame reordering. + +2014-07-27 - ff9a154 - lavf 55.50.100 - avformat.h + New field int64_t probesize2 instead of deprecated + field int probesize. + +2014-07-27 - 932ff70 - lavc 55.70.100 - avdct.h + Add AVDCT / avcodec_dct_alloc() / avcodec_dct_init(). + +2014-07-23 - 8a4c086 - lavf 55.49.100 - avio.h + Add avio_read_to_bprint() + + +-------- 8< --------- FFmpeg 2.3 was cut here -------- 8< --------- + +2014-07-14 - 62227a7 - lavf 55.47.100 - avformat.h + Add av_stream_get_parser() + +2014-07-09 - c67690f / a54f03b - lavu 52.92.100 / 53.18.0 - display.h + Add av_display_matrix_flip() to flip the transformation matrix. + +2014-07-09 - 1b58f13 / f6ee61f - lavc 55.69.100 / 55.56.0 - dv_profile.h + Add a public API for DV profile handling. + +2014-06-20 - 0dceefc / 9e500ef - lavu 52.90.100 / 53.17.0 - imgutils.h + Add av_image_check_sar(). + +2014-06-20 - 4a99333 / 874390e - lavc 55.68.100 / 55.55.0 - avcodec.h + Add av_packet_rescale_ts() to simplify timestamp conversion. + +2014-06-18 - ac293b6 / 194be1f - lavf 55.44.100 / 55.20.0 - avformat.h + The proper way for providing a hint about the desired timebase to the muxers + is now setting AVStream.time_base, instead of AVStream.codec.time_base as was + done previously. The old method is now deprecated. + +2014-06-11 - 67d29da - lavc 55.66.101 - avcodec.h + Increase FF_INPUT_BUFFER_PADDING_SIZE to 32 due to some corner cases needing + it + +2014-06-10 - xxxxxxx - lavf 55.43.100 - avformat.h + New field int64_t max_analyze_duration2 instead of deprecated + int max_analyze_duration. + +2014-05-30 - 00759d7 - lavu 52.89.100 - opt.h + Add av_opt_copy() + +2014-06-01 - 03bb99a / 0957b27 - lavc 55.66.100 / 55.54.0 - avcodec.h + Add AVCodecContext.side_data_only_packets to allow encoders to output packets + with only side data. This option may become mandatory in the future, so all + users are recommended to update their code and enable this option. + +2014-06-01 - 6e8e9f1 / 8c02adc - lavu 52.88.100 / 53.16.0 - frame.h, pixfmt.h + Move all color-related enums (AVColorPrimaries, AVColorSpace, AVColorRange, + AVColorTransferCharacteristic, and AVChromaLocation) inside lavu. + And add AVFrame fields for them. + +2014-05-29 - bdb2e80 / b2d4565 - lavr 1.3.0 - avresample.h + Add avresample_max_output_samples + +2014-05-28 - d858ee7 / 6d21259 - lavf 55.42.100 / 55.19.0 - avformat.h + Add strict_std_compliance and related AVOptions to support experimental + muxing. + +2014-05-26 - xxxxxxx - lavu 52.87.100 - threadmessage.h + Add thread message queue API. + +2014-05-26 - c37d179 - lavf 55.41.100 - avformat.h + Add format_probesize to AVFormatContext. + +2014-05-20 - 7d25af1 / c23c96b - lavf 55.39.100 / 55.18.0 - avformat.h + Add av_stream_get_side_data() to access stream-level side data + in the same way as av_packet_get_side_data(). + +2014-05-xx - xxxxxxx - lavu 52.86.100 - fifo.h + Add av_fifo_alloc_array() function. + +2014-05-19 - ef1d4ee / bddd8cb - lavu 52.85.100 / 53.15.0 - frame.h, display.h + Add AV_FRAME_DATA_DISPLAYMATRIX for exporting frame-level + spatial rendering on video frames for proper display. + +2014-05-19 - ef1d4ee / bddd8cb - lavc 55.64.100 / 55.53.0 - avcodec.h + Add AV_PKT_DATA_DISPLAYMATRIX for exporting packet-level + spatial rendering on video frames for proper display. + +2014-05-19 - 999a99c / a312f71 - lavf 55.38.101 / 55.17.1 - avformat.h + Deprecate AVStream.pts and the AVFrac struct, which was its only use case. + See use av_stream_get_end_pts() + +2014-05-18 - 68c0518 / fd05602 - lavc 55.63.100 / 55.52.0 - avcodec.h + Add avcodec_free_context(). From now on it should be used for freeing + AVCodecContext. + +2014-05-17 - 0eec06e - lavu 52.84.100 - time.h + Add av_gettime_relative() av_gettime_relative_is_monotonic() + +2014-05-15 - eacf7d6 / 0c1959b - lavf 55.38.100 / 55.17.0 - avformat.h + Add AVFMT_FLAG_BITEXACT flag. Muxers now use it instead of checking + CODEC_FLAG_BITEXACT on the first stream. + +2014-05-15 - 96cb4c8 - lswr 0.19.100 - swresample.h + Add swr_close() + +2014-05-11 - 14aef38 / 66e6c8a - lavu 52.83.100 / 53.14.0 - pixfmt.h + Add AV_PIX_FMT_VDA for new-style VDA acceleration. + +2014-05-xx - xxxxxxx - lavu 52.82.0 - fifo.h + Add av_fifo_freep() function. + +2014-05-02 - ba52fb11 - lavu 52.81.0 - opt.h + Add av_opt_set_dict2() function. + +2014-05-01 - e77b985 / a2941c8 - lavc 55.60.103 / 55.50.3 - avcodec.h + Deprecate CODEC_FLAG_MV0. It is replaced by the flag "mv0" in the + "mpv_flags" private option of the mpegvideo encoders. + +2014-05-01 - e40ae8c / 6484149 - lavc 55.60.102 / 55.50.2 - avcodec.h + Deprecate CODEC_FLAG_GMC. It is replaced by the "gmc" private option of the + libxvid encoder. + +2014-05-01 - 1851643 / b2c3171 - lavc 55.60.101 / 55.50.1 - avcodec.h + Deprecate CODEC_FLAG_NORMALIZE_AQP. It is replaced by the flag "naq" in the + "mpv_flags" private option of the mpegvideo encoders. + +2014-05-01 - cac07d0 / 5fcceda - avcodec.h + Deprecate CODEC_FLAG_INPUT_PRESERVED. Its functionality is replaced by passing + reference-counted frames to encoders. + +2014-04-29 - 1bf6396 - lavc 55.60.100 - avcodec.h + Add AVCodecDescriptor.mime_types field. + +2014-04-29 - xxxxxxx - lavu 52.80.0 - hash.h + Add av_hash_final_bin(), av_hash_final_hex() and av_hash_final_b64(). + +2014-03-07 - 8b2a130 - lavc 55.50.0 / 55.53.100 - dxva2.h + Add FF_DXVA2_WORKAROUND_INTEL_CLEARVIDEO for old Intel GPUs. + +2014-04-22 - 502512e /dac7e8a - lavu 53.13.0 / 52.78.100 - avutil.h + Add av_get_time_base_q(). + +2014-04-17 - a8d01a7 / 0983d48 - lavu 53.12.0 / 52.77.100 - crc.h + Add AV_CRC_16_ANSI_LE crc variant. + +2014-04-XX - xxxxxxx - lavf xx.xx.1xx - avformat.h + Add av_format_inject_global_side_data() + +2014-04-12 - 4f698be - lavu 52.76.100 - log.h + Add av_log_get_flags() + +2014-04-11 - 6db42a2b - lavd 55.12.100 - avdevice.h + Add avdevice_capabilities_create() function. + Add avdevice_capabilities_free() function. + +2014-04-07 - 0a1cc04 / 8b17243 - lavu 52.75.100 / 53.11.0 - pixfmt.h + Add AV_PIX_FMT_YVYU422 pixel format. + +2014-04-04 - c1d0536 / 8542f9c - lavu 52.74.100 / 53.10.0 - replaygain.h + Full scale for peak values is now 100000 (instead of UINT32_MAX) and values + may overflow. + +2014-04-03 - c16e006 / 7763118 - lavu 52.73.100 / 53.9.0 - log.h + Add AV_LOG(c) macro to have 256 color debug messages. + +2014-04-03 - eaed4da9 - lavu 52.72.100 - opt.h + Add AV_OPT_MULTI_COMPONENT_RANGE define to allow return + multi-component option ranges. + +2014-03-29 - cd50a44b - lavu 52.70.100 - mem.h + Add av_dynarray_add_nofree() function. + +2014-02-24 - 3e1f241 / d161ae0 - lavu 52.69.100 / 53.8.0 - frame.h + Add av_frame_remove_side_data() for removing a single side data + instance from a frame. + +2014-03-24 - 83e8978 / 5a7e35d - lavu 52.68.100 / 53.7.0 - frame.h, replaygain.h + Add AV_FRAME_DATA_REPLAYGAIN for exporting replaygain tags. + Add a new header replaygain.h with the AVReplayGain struct. + +2014-03-24 - 83e8978 / 5a7e35d - lavc 55.54.100 / 55.36.0 - avcodec.h + Add AV_PKT_DATA_REPLAYGAIN for exporting replaygain tags. + +2014-03-24 - 595ba3b / 25b3258 - lavf 55.35.100 / 55.13.0 - avformat.h + Add AVStream.side_data and AVStream.nb_side_data for exporting stream-global + side data (e.g. replaygain tags, video rotation) + +2014-03-24 - bd34e26 / 0e2c3ee - lavc 55.53.100 / 55.35.0 - avcodec.h + Give the name AVPacketSideData to the previously anonymous struct used for + AVPacket.side_data. + + +-------- 8< --------- FFmpeg 2.2 was cut here -------- 8< --------- + +2014-03-18 - 37c07d4 - lsws 2.5.102 + Make gray16 full-scale. + +2014-03-16 - 6b1ca17 / 1481d24 - lavu 52.67.100 / 53.6.0 - pixfmt.h + Add RGBA64_LIBAV pixel format and variants for compatibility + +2014-03-11 - 3f3229c - lavf 55.34.101 - avformat.h + Set AVFormatContext.start_time_realtime when demuxing. + +2014-03-03 - 06fed440 - lavd 55.11.100 - avdevice.h + Add av_input_audio_device_next(). + Add av_input_video_device_next(). + Add av_output_audio_device_next(). + Add av_output_video_device_next(). + +2014-02-24 - fff5262 / 1155fd0 - lavu 52.66.100 / 53.5.0 - frame.h + Add av_frame_copy() for copying the frame data. + +2014-02-24 - a66be60 - lswr 0.18.100 - swresample.h + Add swr_is_initialized() for checking whether a resample context is initialized. + +2014-02-22 - 5367c0b / 7e86c27 - lavr 1.2.0 - avresample.h + Add avresample_is_open() for checking whether a resample context is open. + +2014-02-19 - 6a24d77 / c3ecd96 - lavu 52.65.100 / 53.4.0 - opt.h + Add AV_OPT_FLAG_EXPORT and AV_OPT_FLAG_READONLY to mark options meant (only) + for reading. + +2014-02-19 - f4c8d00 / 6bb8720 - lavu 52.64.101 / 53.3.1 - opt.h + Deprecate unused AV_OPT_FLAG_METADATA. + +2014-02-xx - xxxxxxx - lavd 55.10.100 - avdevice.h + Add avdevice_list_devices() and avdevice_free_list_devices() + +2014-02-16 - db3c970 - lavf 55.33.100 - avio.h + Add avio_find_protocol_name() to find out the name of the protocol that would + be selected for a given URL. + +2014-02-15 - a2bc6c1 / c98f316 - lavu 52.64.100 / 53.3.0 - frame.h + Add AV_FRAME_DATA_DOWNMIX_INFO value to the AVFrameSideDataType enum and + downmix_info.h API, which identify downmix-related metadata. + +2014-02-11 - 1b05ac2 - lavf 55.32.100 - avformat.h + Add av_write_uncoded_frame() and av_interleaved_write_uncoded_frame(). + +2014-02-04 - 3adb5f8 / d9ae103 - lavf 55.30.100 / 55.11.0 - avformat.h + Add AVFormatContext.max_interleave_delta for controlling amount of buffering + when interleaving. + +2014-02-02 - 5871ee5 - lavf 55.29.100 - avformat.h + Add output_ts_offset muxing option to AVFormatContext. + +2014-01-27 - 102bd64 - lavd 55.7.100 - avdevice.h + lavf 55.28.100 - avformat.h + Add avdevice_dev_to_app_control_message() function. + +2014-01-27 - 7151411 - lavd 55.6.100 - avdevice.h + lavf 55.27.100 - avformat.h + Add avdevice_app_to_dev_control_message() function. + +2014-01-24 - 86bee79 - lavf 55.26.100 - avformat.h + Add AVFormatContext option metadata_header_padding to allow control over the + amount of padding added. + +2014-01-20 - eef74b2 / 93c553c - lavc 55.48.102 / 55.32.1 - avcodec.h + Edges are not required anymore on video buffers allocated by get_buffer2() + (i.e. as if the CODEC_FLAG_EMU_EDGE flag was always on). Deprecate + CODEC_FLAG_EMU_EDGE and avcodec_get_edge_width(). + +2014-01-19 - 1a193c4 - lavf 55.25.100 - avformat.h + Add avformat_get_mov_video_tags() and avformat_get_mov_audio_tags(). + +2014-01-19 - xxxxxxx - lavu 52.63.100 - rational.h + Add av_make_q() function. + +2014-01-05 - 4cf4da9 / 5b4797a - lavu 52.62.100 / 53.2.0 - frame.h + Add AV_FRAME_DATA_MATRIXENCODING value to the AVFrameSideDataType enum, which + identifies AVMatrixEncoding data. + +2014-01-05 - 751385f / 5c437fb - lavu 52.61.100 / 53.1.0 - channel_layout.h + Add values for various Dolby flags to the AVMatrixEncoding enum. + +2014-01-04 - b317f94 - lavu 52.60.100 - mathematics.h + Add av_add_stable() function. + +2013-12-22 - 911676c - lavu 52.59.100 - avstring.h + Add av_strnlen() function. + +2013-12-09 - 64f73ac - lavu 52.57.100 - opencl.h + Add av_opencl_benchmark() function. + +2013-11-30 - 82b2e9c - lavu 52.56.100 - ffversion.h + Moves version.h to libavutil/ffversion.h. + Install ffversion.h and make it public. + +2013-12-11 - 29c83d2 / b9fb59d,409a143 / 9431356,44967ab / d7b3ee9 - lavc 55.45.101 / 55.28.1 - avcodec.h + av_frame_alloc(), av_frame_unref() and av_frame_free() now can and should be + used instead of avcodec_alloc_frame(), avcodec_get_frame_defaults() and + avcodec_free_frame() respectively. The latter three functions are deprecated. + +2013-12-09 - 7a60348 / 7e244c6- - lavu 52.58.100 / 52.20.0 - frame.h + Add AV_FRAME_DATA_STEREO3D value to the AVFrameSideDataType enum and + stereo3d.h API, that identify codec-independent stereo3d information. + +2013-11-26 - 625b290 / 1eaac1d- - lavu 52.55.100 / 52.19.0 - frame.h + Add AV_FRAME_DATA_A53_CC value to the AVFrameSideDataType enum, which + identifies ATSC A53 Part 4 Closed Captions data. + +2013-11-22 - 6859065 - lavu 52.54.100 - avstring.h + Add av_utf8_decode() function. + +2013-11-22 - fb7d70c - lavc 55.44.100 - avcodec.h + Add HEVC profiles + +2013-11-20 - c28b61c - lavc 55.44.100 - avcodec.h + Add av_packet_{un,}pack_dictionary() + Add AV_PKT_METADATA_UPDATE side data type, used to transmit key/value + strings between a stream and the application. + +2013-11-14 - 7c888ae / cce3e0a - lavu 52.53.100 / 52.18.0 - mem.h + Move av_fast_malloc() and av_fast_realloc() for libavcodec to libavutil. + +2013-11-14 - b71e4d8 / 8941971 - lavc 55.43.100 / 55.27.0 - avcodec.h + Deprecate AVCodecContext.error_rate, it is replaced by the 'error_rate' + private option of the mpegvideo encoder family. + +2013-11-14 - 31c09b7 / 728c465 - lavc 55.42.100 / 55.26.0 - vdpau.h + Add av_vdpau_get_profile(). + Add av_vdpau_alloc_context(). This function must from now on be + used for allocating AVVDPAUContext. + +2013-11-04 - be41f21 / cd8f772 - lavc 55.41.100 / 55.25.0 - avcodec.h + lavu 52.51.100 - frame.h + Add ITU-R BT.2020 and other not yet included values to color primaries, + transfer characteristics and colorspaces. + +2013-11-04 - 85cabf1 - lavu 52.50.100 - avutil.h + Add av_fopen_utf8() + +2013-10-31 - 78265fc / 28096e0 - lavu 52.49.100 / 52.17.0 - frame.h + Add AVFrame.flags and AV_FRAME_FLAG_CORRUPT. + + +-------- 8< --------- FFmpeg 2.1 was cut here -------- 8< --------- + +2013-10-27 - dbe6f9f - lavc 55.39.100 - avcodec.h + Add CODEC_CAP_DELAY support to avcodec_decode_subtitle2. + +2013-10-27 - d61617a - lavu 52.48.100 - parseutils.h + Add av_get_known_color_name(). + +2013-10-17 - 8696e51 - lavu 52.47.100 - opt.h + Add AV_OPT_TYPE_CHANNEL_LAYOUT and channel layout option handlers + av_opt_get_channel_layout() and av_opt_set_channel_layout(). + +2013-10-06 - ccf96f8 -libswscale 2.5.101 - options.c + Change default scaler to bicubic + +2013-10-03 - e57dba0 - lavc 55.34.100 - avcodec.h + Add av_codec_get_max_lowres() + +2013-10-02 - 5082fcc - lavf 55.19.100 - avformat.h + Add audio/video/subtitle AVCodec fields to AVFormatContext to force specific + decoders + +2013-09-28 - 7381d31 / 0767bfd - lavfi 3.88.100 / 3.11.0 - avfilter.h + Add AVFilterGraph.execute and AVFilterGraph.opaque for custom slice threading + implementations. + +2013-09-21 - 85f8a3c / e208e6d - lavu 52.46.100 / 52.16.0 - pixfmt.h + Add interleaved 4:2:2 8/10-bit formats AV_PIX_FMT_NV16 and + AV_PIX_FMT_NV20. + +2013-09-16 - c74c3fb / 3feb3d6 - lavu 52.44.100 / 52.15.0 - mem.h + Add av_reallocp. + +2013-09-04 - 3e1f507 - lavc 55.31.101 - avcodec.h + avcodec_close() argument can be NULL. + +2013-09-04 - 36cd017a - lavf 55.16.101 - avformat.h + avformat_close_input() argument can be NULL and point on NULL. + +2013-08-29 - e31db62 - lavf 55.15.100 - avformat.h + Add av_format_get_probe_score(). + +2013-08-15 - 1e0e193 - lsws 2.5.100 - + Add a sws_dither AVOption, allowing to set the dither algorithm used + +2013-08-11 - d404fe35 - lavc 55.27.100 - vdpau.h + Add a render2 alternative to the render callback function. + +2013-08-11 - af05edc - lavc 55.26.100 - vdpau.h + Add allocation function for AVVDPAUContext, allowing + to extend it in the future without breaking ABI/API. + +2013-08-10 - 67a580f / 5a9a9d4 - lavc 55.25.100 / 55.16.0 - avcodec.h + Extend AVPacket API with av_packet_unref, av_packet_ref, + av_packet_move_ref, av_packet_copy_props, av_packet_free_side_data. + +2013-08-05 - 9547e3e / f824535 - lavc 55.22.100 / 55.13.0 - avcodec.h + Deprecate the bitstream-related members from struct AVVDPAUContext. + The bitstream buffers no longer need to be explicitly freed. + +2013-08-05 - 3b805dc / 549294f - lavc 55.21.100 / 55.12.0 - avcodec.h + Deprecate the CODEC_CAP_HWACCEL_VDPAU codec capability. Use CODEC_CAP_HWACCEL + and select the AV_PIX_FMT_VDPAU format with get_format() instead. + +2013-08-05 - 4ee0984 / a0ad5d0 - lavu 52.41.100 / 52.14.0 - pixfmt.h + Deprecate AV_PIX_FMT_VDPAU_*. Use AV_PIX_FMT_VDPAU instead. + +2013-08-02 - 82fdfe8 / a8b1927 - lavc 55.20.100 / 55.11.0 - avcodec.h + Add output_picture_number to AVCodecParserContext. + +2013-07-23 - abc8110 - lavc 55.19.100 - avcodec.h + Add avcodec_chroma_pos_to_enum() + Add avcodec_enum_to_chroma_pos() + + +-------- 8< --------- FFmpeg 2.0 was cut here -------- 8< --------- + +2013-07-03 - 838bd73 - lavfi 3.78.100 - avfilter.h + Deprecate avfilter_graph_parse() in favor of the equivalent + avfilter_graph_parse_ptr(). + +2013-06-24 - af5f9c0 / 95d5246 - lavc 55.17.100 / 55.10.0 - avcodec.h + Add MPEG-2 AAC profiles + +2013-06-25 - af5f9c0 / 95d5246 - lavf 55.10.100 - avformat.h + Add AV_DISPOSITION_* flags to indicate text track kind. + +2013-06-15 - 99b8cd0 - lavu 52.36.100 + Add AVRIPEMD: + av_ripemd_alloc() + av_ripemd_init() + av_ripemd_update() + av_ripemd_final() + +2013-06-04 - 30b491f / fc962d4 - lavu 52.35.100 / 52.13.0 - mem.h + Add av_realloc_array and av_reallocp_array + +2013-05-30 - 682b227 - lavu 52.35.100 + Add AVSHA512: + av_sha512_alloc() + av_sha512_init() + av_sha512_update() + av_sha512_final() + +2013-05-24 - 8d4e969 / 129bb23 - lavfi 3.10.0 / 3.70.100 - avfilter.h + Add support for slice multithreading to lavfi. Filters supporting threading + are marked with AVFILTER_FLAG_SLICE_THREADS. + New fields AVFilterContext.thread_type, AVFilterGraph.thread_type and + AVFilterGraph.nb_threads (accessible directly or through AVOptions) may be + used to configure multithreading. + +2013-05-24 - fe40a9f / 2a6eaea - lavu 52.12.0 / 52.34.100 - cpu.h + Add av_cpu_count() function for getting the number of logical CPUs. + +2013-05-24 - 0c25c39 / b493847 - lavc 55.7.0 / 55.12.100 - avcodec.h + Add picture_structure to AVCodecParserContext. + +2013-05-17 - 3a751ea - lavu 52.33.100 - opt.h + Add AV_OPT_TYPE_COLOR value to AVOptionType enum. + +2013-05-13 - e398416 - lavu 52.31.100 - mem.h + Add av_dynarray2_add(). + +2013-05-12 - 1776177 - lavfi 3.65.100 + Add AVFILTER_FLAG_SUPPORT_TIMELINE* filter flags. + +2013-04-19 - 380cfce - lavc 55.4.100 + Add AV_CODEC_PROP_TEXT_SUB property for text based subtitles codec. + +2013-04-18 - 7c1a002 - lavf 55.3.100 + The matroska demuxer can now output proper verbatim ASS packets. It will + become the default starting lavf 56.0.100. + +2013-04-10 - af0d270 - lavu 25.26.100 - avutil.h,opt.h + Add av_int_list_length() + and av_opt_set_int_list(). + +2013-03-30 - 5c73645 - lavu 52.24.100 - samplefmt.h + Add av_samples_alloc_array_and_samples(). + +2013-03-29 - ef7b6b4 - lavf 55.1.100 - avformat.h + Add av_guess_frame_rate() + +2013-03-20 - 8d928a9 - lavu 52.22.100 - opt.h + Add AV_OPT_TYPE_DURATION value to AVOptionType enum. + +2013-03-17 - 7aa9af5 - lavu 52.20.100 - opt.h + Add AV_OPT_TYPE_VIDEO_RATE value to AVOptionType enum. + + +-------- 8< --------- FFmpeg 1.2 was cut here -------- 8< --------- + +2013-03-07 - 9767ec6 - lavu 52.18.100 - avstring.h,bprint.h + Add av_escape() and av_bprint_escape() API. + +2013-02-24 - b59cd08 - lavfi 3.41.100 - buffersink.h + Add sample_rates field to AVABufferSinkParams. + +2013-01-17 - a1a707f - lavf 54.61.100 + Add av_codec_get_tag2(). + +2013-01-01 - 2eb2e17 - lavfi 3.34.100 + Add avfilter_get_audio_buffer_ref_from_arrays_channels. + + +-------- 8< --------- FFmpeg 1.1 was cut here -------- 8< --------- + +2012-12-20 - 34de47aa - lavfi 3.29.100 - avfilter.h + Add AVFilterLink.channels, avfilter_link_get_channels() + and avfilter_ref_get_channels(). + +2012-12-15 - 96d815fc - lavc 54.80.100 - avcodec.h + Add pkt_size field to AVFrame. + +2012-11-25 - c70ec631 - lavu 52.9.100 - opt.h + Add the following convenience functions to opt.h: + av_opt_get_image_size + av_opt_get_pixel_fmt + av_opt_get_sample_fmt + av_opt_set_image_size + av_opt_set_pixel_fmt + av_opt_set_sample_fmt + +2012-11-17 - 4cd74c81 - lavu 52.8.100 - bprint.h + Add av_bprint_strftime(). + +2012-11-15 - 92648107 - lavu 52.7.100 - opt.h + Add av_opt_get_key_value(). + +2012-11-13 - 79456652 - lavfi 3.23.100 - avfilter.h + Add channels field to AVFilterBufferRefAudioProps. + +2012-11-03 - 481fdeee - lavu 52.3.100 - opt.h + Add AV_OPT_TYPE_SAMPLE_FMT value to AVOptionType enum. + +2012-10-21 - 6fb2fd8 - lavc 54.68.100 - avcodec.h + lavfi 3.20.100 - avfilter.h + Add AV_PKT_DATA_STRINGS_METADATA side data type, used to transmit key/value + strings between AVPacket and AVFrame, and add metadata field to + AVCodecContext (which shall not be accessed by users; see AVFrame metadata + instead). + +2012-09-27 - a70b493 - lavd 54.3.100 - version.h + Add LIBAVDEVICE_IDENT symbol. + +2012-09-27 - a70b493 - lavfi 3.18.100 - version.h + Add LIBAVFILTER_IDENT symbol. + +2012-09-27 - a70b493 - libswr 0.16.100 - version.h + Add LIBSWRESAMPLE_VERSION, LIBSWRESAMPLE_BUILD + and LIBSWRESAMPLE_IDENT symbols. + + +-------- 8< --------- FFmpeg 1.0 was cut here -------- 8< --------- + +2012-09-06 - 29e972f - lavu 51.72.100 - parseutils.h + Add av_small_strptime() time parsing function. + + Can be used as a stripped-down replacement for strptime(), on + systems which do not support it. + +2012-08-25 - 2626cc4 - lavf 54.28.100 + Matroska demuxer now identifies SRT subtitles as AV_CODEC_ID_SUBRIP instead + of AV_CODEC_ID_TEXT. + +2012-08-13 - 5c0d8bc - lavfi 3.8.100 - avfilter.h + Add avfilter_get_class() function, and priv_class field to AVFilter + struct. + +2012-08-12 - a25346e - lavu 51.69.100 - opt.h + Add AV_OPT_FLAG_FILTERING_PARAM symbol in opt.h. + +2012-07-31 - 23fc4dd - lavc 54.46.100 + Add channels field to AVFrame. + +2012-07-30 - f893904 - lavu 51.66.100 + Add av_get_channel_description() + and av_get_standard_channel_layout() functions. + +2012-07-21 - 016a472 - lavc 54.43.100 + Add decode_error_flags field to AVFrame. + +2012-07-20 - b062936 - lavf 54.18.100 + Add avformat_match_stream_specifier() function. + +2012-07-14 - f49ec1b - lavc 54.38.100 - avcodec.h + Add metadata to AVFrame, and the accessor functions + av_frame_get_metadata() and av_frame_set_metadata(). + +2012-07-10 - 0e003d8 - lavc 54.33.100 + Add av_fast_padded_mallocz(). + +2012-07-10 - 21d5609 - lavfi 3.2.0 - avfilter.h + Add init_opaque() callback to AVFilter struct. + +2012-06-26 - e6674e4 - lavu 51.63.100 - imgutils.h + Add functions to libavutil/imgutils.h: + av_image_get_buffer_size() + av_image_fill_arrays() + av_image_copy_to_buffer() + +2012-06-24 - c41899a - lavu 51.62.100 - version.h + version moved from avutil.h to version.h + +2012-04-11 - 359abb1 - lavu 51.58.100 - error.h + Add av_make_error_string() and av_err2str() utilities to + libavutil/error.h. + +2012-06-05 - 62b39d4 - lavc 54.24.100 + Add pkt_duration field to AVFrame. + +2012-05-24 - f2ee065 - lavu 51.54.100 + Move AVPALETTE_SIZE and AVPALETTE_COUNT macros from + libavcodec/avcodec.h to libavutil/pixfmt.h. + +2012-05-14 - 94a9ac1 - lavf 54.5.100 + Add av_guess_sample_aspect_ratio() function. + +2012-04-20 - 65fa7bc - lavfi 2.70.100 + Add avfilter_unref_bufferp() to avfilter.h. + +2012-04-13 - 162e400 - lavfi 2.68.100 + Install libavfilter/asrc_abuffer.h public header. + +2012-03-26 - a67d9cf - lavfi 2.66.100 + Add avfilter_fill_frame_from_{audio_,}buffer_ref() functions. + +2013-05-15 - ff46809 / e6c4ac7 - lavu 52.32.100 / 52.11.0 - pixdesc.h + Replace PIX_FMT_* flags with AV_PIX_FMT_FLAG_*. + +2013-04-03 - 6fc58a8 / 507b1e4 - lavc 55.7.100 / 55.4.0 - avcodec.h + Add field_order to AVCodecParserContext. + +2013-04-19 - f4b05cd / 5e83d9a - lavc 55.5.100 / 55.2.0 - avcodec.h + Add CODEC_FLAG_UNALIGNED to allow decoders to produce unaligned output. + +2013-04-11 - lavfi 3.53.100 / 3.8.0 + 231fd44 / 38f0c07 - Move all content from avfiltergraph.h to avfilter.h. Deprecate + avfilterhraph.h, user applications should include just avfilter.h + 86070b8 / bc1a985 - Add avfilter_graph_alloc_filter(), deprecate avfilter_open() and + avfilter_graph_add_filter(). + 4fde705 / 1113672 - Add AVFilterContext.graph pointing to the AVFilterGraph that contains the + filter. + 710b0aa / 48a5ada - Add avfilter_init_str(), deprecate avfilter_init_filter(). + 46de9ba / 1ba95a9 - Add avfilter_init_dict(). + 16fc24b / 7cdd737 - Add AVFilter.flags field and AVFILTER_FLAG_DYNAMIC_{INPUTS,OUTPUTS} flags. + f4db6bf / 7e8fe4b - Add avfilter_pad_count() for counting filter inputs/outputs. + 835cc0f / fa2a34c - Add avfilter_next(), deprecate av_filter_next(). + Deprecate avfilter_uninit(). + +2013-04-09 - lavfi 3.51.100 / 3.7.0 - avfilter.h + 0594ef0 / b439c99 - Add AVFilter.priv_class for exporting filter options through the + AVOptions API in the similar way private options work in lavc and lavf. + 44d4488 / 8114c10 - Add avfilter_get_class(). + Switch all filters to use AVOptions. + +2013-03-19 - 17ebef2 / 2c328a9 - lavu 52.20.100 / 52.9.0 - pixdesc.h + Add av_pix_fmt_count_planes() function for counting planes in a pixel format. + +2013-03-16 - ecade98 / 42c7c61 - lavfi 3.47.100 / 3.6.0 + Add AVFilterGraph.nb_filters, deprecate AVFilterGraph.filter_count. + +2013-03-08 - Reference counted buffers - lavu 52.8.0, lavc 55.0.100 / 55.0.0, lavf 55.0.100 / 55.0.0, +lavd 54.4.100 / 54.0.0, lavfi 3.5.0 + 36099df / 8e401db, 532f31a / 1cec062 - add a new API for reference counted buffers and buffer + pools (new header libavutil/buffer.h). + 2653e12 / 1afddbe - add AVPacket.buf to allow reference counting for the AVPacket data. + Add av_packet_from_data() function for constructing packets from + av_malloc()ed data. + c4e8821 / 7ecc2d4 - move AVFrame from lavc to lavu (new header libavutil/frame.h), add + AVFrame.buf/extended_buf to allow reference counting for the AVFrame + data. Add new API for working with reference-counted AVFrames. + 80e9e63 / 759001c - add the refcounted_frames field to AVCodecContext to make audio and + video decoders return reference-counted frames. Add get_buffer2() + callback to AVCodecContext which allocates reference-counted frames. + Add avcodec_default_get_buffer2() as the default get_buffer2() + implementation. + Deprecate AVCodecContext.get_buffer() / release_buffer() / + reget_buffer(), avcodec_default_get_buffer(), + avcodec_default_reget_buffer(), avcodec_default_release_buffer(). + Remove avcodec_default_free_buffers(), which should not have ever + been called from outside of lavc. + Deprecate the following AVFrame fields: + * base -- is now stored in AVBufferRef + * reference, type, buffer_hints -- are unnecessary in the new API + * hwaccel_picture_private, owner, thread_opaque -- should not + have been acessed from outside of lavc + * qscale_table, qstride, qscale_type, mbskip_table, motion_val, + mb_type, dct_coeff, ref_index -- mpegvideo-specific tables, + which are not exported anymore. + a05a44e / 7e35037 - switch libavfilter to use AVFrame instead of AVFilterBufferRef. Add + av_buffersrc_add_frame(), deprecate av_buffersrc_buffer(). + Add av_buffersink_get_frame() and av_buffersink_get_samples(), + deprecate av_buffersink_read() and av_buffersink_read_samples(). + Deprecate AVFilterBufferRef and all functions for working with it. + +2013-03-17 - 6c17ff8 / 12c5c1d - lavu 52.19.100 / 52.8.0 - avstring.h + Add av_isdigit, av_isgraph, av_isspace, av_isxdigit. + +2013-02-23 - 71cf094 / 9f12235 - lavfi 3.40.100 / 3.4.0 - avfiltergraph.h + Add resample_lavr_opts to AVFilterGraph for setting libavresample options + for auto-inserted resample filters. + +2013-01-25 - e7e14bc / 38c1466 - lavu 52.17.100 / 52.7.0 - dict.h + Add av_dict_parse_string() to set multiple key/value pairs at once from a + string. + +2013-01-25 - 25be630 / b85a5e8 - lavu 52.16.100 / 52.6.0 - avstring.h + Add av_strnstr() + +2013-01-15 - e7e0186 / 8ee288d - lavu 52.15.100 / 52.5.0 - hmac.h + Add AVHMAC. + +2013-01-13 - 8ee7b38 / 44e065d - lavc 54.87.100 / 54.36.0 - vdpau.h + Add AVVDPAUContext struct for VDPAU hardware-accelerated decoding. + +2013-01-12 - dae382b / 169fb94 - lavu 52.14.100 / 52.4.0 - pixdesc.h + Add AV_PIX_FMT_VDPAU flag. + +2013-01-07 - 249fca3 / 074a00d - lavr 1.1.0 + Add avresample_set_channel_mapping() for input channel reordering, + duplication, and silencing. + +2012-12-29 - 2ce43b3 / d8fd06c - lavu 52.13.100 / 52.3.0 - avstring.h + Add av_basename() and av_dirname(). + +2012-11-11 - 03b0787 / 5980f5d - lavu 52.6.100 / 52.2.0 - audioconvert.h + Rename audioconvert.h to channel_layout.h. audioconvert.h is now deprecated. + +2012-11-05 - 7d26be6 / dfde8a3 - lavu 52.5.100 / 52.1.0 - intmath.h + Add av_ctz() for trailing zero bit count + +2012-10-21 - e3a91c5 / a893655 - lavu 51.77.100 / 51.45.0 - error.h + Add AVERROR_EXPERIMENTAL + +2012-10-12 - a33ed6b / d2fcb35 - lavu 51.76.100 / 51.44.0 - pixdesc.h + Add functions for accessing pixel format descriptors. + Accessing the av_pix_fmt_descriptors array directly is now + deprecated. + +2012-10-11 - f391e40 / 9a92aea - lavu 51.75.100 / 51.43.0 - aes.h, md5.h, sha.h, tree.h + Add functions for allocating the opaque contexts for the algorithms, + +2012-10-10 - de31814 / b522000 - lavf 54.32.100 / 54.18.0 - avio.h + Add avio_closep to complement avio_close. + +2012-10-08 - ae77266 / 78071a1 - lavu 51.74.100 / 51.42.0 - pixfmt.h + Rename PixelFormat to AVPixelFormat and all PIX_FMT_* to AV_PIX_FMT_*. + To provide backwards compatibility, PixelFormat is now #defined as + AVPixelFormat. + Note that this can break user code that includes pixfmt.h and uses the + 'PixelFormat' identifier. Such code should either #undef PixelFormat + or stop using the PixelFormat name. + +2012-10-05 - 55c49af / e7ba5b1 - lavr 1.0.0 - avresample.h + Data planes parameters to avresample_convert() and + avresample_read() are now uint8_t** instead of void**. + Libavresample is now stable. + +2012-09-24 - 46a3595 / a42aada - lavc 54.59.100 / 54.28.0 - avcodec.h + Add avcodec_free_frame(). This function must now + be used for freeing an AVFrame. + +2012-09-12 - e3e09f2 / 8919fee - lavu 51.73.100 / 51.41.0 - audioconvert.h + Added AV_CH_LOW_FREQUENCY_2 channel mask value. + +2012-09-04 - b21b5b0 / 686a329 - lavu 51.71.100 / 51.40.0 - opt.h + Reordered the fields in default_val in AVOption, changed which + default_val field is used for which AVOptionType. + +2012-08-30 - 98298eb / a231832 - lavc 54.54.101 / 54.26.1 - avcodec.h + Add codec descriptor properties AV_CODEC_PROP_LOSSY and + AV_CODEC_PROP_LOSSLESS. + +2012-08-18 - lavc 54.26 - avcodec.h + Add codec descriptors for accessing codec properties without having + to refer to a specific decoder or encoder. + + f5f3684 / c223d79 - Add an AVCodecDescriptor struct and functions + avcodec_descriptor_get() and avcodec_descriptor_next(). + f5f3684 / 51efed1 - Add AVCodecDescriptor.props and AV_CODEC_PROP_INTRA_ONLY. + 6c180b3 / 91e59fe - Add avcodec_descriptor_get_by_name(). + +2012-08-08 - f5f3684 / 987170c - lavu 51.68.100 / 51.38.0 - dict.h + Add av_dict_count(). + +2012-08-07 - 7a72695 / 104e10f - lavc 54.51.100 / 54.25.0 - avcodec.h + Rename CodecID to AVCodecID and all CODEC_ID_* to AV_CODEC_ID_*. + To provide backwards compatibility, CodecID is now #defined as AVCodecID. + Note that this can break user code that includes avcodec.h and uses the + 'CodecID' identifier. Such code should either #undef CodecID or stop using the + CodecID name. + +2012-08-03 - e776ee8 / 239fdf1 - lavu 51.66.101 / 51.37.1 - cpu.h + lsws 2.1.1 - swscale.h + Rename AV_CPU_FLAG_MMX2 ---> AV_CPU_FLAG_MMXEXT. + Rename SWS_CPU_CAPS_MMX2 ---> SWS_CPU_CAPS_MMXEXT. + +2012-07-29 - 7c26761 / 681ed00 - lavf 54.22.100 / 54.13.0 - avformat.h + Add AVFMT_FLAG_NOBUFFER for low latency use cases. + +2012-07-10 - fbe0245 / f3e5e6f - lavu 51.65.100 / 51.37.0 + Add av_malloc_array() and av_mallocz_array() + +2012-06-22 - e847f41 / d3d3a32 - lavu 51.61.100 / 51.34.0 + Add av_usleep() + +2012-06-20 - 4da42eb / ae0a301 - lavu 51.60.100 / 51.33.0 + Move av_gettime() to libavutil, add libavutil/time.h + +2012-06-09 - 82edf67 / 3971be0 - lavr 0.0.3 + Add a parameter to avresample_build_matrix() for Dolby/DPLII downmixing. + +2012-06-12 - c7b9eab / 9baeff9 - lavfi 2.79.100 / 2.23.0 - avfilter.h + Add AVFilterContext.nb_inputs/outputs. Deprecate + AVFilterContext.input/output_count. + +2012-06-12 - c7b9eab / 84b9fbe - lavfi 2.79.100 / 2.22.0 - avfilter.h + Add avfilter_pad_get_type() and avfilter_pad_get_name(). Those + should now be used instead of accessing AVFilterPad members + directly. + +2012-06-12 - 3630a07 / b0f0dfc - lavu 51.57.100 / 51.32.0 - audioconvert.h + Add av_get_channel_layout_channel_index(), av_get_channel_name() + and av_channel_layout_extract_channel(). + +2012-05-25 - 53ce990 / 154486f - lavu 51.55.100 / 51.31.0 - opt.h + Add av_opt_set_bin() + +2012-05-15 - lavfi 2.74.100 / 2.17.0 + Add support for audio filters + 61930bd / ac71230, 1cbf7fb / a2cd9be - add video/audio buffer sink in a new installed + header buffersink.h + 1cbf7fb / 720c6b7 - add av_buffersrc_write_frame(), deprecate + av_vsrc_buffer_add_frame() + 61930bd / ab16504 - add avfilter_copy_buf_props() + 61930bd / 9453c9e - add extended_data to AVFilterBuffer + 61930bd / 1b8c927 - add avfilter_get_audio_buffer_ref_from_arrays() + +2012-05-09 - lavu 51.53.100 / 51.30.0 - samplefmt.h + 61930bd / 142e740 - add av_samples_copy() + 61930bd / 6d7f617 - add av_samples_set_silence() + +2012-05-09 - 61930bd / a5117a2 - lavc 54.21.101 / 54.13.1 + For audio formats with fixed frame size, the last frame + no longer needs to be padded with silence, libavcodec + will handle this internally (effectively all encoders + behave as if they had CODEC_CAP_SMALL_LAST_FRAME set). + +2012-05-07 - 653d117 / 828bd08 - lavc 54.20.100 / 54.13.0 - avcodec.h + Add sample_rate and channel_layout fields to AVFrame. + +2012-05-01 - 2330eb1 / 4010d72 - lavr 0.0.1 + Change AV_MIX_COEFF_TYPE_Q6 to AV_MIX_COEFF_TYPE_Q8. + +2012-04-25 - e890b68 / 3527a73 - lavu 51.48.100 / 51.29.0 - cpu.h + Add av_parse_cpu_flags() + +2012-04-24 - 3ead79e / c8af852 - lavr 0.0.0 + Add libavresample audio conversion library + +2012-04-20 - 3194ab7 / 0c0d1bc - lavu 51.47.100 / 51.28.0 - audio_fifo.h + Add audio FIFO functions: + av_audio_fifo_free() + av_audio_fifo_alloc() + av_audio_fifo_realloc() + av_audio_fifo_write() + av_audio_fifo_read() + av_audio_fifo_drain() + av_audio_fifo_reset() + av_audio_fifo_size() + av_audio_fifo_space() + +2012-04-14 - lavfi 2.70.100 / 2.16.0 - avfiltergraph.h + 7432bcf / d7bcc71 Add avfilter_graph_parse2(). + +2012-04-08 - 6bfb304 / 4d693b0 - lavu 51.46.100 / 51.27.0 - samplefmt.h + Add av_get_packed_sample_fmt() and av_get_planar_sample_fmt() + +2012-03-21 - b75c67d - lavu 51.43.100 + Add bprint.h for bprint API. + +2012-02-21 - 9cbf17e - lavc 54.4.100 + Add av_get_pcm_codec() function. + +2012-02-16 - 560b224 - libswr 0.7.100 + Add swr_set_matrix() function. + +2012-02-09 - c28e7af - lavu 51.39.100 + Add a new installed header libavutil/timestamp.h with timestamp + utilities. + +2012-02-06 - 70ffda3 - lavu 51.38.100 + Add av_parse_ratio() function to parseutils.h. + +2012-02-06 - 70ffda3 - lavu 51.38.100 + Add AV_LOG_MAX_OFFSET macro to log.h. + +2012-02-02 - 0eaa123 - lavu 51.37.100 + Add public timecode helpers. + +2012-01-24 - 0c3577b - lavfi 2.60.100 + Add avfilter_graph_dump. + +2012-03-20 - 0ebd836 / 3c90cc2 - lavfo 54.2.0 + Deprecate av_read_packet(), use av_read_frame() with + AVFMT_FLAG_NOPARSE | AVFMT_FLAG_NOFILLIN in AVFormatContext.flags + +2012-03-05 - lavc 54.10.100 / 54.8.0 + f095391 / 6699d07 Add av_get_exact_bits_per_sample() + f095391 / 9524cf7 Add av_get_audio_frame_duration() + +2012-03-04 - 2af8f2c / 44fe77b - lavc 54.8.100 / 54.7.0 - avcodec.h + Add av_codec_is_encoder/decoder(). + +2012-03-01 - 1eb7f39 / 442c132 - lavc 54.5.100 / 54.3.0 - avcodec.h + Add av_packet_shrink_side_data. + +2012-02-29 - 79ae084 / dd2a4bc - lavf 54.2.100 / 54.2.0 - avformat.h + Add AVStream.attached_pic and AV_DISPOSITION_ATTACHED_PIC, + used for dealing with attached pictures/cover art. + +2012-02-25 - 305e4b3 / c9bca80 - lavu 51.41.100 / 51.24.0 - error.h + Add AVERROR_UNKNOWN + NOTE: this was backported to 0.8 + +2012-02-20 - eadd426 / e9cda85 - lavc 54.2.100 / 54.2.0 + Add duration field to AVCodecParserContext + +2012-02-20 - eadd426 / 0b42a93 - lavu 51.40.100 / 51.23.1 - mathematics.h + Add av_rescale_q_rnd() + +2012-02-08 - f2b20b7 / 38d5533 - lavu 51.38.101 / 51.22.1 - pixdesc.h + Add PIX_FMT_PSEUDOPAL flag. + +2012-02-08 - f2b20b7 / 52f82a1 - lavc 54.2.100 / 54.1.0 + Add avcodec_encode_video2() and deprecate avcodec_encode_video(). + +2012-02-01 - 4c677df / 316fc74 - lavc 54.1.0 + Add av_fast_padded_malloc() as alternative for av_realloc() when aligned + memory is required. The buffer will always have FF_INPUT_BUFFER_PADDING_SIZE + zero-padded bytes at the end. + +2012-01-31 - a369a6b / dd6d3b0 - lavf 54.1.0 + Add avformat_get_riff_video_tags() and avformat_get_riff_audio_tags(). + NOTE: this was backported to 0.8 + +2012-01-31 - a369a6b / af08d9a - lavc 54.1.0 + Add avcodec_is_open() function. + NOTE: this was backported to 0.8 + +2012-01-30 - 151ecc2 / 8b93312 - lavu 51.36.100 / 51.22.0 - intfloat.h + Add a new installed header libavutil/intfloat.h with int/float punning + functions. + NOTE: this was backported to 0.8 + +2012-01-25 - lavf 53.31.100 / 53.22.0 + 3c5fe5b / f1caf01 Allow doing av_write_frame(ctx, NULL) for flushing possible + buffered data within a muxer. Added AVFMT_ALLOW_FLUSH for + muxers supporting it (av_write_frame makes sure it is called + only for muxers with this flag). + +2012-01-15 - lavc 53.56.105 / 53.34.0 + New audio encoding API: + 67f5650 / b2c75b6 Add CODEC_CAP_VARIABLE_FRAME_SIZE capability for use by audio + encoders. + 67f5650 / 5ee5fa0 Add avcodec_fill_audio_frame() as a convenience function. + 67f5650 / b2c75b6 Add avcodec_encode_audio2() and deprecate avcodec_encode_audio(). + Add AVCodec.encode2(). + +2012-01-12 - b18e17e / 3167dc9 - lavfi 2.59.100 / 2.15.0 + Add a new installed header -- libavfilter/version.h -- with version macros. + + +-------- 8< --------- FFmpeg 0.9 was cut here -------- 8< --------- + +2011-12-08 - a502939 - lavfi 2.52.0 + Add av_buffersink_poll_frame() to buffersink.h. + +2011-12-08 - 26c6fec - lavu 51.31.0 + Add av_log_format_line. + +2011-12-03 - 976b095 - lavu 51.30.0 + Add AVERROR_BUG. + +2011-11-24 - 573ffbb - lavu 51.28.1 + Add av_get_alt_sample_fmt() to samplefmt.h. + +2011-11-03 - 96949da - lavu 51.23.0 + Add av_strcasecmp() and av_strncasecmp() to avstring.h. + +2011-10-20 - b35e9e1 - lavu 51.22.0 + Add av_strtok() to avstring.h. + +2012-01-03 - ad1c8dd / b73ec05 - lavu 51.34.100 / 51.21.0 + Add av_popcount64 + +2011-12-18 - 7c29313 / 8400b12 - lavc 53.46.1 / 53.28.1 + Deprecate AVFrame.age. The field is unused. + +2011-12-12 - 8bc7fe4 / 5266045 - lavf 53.25.0 / 53.17.0 + Add avformat_close_input(). + Deprecate av_close_input_file() and av_close_input_stream(). + +2011-12-09 - c59b80c / b2890f5 - lavu 51.32.0 / 51.20.0 - audioconvert.h + Expand the channel layout list. + +2011-12-02 - e4de716 / 0eea212 - lavc 53.40.0 / 53.25.0 + Add nb_samples and extended_data fields to AVFrame. + Deprecate AVCODEC_MAX_AUDIO_FRAME_SIZE. + Deprecate avcodec_decode_audio3() in favor of avcodec_decode_audio4(). + avcodec_decode_audio4() writes output samples to an AVFrame, which allows + audio decoders to use get_buffer(). + +2011-12-04 - e4de716 / 560f773 - lavc 53.40.0 / 53.24.0 + Change AVFrame.data[4]/base[4]/linesize[4]/error[4] to [8] at next major bump. + Change AVPicture.data[4]/linesize[4] to [8] at next major bump. + Change AVCodecContext.error[4] to [8] at next major bump. + Add AV_NUM_DATA_POINTERS to simplify the bump transition. + +2011-11-24 - lavu 51.29.0 / 51.19.0 + 92afb43 / bd97b2e - add planar RGB pixel formats + 92afb43 / 6b0768e - add PIX_FMT_PLANAR and PIX_FMT_RGB pixel descriptions + +2011-11-23 - 8e576d5 / bbb46f3 - lavu 51.27.0 / 51.18.0 + Add av_samples_get_buffer_size(), av_samples_fill_arrays(), and + av_samples_alloc(), to samplefmt.h. + +2011-11-23 - 8e576d5 / 8889cc4 - lavu 51.27.0 / 51.17.0 + Add planar sample formats and av_sample_fmt_is_planar() to samplefmt.h. + +2011-11-19 - dbb38bc / f3a29b7 - lavc 53.36.0 / 53.21.0 + Move some AVCodecContext fields to a new private struct, AVCodecInternal, + which is accessed from a new field, AVCodecContext.internal. + - fields moved: + AVCodecContext.internal_buffer --> AVCodecInternal.buffer + AVCodecContext.internal_buffer_count --> AVCodecInternal.buffer_count + AVCodecContext.is_copy --> AVCodecInternal.is_copy + +2011-11-16 - 8709ba9 / 6270671 - lavu 51.26.0 / 51.16.0 + Add av_timegm() + +2011-11-13 - lavf 53.21.0 / 53.15.0 + New interrupt callback API, allowing per-AVFormatContext/AVIOContext + interrupt callbacks. + 5f268ca / 6aa0b98 Add AVIOInterruptCB struct and the interrupt_callback field to + AVFormatContext. + 5f268ca / 1dee0ac Add avio_open2() with additional parameters. Those are + an interrupt callback and an options AVDictionary. + This will allow passing AVOptions to protocols after lavf + 54.0. + +2011-11-06 - 13b7781 / ba04ecf - lavu 51.24.0 / 51.14.0 + Add av_strcasecmp() and av_strncasecmp() to avstring.h. + +2011-11-06 - 13b7781 / 07b172f - lavu 51.24.0 / 51.13.0 + Add av_toupper()/av_tolower() + +2011-11-05 - d8cab5c / b6d08f4 - lavf 53.19.0 / 53.13.0 + Add avformat_network_init()/avformat_network_deinit() + +2011-10-27 - 6faf0a2 / 512557b - lavc 53.24.0 / 53.15.0 + Remove avcodec_parse_frame. + Deprecate AVCodecContext.parse_only and CODEC_CAP_PARSE_ONLY. + +2011-10-19 - d049257 / 569129a - lavf 53.17.0 / 53.10.0 + Add avformat_new_stream(). Deprecate av_new_stream(). + +2011-10-13 - 91eb1b1 / b631fba - lavf 53.16.0 / 53.9.0 + Add AVFMT_NO_BYTE_SEEK AVInputFormat flag. + +2011-10-12 - lavu 51.21.0 / 51.12.0 + AVOptions API rewrite. + + - f884ef0 / 145f741 FF_OPT_TYPE* renamed to AV_OPT_TYPE_* + - new setting/getting functions with slightly different semantics: + f884ef0 / dac66da av_set_string3 -> av_opt_set + av_set_double -> av_opt_set_double + av_set_q -> av_opt_set_q + av_set_int -> av_opt_set_int + + f884ef0 / 41d9d51 av_get_string -> av_opt_get + av_get_double -> av_opt_get_double + av_get_q -> av_opt_get_q + av_get_int -> av_opt_get_int + + - f884ef0 / 8c5dcaa trivial rename av_next_option -> av_opt_next + - f884ef0 / 641c7af new functions - av_opt_child_next, av_opt_child_class_next + and av_opt_find2() + +2011-09-22 - a70e787 - lavu 51.17.0 + Add av_x_if_null(). + +2011-09-18 - 645cebb - lavc 53.16.0 + Add showall flag2 + +2011-09-16 - ea8de10 - lavfi 2.42.0 + Add avfilter_all_channel_layouts. + +2011-09-16 - 9899037 - lavfi 2.41.0 + Rename avfilter_all_* function names to avfilter_make_all_*. + + In particular, apply the renames: + avfilter_all_formats -> avfilter_make_all_formats + avfilter_all_channel_layouts -> avfilter_make_all_channel_layouts + avfilter_all_packing_formats -> avfilter_make_all_packing_formats + +2011-09-12 - 4381bdd - lavfi 2.40.0 + Change AVFilterBufferRefAudioProps.sample_rate type from uint32_t to int. + +2011-09-12 - 2c03174 - lavfi 2.40.0 + Simplify signature for avfilter_get_audio_buffer(), make it + consistent with avfilter_get_video_buffer(). + +2011-09-06 - 4f7dfe1 - lavfi 2.39.0 + Rename libavfilter/vsink_buffer.h to libavfilter/buffersink.h. + +2011-09-06 - c4415f6 - lavfi 2.38.0 + Unify video and audio sink API. + + In particular, add av_buffersink_get_buffer_ref(), deprecate + av_vsink_buffer_get_video_buffer_ref() and change the value for the + opaque field passed to the abuffersink init function. + +2011-09-04 - 61e2e29 - lavu 51.16.0 + Add av_asprintf(). + +2011-08-22 - dacd827 - lavf 53.10.0 + Add av_find_program_from_stream(). + +2011-08-20 - 69e2c1a - lavu 51.13.0 + Add av_get_media_type_string(). + +2011-09-03 - 1889c67 / fb4ca26 - lavc 53.13.0 + lavf 53.11.0 + lsws 2.1.0 + Add {avcodec,avformat,sws}_get_class(). + +2011-08-03 - 1889c67 / c11fb82 - lavu 51.15.0 + Add AV_OPT_SEARCH_FAKE_OBJ flag for av_opt_find() function. + +2011-08-14 - 323b930 - lavu 51.12.0 + Add av_fifo_peek2(), deprecate av_fifo_peek(). + +2011-08-26 - lavu 51.14.0 / 51.9.0 + - 976a8b2 / add41de..976a8b2 / abc78a5 Do not include intfloat_readwrite.h, + mathematics.h, rational.h, pixfmt.h, or log.h from avutil.h. + +2011-08-16 - 27fbe31 / 48f9e45 - lavf 53.11.0 / 53.8.0 + Add avformat_query_codec(). + +2011-08-16 - 27fbe31 / bca06e7 - lavc 53.11.0 + Add avcodec_get_type(). + +2011-08-06 - 0cb233c / 2f63440 - lavf 53.7.0 + Add error_recognition to AVFormatContext. + +2011-08-02 - 1d186e9 / 9d39cbf - lavc 53.9.1 + Add AV_PKT_FLAG_CORRUPT AVPacket flag. + +2011-07-16 - b57df29 - lavfi 2.27.0 + Add audio packing negotiation fields and helper functions. + + In particular, add AVFilterPacking enum, planar, in_packings and + out_packings fields to AVFilterLink, and the functions: + avfilter_set_common_packing_formats() + avfilter_all_packing_formats() + +2011-07-10 - 3602ad7 / a67c061 - lavf 53.6.0 + Add avformat_find_stream_info(), deprecate av_find_stream_info(). + NOTE: this was backported to 0.7 + +2011-07-10 - 3602ad7 / 0b950fe - lavc 53.8.0 + Add avcodec_open2(), deprecate avcodec_open(). + NOTE: this was backported to 0.7 + + Add avcodec_alloc_context3. Deprecate avcodec_alloc_context() and + avcodec_alloc_context2(). + +2011-07-01 - b442ca6 - lavf 53.5.0 - avformat.h + Add function av_get_output_timestamp(). + +2011-06-28 - 5129336 - lavu 51.11.0 - avutil.h + Define the AV_PICTURE_TYPE_NONE value in AVPictureType enum. + + +-------- 8< --------- FFmpeg 0.7 was cut here -------- 8< --------- + + + +-------- 8< --------- FFmpeg 0.8 was cut here -------- 8< --------- + +2011-06-19 - fd2c0a5 - lavfi 2.23.0 - avfilter.h + Add layout negotiation fields and helper functions. + + In particular, add in_chlayouts and out_chlayouts to AVFilterLink, + and the functions: + avfilter_set_common_sample_formats() + avfilter_set_common_channel_layouts() + avfilter_all_channel_layouts() + +2011-06-19 - 527ca39 - lavfi 2.22.0 - AVFilterFormats + Change type of AVFilterFormats.formats from int * to int64_t *, + and update formats handling API accordingly. + + avfilter_make_format_list() still takes a int32_t array and converts + it to int64_t. A new function, avfilter_make_format64_list(), that + takes int64_t arrays has been added. + +2011-06-19 - 44f669e - lavfi 2.21.0 - vsink_buffer.h + Add video sink buffer and vsink_buffer.h public header. + +2011-06-12 - 9fdf772 - lavfi 2.18.0 - avcodec.h + Add avfilter_get_video_buffer_ref_from_frame() function in + libavfilter/avcodec.h. + +2011-06-12 - c535494 - lavfi 2.17.0 - avfiltergraph.h + Add avfilter_inout_alloc() and avfilter_inout_free() functions. + +2011-06-12 - 6119b23 - lavfi 2.16.0 - avfilter_graph_parse() + Change avfilter_graph_parse() signature. + +2011-06-23 - 686959e / 67e9ae1 - lavu 51.10.0 / 51.8.0 - attributes.h + Add av_printf_format(). + +2011-06-16 - 2905e3f / 05e84c9, 2905e3f / 25de595 - lavf 53.4.0 / 53.2.0 - avformat.h + Add avformat_open_input and avformat_write_header(). + Deprecate av_open_input_stream, av_open_input_file, + AVFormatParameters and av_write_header. + +2011-06-16 - 2905e3f / 7e83e1c, 2905e3f / dc59ec5 - lavu 51.9.0 / 51.7.0 - opt.h + Add av_opt_set_dict() and av_opt_find(). + Deprecate av_find_opt(). + Add AV_DICT_APPEND flag. + +2011-06-10 - 45fb647 / cb7c11c - lavu 51.6.0 - opt.h + Add av_opt_flag_is_set(). + +2011-06-10 - c381960 - lavfi 2.15.0 - avfilter_get_audio_buffer_ref_from_arrays + Add avfilter_get_audio_buffer_ref_from_arrays() to avfilter.h. + +2011-06-09 - f9ecb84 / d9f80ea - lavu 51.8.0 - AVMetadata + Move AVMetadata from lavf to lavu and rename it to + AVDictionary -- new installed header dict.h. + All av_metadata_* functions renamed to av_dict_*. + +2011-06-07 - d552f61 / a6703fa - lavu 51.8.0 - av_get_bytes_per_sample() + Add av_get_bytes_per_sample() in libavutil/samplefmt.h. + Deprecate av_get_bits_per_sample_fmt(). + +2011-06-05 - f956924 / b39b062 - lavu 51.8.0 - opt.h + Add av_opt_free convenience function. + +2011-06-06 - 95a0242 - lavfi 2.14.0 - AVFilterBufferRefAudioProps + Remove AVFilterBufferRefAudioProps.size, and use nb_samples in + avfilter_get_audio_buffer() and avfilter_default_get_audio_buffer() in + place of size. + +2011-06-06 - 0bc2cca - lavu 51.6.0 - av_samples_alloc() + Switch nb_channels and nb_samples parameters order in + av_samples_alloc(). + +2011-06-06 - e1c7414 - lavu 51.5.0 - av_samples_* + Change the data layout created by av_samples_fill_arrays() and + av_samples_alloc(). + +2011-06-06 - 27bcf55 - lavfi 2.13.0 - vsrc_buffer.h + Make av_vsrc_buffer_add_video_buffer_ref() accepts an additional + flags parameter in input. + +2011-06-03 - e977ca2 - lavfi 2.12.0 - avfilter_link_free() + Add avfilter_link_free() function. + +2011-06-02 - 5ad38d9 - lavu 51.4.0 - av_force_cpu_flags() + Add av_cpu_flags() in libavutil/cpu.h. + +2011-05-28 - e71f260 - lavu 51.3.0 - pixdesc.h + Add av_get_pix_fmt_name() in libavutil/pixdesc.h, and deprecate + avcodec_get_pix_fmt_name() in libavcodec/avcodec.h in its favor. + +2011-05-25 - 39e4206 / 30315a8 - lavf 53.3.0 - avformat.h + Add fps_probe_size to AVFormatContext. + +2011-05-22 - 5ecdfd0 - lavf 53.2.0 - avformat.h + Introduce avformat_alloc_output_context2() and deprecate + avformat_alloc_output_context(). + +2011-05-22 - 83db719 - lavfi 2.10.0 - vsrc_buffer.h + Make libavfilter/vsrc_buffer.h public. + +2011-05-19 - c000a9f - lavfi 2.8.0 - avcodec.h + Add av_vsrc_buffer_add_frame() to libavfilter/avcodec.h. + +2011-05-14 - 9fdf772 - lavfi 2.6.0 - avcodec.h + Add avfilter_get_video_buffer_ref_from_frame() to libavfilter/avcodec.h. + +2011-05-18 - 75a37b5 / 64150ff - lavc 53.7.0 - AVCodecContext.request_sample_fmt + Add request_sample_fmt field to AVCodecContext. + +2011-05-10 - 59eb12f / 188dea1 - lavc 53.6.0 - avcodec.h + Deprecate AVLPCType and the following fields in + AVCodecContext: lpc_coeff_precision, prediction_order_method, + min_partition_order, max_partition_order, lpc_type, lpc_passes. + Corresponding FLAC encoder options should be used instead. + +2011-05-07 - 9fdf772 - lavfi 2.5.0 - avcodec.h + Add libavfilter/avcodec.h header and avfilter_copy_frame_props() + function. + +2011-05-07 - 18ded93 - lavc 53.5.0 - AVFrame + Add format field to AVFrame. + +2011-05-07 - 22333a6 - lavc 53.4.0 - AVFrame + Add width and height fields to AVFrame. + +2011-05-01 - 35fe66a - lavfi 2.4.0 - avfilter.h + Rename AVFilterBufferRefVideoProps.pixel_aspect to + sample_aspect_ratio. + +2011-05-01 - 77e9dee - lavc 53.3.0 - AVFrame + Add a sample_aspect_ratio field to AVFrame. + +2011-05-01 - 1ba5727 - lavc 53.2.0 - AVFrame + Add a pkt_pos field to AVFrame. + +2011-04-29 - 35ceaa7 - lavu 51.2.0 - mem.h + Add av_dynarray_add function for adding + an element to a dynamic array. + +2011-04-26 - d7e5aeb / bebe72f - lavu 51.1.0 - avutil.h + Add AVPictureType enum and av_get_picture_type_char(), deprecate + FF_*_TYPE defines and av_get_pict_type_char() defined in + libavcodec/avcodec.h. + +2011-04-26 - d7e5aeb / 10d3940 - lavfi 2.3.0 - avfilter.h + Add pict_type and key_frame fields to AVFilterBufferRefVideo. + +2011-04-26 - d7e5aeb / 7a11c82 - lavfi 2.2.0 - vsrc_buffer + Add sample_aspect_ratio fields to vsrc_buffer arguments + +2011-04-21 - 8772156 / 94f7451 - lavc 53.1.0 - avcodec.h + Add CODEC_CAP_SLICE_THREADS for codecs supporting sliced threading. + +2011-04-15 - lavc 52.120.0 - avcodec.h + AVPacket structure got additional members for passing side information: + c407984 / 4de339e introduce side information for AVPacket + c407984 / 2d8591c make containers pass palette change in AVPacket + +2011-04-12 - lavf 52.107.0 - avio.h + Avio cleanup, part II - deprecate the entire URLContext API: + c55780d / 175389c add avio_check as a replacement for url_exist + 9891004 / ff1ec0c add avio_pause and avio_seek_time as replacements + for _av_url_read_fseek/fpause + d4d0932 / cdc6a87 deprecate av_protocol_next(), avio_enum_protocols + should be used instead. + c88caa5 / 80c6e23 rename url_set_interrupt_cb->avio_set_interrupt_cb. + c88caa5 / f87b1b3 rename open flags: URL_* -> AVIO_* + d4d0932 / f8270bb add avio_enum_protocols. + d4d0932 / 5593f03 deprecate URLProtocol. + d4d0932 / c486dad deprecate URLContext. + d4d0932 / 026e175 deprecate the typedef for URLInterruptCB + c88caa5 / 8e76a19 deprecate av_register_protocol2. + 11d7841 / b840484 deprecate URL_PROTOCOL_FLAG_NESTED_SCHEME + 11d7841 / 1305d93 deprecate av_url_read_seek + 11d7841 / fa104e1 deprecate av_url_read_pause + 434f248 / 727c7aa deprecate url_get_filename(). + 434f248 / 5958df3 deprecate url_max_packet_size(). + 434f248 / 1869ea0 deprecate url_get_file_handle(). + 434f248 / 32a97d4 deprecate url_filesize(). + 434f248 / e52a914 deprecate url_close(). + 434f248 / 58a48c6 deprecate url_seek(). + 434f248 / 925e908 deprecate url_write(). + 434f248 / dce3756 deprecate url_read_complete(). + 434f248 / bc371ac deprecate url_read(). + 434f248 / 0589da0 deprecate url_open(). + 434f248 / 62eaaea deprecate url_connect. + 434f248 / 5652bb9 deprecate url_alloc. + 434f248 / 333e894 deprecate url_open_protocol + 434f248 / e230705 deprecate url_poll and URLPollEntry + +2011-04-08 - lavf 52.106.0 - avformat.h + Minor avformat.h cleanup: + d4d0932 / a9bf9d8 deprecate av_guess_image2_codec + d4d0932 / c3675df rename avf_sdp_create->av_sdp_create + +2011-04-03 - lavf 52.105.0 - avio.h + Large-scale renaming/deprecating of AVIOContext-related functions: + 2cae980 / 724f6a0 deprecate url_fdopen + 2cae980 / 403ee83 deprecate url_open_dyn_packet_buf + 2cae980 / 6dc7d80 rename url_close_dyn_buf -> avio_close_dyn_buf + 2cae980 / b92c545 rename url_open_dyn_buf -> avio_open_dyn_buf + 2cae980 / 8978fed introduce an AVIOContext.seekable field as a replacement for + AVIOContext.is_streamed and url_is_streamed() + 1caa412 / b64030f deprecate get_checksum() + 1caa412 / 4c4427a deprecate init_checksum() + 2fd41c9 / 4ec153b deprecate udp_set_remote_url/get_local_port + 4fa0e24 / 933e90a deprecate av_url_read_fseek/fpause + 4fa0e24 / 8d9769a deprecate url_fileno + 0fecf26 / b7f2fdd rename put_flush_packet -> avio_flush + 0fecf26 / 35f1023 deprecate url_close_buf + 0fecf26 / 83fddae deprecate url_open_buf + 0fecf26 / d9d86e0 rename url_fprintf -> avio_printf + 0fecf26 / 59f65d9 deprecate url_setbufsize + 6947b0c / 3e68b3b deprecate url_ferror + e8bb2e2 deprecate url_fget_max_packet_size + 76aa876 rename url_fsize -> avio_size + e519753 deprecate url_fgetc + 655e45e deprecate url_fgets + a2704c9 rename url_ftell -> avio_tell + e16ead0 deprecate get_strz() in favor of avio_get_str + 0300db8,2af07d3 rename url_fskip -> avio_skip + 6b4aa5d rename url_fseek -> avio_seek + 61840b4 deprecate put_tag + 22a3212 rename url_fopen/fclose -> avio_open/close. + 0ac8e2b deprecate put_nbyte + 77eb550 rename put_byte -> avio_w8 + put_[b/l]e -> avio_w[b/l] + put_buffer -> avio_write + b7effd4 rename get_byte -> avio_r8, + get_[b/l]e -> avio_r[b/l] + get_buffer -> avio_read + b3db9ce deprecate get_partial_buffer + 8d9ac96 rename av_alloc_put_byte -> avio_alloc_context + +2011-03-25 - 27ef7b1 / 34b47d7 - lavc 52.115.0 - AVCodecContext.audio_service_type + Add audio_service_type field to AVCodecContext. + +2011-03-17 - e309fdc - lavu 50.40.0 - pixfmt.h + Add PIX_FMT_BGR48LE and PIX_FMT_BGR48BE pixel formats + +2011-03-02 - 863c471 - lavf 52.103.0 - av_pkt_dump2, av_pkt_dump_log2 + Add new functions av_pkt_dump2, av_pkt_dump_log2 that uses the + source stream timebase for outputting timestamps. Deprecate + av_pkt_dump and av_pkt_dump_log. + +2011-02-20 - e731b8d - lavf 52.102.0 - avio.h + * e731b8d - rename init_put_byte() to ffio_init_context(), deprecating the + original, and move it to a private header so it is no longer + part of our public API. Instead, use av_alloc_put_byte(). + * ae628ec - rename ByteIOContext to AVIOContext. + +2011-02-16 - 09d171b - lavf 52.101.0 - avformat.h + lavu 52.39.0 - parseutils.h + * 610219a - Add av_ prefix to dump_format(). + * f6c7375 - Replace parse_date() in lavf with av_parse_time() in lavu. + * ab0287f - Move find_info_tag from lavf to lavu and add av_prefix to it. + +2011-02-15 - lavu 52.38.0 - merge libavcore + libavcore is merged back completely into libavutil + +2011-02-10 - 55bad0c - lavc 52.113.0 - vbv_delay + Add vbv_delay field to AVCodecContext + +2011-02-14 - 24a83bd - lavf 52.100.0 - AV_DISPOSITION_CLEAN_EFFECTS + Add AV_DISPOSITION_CLEAN_EFFECTS disposition flag. + +2011-02-14 - 910b5b8 - lavfi 1.76.0 - AVFilterLink sample_aspect_ratio + Add sample_aspect_ratio field to AVFilterLink. + +2011-02-10 - 12c14cd - lavf 52.99.0 - AVStream.disposition + Add AV_DISPOSITION_HEARING_IMPAIRED and AV_DISPOSITION_VISUAL_IMPAIRED. + +2011-02-09 - c0b102c - lavc 52.112.0 - avcodec_thread_init() + Deprecate avcodec_thread_init()/avcodec_thread_free() use; instead + set thread_count before calling avcodec_open. + +2011-02-09 - 37b00b4 - lavc 52.111.0 - threading API + Add CODEC_CAP_FRAME_THREADS with new restrictions on get_buffer()/ + release_buffer()/draw_horiz_band() callbacks for appropriate codecs. + Add thread_type and active_thread_type fields to AVCodecContext. + +2011-02-08 - 3940caa - lavf 52.98.0 - av_probe_input_buffer + Add av_probe_input_buffer() to avformat.h for probing format from a + ByteIOContext. + +2011-02-06 - fe174fc - lavf 52.97.0 - avio.h + Add flag for non-blocking protocols: URL_FLAG_NONBLOCK + +2011-02-04 - f124b08 - lavf 52.96.0 - avformat_free_context() + Add avformat_free_context() in avformat.h. + +2011-02-03 - f5b82f4 - lavc 52.109.0 - add CODEC_ID_PRORES + Add CODEC_ID_PRORES to avcodec.h. + +2011-02-03 - fe9a3fb - lavc 52.109.0 - H.264 profile defines + Add defines for H.264 * Constrained Baseline and Intra profiles + +2011-02-02 - lavf 52.95.0 + * 50196a9 - add a new installed header version.h. + * 4efd5cf, dccbd97, 93b78d1 - add several variants of public + avio_{put,get}_str* functions. Deprecate corresponding semi-public + {put,get}_str*. + +2011-02-02 - dfd2a00 - lavu 50.37.0 - log.h + Make av_dlog public. + +2011-01-31 - 7b3ea55 - lavfi 1.76.0 - vsrc_buffer + Add sample_aspect_ratio fields to vsrc_buffer arguments + +2011-01-31 - 910b5b8 - lavfi 1.75.0 - AVFilterLink sample_aspect_ratio + Add sample_aspect_ratio field to AVFilterLink. + +2011-01-15 - a242ac3 - lavfi 1.74.0 - AVFilterBufferRefAudioProps + Rename AVFilterBufferRefAudioProps.samples_nb to nb_samples. + +2011-01-14 - 7f88a5b - lavf 52.93.0 - av_metadata_copy() + Add av_metadata_copy() in avformat.h. + +2011-01-07 - 81c623f - lavc 52.107.0 - deprecate reordered_opaque + Deprecate reordered_opaque in favor of pkt_pts/dts. + +2011-01-07 - 1919fea - lavc 52.106.0 - pkt_dts + Add pkt_dts to AVFrame, this will in the future allow multithreading decoders + to not mess up dts. + +2011-01-07 - 393cbb9 - lavc 52.105.0 - pkt_pts + Add pkt_pts to AVFrame. + +2011-01-07 - 060ec0a - lavc 52.104.0 - av_get_profile_name() + Add av_get_profile_name to libavcodec/avcodec.h. + +2010-12-27 - 0ccabee - lavfi 1.71.0 - AV_PERM_NEG_LINESIZES + Add AV_PERM_NEG_LINESIZES in avfilter.h. + +2010-12-27 - 9128ae0 - lavf 52.91.0 - av_find_best_stream() + Add av_find_best_stream to libavformat/avformat.h. + +2010-12-27 - 107a7e3 - lavf 52.90.0 + Add AVFMT_NOSTREAMS flag for formats with no streams, + like e.g. text metadata. + +2010-12-22 - 0328b9e - lavu 50.36.0 - file.h + Add functions av_file_map() and av_file_unmap() in file.h. + +2010-12-19 - 0bc55f5 - lavu 50.35.0 - error.h + Add "not found" error codes: + AVERROR_DEMUXER_NOT_FOUND + AVERROR_MUXER_NOT_FOUND + AVERROR_DECODER_NOT_FOUND + AVERROR_ENCODER_NOT_FOUND + AVERROR_PROTOCOL_NOT_FOUND + AVERROR_FILTER_NOT_FOUND + AVERROR_BSF_NOT_FOUND + AVERROR_STREAM_NOT_FOUND + +2010-12-09 - c61cdd0 - lavcore 0.16.0 - avcore.h + Move AV_NOPTS_VALUE, AV_TIME_BASE, AV_TIME_BASE_Q symbols from + avcodec.h to avcore.h. + +2010-12-04 - 16cfc96 - lavc 52.98.0 - CODEC_CAP_NEG_LINESIZES + Add CODEC_CAP_NEG_LINESIZES codec capability flag in avcodec.h. + +2010-12-04 - bb4afa1 - lavu 50.34.0 - av_get_pix_fmt_string() + Deprecate avcodec_pix_fmt_string() in favor of + pixdesc.h/av_get_pix_fmt_string(). + +2010-12-04 - 4da12e3 - lavcore 0.15.0 - av_image_alloc() + Add av_image_alloc() to libavcore/imgutils.h. + +2010-12-02 - 037be76 - lavfi 1.67.0 - avfilter_graph_create_filter() + Add function avfilter_graph_create_filter() in avfiltergraph.h. + +2010-11-25 - 4723bc2 - lavfi 1.65.0 - avfilter_get_video_buffer_ref_from_arrays() + Add function avfilter_get_video_buffer_ref_from_arrays() in + avfilter.h. + +2010-11-21 - 176a615 - lavcore 0.14.0 - audioconvert.h + Add a public audio channel API in audioconvert.h, and deprecate the + corresponding functions in libavcodec: + avcodec_get_channel_name() + avcodec_get_channel_layout() + avcodec_get_channel_layout_string() + avcodec_channel_layout_num_channels() + and the CH_* macros defined in libavcodec/avcodec.h. + +2010-11-21 - 6bfc268 - lavf 52.85.0 - avformat.h + Add av_append_packet(). + +2010-11-21 - a08d918 - lavc 52.97.0 - avcodec.h + Add av_grow_packet(). + +2010-11-17 - 0985e1a - lavcore 0.13.0 - parseutils.h + Add av_parse_color() declared in libavcore/parseutils.h. + +2010-11-13 - cb2c971 - lavc 52.95.0 - AVCodecContext + Add AVCodecContext.subtitle_header and AVCodecContext.subtitle_header_size + fields. + +2010-11-13 - 5aaea02 - lavfi 1.62.0 - avfiltergraph.h + Make avfiltergraph.h public. + +2010-11-13 - 4fcbb2a - lavfi 1.61.0 - avfiltergraph.h + Remove declarations from avfiltergraph.h for the functions: + avfilter_graph_check_validity() + avfilter_graph_config_links() + avfilter_graph_config_formats() + which are now internal. + Use avfilter_graph_config() instead. + +2010-11-08 - d2af720 - lavu 50.33.0 - eval.h + Deprecate functions: + av_parse_and_eval_expr(), + av_parse_expr(), + av_eval_expr(), + av_free_expr(), + in favor of the functions: + av_expr_parse_and_eval(), + av_expr_parse(), + av_expr_eval(), + av_expr_free(). + +2010-11-08 - 24de0ed - lavfi 1.59.0 - avfilter_free() + Rename avfilter_destroy() to avfilter_free(). + This change breaks libavfilter API/ABI. + +2010-11-07 - 1e80a0e - lavfi 1.58.0 - avfiltergraph.h + Remove graphparser.h header, move AVFilterInOut and + avfilter_graph_parse() declarations to libavfilter/avfiltergraph.h. + +2010-11-07 - 7313132 - lavfi 1.57.0 - AVFilterInOut + Rename field AVFilterInOut.filter to AVFilterInOut.filter_ctx. + This change breaks libavfilter API. + +2010-11-04 - 97dd1e4 - lavfi 1.56.0 - avfilter_graph_free() + Rename avfilter_graph_destroy() to avfilter_graph_free(). + This change breaks libavfilter API/ABI. + +2010-11-04 - e15aeea - lavfi 1.55.0 - avfilter_graph_alloc() + Add avfilter_graph_alloc() to libavfilter/avfiltergraph.h. + +2010-11-02 - 6f84cd1 - lavcore 0.12.0 - av_get_bits_per_sample_fmt() + Add av_get_bits_per_sample_fmt() to libavcore/samplefmt.h and + deprecate av_get_bits_per_sample_format(). + +2010-11-02 - d63e456 - lavcore 0.11.0 - samplefmt.h + Add sample format functions in libavcore/samplefmt.h: + av_get_sample_fmt_name(), + av_get_sample_fmt(), + av_get_sample_fmt_string(), + and deprecate the corresponding libavcodec/audioconvert.h functions: + avcodec_get_sample_fmt_name(), + avcodec_get_sample_fmt(), + avcodec_sample_fmt_string(). + +2010-11-02 - 262d1c5 - lavcore 0.10.0 - samplefmt.h + Define enum AVSampleFormat in libavcore/samplefmt.h, deprecate enum + SampleFormat. + +2010-10-16 - 2a24df9 - lavfi 1.52.0 - avfilter_graph_config() + Add the function avfilter_graph_config() in avfiltergraph.h. + +2010-10-15 - 03700d3 - lavf 52.83.0 - metadata API + Change demuxers to export metadata in generic format and + muxers to accept generic format. Deprecate the public + conversion API. + +2010-10-10 - 867ae7a - lavfi 1.49.0 - AVFilterLink.time_base + Add time_base field to AVFilterLink. + +2010-09-27 - c85eef4 - lavu 50.31.0 - av_set_options_string() + Move av_set_options_string() from libavfilter/parseutils.h to + libavutil/opt.h. + +2010-09-27 - acc0490 - lavfi 1.47.0 - AVFilterLink + Make the AVFilterLink fields srcpad and dstpad store the pointers to + the source and destination pads, rather than their indexes. + +2010-09-27 - 372e288 - lavu 50.30.0 - av_get_token() + Move av_get_token() from libavfilter/parseutils.h to + libavutil/avstring.h. + +2010-09-26 - 635d4ae - lsws 0.12.0 - swscale.h + Add the functions sws_alloc_context() and sws_init_context(). + +2010-09-26 - 6ed0404 - lavu 50.29.0 - opt.h + Move libavcodec/opt.h to libavutil/opt.h. + +2010-09-24 - 1c1c80f - lavu 50.28.0 - av_log_set_flags() + Default of av_log() changed due to many problems to the old no repeat + detection. Read the docs of AV_LOG_SKIP_REPEATED in log.h before + enabling it for your app!. + +2010-09-24 - f66eb58 - lavc 52.90.0 - av_opt_show2() + Deprecate av_opt_show() in favor or av_opt_show2(). + +2010-09-14 - bc6f0af - lavu 50.27.0 - av_popcount() + Add av_popcount() to libavutil/common.h. + +2010-09-08 - c6c98d0 - lavu 50.26.0 - av_get_cpu_flags() + Add av_get_cpu_flags(). + +2010-09-07 - 34017fd - lavcore 0.9.0 - av_image_copy() + Add av_image_copy(). + +2010-09-07 - 9686abb - lavcore 0.8.0 - av_image_copy_plane() + Add av_image_copy_plane(). + +2010-09-07 - 9b7269e - lavcore 0.7.0 - imgutils.h + Adopt hierarchical scheme for the imgutils.h function names, + deprecate the old names. + +2010-09-04 - 7160bb7 - lavu 50.25.0 - AV_CPU_FLAG_* + Deprecate the FF_MM_* flags defined in libavcodec/avcodec.h in favor + of the AV_CPU_FLAG_* flags defined in libavutil/cpu.h. + +2010-08-26 - 5da19b5 - lavc 52.87.0 - avcodec_get_channel_layout() + Add avcodec_get_channel_layout() in audioconvert.h. + +2010-08-20 - e344336 - lavcore 0.6.0 - av_fill_image_max_pixsteps() + Rename av_fill_image_max_pixstep() to av_fill_image_max_pixsteps(). + +2010-08-18 - a6ddf8b - lavcore 0.5.0 - av_fill_image_max_pixstep() + Add av_fill_image_max_pixstep() in imgutils.h. + +2010-08-17 - 4f2d2e4 - lavu 50.24.0 - AV_NE() + Add the AV_NE macro. + +2010-08-17 - ad2c950 - lavfi 1.36.0 - audio framework + Implement AVFilterBufferRefAudioProps struct for audio properties, + get_audio_buffer(), filter_samples() functions and related changes. + +2010-08-12 - 81c1eca - lavcore 0.4.0 - av_get_image_linesize() + Add av_get_image_linesize() in imgutils.h. + +2010-08-11 - c1db7bf - lavfi 1.34.0 - AVFilterBufferRef + Resize data and linesize arrays in AVFilterBufferRef to 8. + + This change breaks libavfilter API/ABI. + +2010-08-11 - 9f08d80 - lavc 52.85.0 - av_picture_data_copy() + Add av_picture_data_copy in avcodec.h. + +2010-08-11 - 84c0386 - lavfi 1.33.0 - avfilter_open() + Change avfilter_open() signature: + AVFilterContext *avfilter_open(AVFilter *filter, const char *inst_name) -> + int avfilter_open(AVFilterContext **filter_ctx, AVFilter *filter, const char *inst_name); + + This change breaks libavfilter API/ABI. + +2010-08-11 - cc80caf - lavfi 1.32.0 - AVFilterBufferRef + Add a type field to AVFilterBufferRef, and move video specific + properties to AVFilterBufferRefVideoProps. + + This change breaks libavfilter API/ABI. + +2010-08-07 - 5d4890d - lavfi 1.31.0 - AVFilterLink + Rename AVFilterLink fields: + AVFilterLink.srcpic -> AVFilterLink.src_buf + AVFilterLink.cur_pic -> AVFilterLink.cur_buf + AVFilterLink.outpic -> AVFilterLink.out_buf + +2010-08-07 - 7fce481 - lavfi 1.30.0 + Rename functions and fields: + avfilter_(un)ref_pic -> avfilter_(un)ref_buffer + avfilter_copy_picref_props -> avfilter_copy_buffer_ref_props + AVFilterBufferRef.pic -> AVFilterBufferRef.buffer + +2010-08-07 - ecc8dad - lavfi 1.29.0 - AVFilterBufferRef + Rename AVFilterPicRef to AVFilterBufferRef. + +2010-08-07 - d54e094 - lavfi 1.28.0 - AVFilterBuffer + Move format field from AVFilterBuffer to AVFilterPicRef. + +2010-08-06 - bf176f5 - lavcore 0.3.0 - av_check_image_size() + Deprecate avcodec_check_dimensions() in favor of the function + av_check_image_size() defined in libavcore/imgutils.h. + +2010-07-30 - 56b5e9d - lavfi 1.27.0 - AVFilterBuffer + Increase size of the arrays AVFilterBuffer.data and + AVFilterBuffer.linesize from 4 to 8. + + This change breaks libavfilter ABI. + +2010-07-29 - e7bd48a - lavcore 0.2.0 - imgutils.h + Add functions av_fill_image_linesizes() and + av_fill_image_pointers(), declared in libavcore/imgutils.h. + +2010-07-27 - 126b638 - lavcore 0.1.0 - parseutils.h + Deprecate av_parse_video_frame_size() and av_parse_video_frame_rate() + defined in libavcodec in favor of the newly added functions + av_parse_video_size() and av_parse_video_rate() declared in + libavcore/parseutils.h. + +2010-07-23 - 4485247 - lavu 50.23.0 - mathematics.h + Add the M_PHI constant definition. + +2010-07-22 - bdab614 - lavfi 1.26.0 - media format generalization + Add a type field to AVFilterLink. + + Change the field types: + enum PixelFormat format -> int format in AVFilterBuffer + enum PixelFormat *formats -> int *formats in AVFilterFormats + enum PixelFormat *format -> int format in AVFilterLink + + Change the function signatures: + AVFilterFormats *avfilter_make_format_list(const enum PixelFormat *pix_fmts); -> + AVFilterFormats *avfilter_make_format_list(const int *fmts); + + int avfilter_add_colorspace(AVFilterFormats **avff, enum PixelFormat pix_fmt); -> + int avfilter_add_format (AVFilterFormats **avff, int fmt); + + AVFilterFormats *avfilter_all_colorspaces(void); -> + AVFilterFormats *avfilter_all_formats (enum AVMediaType type); + + This change breaks libavfilter API/ABI. + +2010-07-21 - aac6ca6 - lavcore 0.0.0 + Add libavcore. + +2010-07-17 - b5c582f - lavfi 1.25.0 - AVFilterBuffer + Remove w and h fields from AVFilterBuffer. + +2010-07-17 - f0d77b2 - lavfi 1.24.0 - AVFilterBuffer + Rename AVFilterPic to AVFilterBuffer. + +2010-07-17 - 57fe80f - lavf 52.74.0 - url_fskip() + Make url_fskip() return an int error code instead of void. + +2010-07-11 - 23940f1 - lavc 52.83.0 + Add AVCodecContext.lpc_type and AVCodecContext.lpc_passes fields. + Add AVLPCType enum. + Deprecate AVCodecContext.use_lpc. + +2010-07-11 - e1d7c88 - lavc 52.82.0 - avsubtitle_free() + Add a function for free the contents of a AVSubtitle generated by + avcodec_decode_subtitle. + +2010-07-11 - b91d08f - lavu 50.22.0 - bswap.h and intreadwrite.h + Make the bswap.h and intreadwrite.h API public. + +2010-07-08 - ce1cd1c - lavu 50.21.0 - pixdesc.h + Rename read/write_line() to av_read/write_image_line(). + +2010-07-07 - 4d508e4 - lavfi 1.21.0 - avfilter_copy_picref_props() + Add avfilter_copy_picref_props(). + +2010-07-03 - 2d525ef - lavc 52.79.0 + Add FF_COMPLIANCE_UNOFFICIAL and change all instances of + FF_COMPLIANCE_INOFFICIAL to use FF_COMPLIANCE_UNOFFICIAL. + +2010-07-02 - 89eec74 - lavu 50.20.0 - lfg.h + Export av_lfg_init(), av_lfg_get(), av_mlfg_get(), and av_bmg_get() through + lfg.h. + +2010-06-28 - a52e2c3 - lavfi 1.20.1 - av_parse_color() + Extend av_parse_color() syntax, make it accept an alpha value specifier and + set the alpha value to 255 by default. + +2010-06-22 - 735cf6b - lavf 52.71.0 - URLProtocol.priv_data_size, priv_data_class + Add priv_data_size and priv_data_class to URLProtocol. + +2010-06-22 - ffbb289 - lavf 52.70.0 - url_alloc(), url_connect() + Add url_alloc() and url_connect(). + +2010-06-22 - 9b07a2d - lavf 52.69.0 - av_register_protocol2() + Add av_register_protocol2(), deprecating av_register_protocol(). + +2010-06-09 - 65db058 - lavu 50.19.0 - av_compare_mod() + Add av_compare_mod() to libavutil/mathematics.h. + +2010-06-05 - 0b99215 - lavu 50.18.0 - eval API + Make the eval API public. + +2010-06-04 - 31878fc - lavu 50.17.0 - AV_BASE64_SIZE + Add AV_BASE64_SIZE() macro. + +2010-06-02 - 7e566bb - lavc 52.73.0 - av_get_codec_tag_string() + Add av_get_codec_tag_string(). + + +-------- 8< --------- FFmpeg 0.6 was cut here -------- 8< --------- + +2010-06-01 - 2b99142 - lsws 0.11.0 - convertPalette API + Add sws_convertPalette8ToPacked32() and sws_convertPalette8ToPacked24(). + +2010-05-26 - 93ebfee - lavc 52.72.0 - CODEC_CAP_EXPERIMENTAL + Add CODEC_CAP_EXPERIMENTAL flag. + NOTE: this was backported to 0.6 + +2010-05-23 - 9977863 - lavu 50.16.0 - av_get_random_seed() + Add av_get_random_seed(). + +2010-05-18 - 796ac23 - lavf 52.63.0 - AVFMT_FLAG_RTP_HINT + Add AVFMT_FLAG_RTP_HINT as possible value for AVFormatContext.flags. + NOTE: this was backported to 0.6 + +2010-05-09 - b6bc205 - lavfi 1.20.0 - AVFilterPicRef + Add interlaced and top_field_first fields to AVFilterPicRef. + +2010-05-01 - 8e2ee18 - lavf 52.62.0 - probe function + Add av_probe_input_format2 to API, it allows ignoring probe + results below given score and returns the actual probe score. + +2010-04-01 - 3dd6180 - lavf 52.61.0 - metadata API + Add a flag for av_metadata_set2() to disable overwriting of + existing tags. + +2010-04-01 - 0fb49b5 - lavc 52.66.0 + Add avcodec_get_edge_width(). + +2010-03-31 - d103218 - lavc 52.65.0 + Add avcodec_copy_context(). + +2010-03-31 - 1a70d12 - lavf 52.60.0 - av_match_ext() + Make av_match_ext() public. + +2010-03-31 - 1149150 - lavu 50.14.0 - AVMediaType + Move AVMediaType enum from libavcodec to libavutil. + +2010-03-31 - 72415b2 - lavc 52.64.0 - AVMediaType + Define AVMediaType enum, and use it instead of enum CodecType, which + is deprecated and will be dropped at the next major bump. + +2010-03-25 - 8795823 - lavu 50.13.0 - av_strerror() + Implement av_strerror(). + +2010-03-23 - e1484eb - lavc 52.60.0 - av_dct_init() + Support DCT-I and DST-I. + +2010-03-15 - b8819c8 - lavf 52.56.0 - AVFormatContext.start_time_realtime + Add AVFormatContext.start_time_realtime field. + +2010-03-13 - 5bb5c1d - lavfi 1.18.0 - AVFilterPicRef.pos + Add AVFilterPicRef.pos field. + +2010-03-13 - 60c144f - lavu 50.12.0 - error.h + Move error code definitions from libavcodec/avcodec.h to + the new public header libavutil/error.h. + +2010-03-07 - c709483 - lavc 52.56.0 - avfft.h + Add public FFT interface. + +2010-03-06 - ac6ef86 - lavu 50.11.0 - av_stristr() + Add av_stristr(). + +2010-03-03 - 4b83fc0 - lavu 50.10.0 - av_tree_enumerate() + Add av_tree_enumerate(). + +2010-02-07 - b687c1a - lavu 50.9.0 - av_compare_ts() + Add av_compare_ts(). + +2010-02-05 - 3f3dc76 - lsws 0.10.0 - sws_getCoefficients() + Add sws_getCoefficients(). + +2010-02-01 - ca76a11 - lavf 52.50.0 - metadata API + Add a list of generic tag names, change 'author' -> 'artist', + 'year' -> 'date'. + +2010-01-30 - 80a07f6 - lavu 50.8.0 - av_get_pix_fmt() + Add av_get_pix_fmt(). + +2010-01-21 - 01cc47d - lsws 0.9.0 - sws_scale() + Change constness attributes of sws_scale() parameters. + +2010-01-10 - 3fb8e77 - lavfi 1.15.0 - avfilter_graph_config_links() + Add a log_ctx parameter to avfilter_graph_config_links(). + +2010-01-07 - 8e9767f - lsws 0.8.0 - sws_isSupported{In,Out}put() + Add sws_isSupportedInput() and sws_isSupportedOutput() functions. + +2010-01-06 - c1d662f - lavfi 1.14.0 - avfilter_add_colorspace() + Change the avfilter_add_colorspace() signature, make it accept an + (AVFilterFormats **) rather than an (AVFilterFormats *) as before. + +2010-01-03 - 4fd1f18 - lavfi 1.13.0 - avfilter_add_colorspace() + Add avfilter_add_colorspace(). + +2010-01-02 - 8eb631f - lavf 52.46.0 - av_match_ext() + Add av_match_ext(), it should be used in place of match_ext(). + +2010-01-01 - a1f547b - lavf 52.45.0 - av_guess_format() + Add av_guess_format(), it should be used in place of guess_format(). + +2009-12-13 - a181981 - lavf 52.43.0 - metadata API + Add av_metadata_set2(), AV_METADATA_DONT_STRDUP_KEY and + AV_METADATA_DONT_STRDUP_VAL. + +2009-12-13 - 277c733 - lavu 50.7.0 - avstring.h API + Add av_d2str(). + +2009-12-13 - 02b398e - lavc 52.42.0 - AVStream + Add avg_frame_rate. + +2009-12-12 - 3ba69a1 - lavu 50.6.0 - av_bmg_next() + Introduce the av_bmg_next() function. + +2009-12-05 - a13a543 - lavfi 1.12.0 - avfilter_draw_slice() + Add a slice_dir parameter to avfilter_draw_slice(). + +2009-11-26 - 4cc3f6a - lavfi 1.11.0 - AVFilter + Remove the next field from AVFilter, this is not anymore required. + +2009-11-25 - 1433c4a - lavfi 1.10.0 - avfilter_next() + Introduce the avfilter_next() function. + +2009-11-25 - 86a60fa - lavfi 1.9.0 - avfilter_register() + Change the signature of avfilter_register() to make it return an + int. This is required since now the registration operation may fail. + +2009-11-25 - 74a0059 - lavu 50.5.0 - pixdesc.h API + Make the pixdesc.h API public. + +2009-10-27 - 243110f - lavfi 1.5.0 - AVFilter.next + Add a next field to AVFilter, this is used for simplifying the + registration and management of the registered filters. + +2009-10-23 - cccd292 - lavfi 1.4.1 - AVFilter.description + Add a description field to AVFilter. + +2009-10-19 - 6b5dc05 - lavfi 1.3.0 - avfilter_make_format_list() + Change the interface of avfilter_make_format_list() from + avfilter_make_format_list(int n, ...) to + avfilter_make_format_list(enum PixelFormat *pix_fmts). + +2009-10-18 - 0eb4ff9 - lavfi 1.0.0 - avfilter_get_video_buffer() + Make avfilter_get_video_buffer() recursive and add the w and h + parameters to it. + +2009-10-07 - 46c40e4 - lavfi 0.5.1 - AVFilterPic + Add w and h fields to AVFilterPic. + +2009-06-22 - 92400be - lavf 52.34.1 - AVFormatContext.packet_size + This is now an unsigned int instead of a signed int. + +2009-06-19 - a4276ba - lavc 52.32.0 - AVSubtitle.pts + Add a pts field to AVSubtitle which gives the subtitle packet pts + in AV_TIME_BASE. Some subtitle de-/encoders (e.g. XSUB) will + not work right without this. + +2009-06-03 - 8f3f2e0 - lavc 52.30.2 - AV_PKT_FLAG_KEY + PKT_FLAG_KEY has been deprecated and will be dropped at the next + major version. Use AV_PKT_FLAG_KEY instead. + +2009-06-01 - f988ce6 - lavc 52.30.0 - av_lockmgr_register() + av_lockmgr_register() can be used to register a callback function + that lavc (and in the future, libraries that depend on lavc) can use + to implement mutexes. The application should provide a callback function + that implements the AV_LOCK_* operations described in avcodec.h. + When the lock manager is registered, FFmpeg is guaranteed to behave + correctly in a multi-threaded application. + +2009-04-30 - ce1d9c8 - lavc 52.28.0 - av_free_packet() + av_free_packet() is no longer an inline function. It is now exported. + +2009-04-11 - 80d403f - lavc 52.25.0 - deprecate av_destruct_packet_nofree() + Please use NULL instead. This has been supported since r16506 + (lavf > 52.23.1, lavc > 52.10.0). + +2009-04-07 - 7a00bba - lavc 52.23.0 - avcodec_decode_video/audio/subtitle + The old decoding functions are deprecated, all new code should use the + new functions avcodec_decode_video2(), avcodec_decode_audio3() and + avcodec_decode_subtitle2(). These new functions take an AVPacket *pkt + argument instead of a const uint8_t *buf / int buf_size pair. + +2009-04-03 - 7b09db3 - lavu 50.3.0 - av_fifo_space() + Introduce the av_fifo_space() function. + +2009-04-02 - fabd246 - lavc 52.23.0 - AVPacket + Move AVPacket declaration from libavformat/avformat.h to + libavcodec/avcodec.h. + +2009-03-22 - 6e08ca9 - lavu 50.2.0 - RGB32 pixel formats + Convert the pixel formats PIX_FMT_ARGB, PIX_FMT_RGBA, PIX_FMT_ABGR, + PIX_FMT_BGRA, which were defined as macros, into enum PixelFormat values. + Conversely PIX_FMT_RGB32, PIX_FMT_RGB32_1, PIX_FMT_BGR32 and + PIX_FMT_BGR32_1 are now macros. + avcodec_get_pix_fmt() now recognizes the "rgb32" and "bgr32" aliases. + Re-sort the enum PixelFormat list accordingly. + This change breaks API/ABI backward compatibility. + +2009-03-22 - f82674e - lavu 50.1.0 - PIX_FMT_RGB5X5 endian variants + Add the enum PixelFormat values: + PIX_FMT_RGB565BE, PIX_FMT_RGB565LE, PIX_FMT_RGB555BE, PIX_FMT_RGB555LE, + PIX_FMT_BGR565BE, PIX_FMT_BGR565LE, PIX_FMT_BGR555BE, PIX_FMT_BGR555LE. + +2009-03-21 - ee6624e - lavu 50.0.0 - av_random* + The Mersenne Twister PRNG implemented through the av_random* functions + was removed. Use the lagged Fibonacci PRNG through the av_lfg* functions + instead. + +2009-03-08 - 41dd680 - lavu 50.0.0 - AVFifoBuffer + av_fifo_init, av_fifo_read, av_fifo_write and av_fifo_realloc were dropped + and replaced by av_fifo_alloc, av_fifo_generic_read, av_fifo_generic_write + and av_fifo_realloc2. + In addition, the order of the function arguments of av_fifo_generic_read + was changed to match av_fifo_generic_write. + The AVFifoBuffer/struct AVFifoBuffer may only be used in an opaque way by + applications, they may not use sizeof() or directly access members. + +2009-03-01 - ec26457 - lavf 52.31.0 - Generic metadata API + Introduce a new metadata API (see av_metadata_get() and friends). + The old API is now deprecated and should not be used anymore. This especially + includes the following structure fields: + - AVFormatContext.title + - AVFormatContext.author + - AVFormatContext.copyright + - AVFormatContext.comment + - AVFormatContext.album + - AVFormatContext.year + - AVFormatContext.track + - AVFormatContext.genre + - AVStream.language + - AVStream.filename + - AVProgram.provider_name + - AVProgram.name + - AVChapter.title diff --git a/ffmpeg/doc/Doxyfile b/ffmpeg/doc/Doxyfile new file mode 100644 index 0000000..e158951 --- /dev/null +++ b/ffmpeg/doc/Doxyfile @@ -0,0 +1,1626 @@ +# Doxyfile 1.7.1 + +# This file describes the settings to be used by the documentation system +# doxygen (www.doxygen.org) for a project +# +# All text after a hash (#) is considered a comment and will be ignored +# The format is: +# TAG = value [value, ...] +# For lists items can also be appended using: +# TAG += value [value, ...] +# Values that contain spaces should be placed between quotes (" ") + +#--------------------------------------------------------------------------- +# Project related configuration options +#--------------------------------------------------------------------------- + +# This tag specifies the encoding used for all characters in the config file +# that follow. The default is UTF-8 which is also the encoding used for all +# text before the first occurrence of this tag. Doxygen uses libiconv (or the +# iconv built into libc) for the transcoding. See +# http://www.gnu.org/software/libiconv for the list of possible encodings. + +DOXYFILE_ENCODING = UTF-8 + +# The PROJECT_NAME tag is a single word (or a sequence of words surrounded +# by quotes) that should identify the project. + +PROJECT_NAME = FFmpeg + +# The PROJECT_NUMBER tag can be used to enter a project or revision number. +# This could be handy for archiving the generated documentation or +# if some version control system is used. + +PROJECT_NUMBER = 2.4.3 + +# With the PROJECT_LOGO tag one can specify a logo or icon that is included +# in the documentation. The maximum height of the logo should not exceed 55 +# pixels and the maximum width should not exceed 200 pixels. Doxygen will +# copy the logo to the output directory. +PROJECT_LOGO = + +# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) +# base path where the generated documentation will be put. +# If a relative path is entered, it will be relative to the location +# where doxygen was started. If left blank the current directory will be used. + +OUTPUT_DIRECTORY = doc/doxy + +# If the CREATE_SUBDIRS tag is set to YES, then doxygen will create +# 4096 sub-directories (in 2 levels) under the output directory of each output +# format and will distribute the generated files over these directories. +# Enabling this option can be useful when feeding doxygen a huge amount of +# source files, where putting all generated files in the same directory would +# otherwise cause performance problems for the file system. + +CREATE_SUBDIRS = NO + +# The OUTPUT_LANGUAGE tag is used to specify the language in which all +# documentation generated by doxygen is written. Doxygen will use this +# information to generate all constant output in the proper language. +# The default language is English, other supported languages are: +# Afrikaans, Arabic, Brazilian, Catalan, Chinese, Chinese-Traditional, +# Croatian, Czech, Danish, Dutch, Esperanto, Farsi, Finnish, French, German, +# Greek, Hungarian, Italian, Japanese, Japanese-en (Japanese with English +# messages), Korean, Korean-en, Lithuanian, Norwegian, Macedonian, Persian, +# Polish, Portuguese, Romanian, Russian, Serbian, Serbian-Cyrilic, Slovak, +# Slovene, Spanish, Swedish, Ukrainian, and Vietnamese. + +OUTPUT_LANGUAGE = English + +# If the BRIEF_MEMBER_DESC tag is set to YES (the default) Doxygen will +# include brief member descriptions after the members that are listed in +# the file and class documentation (similar to JavaDoc). +# Set to NO to disable this. + +BRIEF_MEMBER_DESC = YES + +# If the REPEAT_BRIEF tag is set to YES (the default) Doxygen will prepend +# the brief description of a member or function before the detailed description. +# Note: if both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the +# brief descriptions will be completely suppressed. + +REPEAT_BRIEF = YES + +# This tag implements a quasi-intelligent brief description abbreviator +# that is used to form the text in various listings. Each string +# in this list, if found as the leading text of the brief description, will be +# stripped from the text and the result after processing the whole list, is +# used as the annotated text. Otherwise, the brief description is used as-is. +# If left blank, the following values are used ("$name" is automatically +# replaced with the name of the entity): "The $name class" "The $name widget" +# "The $name file" "is" "provides" "specifies" "contains" +# "represents" "a" "an" "the" + +ABBREVIATE_BRIEF = + +# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then +# Doxygen will generate a detailed section even if there is only a brief +# description. + +ALWAYS_DETAILED_SEC = NO + +# If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all +# inherited members of a class in the documentation of that class as if those +# members were ordinary class members. Constructors, destructors and assignment +# operators of the base classes will not be shown. + +INLINE_INHERITED_MEMB = NO + +# If the FULL_PATH_NAMES tag is set to YES then Doxygen will prepend the full +# path before files name in the file list and in the header files. If set +# to NO the shortest path that makes the file name unique will be used. + +FULL_PATH_NAMES = YES + +# If the FULL_PATH_NAMES tag is set to YES then the STRIP_FROM_PATH tag +# can be used to strip a user-defined part of the path. Stripping is +# only done if one of the specified strings matches the left-hand part of +# the path. The tag can be used to show relative paths in the file list. +# If left blank the directory from which doxygen is run is used as the +# path to strip. + +STRIP_FROM_PATH = . + +# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of +# the path mentioned in the documentation of a class, which tells +# the reader which header file to include in order to use a class. +# If left blank only the name of the header file containing the class +# definition is used. Otherwise one should specify the include paths that +# are normally passed to the compiler using the -I flag. + +STRIP_FROM_INC_PATH = + +# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter +# (but less readable) file names. This can be useful is your file systems +# doesn't support long names like on DOS, Mac, or CD-ROM. + +SHORT_NAMES = NO + +# If the JAVADOC_AUTOBRIEF tag is set to YES then Doxygen +# will interpret the first line (until the first dot) of a JavaDoc-style +# comment as the brief description. If set to NO, the JavaDoc +# comments will behave just like regular Qt-style comments +# (thus requiring an explicit @brief command for a brief description.) + +JAVADOC_AUTOBRIEF = YES + +# If the QT_AUTOBRIEF tag is set to YES then Doxygen will +# interpret the first line (until the first dot) of a Qt-style +# comment as the brief description. If set to NO, the comments +# will behave just like regular Qt-style comments (thus requiring +# an explicit \brief command for a brief description.) + +QT_AUTOBRIEF = NO + +# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make Doxygen +# treat a multi-line C++ special comment block (i.e. a block of //! or /// +# comments) as a brief description. This used to be the default behaviour. +# The new default is to treat a multi-line C++ comment block as a detailed +# description. Set this tag to YES if you prefer the old behaviour instead. + +MULTILINE_CPP_IS_BRIEF = NO + +# If the INHERIT_DOCS tag is set to YES (the default) then an undocumented +# member inherits the documentation from any documented member that it +# re-implements. + +INHERIT_DOCS = YES + +# If the SEPARATE_MEMBER_PAGES tag is set to YES, then doxygen will produce +# a new page for each member. If set to NO, the documentation of a member will +# be part of the file/class/namespace that contains it. + +SEPARATE_MEMBER_PAGES = NO + +# The TAB_SIZE tag can be used to set the number of spaces in a tab. +# Doxygen uses this value to replace tabs by spaces in code fragments. + +TAB_SIZE = 8 + +# This tag can be used to specify a number of aliases that acts +# as commands in the documentation. An alias has the form "name=value". +# For example adding "sideeffect=\par Side Effects:\n" will allow you to +# put the command \sideeffect (or @sideeffect) in the documentation, which +# will result in a user-defined paragraph with heading "Side Effects:". +# You can put \n's in the value part of an alias to insert newlines. + +ALIASES = + +# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C +# sources only. Doxygen will then generate output that is more tailored for C. +# For instance, some of the names that are used will be different. The list +# of all members will be omitted, etc. + +OPTIMIZE_OUTPUT_FOR_C = YES + +# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java +# sources only. Doxygen will then generate output that is more tailored for +# Java. For instance, namespaces will be presented as packages, qualified +# scopes will look different, etc. + +OPTIMIZE_OUTPUT_JAVA = NO + +# Set the OPTIMIZE_FOR_FORTRAN tag to YES if your project consists of Fortran +# sources only. Doxygen will then generate output that is more tailored for +# Fortran. + +OPTIMIZE_FOR_FORTRAN = NO + +# Set the OPTIMIZE_OUTPUT_VHDL tag to YES if your project consists of VHDL +# sources. Doxygen will then generate output that is tailored for +# VHDL. + +OPTIMIZE_OUTPUT_VHDL = NO + +# Doxygen selects the parser to use depending on the extension of the files it +# parses. With this tag you can assign which parser to use for a given extension. +# Doxygen has a built-in mapping, but you can override or extend it using this +# tag. The format is ext=language, where ext is a file extension, and language +# is one of the parsers supported by doxygen: IDL, Java, Javascript, CSharp, C, +# C++, D, PHP, Objective-C, Python, Fortran, VHDL, C, C++. For instance to make +# doxygen treat .inc files as Fortran files (default is PHP), and .f files as C +# (default is Fortran), use: inc=Fortran f=C. Note that for custom extensions +# you also need to set FILE_PATTERNS otherwise the files are not read by doxygen. + +EXTENSION_MAPPING = + +# If you use STL classes (i.e. std::string, std::vector, etc.) but do not want +# to include (a tag file for) the STL sources as input, then you should +# set this tag to YES in order to let doxygen match functions declarations and +# definitions whose arguments contain STL classes (e.g. func(std::string); v.s. +# func(std::string) {}). This also make the inheritance and collaboration +# diagrams that involve STL classes more complete and accurate. + +BUILTIN_STL_SUPPORT = NO + +# If you use Microsoft's C++/CLI language, you should set this option to YES to +# enable parsing support. + +CPP_CLI_SUPPORT = NO + +# Set the SIP_SUPPORT tag to YES if your project consists of sip sources only. +# Doxygen will parse them like normal C++ but will assume all classes use public +# instead of private inheritance when no explicit protection keyword is present. + +SIP_SUPPORT = NO + +# For Microsoft's IDL there are propget and propput attributes to indicate getter +# and setter methods for a property. Setting this option to YES (the default) +# will make doxygen to replace the get and set methods by a property in the +# documentation. This will only work if the methods are indeed getting or +# setting a simple type. If this is not the case, or you want to show the +# methods anyway, you should set this option to NO. + +IDL_PROPERTY_SUPPORT = YES + +# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC +# tag is set to YES, then doxygen will reuse the documentation of the first +# member in the group (if any) for the other members of the group. By default +# all members of a group must be documented explicitly. + +DISTRIBUTE_GROUP_DOC = NO + +# Set the SUBGROUPING tag to YES (the default) to allow class member groups of +# the same type (for instance a group of public functions) to be put as a +# subgroup of that type (e.g. under the Public Functions section). Set it to +# NO to prevent subgrouping. Alternatively, this can be done per class using +# the \nosubgrouping command. + +SUBGROUPING = YES + +# When TYPEDEF_HIDES_STRUCT is enabled, a typedef of a struct, union, or enum +# is documented as struct, union, or enum with the name of the typedef. So +# typedef struct TypeS {} TypeT, will appear in the documentation as a struct +# with name TypeT. When disabled the typedef will appear as a member of a file, +# namespace, or class. And the struct will be named TypeS. This can typically +# be useful for C code in case the coding convention dictates that all compound +# types are typedef'ed and only the typedef is referenced, never the tag name. + +TYPEDEF_HIDES_STRUCT = YES + +# The SYMBOL_CACHE_SIZE determines the size of the internal cache use to +# determine which symbols to keep in memory and which to flush to disk. +# When the cache is full, less often used symbols will be written to disk. +# For small to medium size projects (<1000 input files) the default value is +# probably good enough. For larger projects a too small cache size can cause +# doxygen to be busy swapping symbols to and from disk most of the time +# causing a significant performance penality. +# If the system has enough physical memory increasing the cache will improve the +# performance by keeping more symbols in memory. Note that the value works on +# a logarithmic scale so increasing the size by one will roughly double the +# memory usage. The cache size is given by this formula: +# 2^(16+SYMBOL_CACHE_SIZE). The valid range is 0..9, the default is 0, +# corresponding to a cache size of 2^16 = 65536 symbols + +SYMBOL_CACHE_SIZE = 0 + +#--------------------------------------------------------------------------- +# Build related configuration options +#--------------------------------------------------------------------------- + +# If the EXTRACT_ALL tag is set to YES doxygen will assume all entities in +# documentation are documented, even if no documentation was available. +# Private class members and static file members will be hidden unless +# the EXTRACT_PRIVATE and EXTRACT_STATIC tags are set to YES + +EXTRACT_ALL = YES + +# If the EXTRACT_PRIVATE tag is set to YES all private members of a class +# will be included in the documentation. + +EXTRACT_PRIVATE = YES + +# If the EXTRACT_STATIC tag is set to YES all static members of a file +# will be included in the documentation. + +EXTRACT_STATIC = YES + +# If the EXTRACT_LOCAL_CLASSES tag is set to YES classes (and structs) +# defined locally in source files will be included in the documentation. +# If set to NO only classes defined in header files are included. + +EXTRACT_LOCAL_CLASSES = YES + +# This flag is only useful for Objective-C code. When set to YES local +# methods, which are defined in the implementation section but not in +# the interface are included in the documentation. +# If set to NO (the default) only methods in the interface are included. + +EXTRACT_LOCAL_METHODS = NO + +# If this flag is set to YES, the members of anonymous namespaces will be +# extracted and appear in the documentation as a namespace called +# 'anonymous_namespace{file}', where file will be replaced with the base +# name of the file that contains the anonymous namespace. By default +# anonymous namespace are hidden. + +EXTRACT_ANON_NSPACES = NO + +# If the HIDE_UNDOC_MEMBERS tag is set to YES, Doxygen will hide all +# undocumented members of documented classes, files or namespaces. +# If set to NO (the default) these members will be included in the +# various overviews, but no documentation section is generated. +# This option has no effect if EXTRACT_ALL is enabled. + +HIDE_UNDOC_MEMBERS = NO + +# If the HIDE_UNDOC_CLASSES tag is set to YES, Doxygen will hide all +# undocumented classes that are normally visible in the class hierarchy. +# If set to NO (the default) these classes will be included in the various +# overviews. This option has no effect if EXTRACT_ALL is enabled. + +HIDE_UNDOC_CLASSES = NO + +# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, Doxygen will hide all +# friend (class|struct|union) declarations. +# If set to NO (the default) these declarations will be included in the +# documentation. + +HIDE_FRIEND_COMPOUNDS = NO + +# If the HIDE_IN_BODY_DOCS tag is set to YES, Doxygen will hide any +# documentation blocks found inside the body of a function. +# If set to NO (the default) these blocks will be appended to the +# function's detailed documentation block. + +HIDE_IN_BODY_DOCS = NO + +# The INTERNAL_DOCS tag determines if documentation +# that is typed after a \internal command is included. If the tag is set +# to NO (the default) then the documentation will be excluded. +# Set it to YES to include the internal documentation. + +INTERNAL_DOCS = NO + +# If the CASE_SENSE_NAMES tag is set to NO then Doxygen will only generate +# file names in lower-case letters. If set to YES upper-case letters are also +# allowed. This is useful if you have classes or files whose names only differ +# in case and if your file system supports case sensitive file names. Windows +# and Mac users are advised to set this option to NO. + +CASE_SENSE_NAMES = YES + +# If the HIDE_SCOPE_NAMES tag is set to NO (the default) then Doxygen +# will show members with their full class and namespace scopes in the +# documentation. If set to YES the scope will be hidden. + +HIDE_SCOPE_NAMES = NO + +# If the SHOW_INCLUDE_FILES tag is set to YES (the default) then Doxygen +# will put a list of the files that are included by a file in the documentation +# of that file. + +SHOW_INCLUDE_FILES = YES + +# If the FORCE_LOCAL_INCLUDES tag is set to YES then Doxygen +# will list include files with double quotes in the documentation +# rather than with sharp brackets. + +FORCE_LOCAL_INCLUDES = NO + +# If the INLINE_INFO tag is set to YES (the default) then a tag [inline] +# is inserted in the documentation for inline members. + +INLINE_INFO = YES + +# If the SORT_MEMBER_DOCS tag is set to YES (the default) then doxygen +# will sort the (detailed) documentation of file and class members +# alphabetically by member name. If set to NO the members will appear in +# declaration order. + +SORT_MEMBER_DOCS = NO + +# If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the +# brief documentation of file, namespace and class members alphabetically +# by member name. If set to NO (the default) the members will appear in +# declaration order. + +SORT_BRIEF_DOCS = NO + +# If the SORT_MEMBERS_CTORS_1ST tag is set to YES then doxygen +# will sort the (brief and detailed) documentation of class members so that +# constructors and destructors are listed first. If set to NO (the default) +# the constructors will appear in the respective orders defined by +# SORT_MEMBER_DOCS and SORT_BRIEF_DOCS. +# This tag will be ignored for brief docs if SORT_BRIEF_DOCS is set to NO +# and ignored for detailed docs if SORT_MEMBER_DOCS is set to NO. + +SORT_MEMBERS_CTORS_1ST = NO + +# If the SORT_GROUP_NAMES tag is set to YES then doxygen will sort the +# hierarchy of group names into alphabetical order. If set to NO (the default) +# the group names will appear in their defined order. + +SORT_GROUP_NAMES = NO + +# If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be +# sorted by fully-qualified names, including namespaces. If set to +# NO (the default), the class list will be sorted only by class name, +# not including the namespace part. +# Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES. +# Note: This option applies only to the class list, not to the +# alphabetical list. + +SORT_BY_SCOPE_NAME = NO + +# The GENERATE_TODOLIST tag can be used to enable (YES) or +# disable (NO) the todo list. This list is created by putting \todo +# commands in the documentation. + +GENERATE_TODOLIST = YES + +# The GENERATE_TESTLIST tag can be used to enable (YES) or +# disable (NO) the test list. This list is created by putting \test +# commands in the documentation. + +GENERATE_TESTLIST = YES + +# The GENERATE_BUGLIST tag can be used to enable (YES) or +# disable (NO) the bug list. This list is created by putting \bug +# commands in the documentation. + +GENERATE_BUGLIST = YES + +# The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or +# disable (NO) the deprecated list. This list is created by putting +# \deprecated commands in the documentation. + +GENERATE_DEPRECATEDLIST= YES + +# The ENABLED_SECTIONS tag can be used to enable conditional +# documentation sections, marked by \if sectionname ... \endif. + +ENABLED_SECTIONS = + +# The MAX_INITIALIZER_LINES tag determines the maximum number of lines +# the initial value of a variable or define consists of for it to appear in +# the documentation. If the initializer consists of more lines than specified +# here it will be hidden. Use a value of 0 to hide initializers completely. +# The appearance of the initializer of individual variables and defines in the +# documentation can be controlled using \showinitializer or \hideinitializer +# command in the documentation regardless of this setting. + +MAX_INITIALIZER_LINES = 30 + +# Set the SHOW_USED_FILES tag to NO to disable the list of files generated +# at the bottom of the documentation of classes and structs. If set to YES the +# list will mention the files that were used to generate the documentation. + +SHOW_USED_FILES = YES + +# Set the SHOW_FILES tag to NO to disable the generation of the Files page. +# This will remove the Files entry from the Quick Index and from the +# Folder Tree View (if specified). The default is YES. + +SHOW_FILES = YES + +# Set the SHOW_NAMESPACES tag to NO to disable the generation of the +# Namespaces page. +# This will remove the Namespaces entry from the Quick Index +# and from the Folder Tree View (if specified). The default is YES. + +SHOW_NAMESPACES = YES + +# The FILE_VERSION_FILTER tag can be used to specify a program or script that +# doxygen should invoke to get the current version for each file (typically from +# the version control system). Doxygen will invoke the program by executing (via +# popen()) the command , where is the value of +# the FILE_VERSION_FILTER tag, and is the name of an input file +# provided by doxygen. Whatever the program writes to standard output +# is used as the file version. See the manual for examples. + +FILE_VERSION_FILTER = + +# The LAYOUT_FILE tag can be used to specify a layout file which will be parsed +# by doxygen. The layout file controls the global structure of the generated +# output files in an output format independent way. The create the layout file +# that represents doxygen's defaults, run doxygen with the -l option. +# You can optionally specify a file name after the option, if omitted +# DoxygenLayout.xml will be used as the name of the layout file. + +LAYOUT_FILE = + +#--------------------------------------------------------------------------- +# configuration options related to warning and progress messages +#--------------------------------------------------------------------------- + +# The QUIET tag can be used to turn on/off the messages that are generated +# by doxygen. Possible values are YES and NO. If left blank NO is used. + +QUIET = YES + +# The WARNINGS tag can be used to turn on/off the warning messages that are +# generated by doxygen. Possible values are YES and NO. If left blank +# NO is used. + +WARNINGS = YES + +# If WARN_IF_UNDOCUMENTED is set to YES, then doxygen will generate warnings +# for undocumented members. If EXTRACT_ALL is set to YES then this flag will +# automatically be disabled. + +WARN_IF_UNDOCUMENTED = YES + +# If WARN_IF_DOC_ERROR is set to YES, doxygen will generate warnings for +# potential errors in the documentation, such as not documenting some +# parameters in a documented function, or documenting parameters that +# don't exist or using markup commands wrongly. + +WARN_IF_DOC_ERROR = YES + +# This WARN_NO_PARAMDOC option can be abled to get warnings for +# functions that are documented, but have no documentation for their parameters +# or return value. If set to NO (the default) doxygen will only warn about +# wrong or incomplete parameter documentation, but not about the absence of +# documentation. + +WARN_NO_PARAMDOC = NO + +# The WARN_FORMAT tag determines the format of the warning messages that +# doxygen can produce. The string should contain the $file, $line, and $text +# tags, which will be replaced by the file and line number from which the +# warning originated and the warning text. Optionally the format may contain +# $version, which will be replaced by the version of the file (if it could +# be obtained via FILE_VERSION_FILTER) + +WARN_FORMAT = "$file:$line: $text" + +# The WARN_LOGFILE tag can be used to specify a file to which warning +# and error messages should be written. If left blank the output is written +# to stderr. + +WARN_LOGFILE = + +#--------------------------------------------------------------------------- +# configuration options related to the input files +#--------------------------------------------------------------------------- + +# The INPUT tag can be used to specify the files and/or directories that contain +# documented source files. You may enter file names like "myfile.cpp" or +# directories like "/usr/src/myproject". Separate the files or directories +# with spaces. + +INPUT = + +# This tag can be used to specify the character encoding of the source files +# that doxygen parses. Internally doxygen uses the UTF-8 encoding, which is +# also the default input encoding. Doxygen uses libiconv (or the iconv built +# into libc) for the transcoding. See http://www.gnu.org/software/libiconv for +# the list of possible encodings. + +INPUT_ENCODING = UTF-8 + +# If the value of the INPUT tag contains directories, you can use the +# FILE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp +# and *.h) to filter out the source-files in the directories. If left +# blank the following patterns are tested: +# *.c *.cc *.cxx *.cpp *.c++ *.java *.ii *.ixx *.ipp *.i++ *.inl *.h *.hh *.hxx +# *.hpp *.h++ *.idl *.odl *.cs *.php *.php3 *.inc *.m *.mm *.py *.f90 + +FILE_PATTERNS = + +# The RECURSIVE tag can be used to turn specify whether or not subdirectories +# should be searched for input files as well. Possible values are YES and NO. +# If left blank NO is used. + +RECURSIVE = YES + +# The EXCLUDE tag can be used to specify files and/or directories that should +# excluded from the INPUT source files. This way you can easily exclude a +# subdirectory from a directory tree whose root is specified with the INPUT tag. + +EXCLUDE = + +# The EXCLUDE_SYMLINKS tag can be used select whether or not files or +# directories that are symbolic links (a Unix filesystem feature) are excluded +# from the input. + +EXCLUDE_SYMLINKS = NO + +# If the value of the INPUT tag contains directories, you can use the +# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude +# certain files from those directories. Note that the wildcards are matched +# against the file with absolute path, so to exclude all test directories +# for example use the pattern */test/* + +EXCLUDE_PATTERNS = *.git \ + *.d + +# The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names +# (namespaces, classes, functions, etc.) that should be excluded from the +# output. The symbol name can be a fully qualified name, a word, or if the +# wildcard * is used, a substring. Examples: ANamespace, AClass, +# AClass::ANamespace, ANamespace::*Test + +EXCLUDE_SYMBOLS = + +# The EXAMPLE_PATH tag can be used to specify one or more files or +# directories that contain example code fragments that are included (see +# the \include command). + +EXAMPLE_PATH = doc/examples/ + +# If the value of the EXAMPLE_PATH tag contains directories, you can use the +# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp +# and *.h) to filter out the source-files in the directories. If left +# blank all files are included. + +EXAMPLE_PATTERNS = *.c + +# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be +# searched for input files to be used with the \include or \dontinclude +# commands irrespective of the value of the RECURSIVE tag. +# Possible values are YES and NO. If left blank NO is used. + +EXAMPLE_RECURSIVE = NO + +# The IMAGE_PATH tag can be used to specify one or more files or +# directories that contain image that are included in the documentation (see +# the \image command). + +IMAGE_PATH = + +# The INPUT_FILTER tag can be used to specify a program that doxygen should +# invoke to filter for each input file. Doxygen will invoke the filter program +# by executing (via popen()) the command , where +# is the value of the INPUT_FILTER tag, and is the name of an +# input file. Doxygen will then use the output that the filter program writes +# to standard output. +# If FILTER_PATTERNS is specified, this tag will be +# ignored. + +INPUT_FILTER = + +# The FILTER_PATTERNS tag can be used to specify filters on a per file pattern +# basis. +# Doxygen will compare the file name with each pattern and apply the +# filter if there is a match. +# The filters are a list of the form: +# pattern=filter (like *.cpp=my_cpp_filter). See INPUT_FILTER for further +# info on how filters are used. If FILTER_PATTERNS is empty, INPUT_FILTER +# is applied to all files. + +FILTER_PATTERNS = + +# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using +# INPUT_FILTER) will be used to filter the input files when producing source +# files to browse (i.e. when SOURCE_BROWSER is set to YES). + +FILTER_SOURCE_FILES = NO + +#--------------------------------------------------------------------------- +# configuration options related to source browsing +#--------------------------------------------------------------------------- + +# If the SOURCE_BROWSER tag is set to YES then a list of source files will +# be generated. Documented entities will be cross-referenced with these sources. +# Note: To get rid of all source code in the generated output, make sure also +# VERBATIM_HEADERS is set to NO. + +SOURCE_BROWSER = YES + +# Setting the INLINE_SOURCES tag to YES will include the body +# of functions and classes directly in the documentation. + +INLINE_SOURCES = NO + +# Setting the STRIP_CODE_COMMENTS tag to YES (the default) will instruct +# doxygen to hide any special comment blocks from generated source code +# fragments. Normal C and C++ comments will always remain visible. + +STRIP_CODE_COMMENTS = NO + +# If the REFERENCED_BY_RELATION tag is set to YES +# then for each documented function all documented +# functions referencing it will be listed. + +REFERENCED_BY_RELATION = YES + +# If the REFERENCES_RELATION tag is set to YES +# then for each documented function all documented entities +# called/used by that function will be listed. + +REFERENCES_RELATION = NO + +# If the REFERENCES_LINK_SOURCE tag is set to YES (the default) +# and SOURCE_BROWSER tag is set to YES, then the hyperlinks from +# functions in REFERENCES_RELATION and REFERENCED_BY_RELATION lists will +# link to the source code. +# Otherwise they will link to the documentation. + +REFERENCES_LINK_SOURCE = YES + +# If the USE_HTAGS tag is set to YES then the references to source code +# will point to the HTML generated by the htags(1) tool instead of doxygen +# built-in source browser. The htags tool is part of GNU's global source +# tagging system (see http://www.gnu.org/software/global/global.html). You +# will need version 4.8.6 or higher. + +USE_HTAGS = NO + +# If the VERBATIM_HEADERS tag is set to YES (the default) then Doxygen +# will generate a verbatim copy of the header file for each class for +# which an include is specified. Set to NO to disable this. + +VERBATIM_HEADERS = YES + +#--------------------------------------------------------------------------- +# configuration options related to the alphabetical class index +#--------------------------------------------------------------------------- + +# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index +# of all compounds will be generated. Enable this if the project +# contains a lot of classes, structs, unions or interfaces. + +ALPHABETICAL_INDEX = YES + +# If the alphabetical index is enabled (see ALPHABETICAL_INDEX) then +# the COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns +# in which this list will be split (can be a number in the range [1..20]) + +COLS_IN_ALPHA_INDEX = 5 + +# In case all classes in a project start with a common prefix, all +# classes will be put under the same header in the alphabetical index. +# The IGNORE_PREFIX tag can be used to specify one or more prefixes that +# should be ignored while generating the index headers. + +IGNORE_PREFIX = + +#--------------------------------------------------------------------------- +# configuration options related to the HTML output +#--------------------------------------------------------------------------- + +# If the GENERATE_HTML tag is set to YES (the default) Doxygen will +# generate HTML output. + +GENERATE_HTML = YES + +# The HTML_OUTPUT tag is used to specify where the HTML docs will be put. +# If a relative path is entered the value of OUTPUT_DIRECTORY will be +# put in front of it. If left blank `html' will be used as the default path. + +HTML_OUTPUT = html + +# The HTML_FILE_EXTENSION tag can be used to specify the file extension for +# each generated HTML page (for example: .htm,.php,.asp). If it is left blank +# doxygen will generate files with .html extension. + +HTML_FILE_EXTENSION = .html + +# The HTML_HEADER tag can be used to specify a personal HTML header for +# each generated HTML page. If it is left blank doxygen will generate a +# standard header. + +HTML_HEADER = + +# The HTML_FOOTER tag can be used to specify a personal HTML footer for +# each generated HTML page. If it is left blank doxygen will generate a +# standard footer. + +HTML_FOOTER = + +# The HTML_STYLESHEET tag can be used to specify a user-defined cascading +# style sheet that is used by each HTML page. It can be used to +# fine-tune the look of the HTML output. If the tag is left blank doxygen +# will generate a default style sheet. Note that doxygen will try to copy +# the style sheet file to the HTML output directory, so don't put your own +# stylesheet in the HTML output directory as well, or it will be erased! + +HTML_STYLESHEET = + +# The HTML_COLORSTYLE_HUE tag controls the color of the HTML output. +# Doxygen will adjust the colors in the stylesheet and background images +# according to this color. Hue is specified as an angle on a colorwheel, +# see http://en.wikipedia.org/wiki/Hue for more information. +# For instance the value 0 represents red, 60 is yellow, 120 is green, +# 180 is cyan, 240 is blue, 300 purple, and 360 is red again. +# The allowed range is 0 to 359. + +#HTML_COLORSTYLE_HUE = 120 + +# The HTML_COLORSTYLE_SAT tag controls the purity (or saturation) of +# the colors in the HTML output. For a value of 0 the output will use +# grayscales only. A value of 255 will produce the most vivid colors. + +HTML_COLORSTYLE_SAT = 100 + +# The HTML_COLORSTYLE_GAMMA tag controls the gamma correction applied to +# the luminance component of the colors in the HTML output. Values below +# 100 gradually make the output lighter, whereas values above 100 make +# the output darker. The value divided by 100 is the actual gamma applied, +# so 80 represents a gamma of 0.8, The value 220 represents a gamma of 2.2, +# and 100 does not change the gamma. + +HTML_COLORSTYLE_GAMMA = 80 + +# If the HTML_TIMESTAMP tag is set to YES then the footer of each generated HTML +# page will contain the date and time when the page was generated. Setting +# this to NO can help when comparing the output of multiple runs. + +HTML_TIMESTAMP = YES + +# If the HTML_DYNAMIC_SECTIONS tag is set to YES then the generated HTML +# documentation will contain sections that can be hidden and shown after the +# page has loaded. For this to work a browser that supports +# JavaScript and DHTML is required (for instance Mozilla 1.0+, Firefox +# Netscape 6.0+, Internet explorer 5.0+, Konqueror, or Safari). + +HTML_DYNAMIC_SECTIONS = NO + +# If the GENERATE_DOCSET tag is set to YES, additional index files +# will be generated that can be used as input for Apple's Xcode 3 +# integrated development environment, introduced with OS X 10.5 (Leopard). +# To create a documentation set, doxygen will generate a Makefile in the +# HTML output directory. Running make will produce the docset in that +# directory and running "make install" will install the docset in +# ~/Library/Developer/Shared/Documentation/DocSets so that Xcode will find +# it at startup. +# See http://developer.apple.com/tools/creatingdocsetswithdoxygen.html +# for more information. + +GENERATE_DOCSET = NO + +# When GENERATE_DOCSET tag is set to YES, this tag determines the name of the +# feed. A documentation feed provides an umbrella under which multiple +# documentation sets from a single provider (such as a company or product suite) +# can be grouped. + +DOCSET_FEEDNAME = "Doxygen generated docs" + +# When GENERATE_DOCSET tag is set to YES, this tag specifies a string that +# should uniquely identify the documentation set bundle. This should be a +# reverse domain-name style string, e.g. com.mycompany.MyDocSet. Doxygen +# will append .docset to the name. + +DOCSET_BUNDLE_ID = org.doxygen.Project + +# When GENERATE_PUBLISHER_ID tag specifies a string that should uniquely identify +# the documentation publisher. This should be a reverse domain-name style +# string, e.g. com.mycompany.MyDocSet.documentation. + +DOCSET_PUBLISHER_ID = org.doxygen.Publisher + +# The GENERATE_PUBLISHER_NAME tag identifies the documentation publisher. + +DOCSET_PUBLISHER_NAME = Publisher + +# If the GENERATE_HTMLHELP tag is set to YES, additional index files +# will be generated that can be used as input for tools like the +# Microsoft HTML help workshop to generate a compiled HTML help file (.chm) +# of the generated HTML documentation. + +GENERATE_HTMLHELP = NO + +# If the GENERATE_HTMLHELP tag is set to YES, the CHM_FILE tag can +# be used to specify the file name of the resulting .chm file. You +# can add a path in front of the file if the result should not be +# written to the html output directory. + +CHM_FILE = + +# If the GENERATE_HTMLHELP tag is set to YES, the HHC_LOCATION tag can +# be used to specify the location (absolute path including file name) of +# the HTML help compiler (hhc.exe). If non-empty doxygen will try to run +# the HTML help compiler on the generated index.hhp. + +HHC_LOCATION = + +# If the GENERATE_HTMLHELP tag is set to YES, the GENERATE_CHI flag +# controls if a separate .chi index file is generated (YES) or that +# it should be included in the master .chm file (NO). + +GENERATE_CHI = NO + +# If the GENERATE_HTMLHELP tag is set to YES, the CHM_INDEX_ENCODING +# is used to encode HtmlHelp index (hhk), content (hhc) and project file +# content. + +CHM_INDEX_ENCODING = + +# If the GENERATE_HTMLHELP tag is set to YES, the BINARY_TOC flag +# controls whether a binary table of contents is generated (YES) or a +# normal table of contents (NO) in the .chm file. + +BINARY_TOC = NO + +# The TOC_EXPAND flag can be set to YES to add extra items for group members +# to the contents of the HTML help documentation and to the tree view. + +TOC_EXPAND = NO + +# If the GENERATE_QHP tag is set to YES and both QHP_NAMESPACE and +# QHP_VIRTUAL_FOLDER are set, an additional index file will be generated +# that can be used as input for Qt's qhelpgenerator to generate a +# Qt Compressed Help (.qch) of the generated HTML documentation. + +GENERATE_QHP = NO + +# If the QHG_LOCATION tag is specified, the QCH_FILE tag can +# be used to specify the file name of the resulting .qch file. +# The path specified is relative to the HTML output folder. + +QCH_FILE = + +# The QHP_NAMESPACE tag specifies the namespace to use when generating +# Qt Help Project output. For more information please see +# http://doc.trolltech.com/qthelpproject.html#namespace + +QHP_NAMESPACE = org.doxygen.Project + +# The QHP_VIRTUAL_FOLDER tag specifies the namespace to use when generating +# Qt Help Project output. For more information please see +# http://doc.trolltech.com/qthelpproject.html#virtual-folders + +QHP_VIRTUAL_FOLDER = doc + +# If QHP_CUST_FILTER_NAME is set, it specifies the name of a custom filter to +# add. For more information please see +# http://doc.trolltech.com/qthelpproject.html#custom-filters + +QHP_CUST_FILTER_NAME = + +# The QHP_CUST_FILT_ATTRS tag specifies the list of the attributes of the +# custom filter to add. For more information please see +# +# Qt Help Project / Custom Filters. + +QHP_CUST_FILTER_ATTRS = + +# The QHP_SECT_FILTER_ATTRS tag specifies the list of the attributes this +# project's +# filter section matches. +# +# Qt Help Project / Filter Attributes. + +QHP_SECT_FILTER_ATTRS = + +# If the GENERATE_QHP tag is set to YES, the QHG_LOCATION tag can +# be used to specify the location of Qt's qhelpgenerator. +# If non-empty doxygen will try to run qhelpgenerator on the generated +# .qhp file. + +QHG_LOCATION = + +# If the GENERATE_ECLIPSEHELP tag is set to YES, additional index files +# will be generated, which together with the HTML files, form an Eclipse help +# plugin. To install this plugin and make it available under the help contents +# menu in Eclipse, the contents of the directory containing the HTML and XML +# files needs to be copied into the plugins directory of eclipse. The name of +# the directory within the plugins directory should be the same as +# the ECLIPSE_DOC_ID value. After copying Eclipse needs to be restarted before +# the help appears. + +GENERATE_ECLIPSEHELP = NO + +# A unique identifier for the eclipse help plugin. When installing the plugin +# the directory name containing the HTML and XML files should also have +# this name. + +ECLIPSE_DOC_ID = org.doxygen.Project + +# The DISABLE_INDEX tag can be used to turn on/off the condensed index at +# top of each HTML page. The value NO (the default) enables the index and +# the value YES disables it. + +DISABLE_INDEX = NO + +# This tag can be used to set the number of enum values (range [1..20]) +# that doxygen will group on one line in the generated HTML documentation. + +ENUM_VALUES_PER_LINE = 4 + +# The GENERATE_TREEVIEW tag is used to specify whether a tree-like index +# structure should be generated to display hierarchical information. +# If the tag value is set to YES, a side panel will be generated +# containing a tree-like index structure (just like the one that +# is generated for HTML Help). For this to work a browser that supports +# JavaScript, DHTML, CSS and frames is required (i.e. any modern browser). +# Windows users are probably better off using the HTML help feature. + +GENERATE_TREEVIEW = NO + +# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be +# used to set the initial width (in pixels) of the frame in which the tree +# is shown. + +TREEVIEW_WIDTH = 250 + +# When the EXT_LINKS_IN_WINDOW option is set to YES doxygen will open +# links to external symbols imported via tag files in a separate window. + +EXT_LINKS_IN_WINDOW = NO + +# Use this tag to change the font size of Latex formulas included +# as images in the HTML documentation. The default is 10. Note that +# when you change the font size after a successful doxygen run you need +# to manually remove any form_*.png images from the HTML output directory +# to force them to be regenerated. + +FORMULA_FONTSIZE = 10 + +# Use the FORMULA_TRANPARENT tag to determine whether or not the images +# generated for formulas are transparent PNGs. Transparent PNGs are +# not supported properly for IE 6.0, but are supported on all modern browsers. +# Note that when changing this option you need to delete any form_*.png files +# in the HTML output before the changes have effect. + +FORMULA_TRANSPARENT = YES + +# When the SEARCHENGINE tag is enabled doxygen will generate a search box +# for the HTML output. The underlying search engine uses javascript +# and DHTML and should work on any modern browser. Note that when using +# HTML help (GENERATE_HTMLHELP), Qt help (GENERATE_QHP), or docsets +# (GENERATE_DOCSET) there is already a search function so this one should +# typically be disabled. For large projects the javascript based search engine +# can be slow, then enabling SERVER_BASED_SEARCH may provide a better solution. + +SEARCHENGINE = YES + +# When the SERVER_BASED_SEARCH tag is enabled the search engine will be +# implemented using a PHP enabled web server instead of at the web client +# using Javascript. Doxygen will generate the search PHP script and index +# file to put on the web server. The advantage of the server +# based approach is that it scales better to large projects and allows +# full text search. The disadvances is that it is more difficult to setup +# and does not have live searching capabilities. + +SERVER_BASED_SEARCH = NO + +#--------------------------------------------------------------------------- +# configuration options related to the LaTeX output +#--------------------------------------------------------------------------- + +# If the GENERATE_LATEX tag is set to YES (the default) Doxygen will +# generate Latex output. + +GENERATE_LATEX = NO + +# The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put. +# If a relative path is entered the value of OUTPUT_DIRECTORY will be +# put in front of it. If left blank `latex' will be used as the default path. + +LATEX_OUTPUT = latex + +# The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be +# invoked. If left blank `latex' will be used as the default command name. +# Note that when enabling USE_PDFLATEX this option is only used for +# generating bitmaps for formulas in the HTML output, but not in the +# Makefile that is written to the output directory. + +LATEX_CMD_NAME = latex + +# The MAKEINDEX_CMD_NAME tag can be used to specify the command name to +# generate index for LaTeX. If left blank `makeindex' will be used as the +# default command name. + +MAKEINDEX_CMD_NAME = makeindex + +# If the COMPACT_LATEX tag is set to YES Doxygen generates more compact +# LaTeX documents. This may be useful for small projects and may help to +# save some trees in general. + +COMPACT_LATEX = NO + +# The PAPER_TYPE tag can be used to set the paper type that is used +# by the printer. Possible values are: a4, a4wide, letter, legal and +# executive. If left blank a4wide will be used. + +PAPER_TYPE = a4wide + +# The EXTRA_PACKAGES tag can be to specify one or more names of LaTeX +# packages that should be included in the LaTeX output. + +EXTRA_PACKAGES = + +# The LATEX_HEADER tag can be used to specify a personal LaTeX header for +# the generated latex document. The header should contain everything until +# the first chapter. If it is left blank doxygen will generate a +# standard header. Notice: only use this tag if you know what you are doing! + +LATEX_HEADER = + +# If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated +# is prepared for conversion to pdf (using ps2pdf). The pdf file will +# contain links (just like the HTML output) instead of page references +# This makes the output suitable for online browsing using a pdf viewer. + +PDF_HYPERLINKS = NO + +# If the USE_PDFLATEX tag is set to YES, pdflatex will be used instead of +# plain latex in the generated Makefile. Set this option to YES to get a +# higher quality PDF documentation. + +USE_PDFLATEX = NO + +# If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \\batchmode. +# command to the generated LaTeX files. This will instruct LaTeX to keep +# running if errors occur, instead of asking the user for help. +# This option is also used when generating formulas in HTML. + +LATEX_BATCHMODE = NO + +# If LATEX_HIDE_INDICES is set to YES then doxygen will not +# include the index chapters (such as File Index, Compound Index, etc.) +# in the output. + +LATEX_HIDE_INDICES = NO + +# If LATEX_SOURCE_CODE is set to YES then doxygen will include +# source code with syntax highlighting in the LaTeX output. +# Note that which sources are shown also depends on other settings +# such as SOURCE_BROWSER. + +LATEX_SOURCE_CODE = NO + +#--------------------------------------------------------------------------- +# configuration options related to the RTF output +#--------------------------------------------------------------------------- + +# If the GENERATE_RTF tag is set to YES Doxygen will generate RTF output +# The RTF output is optimized for Word 97 and may not look very pretty with +# other RTF readers or editors. + +GENERATE_RTF = NO + +# The RTF_OUTPUT tag is used to specify where the RTF docs will be put. +# If a relative path is entered the value of OUTPUT_DIRECTORY will be +# put in front of it. If left blank `rtf' will be used as the default path. + +RTF_OUTPUT = rtf + +# If the COMPACT_RTF tag is set to YES Doxygen generates more compact +# RTF documents. This may be useful for small projects and may help to +# save some trees in general. + +COMPACT_RTF = NO + +# If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated +# will contain hyperlink fields. The RTF file will +# contain links (just like the HTML output) instead of page references. +# This makes the output suitable for online browsing using WORD or other +# programs which support those fields. +# Note: wordpad (write) and others do not support links. + +RTF_HYPERLINKS = NO + +# Load stylesheet definitions from file. Syntax is similar to doxygen's +# config file, i.e. a series of assignments. You only have to provide +# replacements, missing definitions are set to their default value. + +RTF_STYLESHEET_FILE = + +# Set optional variables used in the generation of an rtf document. +# Syntax is similar to doxygen's config file. + +RTF_EXTENSIONS_FILE = + +#--------------------------------------------------------------------------- +# configuration options related to the man page output +#--------------------------------------------------------------------------- + +# If the GENERATE_MAN tag is set to YES (the default) Doxygen will +# generate man pages + +GENERATE_MAN = NO + +# The MAN_OUTPUT tag is used to specify where the man pages will be put. +# If a relative path is entered the value of OUTPUT_DIRECTORY will be +# put in front of it. If left blank `man' will be used as the default path. + +MAN_OUTPUT = man + +# The MAN_EXTENSION tag determines the extension that is added to +# the generated man pages (default is the subroutine's section .3) + +MAN_EXTENSION = .3 + +# If the MAN_LINKS tag is set to YES and Doxygen generates man output, +# then it will generate one additional man file for each entity +# documented in the real man page(s). These additional files +# only source the real man page, but without them the man command +# would be unable to find the correct page. The default is NO. + +MAN_LINKS = NO + +#--------------------------------------------------------------------------- +# configuration options related to the XML output +#--------------------------------------------------------------------------- + +# If the GENERATE_XML tag is set to YES Doxygen will +# generate an XML file that captures the structure of +# the code including all documentation. + +GENERATE_XML = NO + +# The XML_OUTPUT tag is used to specify where the XML pages will be put. +# If a relative path is entered the value of OUTPUT_DIRECTORY will be +# put in front of it. If left blank `xml' will be used as the default path. + +XML_OUTPUT = xml + +# The XML_SCHEMA tag can be used to specify an XML schema, +# which can be used by a validating XML parser to check the +# syntax of the XML files. + +XML_SCHEMA = + +# The XML_DTD tag can be used to specify an XML DTD, +# which can be used by a validating XML parser to check the +# syntax of the XML files. + +XML_DTD = + +# If the XML_PROGRAMLISTING tag is set to YES Doxygen will +# dump the program listings (including syntax highlighting +# and cross-referencing information) to the XML output. Note that +# enabling this will significantly increase the size of the XML output. + +XML_PROGRAMLISTING = YES + +#--------------------------------------------------------------------------- +# configuration options for the AutoGen Definitions output +#--------------------------------------------------------------------------- + +# If the GENERATE_AUTOGEN_DEF tag is set to YES Doxygen will +# generate an AutoGen Definitions (see autogen.sf.net) file +# that captures the structure of the code including all +# documentation. Note that this feature is still experimental +# and incomplete at the moment. + +GENERATE_AUTOGEN_DEF = NO + +#--------------------------------------------------------------------------- +# configuration options related to the Perl module output +#--------------------------------------------------------------------------- + +# If the GENERATE_PERLMOD tag is set to YES Doxygen will +# generate a Perl module file that captures the structure of +# the code including all documentation. Note that this +# feature is still experimental and incomplete at the +# moment. + +GENERATE_PERLMOD = NO + +# If the PERLMOD_LATEX tag is set to YES Doxygen will generate +# the necessary Makefile rules, Perl scripts and LaTeX code to be able +# to generate PDF and DVI output from the Perl module output. + +PERLMOD_LATEX = NO + +# If the PERLMOD_PRETTY tag is set to YES the Perl module output will be +# nicely formatted so it can be parsed by a human reader. +# This is useful +# if you want to understand what is going on. +# On the other hand, if this +# tag is set to NO the size of the Perl module output will be much smaller +# and Perl will parse it just the same. + +PERLMOD_PRETTY = YES + +# The names of the make variables in the generated doxyrules.make file +# are prefixed with the string contained in PERLMOD_MAKEVAR_PREFIX. +# This is useful so different doxyrules.make files included by the same +# Makefile don't overwrite each other's variables. + +PERLMOD_MAKEVAR_PREFIX = + +#--------------------------------------------------------------------------- +# Configuration options related to the preprocessor +#--------------------------------------------------------------------------- + +# If the ENABLE_PREPROCESSING tag is set to YES (the default) Doxygen will +# evaluate all C-preprocessor directives found in the sources and include +# files. + +ENABLE_PREPROCESSING = YES + +# If the MACRO_EXPANSION tag is set to YES Doxygen will expand all macro +# names in the source code. If set to NO (the default) only conditional +# compilation will be performed. Macro expansion can be done in a controlled +# way by setting EXPAND_ONLY_PREDEF to YES. + +MACRO_EXPANSION = YES + +# If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES +# then the macro expansion is limited to the macros specified with the +# PREDEFINED and EXPAND_AS_DEFINED tags. + +EXPAND_ONLY_PREDEF = YES + +# If the SEARCH_INCLUDES tag is set to YES (the default) the includes files +# in the INCLUDE_PATH (see below) will be search if a #include is found. + +SEARCH_INCLUDES = YES + +# The INCLUDE_PATH tag can be used to specify one or more directories that +# contain include files that are not input files but should be processed by +# the preprocessor. + +INCLUDE_PATH = + +# You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard +# patterns (like *.h and *.hpp) to filter out the header-files in the +# directories. If left blank, the patterns specified with FILE_PATTERNS will +# be used. + +INCLUDE_FILE_PATTERNS = + +# The PREDEFINED tag can be used to specify one or more macro names that +# are defined before the preprocessor is started (similar to the -D option of +# gcc). The argument of the tag is a list of macros of the form: name +# or name=definition (no spaces). If the definition and the = are +# omitted =1 is assumed. To prevent a macro definition from being +# undefined via #undef or recursively expanded use the := operator +# instead of the = operator. + +PREDEFINED = "__attribute__(x)=" \ + "DECLARE_ALIGNED(a,t,n)=t n" \ + "offsetof(x,y)=0x42" \ + av_alloc_size \ + AV_GCC_VERSION_AT_LEAST(x,y)=1 \ + __GNUC__=1 \ + +# If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then +# this tag can be used to specify a list of macro names that should be expanded. +# The macro definition that is found in the sources will be used. +# Use the PREDEFINED tag if you want to use a different macro definition. + +EXPAND_AS_DEFINED = declare_idct \ + READ_PAR_DATA \ + +# If the SKIP_FUNCTION_MACROS tag is set to YES (the default) then +# doxygen's preprocessor will remove all function-like macros that are alone +# on a line, have an all uppercase name, and do not end with a semicolon. Such +# function macros are typically used for boiler-plate code, and will confuse +# the parser if not removed. + +SKIP_FUNCTION_MACROS = YES + +#--------------------------------------------------------------------------- +# Configuration::additions related to external references +#--------------------------------------------------------------------------- + +# The TAGFILES option can be used to specify one or more tagfiles. +# Optionally an initial location of the external documentation +# can be added for each tagfile. The format of a tag file without +# this location is as follows: +# +# TAGFILES = file1 file2 ... +# Adding location for the tag files is done as follows: +# +# TAGFILES = file1=loc1 "file2 = loc2" ... +# where "loc1" and "loc2" can be relative or absolute paths or +# URLs. If a location is present for each tag, the installdox tool +# does not have to be run to correct the links. +# Note that each tag file must have a unique name +# (where the name does NOT include the path) +# If a tag file is not located in the directory in which doxygen +# is run, you must also specify the path to the tagfile here. + +TAGFILES = + +# When a file name is specified after GENERATE_TAGFILE, doxygen will create +# a tag file that is based on the input files it reads. + +GENERATE_TAGFILE = + +# If the ALLEXTERNALS tag is set to YES all external classes will be listed +# in the class index. If set to NO only the inherited external classes +# will be listed. + +ALLEXTERNALS = NO + +# If the EXTERNAL_GROUPS tag is set to YES all external groups will be listed +# in the modules index. If set to NO, only the current project's groups will +# be listed. + +EXTERNAL_GROUPS = YES + +# The PERL_PATH should be the absolute path and name of the perl script +# interpreter (i.e. the result of `which perl'). + +PERL_PATH = /usr/bin/perl + +#--------------------------------------------------------------------------- +# Configuration options related to the dot tool +#--------------------------------------------------------------------------- + +# If the CLASS_DIAGRAMS tag is set to YES (the default) Doxygen will +# generate a inheritance diagram (in HTML, RTF and LaTeX) for classes with base +# or super classes. Setting the tag to NO turns the diagrams off. Note that +# this option is superseded by the HAVE_DOT option below. This is only a +# fallback. It is recommended to install and use dot, since it yields more +# powerful graphs. + +CLASS_DIAGRAMS = YES + +# You can define message sequence charts within doxygen comments using the \msc +# command. Doxygen will then run the mscgen tool (see +# http://www.mcternan.me.uk/mscgen/) to produce the chart and insert it in the +# documentation. The MSCGEN_PATH tag allows you to specify the directory where +# the mscgen tool resides. If left empty the tool is assumed to be found in the +# default search path. + +MSCGEN_PATH = + +# If set to YES, the inheritance and collaboration graphs will hide +# inheritance and usage relations if the target is undocumented +# or is not a class. + +HIDE_UNDOC_RELATIONS = YES + +# If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is +# available from the path. This tool is part of Graphviz, a graph visualization +# toolkit from AT&T and Lucent Bell Labs. The other options in this section +# have no effect if this option is set to NO (the default) + +HAVE_DOT = NO + +# The DOT_NUM_THREADS specifies the number of dot invocations doxygen is +# allowed to run in parallel. When set to 0 (the default) doxygen will +# base this on the number of processors available in the system. You can set it +# explicitly to a value larger than 0 to get control over the balance +# between CPU load and processing speed. + +DOT_NUM_THREADS = 0 + +# By default doxygen will write a font called FreeSans.ttf to the output +# directory and reference it in all dot files that doxygen generates. This +# font does not include all possible unicode characters however, so when you need +# these (or just want a differently looking font) you can specify the font name +# using DOT_FONTNAME. You need need to make sure dot is able to find the font, +# which can be done by putting it in a standard location or by setting the +# DOTFONTPATH environment variable or by setting DOT_FONTPATH to the directory +# containing the font. + +DOT_FONTNAME = FreeSans + +# The DOT_FONTSIZE tag can be used to set the size of the font of dot graphs. +# The default size is 10pt. + +DOT_FONTSIZE = 10 + +# By default doxygen will tell dot to use the output directory to look for the +# FreeSans.ttf font (which doxygen will put there itself). If you specify a +# different font using DOT_FONTNAME you can set the path where dot +# can find it using this tag. + +DOT_FONTPATH = + +# If the CLASS_GRAPH and HAVE_DOT tags are set to YES then doxygen +# will generate a graph for each documented class showing the direct and +# indirect inheritance relations. Setting this tag to YES will force the +# the CLASS_DIAGRAMS tag to NO. + +CLASS_GRAPH = YES + +# If the COLLABORATION_GRAPH and HAVE_DOT tags are set to YES then doxygen +# will generate a graph for each documented class showing the direct and +# indirect implementation dependencies (inheritance, containment, and +# class references variables) of the class with other documented classes. + +COLLABORATION_GRAPH = YES + +# If the GROUP_GRAPHS and HAVE_DOT tags are set to YES then doxygen +# will generate a graph for groups, showing the direct groups dependencies + +GROUP_GRAPHS = YES + +# If the UML_LOOK tag is set to YES doxygen will generate inheritance and +# collaboration diagrams in a style similar to the OMG's Unified Modeling +# Language. + +UML_LOOK = NO + +# If set to YES, the inheritance and collaboration graphs will show the +# relations between templates and their instances. + +TEMPLATE_RELATIONS = YES + +# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDE_GRAPH, and HAVE_DOT +# tags are set to YES then doxygen will generate a graph for each documented +# file showing the direct and indirect include dependencies of the file with +# other documented files. + +INCLUDE_GRAPH = YES + +# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDED_BY_GRAPH, and +# HAVE_DOT tags are set to YES then doxygen will generate a graph for each +# documented header file showing the documented files that directly or +# indirectly include this file. + +INCLUDED_BY_GRAPH = YES + +# If the CALL_GRAPH and HAVE_DOT options are set to YES then +# doxygen will generate a call dependency graph for every global function +# or class method. Note that enabling this option will significantly increase +# the time of a run. So in most cases it will be better to enable call graphs +# for selected functions only using the \callgraph command. + +CALL_GRAPH = NO + +# If the CALLER_GRAPH and HAVE_DOT tags are set to YES then +# doxygen will generate a caller dependency graph for every global function +# or class method. Note that enabling this option will significantly increase +# the time of a run. So in most cases it will be better to enable caller +# graphs for selected functions only using the \callergraph command. + +CALLER_GRAPH = NO + +# If the GRAPHICAL_HIERARCHY and HAVE_DOT tags are set to YES then doxygen +# will graphical hierarchy of all classes instead of a textual one. + +GRAPHICAL_HIERARCHY = YES + +# If the DIRECTORY_GRAPH, SHOW_DIRECTORIES and HAVE_DOT tags are set to YES +# then doxygen will show the dependencies a directory has on other directories +# in a graphical way. The dependency relations are determined by the #include +# relations between the files in the directories. + +DIRECTORY_GRAPH = YES + +# The DOT_IMAGE_FORMAT tag can be used to set the image format of the images +# generated by dot. Possible values are png, jpg, or gif +# If left blank png will be used. + +DOT_IMAGE_FORMAT = png + +# The tag DOT_PATH can be used to specify the path where the dot tool can be +# found. If left blank, it is assumed the dot tool can be found in the path. + +DOT_PATH = + +# The DOTFILE_DIRS tag can be used to specify one or more directories that +# contain dot files that are included in the documentation (see the +# \dotfile command). + +DOTFILE_DIRS = + +# The DOT_GRAPH_MAX_NODES tag can be used to set the maximum number of +# nodes that will be shown in the graph. If the number of nodes in a graph +# becomes larger than this value, doxygen will truncate the graph, which is +# visualized by representing a node as a red box. Note that doxygen if the +# number of direct children of the root node in a graph is already larger than +# DOT_GRAPH_MAX_NODES then the graph will not be shown at all. Also note +# that the size of a graph can be further restricted by MAX_DOT_GRAPH_DEPTH. + +DOT_GRAPH_MAX_NODES = 50 + +# The MAX_DOT_GRAPH_DEPTH tag can be used to set the maximum depth of the +# graphs generated by dot. A depth value of 3 means that only nodes reachable +# from the root by following a path via at most 3 edges will be shown. Nodes +# that lay further from the root node will be omitted. Note that setting this +# option to 1 or 2 may greatly reduce the computation time needed for large +# code bases. Also note that the size of a graph can be further restricted by +# DOT_GRAPH_MAX_NODES. Using a depth of 0 means no depth restriction. + +MAX_DOT_GRAPH_DEPTH = 0 + +# Set the DOT_TRANSPARENT tag to YES to generate images with a transparent +# background. This is disabled by default, because dot on Windows does not +# seem to support this out of the box. Warning: Depending on the platform used, +# enabling this option may lead to badly anti-aliased labels on the edges of +# a graph (i.e. they become hard to read). + +DOT_TRANSPARENT = YES + +# Set the DOT_MULTI_TARGETS tag to YES allow dot to generate multiple output +# files in one run (i.e. multiple -o and -T options on the command line). This +# makes dot run faster, but since only newer versions of dot (>1.8.10) +# support this, this feature is disabled by default. + +DOT_MULTI_TARGETS = NO + +# If the GENERATE_LEGEND tag is set to YES (the default) Doxygen will +# generate a legend page explaining the meaning of the various boxes and +# arrows in the dot generated graphs. + +GENERATE_LEGEND = YES + +# If the DOT_CLEANUP tag is set to YES (the default) Doxygen will +# remove the intermediate dot files that are used to generate +# the various graphs. + +DOT_CLEANUP = YES diff --git a/ffmpeg/doc/Makefile b/ffmpeg/doc/Makefile new file mode 100644 index 0000000..2502922 --- /dev/null +++ b/ffmpeg/doc/Makefile @@ -0,0 +1,182 @@ +LIBRARIES-$(CONFIG_AVUTIL) += libavutil +LIBRARIES-$(CONFIG_SWSCALE) += libswscale +LIBRARIES-$(CONFIG_SWRESAMPLE) += libswresample +LIBRARIES-$(CONFIG_AVCODEC) += libavcodec +LIBRARIES-$(CONFIG_AVFORMAT) += libavformat +LIBRARIES-$(CONFIG_AVDEVICE) += libavdevice +LIBRARIES-$(CONFIG_AVFILTER) += libavfilter + +COMPONENTS-$(CONFIG_AVUTIL) += ffmpeg-utils +COMPONENTS-$(CONFIG_SWSCALE) += ffmpeg-scaler +COMPONENTS-$(CONFIG_SWRESAMPLE) += ffmpeg-resampler +COMPONENTS-$(CONFIG_AVCODEC) += ffmpeg-codecs ffmpeg-bitstream-filters +COMPONENTS-$(CONFIG_AVFORMAT) += ffmpeg-formats ffmpeg-protocols +COMPONENTS-$(CONFIG_AVDEVICE) += ffmpeg-devices +COMPONENTS-$(CONFIG_AVFILTER) += ffmpeg-filters + +MANPAGES1 = $(AVPROGS-yes:%=doc/%.1) $(AVPROGS-yes:%=doc/%-all.1) $(COMPONENTS-yes:%=doc/%.1) +MANPAGES3 = $(LIBRARIES-yes:%=doc/%.3) +MANPAGES = $(MANPAGES1) $(MANPAGES3) +PODPAGES = $(AVPROGS-yes:%=doc/%.pod) $(AVPROGS-yes:%=doc/%-all.pod) $(COMPONENTS-yes:%=doc/%.pod) $(LIBRARIES-yes:%=doc/%.pod) +HTMLPAGES = $(AVPROGS-yes:%=doc/%.html) $(AVPROGS-yes:%=doc/%-all.html) $(COMPONENTS-yes:%=doc/%.html) $(LIBRARIES-yes:%=doc/%.html) \ + doc/developer.html \ + doc/faq.html \ + doc/fate.html \ + doc/general.html \ + doc/git-howto.html \ + doc/nut.html \ + doc/platform.html \ + +TXTPAGES = doc/fate.txt \ + + +DOCS-$(CONFIG_HTMLPAGES) += $(HTMLPAGES) +DOCS-$(CONFIG_PODPAGES) += $(PODPAGES) +DOCS-$(CONFIG_MANPAGES) += $(MANPAGES) +DOCS-$(CONFIG_TXTPAGES) += $(TXTPAGES) +DOCS = $(DOCS-yes) + +DOC_EXAMPLES-$(CONFIG_AVIO_READING_EXAMPLE) += avio_reading +DOC_EXAMPLES-$(CONFIG_AVCODEC_EXAMPLE) += avcodec +DOC_EXAMPLES-$(CONFIG_DECODING_ENCODING_EXAMPLE) += decoding_encoding +DOC_EXAMPLES-$(CONFIG_DEMUXING_DECODING_EXAMPLE) += demuxing_decoding +DOC_EXAMPLES-$(CONFIG_EXTRACT_MVS_EXAMPLE) += extract_mvs +DOC_EXAMPLES-$(CONFIG_FILTER_AUDIO_EXAMPLE) += filter_audio +DOC_EXAMPLES-$(CONFIG_FILTERING_AUDIO_EXAMPLE) += filtering_audio +DOC_EXAMPLES-$(CONFIG_FILTERING_VIDEO_EXAMPLE) += filtering_video +DOC_EXAMPLES-$(CONFIG_METADATA_EXAMPLE) += metadata +DOC_EXAMPLES-$(CONFIG_MUXING_EXAMPLE) += muxing +DOC_EXAMPLES-$(CONFIG_REMUXING_EXAMPLE) += remuxing +DOC_EXAMPLES-$(CONFIG_RESAMPLING_AUDIO_EXAMPLE) += resampling_audio +DOC_EXAMPLES-$(CONFIG_SCALING_VIDEO_EXAMPLE) += scaling_video +DOC_EXAMPLES-$(CONFIG_TRANSCODE_AAC_EXAMPLE) += transcode_aac +DOC_EXAMPLES-$(CONFIG_TRANSCODING_EXAMPLE) += transcoding +ALL_DOC_EXAMPLES_LIST = $(DOC_EXAMPLES-) $(DOC_EXAMPLES-yes) + +DOC_EXAMPLES := $(DOC_EXAMPLES-yes:%=doc/examples/%$(PROGSSUF)$(EXESUF)) +ALL_DOC_EXAMPLES := $(ALL_DOC_EXAMPLES_LIST:%=doc/examples/%$(PROGSSUF)$(EXESUF)) +ALL_DOC_EXAMPLES_G := $(ALL_DOC_EXAMPLES_LIST:%=doc/examples/%$(PROGSSUF)_g$(EXESUF)) +PROGS += $(DOC_EXAMPLES) + +all-$(CONFIG_DOC): doc + +doc: documentation + +apidoc: doc/doxy/html +documentation: $(DOCS) + +examples: $(DOC_EXAMPLES) + +TEXIDEP = perl $(SRC_PATH)/doc/texidep.pl $(SRC_PATH) $< $@ >$(@:%=%.d) + +doc/%.txt: TAG = TXT +doc/%.txt: doc/%.texi + $(Q)$(TEXIDEP) + $(M)makeinfo --force --no-headers -o $@ $< 2>/dev/null + +GENTEXI = format codec +GENTEXI := $(GENTEXI:%=doc/avoptions_%.texi) + +$(GENTEXI): TAG = GENTEXI +$(GENTEXI): doc/avoptions_%.texi: doc/print_options$(HOSTEXESUF) + $(M)doc/print_options $* > $@ + +doc/%.html: TAG = HTML +doc/%-all.html: TAG = HTML + +ifdef HAVE_MAKEINFO_HTML +doc/%.html: doc/%.texi $(SRC_PATH)/doc/t2h.pm $(GENTEXI) + $(Q)$(TEXIDEP) + $(M)makeinfo --html -I doc --no-split -D config-not-all --init-file=$(SRC_PATH)/doc/t2h.pm --output $@ $< + +doc/%-all.html: doc/%.texi $(SRC_PATH)/doc/t2h.pm $(GENTEXI) + $(Q)$(TEXIDEP) + $(M)makeinfo --html -I doc --no-split -D config-all --init-file=$(SRC_PATH)/doc/t2h.pm --output $@ $< +else +doc/%.html: doc/%.texi $(SRC_PATH)/doc/t2h.init $(GENTEXI) + $(Q)$(TEXIDEP) + $(M)texi2html -I doc -monolithic --D=config-not-all --init-file $(SRC_PATH)/doc/t2h.init --output $@ $< + +doc/%-all.html: doc/%.texi $(SRC_PATH)/doc/t2h.init $(GENTEXI) + $(Q)$(TEXIDEP) + $(M)texi2html -I doc -monolithic --D=config-all --init-file $(SRC_PATH)/doc/t2h.init --output $@ $< +endif + +doc/%.pod: TAG = POD +doc/%.pod: doc/%.texi $(SRC_PATH)/doc/texi2pod.pl $(GENTEXI) + $(Q)$(TEXIDEP) + $(M)perl $(SRC_PATH)/doc/texi2pod.pl -Dconfig-not-all=yes -Idoc $< $@ + +doc/%-all.pod: TAG = POD +doc/%-all.pod: doc/%.texi $(SRC_PATH)/doc/texi2pod.pl $(GENTEXI) + $(Q)$(TEXIDEP) + $(M)perl $(SRC_PATH)/doc/texi2pod.pl -Dconfig-all=yes -Idoc $< $@ + +doc/%.1 doc/%.3: TAG = MAN +doc/%.1: doc/%.pod $(GENTEXI) + $(M)pod2man --section=1 --center=" " --release=" " $< > $@ +doc/%.3: doc/%.pod $(GENTEXI) + $(M)pod2man --section=3 --center=" " --release=" " $< > $@ + +$(DOCS) doc/doxy/html: | doc/ +$(DOC_EXAMPLES:%$(EXESUF)=%.o): | doc/examples +OBJDIRS += doc/examples + +DOXY_INPUT = $(addprefix $(SRC_PATH)/, $(INSTHEADERS) $(DOC_EXAMPLES:%$(EXESUF)=%.c) $(LIB_EXAMPLES:%$(EXESUF)=%.c)) + +doc/doxy/html: TAG = DOXY +doc/doxy/html: $(SRC_PATH)/doc/Doxyfile $(SRC_PATH)/doc/doxy-wrapper.sh $(DOXY_INPUT) + $(M)$(SRC_PATH)/doc/doxy-wrapper.sh $(SRC_PATH) $< $(DOXYGEN) $(DOXY_INPUT) + +install-doc: install-html install-man + +install-html: + +install-man: + +ifdef CONFIG_HTMLPAGES +install-progs-$(CONFIG_DOC): install-html + +install-html: $(HTMLPAGES) + $(Q)mkdir -p "$(DOCDIR)" + $(INSTALL) -m 644 $(HTMLPAGES) "$(DOCDIR)" +endif + +ifdef CONFIG_MANPAGES +install-progs-$(CONFIG_DOC): install-man + +install-man: $(MANPAGES) + $(Q)mkdir -p "$(MANDIR)/man1" + $(INSTALL) -m 644 $(MANPAGES1) "$(MANDIR)/man1" + $(Q)mkdir -p "$(MANDIR)/man3" + $(INSTALL) -m 644 $(MANPAGES3) "$(MANDIR)/man3" +endif + +uninstall: uninstall-doc + +uninstall-doc: uninstall-html uninstall-man + +uninstall-html: + $(RM) -r "$(DOCDIR)" + +uninstall-man: + $(RM) $(addprefix "$(MANDIR)/man1/",$(AVPROGS-yes:%=%.1) $(AVPROGS-yes:%=%-all.1) $(COMPONENTS-yes:%=%.1)) + $(RM) $(addprefix "$(MANDIR)/man3/",$(LIBRARIES-yes:%=%.3)) + +clean:: docclean + +distclean:: docclean + $(RM) doc/config.texi + +examplesclean: + $(RM) $(ALL_DOC_EXAMPLES) $(ALL_DOC_EXAMPLES_G) + $(RM) $(CLEANSUFFIXES:%=doc/examples/%) + +docclean: examplesclean + $(RM) $(CLEANSUFFIXES:%=doc/%) + $(RM) $(TXTPAGES) doc/*.html doc/*.pod doc/*.1 doc/*.3 doc/avoptions_*.texi + $(RM) -r doc/doxy/html + +-include $(wildcard $(DOCS:%=%.d)) + +.PHONY: apidoc doc documentation diff --git a/ffmpeg/doc/authors.texi b/ffmpeg/doc/authors.texi new file mode 100644 index 0000000..6c8c1d7 --- /dev/null +++ b/ffmpeg/doc/authors.texi @@ -0,0 +1,11 @@ +@chapter Authors + +The FFmpeg developers. + +For details about the authorship, see the Git history of the project +(git://source.ffmpeg.org/ffmpeg), e.g. by typing the command +@command{git log} in the FFmpeg source directory, or browsing the +online repository at @url{http://source.ffmpeg.org}. + +Maintainers for the specific components are listed in the file +@file{MAINTAINERS} in the source code tree. diff --git a/ffmpeg/doc/bitstream_filters.texi b/ffmpeg/doc/bitstream_filters.texi new file mode 100644 index 0000000..58ebddd --- /dev/null +++ b/ffmpeg/doc/bitstream_filters.texi @@ -0,0 +1,144 @@ +@chapter Bitstream Filters +@c man begin BITSTREAM FILTERS + +When you configure your FFmpeg build, all the supported bitstream +filters are enabled by default. You can list all available ones using +the configure option @code{--list-bsfs}. + +You can disable all the bitstream filters using the configure option +@code{--disable-bsfs}, and selectively enable any bitstream filter using +the option @code{--enable-bsf=BSF}, or you can disable a particular +bitstream filter using the option @code{--disable-bsf=BSF}. + +The option @code{-bsfs} of the ff* tools will display the list of +all the supported bitstream filters included in your build. + +Below is a description of the currently available bitstream filters. + +@section aac_adtstoasc + +Convert MPEG-2/4 AAC ADTS to MPEG-4 Audio Specific Configuration +bitstream filter. + +This filter creates an MPEG-4 AudioSpecificConfig from an MPEG-2/4 +ADTS header and removes the ADTS header. + +This is required for example when copying an AAC stream from a raw +ADTS AAC container to a FLV or a MOV/MP4 file. + +@section chomp + +Remove zero padding at the end of a packet. + +@section dump_extra + +Add extradata to the beginning of the filtered packets. + +The additional argument specifies which packets should be filtered. +It accepts the values: +@table @samp +@item a +add extradata to all key packets, but only if @var{local_header} is +set in the @option{flags2} codec context field + +@item k +add extradata to all key packets + +@item e +add extradata to all packets +@end table + +If not specified it is assumed @samp{k}. + +For example the following @command{ffmpeg} command forces a global +header (thus disabling individual packet headers) in the H.264 packets +generated by the @code{libx264} encoder, but corrects them by adding +the header stored in extradata to the key packets: +@example +ffmpeg -i INPUT -map 0 -flags:v +global_header -c:v libx264 -bsf:v dump_extra out.ts +@end example + +@section h264_mp4toannexb + +Convert an H.264 bitstream from length prefixed mode to start code +prefixed mode (as defined in the Annex B of the ITU-T H.264 +specification). + +This is required by some streaming formats, typically the MPEG-2 +transport stream format ("mpegts"). + +For example to remux an MP4 file containing an H.264 stream to mpegts +format with @command{ffmpeg}, you can use the command: + +@example +ffmpeg -i INPUT.mp4 -codec copy -bsf:v h264_mp4toannexb OUTPUT.ts +@end example + +@section imxdump + +Modifies the bitstream to fit in MOV and to be usable by the Final Cut +Pro decoder. This filter only applies to the mpeg2video codec, and is +likely not needed for Final Cut Pro 7 and newer with the appropriate +@option{-tag:v}. + +For example, to remux 30 MB/sec NTSC IMX to MOV: + +@example +ffmpeg -i input.mxf -c copy -bsf:v imxdump -tag:v mx3n output.mov +@end example + +@section mjpeg2jpeg + +Convert MJPEG/AVI1 packets to full JPEG/JFIF packets. + +MJPEG is a video codec wherein each video frame is essentially a +JPEG image. The individual frames can be extracted without loss, +e.g. by + +@example +ffmpeg -i ../some_mjpeg.avi -c:v copy frames_%d.jpg +@end example + +Unfortunately, these chunks are incomplete JPEG images, because +they lack the DHT segment required for decoding. Quoting from +@url{http://www.digitalpreservation.gov/formats/fdd/fdd000063.shtml}: + +Avery Lee, writing in the rec.video.desktop newsgroup in 2001, +commented that "MJPEG, or at least the MJPEG in AVIs having the +MJPG fourcc, is restricted JPEG with a fixed -- and *omitted* -- +Huffman table. The JPEG must be YCbCr colorspace, it must be 4:2:2, +and it must use basic Huffman encoding, not arithmetic or +progressive. . . . You can indeed extract the MJPEG frames and +decode them with a regular JPEG decoder, but you have to prepend +the DHT segment to them, or else the decoder won't have any idea +how to decompress the data. The exact table necessary is given in +the OpenDML spec." + +This bitstream filter patches the header of frames extracted from an MJPEG +stream (carrying the AVI1 header ID and lacking a DHT segment) to +produce fully qualified JPEG images. + +@example +ffmpeg -i mjpeg-movie.avi -c:v copy -bsf:v mjpeg2jpeg frame_%d.jpg +exiftran -i -9 frame*.jpg +ffmpeg -i frame_%d.jpg -c:v copy rotated.avi +@end example + +@section mjpega_dump_header + +@section movsub + +@section mp3_header_decompress + +@section noise + +Damages the contents of packets without damaging the container. Can be +used for fuzzing or testing error resilience/concealment. + +@example +ffmpeg -i INPUT -c copy -bsf noise output.mkv +@end example + +@section remove_extra + +@c man end BITSTREAM FILTERS diff --git a/ffmpeg/doc/bootstrap.min.css b/ffmpeg/doc/bootstrap.min.css new file mode 100644 index 0000000..6f68017 --- /dev/null +++ b/ffmpeg/doc/bootstrap.min.css @@ -0,0 +1,5 @@ +/*! + * Bootstrap v3.2.0 (http://getbootstrap.com) + * Copyright 2011-2014 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + *//*! normalize.css v3.0.1 | MIT License | git.io/normalize */html{font-family:sans-serif;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,hgroup,main,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background:0 0}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:700}dfn{font-style:italic}h1{margin:.67em 0;font-size:2em}mark{color:#000;background:#ff0}small{font-size:80%}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{height:0;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}pre{overflow:auto}code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em}button,input,optgroup,select,textarea{margin:0;font:inherit;color:inherit}button{overflow:visible}button,select{text-transform:none}button,html input[type=button],input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{padding:0;border:0}input{line-height:normal}input[type=checkbox],input[type=radio]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;padding:0}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{height:auto}input[type=search]{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;-webkit-appearance:textfield}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}fieldset{padding:.35em .625em .75em;margin:0 2px;border:1px solid silver}legend{padding:0;border:0}textarea{overflow:auto}optgroup{font-weight:700}table{border-spacing:0;border-collapse:collapse}td,th{padding:0}@media print{*{color:#000!important;text-shadow:none!important;background:transparent!important;-webkit-box-shadow:none!important;box-shadow:none!important}a,a:visited{text-decoration:underline}a[href]:after{content:" (" attr(href) ")"}abbr[title]:after{content:" (" attr(title) ")"}a[href^="javascript:"]:after,a[href^="#"]:after{content:""}pre,blockquote{border:1px solid #999;page-break-inside:avoid}thead{display:table-header-group}tr,img{page-break-inside:avoid}img{max-width:100%!important}p,h2,h3{orphans:3;widows:3}h2,h3{page-break-after:avoid}select{background:#fff!important}.navbar{display:none}.table td,.table th{background-color:#fff!important}.btn>.caret,.dropup>.btn>.caret{border-top-color:#000!important}.label{border:1px solid #000}.table{border-collapse:collapse!important}.table-bordered th,.table-bordered td{border:1px solid #ddd!important}}@font-face{font-family:'Glyphicons Halflings';src:url(../fonts/glyphicons-halflings-regular.eot);src:url(../fonts/glyphicons-halflings-regular.eot?#iefix) format('embedded-opentype'),url(../fonts/glyphicons-halflings-regular.woff) format('woff'),url(../fonts/glyphicons-halflings-regular.ttf) format('truetype'),url(../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular) format('svg')}.glyphicon{position:relative;top:1px;display:inline-block;font-family:'Glyphicons Halflings';font-style:normal;font-weight:400;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.glyphicon-asterisk:before{content:"\2a"}.glyphicon-plus:before{content:"\2b"}.glyphicon-euro:before{content:"\20ac"}.glyphicon-minus:before{content:"\2212"}.glyphicon-cloud:before{content:"\2601"}.glyphicon-envelope:before{content:"\2709"}.glyphicon-pencil:before{content:"\270f"}.glyphicon-glass:before{content:"\e001"}.glyphicon-music:before{content:"\e002"}.glyphicon-search:before{content:"\e003"}.glyphicon-heart:before{content:"\e005"}.glyphicon-star:before{content:"\e006"}.glyphicon-star-empty:before{content:"\e007"}.glyphicon-user:before{content:"\e008"}.glyphicon-film:before{content:"\e009"}.glyphicon-th-large:before{content:"\e010"}.glyphicon-th:before{content:"\e011"}.glyphicon-th-list:before{content:"\e012"}.glyphicon-ok:before{content:"\e013"}.glyphicon-remove:before{content:"\e014"}.glyphicon-zoom-in:before{content:"\e015"}.glyphicon-zoom-out:before{content:"\e016"}.glyphicon-off:before{content:"\e017"}.glyphicon-signal:before{content:"\e018"}.glyphicon-cog:before{content:"\e019"}.glyphicon-trash:before{content:"\e020"}.glyphicon-home:before{content:"\e021"}.glyphicon-file:before{content:"\e022"}.glyphicon-time:before{content:"\e023"}.glyphicon-road:before{content:"\e024"}.glyphicon-download-alt:before{content:"\e025"}.glyphicon-download:before{content:"\e026"}.glyphicon-upload:before{content:"\e027"}.glyphicon-inbox:before{content:"\e028"}.glyphicon-play-circle:before{content:"\e029"}.glyphicon-repeat:before{content:"\e030"}.glyphicon-refresh:before{content:"\e031"}.glyphicon-list-alt:before{content:"\e032"}.glyphicon-lock:before{content:"\e033"}.glyphicon-flag:before{content:"\e034"}.glyphicon-headphones:before{content:"\e035"}.glyphicon-volume-off:before{content:"\e036"}.glyphicon-volume-down:before{content:"\e037"}.glyphicon-volume-up:before{content:"\e038"}.glyphicon-qrcode:before{content:"\e039"}.glyphicon-barcode:before{content:"\e040"}.glyphicon-tag:before{content:"\e041"}.glyphicon-tags:before{content:"\e042"}.glyphicon-book:before{content:"\e043"}.glyphicon-bookmark:before{content:"\e044"}.glyphicon-print:before{content:"\e045"}.glyphicon-camera:before{content:"\e046"}.glyphicon-font:before{content:"\e047"}.glyphicon-bold:before{content:"\e048"}.glyphicon-italic:before{content:"\e049"}.glyphicon-text-height:before{content:"\e050"}.glyphicon-text-width:before{content:"\e051"}.glyphicon-align-left:before{content:"\e052"}.glyphicon-align-center:before{content:"\e053"}.glyphicon-align-right:before{content:"\e054"}.glyphicon-align-justify:before{content:"\e055"}.glyphicon-list:before{content:"\e056"}.glyphicon-indent-left:before{content:"\e057"}.glyphicon-indent-right:before{content:"\e058"}.glyphicon-facetime-video:before{content:"\e059"}.glyphicon-picture:before{content:"\e060"}.glyphicon-map-marker:before{content:"\e062"}.glyphicon-adjust:before{content:"\e063"}.glyphicon-tint:before{content:"\e064"}.glyphicon-edit:before{content:"\e065"}.glyphicon-share:before{content:"\e066"}.glyphicon-check:before{content:"\e067"}.glyphicon-move:before{content:"\e068"}.glyphicon-step-backward:before{content:"\e069"}.glyphicon-fast-backward:before{content:"\e070"}.glyphicon-backward:before{content:"\e071"}.glyphicon-play:before{content:"\e072"}.glyphicon-pause:before{content:"\e073"}.glyphicon-stop:before{content:"\e074"}.glyphicon-forward:before{content:"\e075"}.glyphicon-fast-forward:before{content:"\e076"}.glyphicon-step-forward:before{content:"\e077"}.glyphicon-eject:before{content:"\e078"}.glyphicon-chevron-left:before{content:"\e079"}.glyphicon-chevron-right:before{content:"\e080"}.glyphicon-plus-sign:before{content:"\e081"}.glyphicon-minus-sign:before{content:"\e082"}.glyphicon-remove-sign:before{content:"\e083"}.glyphicon-ok-sign:before{content:"\e084"}.glyphicon-question-sign:before{content:"\e085"}.glyphicon-info-sign:before{content:"\e086"}.glyphicon-screenshot:before{content:"\e087"}.glyphicon-remove-circle:before{content:"\e088"}.glyphicon-ok-circle:before{content:"\e089"}.glyphicon-ban-circle:before{content:"\e090"}.glyphicon-arrow-left:before{content:"\e091"}.glyphicon-arrow-right:before{content:"\e092"}.glyphicon-arrow-up:before{content:"\e093"}.glyphicon-arrow-down:before{content:"\e094"}.glyphicon-share-alt:before{content:"\e095"}.glyphicon-resize-full:before{content:"\e096"}.glyphicon-resize-small:before{content:"\e097"}.glyphicon-exclamation-sign:before{content:"\e101"}.glyphicon-gift:before{content:"\e102"}.glyphicon-leaf:before{content:"\e103"}.glyphicon-fire:before{content:"\e104"}.glyphicon-eye-open:before{content:"\e105"}.glyphicon-eye-close:before{content:"\e106"}.glyphicon-warning-sign:before{content:"\e107"}.glyphicon-plane:before{content:"\e108"}.glyphicon-calendar:before{content:"\e109"}.glyphicon-random:before{content:"\e110"}.glyphicon-comment:before{content:"\e111"}.glyphicon-magnet:before{content:"\e112"}.glyphicon-chevron-up:before{content:"\e113"}.glyphicon-chevron-down:before{content:"\e114"}.glyphicon-retweet:before{content:"\e115"}.glyphicon-shopping-cart:before{content:"\e116"}.glyphicon-folder-close:before{content:"\e117"}.glyphicon-folder-open:before{content:"\e118"}.glyphicon-resize-vertical:before{content:"\e119"}.glyphicon-resize-horizontal:before{content:"\e120"}.glyphicon-hdd:before{content:"\e121"}.glyphicon-bullhorn:before{content:"\e122"}.glyphicon-bell:before{content:"\e123"}.glyphicon-certificate:before{content:"\e124"}.glyphicon-thumbs-up:before{content:"\e125"}.glyphicon-thumbs-down:before{content:"\e126"}.glyphicon-hand-right:before{content:"\e127"}.glyphicon-hand-left:before{content:"\e128"}.glyphicon-hand-up:before{content:"\e129"}.glyphicon-hand-down:before{content:"\e130"}.glyphicon-circle-arrow-right:before{content:"\e131"}.glyphicon-circle-arrow-left:before{content:"\e132"}.glyphicon-circle-arrow-up:before{content:"\e133"}.glyphicon-circle-arrow-down:before{content:"\e134"}.glyphicon-globe:before{content:"\e135"}.glyphicon-wrench:before{content:"\e136"}.glyphicon-tasks:before{content:"\e137"}.glyphicon-filter:before{content:"\e138"}.glyphicon-briefcase:before{content:"\e139"}.glyphicon-fullscreen:before{content:"\e140"}.glyphicon-dashboard:before{content:"\e141"}.glyphicon-paperclip:before{content:"\e142"}.glyphicon-heart-empty:before{content:"\e143"}.glyphicon-link:before{content:"\e144"}.glyphicon-phone:before{content:"\e145"}.glyphicon-pushpin:before{content:"\e146"}.glyphicon-usd:before{content:"\e148"}.glyphicon-gbp:before{content:"\e149"}.glyphicon-sort:before{content:"\e150"}.glyphicon-sort-by-alphabet:before{content:"\e151"}.glyphicon-sort-by-alphabet-alt:before{content:"\e152"}.glyphicon-sort-by-order:before{content:"\e153"}.glyphicon-sort-by-order-alt:before{content:"\e154"}.glyphicon-sort-by-attributes:before{content:"\e155"}.glyphicon-sort-by-attributes-alt:before{content:"\e156"}.glyphicon-unchecked:before{content:"\e157"}.glyphicon-expand:before{content:"\e158"}.glyphicon-collapse-down:before{content:"\e159"}.glyphicon-collapse-up:before{content:"\e160"}.glyphicon-log-in:before{content:"\e161"}.glyphicon-flash:before{content:"\e162"}.glyphicon-log-out:before{content:"\e163"}.glyphicon-new-window:before{content:"\e164"}.glyphicon-record:before{content:"\e165"}.glyphicon-save:before{content:"\e166"}.glyphicon-open:before{content:"\e167"}.glyphicon-saved:before{content:"\e168"}.glyphicon-import:before{content:"\e169"}.glyphicon-export:before{content:"\e170"}.glyphicon-send:before{content:"\e171"}.glyphicon-floppy-disk:before{content:"\e172"}.glyphicon-floppy-saved:before{content:"\e173"}.glyphicon-floppy-remove:before{content:"\e174"}.glyphicon-floppy-save:before{content:"\e175"}.glyphicon-floppy-open:before{content:"\e176"}.glyphicon-credit-card:before{content:"\e177"}.glyphicon-transfer:before{content:"\e178"}.glyphicon-cutlery:before{content:"\e179"}.glyphicon-header:before{content:"\e180"}.glyphicon-compressed:before{content:"\e181"}.glyphicon-earphone:before{content:"\e182"}.glyphicon-phone-alt:before{content:"\e183"}.glyphicon-tower:before{content:"\e184"}.glyphicon-stats:before{content:"\e185"}.glyphicon-sd-video:before{content:"\e186"}.glyphicon-hd-video:before{content:"\e187"}.glyphicon-subtitles:before{content:"\e188"}.glyphicon-sound-stereo:before{content:"\e189"}.glyphicon-sound-dolby:before{content:"\e190"}.glyphicon-sound-5-1:before{content:"\e191"}.glyphicon-sound-6-1:before{content:"\e192"}.glyphicon-sound-7-1:before{content:"\e193"}.glyphicon-copyright-mark:before{content:"\e194"}.glyphicon-registration-mark:before{content:"\e195"}.glyphicon-cloud-download:before{content:"\e197"}.glyphicon-cloud-upload:before{content:"\e198"}.glyphicon-tree-conifer:before{content:"\e199"}.glyphicon-tree-deciduous:before{content:"\e200"}*{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}:before,:after{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}html{font-size:10px;-webkit-tap-highlight-color:rgba(0,0,0,0)}body{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;line-height:1.42857143;color:#333;background-color:#fff}input,button,select,textarea{font-family:inherit;font-size:inherit;line-height:inherit}a{color:#428bca;text-decoration:none}a:hover,a:focus{color:#2a6496;text-decoration:underline}a:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}figure{margin:0}img{vertical-align:middle}.img-responsive,.thumbnail>img,.thumbnail a>img,.carousel-inner>.item>img,.carousel-inner>.item>a>img{display:block;width:100% \9;max-width:100%;height:auto}.img-rounded{border-radius:6px}.img-thumbnail{display:inline-block;width:100% \9;max-width:100%;height:auto;padding:4px;line-height:1.42857143;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:all .2s ease-in-out;-o-transition:all .2s ease-in-out;transition:all .2s ease-in-out}.img-circle{border-radius:50%}hr{margin-top:20px;margin-bottom:20px;border:0;border-top:1px solid #eee}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}h1,h2,h3,h4,h5,h6,.h1,.h2,.h3,.h4,.h5,.h6{font-family:inherit;font-weight:500;line-height:1.1;color:inherit}h1 small,h2 small,h3 small,h4 small,h5 small,h6 small,.h1 small,.h2 small,.h3 small,.h4 small,.h5 small,.h6 small,h1 .small,h2 .small,h3 .small,h4 .small,h5 .small,h6 .small,.h1 .small,.h2 .small,.h3 .small,.h4 .small,.h5 .small,.h6 .small{font-weight:400;line-height:1;color:#777}h1,.h1,h2,.h2,h3,.h3{margin-top:20px;margin-bottom:10px}h1 small,.h1 small,h2 small,.h2 small,h3 small,.h3 small,h1 .small,.h1 .small,h2 .small,.h2 .small,h3 .small,.h3 .small{font-size:65%}h4,.h4,h5,.h5,h6,.h6{margin-top:10px;margin-bottom:10px}h4 small,.h4 small,h5 small,.h5 small,h6 small,.h6 small,h4 .small,.h4 .small,h5 .small,.h5 .small,h6 .small,.h6 .small{font-size:75%}h1,.h1{font-size:36px}h2,.h2{font-size:30px}h3,.h3{font-size:24px}h4,.h4{font-size:18px}h5,.h5{font-size:14px}h6,.h6{font-size:12px}p{margin:0 0 10px}.lead{margin-bottom:20px;font-size:16px;font-weight:300;line-height:1.4}@media (min-width:768px){.lead{font-size:21px}}small,.small{font-size:85%}cite{font-style:normal}mark,.mark{padding:.2em;background-color:#fcf8e3}.text-left{text-align:left}.text-right{text-align:right}.text-center{text-align:center}.text-justify{text-align:justify}.text-nowrap{white-space:nowrap}.text-lowercase{text-transform:lowercase}.text-uppercase{text-transform:uppercase}.text-capitalize{text-transform:capitalize}.text-muted{color:#777}.text-primary{color:#428bca}a.text-primary:hover{color:#3071a9}.text-success{color:#3c763d}a.text-success:hover{color:#2b542c}.text-info{color:#31708f}a.text-info:hover{color:#245269}.text-warning{color:#8a6d3b}a.text-warning:hover{color:#66512c}.text-danger{color:#a94442}a.text-danger:hover{color:#843534}.bg-primary{color:#fff;background-color:#428bca}a.bg-primary:hover{background-color:#3071a9}.bg-success{background-color:#dff0d8}a.bg-success:hover{background-color:#c1e2b3}.bg-info{background-color:#d9edf7}a.bg-info:hover{background-color:#afd9ee}.bg-warning{background-color:#fcf8e3}a.bg-warning:hover{background-color:#f7ecb5}.bg-danger{background-color:#f2dede}a.bg-danger:hover{background-color:#e4b9b9}.page-header{padding-bottom:9px;margin:40px 0 20px;border-bottom:1px solid #eee}ul,ol{margin-top:0;margin-bottom:10px}ul ul,ol ul,ul ol,ol ol{margin-bottom:0}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;margin-left:-5px;list-style:none}.list-inline>li{display:inline-block;padding-right:5px;padding-left:5px}dl{margin-top:0;margin-bottom:20px}dt,dd{line-height:1.42857143}dt{font-weight:700}dd{margin-left:0}@media (min-width:768px){.dl-horizontal dt{float:left;width:160px;overflow:hidden;clear:left;text-align:right;text-overflow:ellipsis;white-space:nowrap}.dl-horizontal dd{margin-left:180px}}abbr[title],abbr[data-original-title]{cursor:help;border-bottom:1px dotted #777}.initialism{font-size:90%;text-transform:uppercase}blockquote{padding:10px 20px;margin:0 0 20px;font-size:17.5px;border-left:5px solid #eee}blockquote p:last-child,blockquote ul:last-child,blockquote ol:last-child{margin-bottom:0}blockquote footer,blockquote small,blockquote .small{display:block;font-size:80%;line-height:1.42857143;color:#777}blockquote footer:before,blockquote small:before,blockquote .small:before{content:'\2014 \00A0'}.blockquote-reverse,blockquote.pull-right{padding-right:15px;padding-left:0;text-align:right;border-right:5px solid #eee;border-left:0}.blockquote-reverse footer:before,blockquote.pull-right footer:before,.blockquote-reverse small:before,blockquote.pull-right small:before,.blockquote-reverse .small:before,blockquote.pull-right .small:before{content:''}.blockquote-reverse footer:after,blockquote.pull-right footer:after,.blockquote-reverse small:after,blockquote.pull-right small:after,.blockquote-reverse .small:after,blockquote.pull-right .small:after{content:'\00A0 \2014'}blockquote:before,blockquote:after{content:""}address{margin-bottom:20px;font-style:normal;line-height:1.42857143}code,kbd,pre,samp{font-family:Menlo,Monaco,Consolas,"Courier New",monospace}code{padding:2px 4px;font-size:90%;color:#c7254e;background-color:#f9f2f4;border-radius:4px}kbd{padding:2px 4px;font-size:90%;color:#fff;background-color:#333;border-radius:3px;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.25);box-shadow:inset 0 -1px 0 rgba(0,0,0,.25)}kbd kbd{padding:0;font-size:100%;-webkit-box-shadow:none;box-shadow:none}pre{display:block;padding:9.5px;margin:0 0 10px;font-size:13px;line-height:1.42857143;color:#333;word-break:break-all;word-wrap:break-word;background-color:#f5f5f5;border:1px solid #ccc;border-radius:4px}pre code{padding:0;font-size:inherit;color:inherit;white-space:pre-wrap;background-color:transparent;border-radius:0}.pre-scrollable{max-height:340px;overflow-y:scroll}.container{padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}@media (min-width:768px){.container{width:750px}}@media (min-width:992px){.container{width:970px}}@media (min-width:1200px){.container{width:1170px}}.container-fluid{padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}.row{margin-right:-15px;margin-left:-15px}.col-xs-1,.col-sm-1,.col-md-1,.col-lg-1,.col-xs-2,.col-sm-2,.col-md-2,.col-lg-2,.col-xs-3,.col-sm-3,.col-md-3,.col-lg-3,.col-xs-4,.col-sm-4,.col-md-4,.col-lg-4,.col-xs-5,.col-sm-5,.col-md-5,.col-lg-5,.col-xs-6,.col-sm-6,.col-md-6,.col-lg-6,.col-xs-7,.col-sm-7,.col-md-7,.col-lg-7,.col-xs-8,.col-sm-8,.col-md-8,.col-lg-8,.col-xs-9,.col-sm-9,.col-md-9,.col-lg-9,.col-xs-10,.col-sm-10,.col-md-10,.col-lg-10,.col-xs-11,.col-sm-11,.col-md-11,.col-lg-11,.col-xs-12,.col-sm-12,.col-md-12,.col-lg-12{position:relative;min-height:1px;padding-right:15px;padding-left:15px}.col-xs-1,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9,.col-xs-10,.col-xs-11,.col-xs-12{float:left}.col-xs-12{width:100%}.col-xs-11{width:91.66666667%}.col-xs-10{width:83.33333333%}.col-xs-9{width:75%}.col-xs-8{width:66.66666667%}.col-xs-7{width:58.33333333%}.col-xs-6{width:50%}.col-xs-5{width:41.66666667%}.col-xs-4{width:33.33333333%}.col-xs-3{width:25%}.col-xs-2{width:16.66666667%}.col-xs-1{width:8.33333333%}.col-xs-pull-12{right:100%}.col-xs-pull-11{right:91.66666667%}.col-xs-pull-10{right:83.33333333%}.col-xs-pull-9{right:75%}.col-xs-pull-8{right:66.66666667%}.col-xs-pull-7{right:58.33333333%}.col-xs-pull-6{right:50%}.col-xs-pull-5{right:41.66666667%}.col-xs-pull-4{right:33.33333333%}.col-xs-pull-3{right:25%}.col-xs-pull-2{right:16.66666667%}.col-xs-pull-1{right:8.33333333%}.col-xs-pull-0{right:auto}.col-xs-push-12{left:100%}.col-xs-push-11{left:91.66666667%}.col-xs-push-10{left:83.33333333%}.col-xs-push-9{left:75%}.col-xs-push-8{left:66.66666667%}.col-xs-push-7{left:58.33333333%}.col-xs-push-6{left:50%}.col-xs-push-5{left:41.66666667%}.col-xs-push-4{left:33.33333333%}.col-xs-push-3{left:25%}.col-xs-push-2{left:16.66666667%}.col-xs-push-1{left:8.33333333%}.col-xs-push-0{left:auto}.col-xs-offset-12{margin-left:100%}.col-xs-offset-11{margin-left:91.66666667%}.col-xs-offset-10{margin-left:83.33333333%}.col-xs-offset-9{margin-left:75%}.col-xs-offset-8{margin-left:66.66666667%}.col-xs-offset-7{margin-left:58.33333333%}.col-xs-offset-6{margin-left:50%}.col-xs-offset-5{margin-left:41.66666667%}.col-xs-offset-4{margin-left:33.33333333%}.col-xs-offset-3{margin-left:25%}.col-xs-offset-2{margin-left:16.66666667%}.col-xs-offset-1{margin-left:8.33333333%}.col-xs-offset-0{margin-left:0}@media (min-width:768px){.col-sm-1,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-sm-10,.col-sm-11,.col-sm-12{float:left}.col-sm-12{width:100%}.col-sm-11{width:91.66666667%}.col-sm-10{width:83.33333333%}.col-sm-9{width:75%}.col-sm-8{width:66.66666667%}.col-sm-7{width:58.33333333%}.col-sm-6{width:50%}.col-sm-5{width:41.66666667%}.col-sm-4{width:33.33333333%}.col-sm-3{width:25%}.col-sm-2{width:16.66666667%}.col-sm-1{width:8.33333333%}.col-sm-pull-12{right:100%}.col-sm-pull-11{right:91.66666667%}.col-sm-pull-10{right:83.33333333%}.col-sm-pull-9{right:75%}.col-sm-pull-8{right:66.66666667%}.col-sm-pull-7{right:58.33333333%}.col-sm-pull-6{right:50%}.col-sm-pull-5{right:41.66666667%}.col-sm-pull-4{right:33.33333333%}.col-sm-pull-3{right:25%}.col-sm-pull-2{right:16.66666667%}.col-sm-pull-1{right:8.33333333%}.col-sm-pull-0{right:auto}.col-sm-push-12{left:100%}.col-sm-push-11{left:91.66666667%}.col-sm-push-10{left:83.33333333%}.col-sm-push-9{left:75%}.col-sm-push-8{left:66.66666667%}.col-sm-push-7{left:58.33333333%}.col-sm-push-6{left:50%}.col-sm-push-5{left:41.66666667%}.col-sm-push-4{left:33.33333333%}.col-sm-push-3{left:25%}.col-sm-push-2{left:16.66666667%}.col-sm-push-1{left:8.33333333%}.col-sm-push-0{left:auto}.col-sm-offset-12{margin-left:100%}.col-sm-offset-11{margin-left:91.66666667%}.col-sm-offset-10{margin-left:83.33333333%}.col-sm-offset-9{margin-left:75%}.col-sm-offset-8{margin-left:66.66666667%}.col-sm-offset-7{margin-left:58.33333333%}.col-sm-offset-6{margin-left:50%}.col-sm-offset-5{margin-left:41.66666667%}.col-sm-offset-4{margin-left:33.33333333%}.col-sm-offset-3{margin-left:25%}.col-sm-offset-2{margin-left:16.66666667%}.col-sm-offset-1{margin-left:8.33333333%}.col-sm-offset-0{margin-left:0}}@media (min-width:992px){.col-md-1,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-md-10,.col-md-11,.col-md-12{float:left}.col-md-12{width:100%}.col-md-11{width:91.66666667%}.col-md-10{width:83.33333333%}.col-md-9{width:75%}.col-md-8{width:66.66666667%}.col-md-7{width:58.33333333%}.col-md-6{width:50%}.col-md-5{width:41.66666667%}.col-md-4{width:33.33333333%}.col-md-3{width:25%}.col-md-2{width:16.66666667%}.col-md-1{width:8.33333333%}.col-md-pull-12{right:100%}.col-md-pull-11{right:91.66666667%}.col-md-pull-10{right:83.33333333%}.col-md-pull-9{right:75%}.col-md-pull-8{right:66.66666667%}.col-md-pull-7{right:58.33333333%}.col-md-pull-6{right:50%}.col-md-pull-5{right:41.66666667%}.col-md-pull-4{right:33.33333333%}.col-md-pull-3{right:25%}.col-md-pull-2{right:16.66666667%}.col-md-pull-1{right:8.33333333%}.col-md-pull-0{right:auto}.col-md-push-12{left:100%}.col-md-push-11{left:91.66666667%}.col-md-push-10{left:83.33333333%}.col-md-push-9{left:75%}.col-md-push-8{left:66.66666667%}.col-md-push-7{left:58.33333333%}.col-md-push-6{left:50%}.col-md-push-5{left:41.66666667%}.col-md-push-4{left:33.33333333%}.col-md-push-3{left:25%}.col-md-push-2{left:16.66666667%}.col-md-push-1{left:8.33333333%}.col-md-push-0{left:auto}.col-md-offset-12{margin-left:100%}.col-md-offset-11{margin-left:91.66666667%}.col-md-offset-10{margin-left:83.33333333%}.col-md-offset-9{margin-left:75%}.col-md-offset-8{margin-left:66.66666667%}.col-md-offset-7{margin-left:58.33333333%}.col-md-offset-6{margin-left:50%}.col-md-offset-5{margin-left:41.66666667%}.col-md-offset-4{margin-left:33.33333333%}.col-md-offset-3{margin-left:25%}.col-md-offset-2{margin-left:16.66666667%}.col-md-offset-1{margin-left:8.33333333%}.col-md-offset-0{margin-left:0}}@media (min-width:1200px){.col-lg-1,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-lg-10,.col-lg-11,.col-lg-12{float:left}.col-lg-12{width:100%}.col-lg-11{width:91.66666667%}.col-lg-10{width:83.33333333%}.col-lg-9{width:75%}.col-lg-8{width:66.66666667%}.col-lg-7{width:58.33333333%}.col-lg-6{width:50%}.col-lg-5{width:41.66666667%}.col-lg-4{width:33.33333333%}.col-lg-3{width:25%}.col-lg-2{width:16.66666667%}.col-lg-1{width:8.33333333%}.col-lg-pull-12{right:100%}.col-lg-pull-11{right:91.66666667%}.col-lg-pull-10{right:83.33333333%}.col-lg-pull-9{right:75%}.col-lg-pull-8{right:66.66666667%}.col-lg-pull-7{right:58.33333333%}.col-lg-pull-6{right:50%}.col-lg-pull-5{right:41.66666667%}.col-lg-pull-4{right:33.33333333%}.col-lg-pull-3{right:25%}.col-lg-pull-2{right:16.66666667%}.col-lg-pull-1{right:8.33333333%}.col-lg-pull-0{right:auto}.col-lg-push-12{left:100%}.col-lg-push-11{left:91.66666667%}.col-lg-push-10{left:83.33333333%}.col-lg-push-9{left:75%}.col-lg-push-8{left:66.66666667%}.col-lg-push-7{left:58.33333333%}.col-lg-push-6{left:50%}.col-lg-push-5{left:41.66666667%}.col-lg-push-4{left:33.33333333%}.col-lg-push-3{left:25%}.col-lg-push-2{left:16.66666667%}.col-lg-push-1{left:8.33333333%}.col-lg-push-0{left:auto}.col-lg-offset-12{margin-left:100%}.col-lg-offset-11{margin-left:91.66666667%}.col-lg-offset-10{margin-left:83.33333333%}.col-lg-offset-9{margin-left:75%}.col-lg-offset-8{margin-left:66.66666667%}.col-lg-offset-7{margin-left:58.33333333%}.col-lg-offset-6{margin-left:50%}.col-lg-offset-5{margin-left:41.66666667%}.col-lg-offset-4{margin-left:33.33333333%}.col-lg-offset-3{margin-left:25%}.col-lg-offset-2{margin-left:16.66666667%}.col-lg-offset-1{margin-left:8.33333333%}.col-lg-offset-0{margin-left:0}}table{background-color:transparent}th{text-align:left}.table{width:100%;max-width:100%;margin-bottom:20px}.table>thead>tr>th,.table>tbody>tr>th,.table>tfoot>tr>th,.table>thead>tr>td,.table>tbody>tr>td,.table>tfoot>tr>td{padding:8px;line-height:1.42857143;vertical-align:top;border-top:1px solid #ddd}.table>thead>tr>th{vertical-align:bottom;border-bottom:2px solid #ddd}.table>caption+thead>tr:first-child>th,.table>colgroup+thead>tr:first-child>th,.table>thead:first-child>tr:first-child>th,.table>caption+thead>tr:first-child>td,.table>colgroup+thead>tr:first-child>td,.table>thead:first-child>tr:first-child>td{border-top:0}.table>tbody+tbody{border-top:2px solid #ddd}.table .table{background-color:#fff}.table-condensed>thead>tr>th,.table-condensed>tbody>tr>th,.table-condensed>tfoot>tr>th,.table-condensed>thead>tr>td,.table-condensed>tbody>tr>td,.table-condensed>tfoot>tr>td{padding:5px}.table-bordered{border:1px solid #ddd}.table-bordered>thead>tr>th,.table-bordered>tbody>tr>th,.table-bordered>tfoot>tr>th,.table-bordered>thead>tr>td,.table-bordered>tbody>tr>td,.table-bordered>tfoot>tr>td{border:1px solid #ddd}.table-bordered>thead>tr>th,.table-bordered>thead>tr>td{border-bottom-width:2px}.table-striped>tbody>tr:nth-child(odd)>td,.table-striped>tbody>tr:nth-child(odd)>th{background-color:#f9f9f9}.table-hover>tbody>tr:hover>td,.table-hover>tbody>tr:hover>th{background-color:#f5f5f5}table col[class*=col-]{position:static;display:table-column;float:none}table td[class*=col-],table th[class*=col-]{position:static;display:table-cell;float:none}.table>thead>tr>td.active,.table>tbody>tr>td.active,.table>tfoot>tr>td.active,.table>thead>tr>th.active,.table>tbody>tr>th.active,.table>tfoot>tr>th.active,.table>thead>tr.active>td,.table>tbody>tr.active>td,.table>tfoot>tr.active>td,.table>thead>tr.active>th,.table>tbody>tr.active>th,.table>tfoot>tr.active>th{background-color:#f5f5f5}.table-hover>tbody>tr>td.active:hover,.table-hover>tbody>tr>th.active:hover,.table-hover>tbody>tr.active:hover>td,.table-hover>tbody>tr:hover>.active,.table-hover>tbody>tr.active:hover>th{background-color:#e8e8e8}.table>thead>tr>td.success,.table>tbody>tr>td.success,.table>tfoot>tr>td.success,.table>thead>tr>th.success,.table>tbody>tr>th.success,.table>tfoot>tr>th.success,.table>thead>tr.success>td,.table>tbody>tr.success>td,.table>tfoot>tr.success>td,.table>thead>tr.success>th,.table>tbody>tr.success>th,.table>tfoot>tr.success>th{background-color:#dff0d8}.table-hover>tbody>tr>td.success:hover,.table-hover>tbody>tr>th.success:hover,.table-hover>tbody>tr.success:hover>td,.table-hover>tbody>tr:hover>.success,.table-hover>tbody>tr.success:hover>th{background-color:#d0e9c6}.table>thead>tr>td.info,.table>tbody>tr>td.info,.table>tfoot>tr>td.info,.table>thead>tr>th.info,.table>tbody>tr>th.info,.table>tfoot>tr>th.info,.table>thead>tr.info>td,.table>tbody>tr.info>td,.table>tfoot>tr.info>td,.table>thead>tr.info>th,.table>tbody>tr.info>th,.table>tfoot>tr.info>th{background-color:#d9edf7}.table-hover>tbody>tr>td.info:hover,.table-hover>tbody>tr>th.info:hover,.table-hover>tbody>tr.info:hover>td,.table-hover>tbody>tr:hover>.info,.table-hover>tbody>tr.info:hover>th{background-color:#c4e3f3}.table>thead>tr>td.warning,.table>tbody>tr>td.warning,.table>tfoot>tr>td.warning,.table>thead>tr>th.warning,.table>tbody>tr>th.warning,.table>tfoot>tr>th.warning,.table>thead>tr.warning>td,.table>tbody>tr.warning>td,.table>tfoot>tr.warning>td,.table>thead>tr.warning>th,.table>tbody>tr.warning>th,.table>tfoot>tr.warning>th{background-color:#fcf8e3}.table-hover>tbody>tr>td.warning:hover,.table-hover>tbody>tr>th.warning:hover,.table-hover>tbody>tr.warning:hover>td,.table-hover>tbody>tr:hover>.warning,.table-hover>tbody>tr.warning:hover>th{background-color:#faf2cc}.table>thead>tr>td.danger,.table>tbody>tr>td.danger,.table>tfoot>tr>td.danger,.table>thead>tr>th.danger,.table>tbody>tr>th.danger,.table>tfoot>tr>th.danger,.table>thead>tr.danger>td,.table>tbody>tr.danger>td,.table>tfoot>tr.danger>td,.table>thead>tr.danger>th,.table>tbody>tr.danger>th,.table>tfoot>tr.danger>th{background-color:#f2dede}.table-hover>tbody>tr>td.danger:hover,.table-hover>tbody>tr>th.danger:hover,.table-hover>tbody>tr.danger:hover>td,.table-hover>tbody>tr:hover>.danger,.table-hover>tbody>tr.danger:hover>th{background-color:#ebcccc}@media screen and (max-width:767px){.table-responsive{width:100%;margin-bottom:15px;overflow-x:auto;overflow-y:hidden;-webkit-overflow-scrolling:touch;-ms-overflow-style:-ms-autohiding-scrollbar;border:1px solid #ddd}.table-responsive>.table{margin-bottom:0}.table-responsive>.table>thead>tr>th,.table-responsive>.table>tbody>tr>th,.table-responsive>.table>tfoot>tr>th,.table-responsive>.table>thead>tr>td,.table-responsive>.table>tbody>tr>td,.table-responsive>.table>tfoot>tr>td{white-space:nowrap}.table-responsive>.table-bordered{border:0}.table-responsive>.table-bordered>thead>tr>th:first-child,.table-responsive>.table-bordered>tbody>tr>th:first-child,.table-responsive>.table-bordered>tfoot>tr>th:first-child,.table-responsive>.table-bordered>thead>tr>td:first-child,.table-responsive>.table-bordered>tbody>tr>td:first-child,.table-responsive>.table-bordered>tfoot>tr>td:first-child{border-left:0}.table-responsive>.table-bordered>thead>tr>th:last-child,.table-responsive>.table-bordered>tbody>tr>th:last-child,.table-responsive>.table-bordered>tfoot>tr>th:last-child,.table-responsive>.table-bordered>thead>tr>td:last-child,.table-responsive>.table-bordered>tbody>tr>td:last-child,.table-responsive>.table-bordered>tfoot>tr>td:last-child{border-right:0}.table-responsive>.table-bordered>tbody>tr:last-child>th,.table-responsive>.table-bordered>tfoot>tr:last-child>th,.table-responsive>.table-bordered>tbody>tr:last-child>td,.table-responsive>.table-bordered>tfoot>tr:last-child>td{border-bottom:0}}fieldset{min-width:0;padding:0;margin:0;border:0}legend{display:block;width:100%;padding:0;margin-bottom:20px;font-size:21px;line-height:inherit;color:#333;border:0;border-bottom:1px solid #e5e5e5}label{display:inline-block;max-width:100%;margin-bottom:5px;font-weight:700}input[type=search]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}input[type=radio],input[type=checkbox]{margin:4px 0 0;margin-top:1px \9;line-height:normal}input[type=file]{display:block}input[type=range]{display:block;width:100%}select[multiple],select[size]{height:auto}input[type=file]:focus,input[type=radio]:focus,input[type=checkbox]:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}output{display:block;padding-top:7px;font-size:14px;line-height:1.42857143;color:#555}.form-control{display:block;width:100%;height:34px;padding:6px 12px;font-size:14px;line-height:1.42857143;color:#555;background-color:#fff;background-image:none;border:1px solid #ccc;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075);-webkit-transition:border-color ease-in-out .15s,-webkit-box-shadow ease-in-out .15s;-o-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s}.form-control:focus{border-color:#66afe9;outline:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6);box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6)}.form-control::-moz-placeholder{color:#777;opacity:1}.form-control:-ms-input-placeholder{color:#777}.form-control::-webkit-input-placeholder{color:#777}.form-control[disabled],.form-control[readonly],fieldset[disabled] .form-control{cursor:not-allowed;background-color:#eee;opacity:1}textarea.form-control{height:auto}input[type=search]{-webkit-appearance:none}input[type=date],input[type=time],input[type=datetime-local],input[type=month]{line-height:34px;line-height:1.42857143 \0}input[type=date].input-sm,input[type=time].input-sm,input[type=datetime-local].input-sm,input[type=month].input-sm{line-height:30px}input[type=date].input-lg,input[type=time].input-lg,input[type=datetime-local].input-lg,input[type=month].input-lg{line-height:46px}.form-group{margin-bottom:15px}.radio,.checkbox{position:relative;display:block;min-height:20px;margin-top:10px;margin-bottom:10px}.radio label,.checkbox label{padding-left:20px;margin-bottom:0;font-weight:400;cursor:pointer}.radio input[type=radio],.radio-inline input[type=radio],.checkbox input[type=checkbox],.checkbox-inline input[type=checkbox]{position:absolute;margin-top:4px \9;margin-left:-20px}.radio+.radio,.checkbox+.checkbox{margin-top:-5px}.radio-inline,.checkbox-inline{display:inline-block;padding-left:20px;margin-bottom:0;font-weight:400;vertical-align:middle;cursor:pointer}.radio-inline+.radio-inline,.checkbox-inline+.checkbox-inline{margin-top:0;margin-left:10px}input[type=radio][disabled],input[type=checkbox][disabled],input[type=radio].disabled,input[type=checkbox].disabled,fieldset[disabled] input[type=radio],fieldset[disabled] input[type=checkbox]{cursor:not-allowed}.radio-inline.disabled,.checkbox-inline.disabled,fieldset[disabled] .radio-inline,fieldset[disabled] .checkbox-inline{cursor:not-allowed}.radio.disabled label,.checkbox.disabled label,fieldset[disabled] .radio label,fieldset[disabled] .checkbox label{cursor:not-allowed}.form-control-static{padding-top:7px;padding-bottom:7px;margin-bottom:0}.form-control-static.input-lg,.form-control-static.input-sm{padding-right:0;padding-left:0}.input-sm,.form-horizontal .form-group-sm .form-control{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-sm{height:30px;line-height:30px}textarea.input-sm,select[multiple].input-sm{height:auto}.input-lg,.form-horizontal .form-group-lg .form-control{height:46px;padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}select.input-lg{height:46px;line-height:46px}textarea.input-lg,select[multiple].input-lg{height:auto}.has-feedback{position:relative}.has-feedback .form-control{padding-right:42.5px}.form-control-feedback{position:absolute;top:25px;right:0;z-index:2;display:block;width:34px;height:34px;line-height:34px;text-align:center}.input-lg+.form-control-feedback{width:46px;height:46px;line-height:46px}.input-sm+.form-control-feedback{width:30px;height:30px;line-height:30px}.has-success .help-block,.has-success .control-label,.has-success .radio,.has-success .checkbox,.has-success .radio-inline,.has-success .checkbox-inline{color:#3c763d}.has-success .form-control{border-color:#3c763d;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-success .form-control:focus{border-color:#2b542c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #67b168;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #67b168}.has-success .input-group-addon{color:#3c763d;background-color:#dff0d8;border-color:#3c763d}.has-success .form-control-feedback{color:#3c763d}.has-warning .help-block,.has-warning .control-label,.has-warning .radio,.has-warning .checkbox,.has-warning .radio-inline,.has-warning .checkbox-inline{color:#8a6d3b}.has-warning .form-control{border-color:#8a6d3b;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-warning .form-control:focus{border-color:#66512c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #c0a16b;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #c0a16b}.has-warning .input-group-addon{color:#8a6d3b;background-color:#fcf8e3;border-color:#8a6d3b}.has-warning .form-control-feedback{color:#8a6d3b}.has-error .help-block,.has-error .control-label,.has-error .radio,.has-error .checkbox,.has-error .radio-inline,.has-error .checkbox-inline{color:#a94442}.has-error .form-control{border-color:#a94442;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-error .form-control:focus{border-color:#843534;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483}.has-error .input-group-addon{color:#a94442;background-color:#f2dede;border-color:#a94442}.has-error .form-control-feedback{color:#a94442}.has-feedback label.sr-only~.form-control-feedback{top:0}.help-block{display:block;margin-top:5px;margin-bottom:10px;color:#737373}@media (min-width:768px){.form-inline .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .input-group{display:inline-table;vertical-align:middle}.form-inline .input-group .input-group-addon,.form-inline .input-group .input-group-btn,.form-inline .input-group .form-control{width:auto}.form-inline .input-group>.form-control{width:100%}.form-inline .control-label{margin-bottom:0;vertical-align:middle}.form-inline .radio,.form-inline .checkbox{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.form-inline .radio label,.form-inline .checkbox label{padding-left:0}.form-inline .radio input[type=radio],.form-inline .checkbox input[type=checkbox]{position:relative;margin-left:0}.form-inline .has-feedback .form-control-feedback{top:0}}.form-horizontal .radio,.form-horizontal .checkbox,.form-horizontal .radio-inline,.form-horizontal .checkbox-inline{padding-top:7px;margin-top:0;margin-bottom:0}.form-horizontal .radio,.form-horizontal .checkbox{min-height:27px}.form-horizontal .form-group{margin-right:-15px;margin-left:-15px}@media (min-width:768px){.form-horizontal .control-label{padding-top:7px;margin-bottom:0;text-align:right}}.form-horizontal .has-feedback .form-control-feedback{top:0;right:15px}@media (min-width:768px){.form-horizontal .form-group-lg .control-label{padding-top:14.3px}}@media (min-width:768px){.form-horizontal .form-group-sm .control-label{padding-top:6px}}.btn{display:inline-block;padding:6px 12px;margin-bottom:0;font-size:14px;font-weight:400;line-height:1.42857143;text-align:center;white-space:nowrap;vertical-align:middle;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background-image:none;border:1px solid transparent;border-radius:4px}.btn:focus,.btn:active:focus,.btn.active:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.btn:hover,.btn:focus{color:#333;text-decoration:none}.btn:active,.btn.active{background-image:none;outline:0;-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.btn.disabled,.btn[disabled],fieldset[disabled] .btn{pointer-events:none;cursor:not-allowed;filter:alpha(opacity=65);-webkit-box-shadow:none;box-shadow:none;opacity:.65}.btn-default{color:#333;background-color:#fff;border-color:#ccc}.btn-default:hover,.btn-default:focus,.btn-default:active,.btn-default.active,.open>.dropdown-toggle.btn-default{color:#333;background-color:#e6e6e6;border-color:#adadad}.btn-default:active,.btn-default.active,.open>.dropdown-toggle.btn-default{background-image:none}.btn-default.disabled,.btn-default[disabled],fieldset[disabled] .btn-default,.btn-default.disabled:hover,.btn-default[disabled]:hover,fieldset[disabled] .btn-default:hover,.btn-default.disabled:focus,.btn-default[disabled]:focus,fieldset[disabled] .btn-default:focus,.btn-default.disabled:active,.btn-default[disabled]:active,fieldset[disabled] .btn-default:active,.btn-default.disabled.active,.btn-default[disabled].active,fieldset[disabled] .btn-default.active{background-color:#fff;border-color:#ccc}.btn-default .badge{color:#fff;background-color:#333}.btn-primary{color:#fff;background-color:#428bca;border-color:#357ebd}.btn-primary:hover,.btn-primary:focus,.btn-primary:active,.btn-primary.active,.open>.dropdown-toggle.btn-primary{color:#fff;background-color:#3071a9;border-color:#285e8e}.btn-primary:active,.btn-primary.active,.open>.dropdown-toggle.btn-primary{background-image:none}.btn-primary.disabled,.btn-primary[disabled],fieldset[disabled] .btn-primary,.btn-primary.disabled:hover,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary:hover,.btn-primary.disabled:focus,.btn-primary[disabled]:focus,fieldset[disabled] .btn-primary:focus,.btn-primary.disabled:active,.btn-primary[disabled]:active,fieldset[disabled] .btn-primary:active,.btn-primary.disabled.active,.btn-primary[disabled].active,fieldset[disabled] .btn-primary.active{background-color:#428bca;border-color:#357ebd}.btn-primary .badge{color:#428bca;background-color:#fff}.btn-success{color:#fff;background-color:#5cb85c;border-color:#4cae4c}.btn-success:hover,.btn-success:focus,.btn-success:active,.btn-success.active,.open>.dropdown-toggle.btn-success{color:#fff;background-color:#449d44;border-color:#398439}.btn-success:active,.btn-success.active,.open>.dropdown-toggle.btn-success{background-image:none}.btn-success.disabled,.btn-success[disabled],fieldset[disabled] .btn-success,.btn-success.disabled:hover,.btn-success[disabled]:hover,fieldset[disabled] .btn-success:hover,.btn-success.disabled:focus,.btn-success[disabled]:focus,fieldset[disabled] .btn-success:focus,.btn-success.disabled:active,.btn-success[disabled]:active,fieldset[disabled] .btn-success:active,.btn-success.disabled.active,.btn-success[disabled].active,fieldset[disabled] .btn-success.active{background-color:#5cb85c;border-color:#4cae4c}.btn-success .badge{color:#5cb85c;background-color:#fff}.btn-info{color:#fff;background-color:#5bc0de;border-color:#46b8da}.btn-info:hover,.btn-info:focus,.btn-info:active,.btn-info.active,.open>.dropdown-toggle.btn-info{color:#fff;background-color:#31b0d5;border-color:#269abc}.btn-info:active,.btn-info.active,.open>.dropdown-toggle.btn-info{background-image:none}.btn-info.disabled,.btn-info[disabled],fieldset[disabled] .btn-info,.btn-info.disabled:hover,.btn-info[disabled]:hover,fieldset[disabled] .btn-info:hover,.btn-info.disabled:focus,.btn-info[disabled]:focus,fieldset[disabled] .btn-info:focus,.btn-info.disabled:active,.btn-info[disabled]:active,fieldset[disabled] .btn-info:active,.btn-info.disabled.active,.btn-info[disabled].active,fieldset[disabled] .btn-info.active{background-color:#5bc0de;border-color:#46b8da}.btn-info .badge{color:#5bc0de;background-color:#fff}.btn-warning{color:#fff;background-color:#f0ad4e;border-color:#eea236}.btn-warning:hover,.btn-warning:focus,.btn-warning:active,.btn-warning.active,.open>.dropdown-toggle.btn-warning{color:#fff;background-color:#ec971f;border-color:#d58512}.btn-warning:active,.btn-warning.active,.open>.dropdown-toggle.btn-warning{background-image:none}.btn-warning.disabled,.btn-warning[disabled],fieldset[disabled] .btn-warning,.btn-warning.disabled:hover,.btn-warning[disabled]:hover,fieldset[disabled] .btn-warning:hover,.btn-warning.disabled:focus,.btn-warning[disabled]:focus,fieldset[disabled] .btn-warning:focus,.btn-warning.disabled:active,.btn-warning[disabled]:active,fieldset[disabled] .btn-warning:active,.btn-warning.disabled.active,.btn-warning[disabled].active,fieldset[disabled] .btn-warning.active{background-color:#f0ad4e;border-color:#eea236}.btn-warning .badge{color:#f0ad4e;background-color:#fff}.btn-danger{color:#fff;background-color:#d9534f;border-color:#d43f3a}.btn-danger:hover,.btn-danger:focus,.btn-danger:active,.btn-danger.active,.open>.dropdown-toggle.btn-danger{color:#fff;background-color:#c9302c;border-color:#ac2925}.btn-danger:active,.btn-danger.active,.open>.dropdown-toggle.btn-danger{background-image:none}.btn-danger.disabled,.btn-danger[disabled],fieldset[disabled] .btn-danger,.btn-danger.disabled:hover,.btn-danger[disabled]:hover,fieldset[disabled] .btn-danger:hover,.btn-danger.disabled:focus,.btn-danger[disabled]:focus,fieldset[disabled] .btn-danger:focus,.btn-danger.disabled:active,.btn-danger[disabled]:active,fieldset[disabled] .btn-danger:active,.btn-danger.disabled.active,.btn-danger[disabled].active,fieldset[disabled] .btn-danger.active{background-color:#d9534f;border-color:#d43f3a}.btn-danger .badge{color:#d9534f;background-color:#fff}.btn-link{font-weight:400;color:#428bca;cursor:pointer;border-radius:0}.btn-link,.btn-link:active,.btn-link[disabled],fieldset[disabled] .btn-link{background-color:transparent;-webkit-box-shadow:none;box-shadow:none}.btn-link,.btn-link:hover,.btn-link:focus,.btn-link:active{border-color:transparent}.btn-link:hover,.btn-link:focus{color:#2a6496;text-decoration:underline;background-color:transparent}.btn-link[disabled]:hover,fieldset[disabled] .btn-link:hover,.btn-link[disabled]:focus,fieldset[disabled] .btn-link:focus{color:#777;text-decoration:none}.btn-lg,.btn-group-lg>.btn{padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}.btn-sm,.btn-group-sm>.btn{padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.btn-xs,.btn-group-xs>.btn{padding:1px 5px;font-size:12px;line-height:1.5;border-radius:3px}.btn-block{display:block;width:100%}.btn-block+.btn-block{margin-top:5px}input[type=submit].btn-block,input[type=reset].btn-block,input[type=button].btn-block{width:100%}.fade{opacity:0;-webkit-transition:opacity .15s linear;-o-transition:opacity .15s linear;transition:opacity .15s linear}.fade.in{opacity:1}.collapse{display:none}.collapse.in{display:block}tr.collapse.in{display:table-row}tbody.collapse.in{display:table-row-group}.collapsing{position:relative;height:0;overflow:hidden;-webkit-transition:height .35s ease;-o-transition:height .35s ease;transition:height .35s ease}.caret{display:inline-block;width:0;height:0;margin-left:2px;vertical-align:middle;border-top:4px solid;border-right:4px solid transparent;border-left:4px solid transparent}.dropdown{position:relative}.dropdown-toggle:focus{outline:0}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:160px;padding:5px 0;margin:2px 0 0;font-size:14px;text-align:left;list-style:none;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0,0,0,.15);border-radius:4px;-webkit-box-shadow:0 6px 12px rgba(0,0,0,.175);box-shadow:0 6px 12px rgba(0,0,0,.175)}.dropdown-menu.pull-right{right:0;left:auto}.dropdown-menu .divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.dropdown-menu>li>a{display:block;padding:3px 20px;clear:both;font-weight:400;line-height:1.42857143;color:#333;white-space:nowrap}.dropdown-menu>li>a:hover,.dropdown-menu>li>a:focus{color:#262626;text-decoration:none;background-color:#f5f5f5}.dropdown-menu>.active>a,.dropdown-menu>.active>a:hover,.dropdown-menu>.active>a:focus{color:#fff;text-decoration:none;background-color:#428bca;outline:0}.dropdown-menu>.disabled>a,.dropdown-menu>.disabled>a:hover,.dropdown-menu>.disabled>a:focus{color:#777}.dropdown-menu>.disabled>a:hover,.dropdown-menu>.disabled>a:focus{text-decoration:none;cursor:not-allowed;background-color:transparent;background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.open>.dropdown-menu{display:block}.open>a{outline:0}.dropdown-menu-right{right:0;left:auto}.dropdown-menu-left{right:auto;left:0}.dropdown-header{display:block;padding:3px 20px;font-size:12px;line-height:1.42857143;color:#777;white-space:nowrap}.dropdown-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:990}.pull-right>.dropdown-menu{right:0;left:auto}.dropup .caret,.navbar-fixed-bottom .dropdown .caret{content:"";border-top:0;border-bottom:4px solid}.dropup .dropdown-menu,.navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:1px}@media (min-width:768px){.navbar-right .dropdown-menu{right:0;left:auto}.navbar-right .dropdown-menu-left{right:auto;left:0}}.btn-group,.btn-group-vertical{position:relative;display:inline-block;vertical-align:middle}.btn-group>.btn,.btn-group-vertical>.btn{position:relative;float:left}.btn-group>.btn:hover,.btn-group-vertical>.btn:hover,.btn-group>.btn:focus,.btn-group-vertical>.btn:focus,.btn-group>.btn:active,.btn-group-vertical>.btn:active,.btn-group>.btn.active,.btn-group-vertical>.btn.active{z-index:2}.btn-group>.btn:focus,.btn-group-vertical>.btn:focus{outline:0}.btn-group .btn+.btn,.btn-group .btn+.btn-group,.btn-group .btn-group+.btn,.btn-group .btn-group+.btn-group{margin-left:-1px}.btn-toolbar{margin-left:-5px}.btn-toolbar .btn-group,.btn-toolbar .input-group{float:left}.btn-toolbar>.btn,.btn-toolbar>.btn-group,.btn-toolbar>.input-group{margin-left:5px}.btn-group>.btn:not(:first-child):not(:last-child):not(.dropdown-toggle){border-radius:0}.btn-group>.btn:first-child{margin-left:0}.btn-group>.btn:first-child:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn:last-child:not(:first-child),.btn-group>.dropdown-toggle:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.btn-group>.btn-group{float:left}.btn-group>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group>.btn-group:first-child>.btn:last-child,.btn-group>.btn-group:first-child>.dropdown-toggle{border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn-group:last-child>.btn:first-child{border-top-left-radius:0;border-bottom-left-radius:0}.btn-group .dropdown-toggle:active,.btn-group.open .dropdown-toggle{outline:0}.btn-group>.btn+.dropdown-toggle{padding-right:8px;padding-left:8px}.btn-group>.btn-lg+.dropdown-toggle{padding-right:12px;padding-left:12px}.btn-group.open .dropdown-toggle{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.btn-group.open .dropdown-toggle.btn-link{-webkit-box-shadow:none;box-shadow:none}.btn .caret{margin-left:0}.btn-lg .caret{border-width:5px 5px 0;border-bottom-width:0}.dropup .btn-lg .caret{border-width:0 5px 5px}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group,.btn-group-vertical>.btn-group>.btn{display:block;float:none;width:100%;max-width:100%}.btn-group-vertical>.btn-group>.btn{float:none}.btn-group-vertical>.btn+.btn,.btn-group-vertical>.btn+.btn-group,.btn-group-vertical>.btn-group+.btn,.btn-group-vertical>.btn-group+.btn-group{margin-top:-1px;margin-left:0}.btn-group-vertical>.btn:not(:first-child):not(:last-child){border-radius:0}.btn-group-vertical>.btn:first-child:not(:last-child){border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn:last-child:not(:first-child){border-top-left-radius:0;border-top-right-radius:0;border-bottom-left-radius:4px}.btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group-vertical>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group-vertical>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-left-radius:0;border-top-right-radius:0}.btn-group-justified{display:table;width:100%;table-layout:fixed;border-collapse:separate}.btn-group-justified>.btn,.btn-group-justified>.btn-group{display:table-cell;float:none;width:1%}.btn-group-justified>.btn-group .btn{width:100%}.btn-group-justified>.btn-group .dropdown-menu{left:auto}[data-toggle=buttons]>.btn>input[type=radio],[data-toggle=buttons]>.btn>input[type=checkbox]{position:absolute;z-index:-1;filter:alpha(opacity=0);opacity:0}.input-group{position:relative;display:table;border-collapse:separate}.input-group[class*=col-]{float:none;padding-right:0;padding-left:0}.input-group .form-control{position:relative;z-index:2;float:left;width:100%;margin-bottom:0}.input-group-lg>.form-control,.input-group-lg>.input-group-addon,.input-group-lg>.input-group-btn>.btn{height:46px;padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}select.input-group-lg>.form-control,select.input-group-lg>.input-group-addon,select.input-group-lg>.input-group-btn>.btn{height:46px;line-height:46px}textarea.input-group-lg>.form-control,textarea.input-group-lg>.input-group-addon,textarea.input-group-lg>.input-group-btn>.btn,select[multiple].input-group-lg>.form-control,select[multiple].input-group-lg>.input-group-addon,select[multiple].input-group-lg>.input-group-btn>.btn{height:auto}.input-group-sm>.form-control,.input-group-sm>.input-group-addon,.input-group-sm>.input-group-btn>.btn{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-group-sm>.form-control,select.input-group-sm>.input-group-addon,select.input-group-sm>.input-group-btn>.btn{height:30px;line-height:30px}textarea.input-group-sm>.form-control,textarea.input-group-sm>.input-group-addon,textarea.input-group-sm>.input-group-btn>.btn,select[multiple].input-group-sm>.form-control,select[multiple].input-group-sm>.input-group-addon,select[multiple].input-group-sm>.input-group-btn>.btn{height:auto}.input-group-addon,.input-group-btn,.input-group .form-control{display:table-cell}.input-group-addon:not(:first-child):not(:last-child),.input-group-btn:not(:first-child):not(:last-child),.input-group .form-control:not(:first-child):not(:last-child){border-radius:0}.input-group-addon,.input-group-btn{width:1%;white-space:nowrap;vertical-align:middle}.input-group-addon{padding:6px 12px;font-size:14px;font-weight:400;line-height:1;color:#555;text-align:center;background-color:#eee;border:1px solid #ccc;border-radius:4px}.input-group-addon.input-sm{padding:5px 10px;font-size:12px;border-radius:3px}.input-group-addon.input-lg{padding:10px 16px;font-size:18px;border-radius:6px}.input-group-addon input[type=radio],.input-group-addon input[type=checkbox]{margin-top:0}.input-group .form-control:first-child,.input-group-addon:first-child,.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group>.btn,.input-group-btn:first-child>.dropdown-toggle,.input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle),.input-group-btn:last-child>.btn-group:not(:last-child)>.btn{border-top-right-radius:0;border-bottom-right-radius:0}.input-group-addon:first-child{border-right:0}.input-group .form-control:last-child,.input-group-addon:last-child,.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group>.btn,.input-group-btn:last-child>.dropdown-toggle,.input-group-btn:first-child>.btn:not(:first-child),.input-group-btn:first-child>.btn-group:not(:first-child)>.btn{border-top-left-radius:0;border-bottom-left-radius:0}.input-group-addon:last-child{border-left:0}.input-group-btn{position:relative;font-size:0;white-space:nowrap}.input-group-btn>.btn{position:relative}.input-group-btn>.btn+.btn{margin-left:-1px}.input-group-btn>.btn:hover,.input-group-btn>.btn:focus,.input-group-btn>.btn:active{z-index:2}.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group{margin-right:-1px}.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group{margin-left:-1px}.nav{padding-left:0;margin-bottom:0;list-style:none}.nav>li{position:relative;display:block}.nav>li>a{position:relative;display:block;padding:10px 15px}.nav>li>a:hover,.nav>li>a:focus{text-decoration:none;background-color:#eee}.nav>li.disabled>a{color:#777}.nav>li.disabled>a:hover,.nav>li.disabled>a:focus{color:#777;text-decoration:none;cursor:not-allowed;background-color:transparent}.nav .open>a,.nav .open>a:hover,.nav .open>a:focus{background-color:#eee;border-color:#428bca}.nav .nav-divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.nav>li>a>img{max-width:none}.nav-tabs{border-bottom:1px solid #ddd}.nav-tabs>li{float:left;margin-bottom:-1px}.nav-tabs>li>a{margin-right:2px;line-height:1.42857143;border:1px solid transparent;border-radius:4px 4px 0 0}.nav-tabs>li>a:hover{border-color:#eee #eee #ddd}.nav-tabs>li.active>a,.nav-tabs>li.active>a:hover,.nav-tabs>li.active>a:focus{color:#555;cursor:default;background-color:#fff;border:1px solid #ddd;border-bottom-color:transparent}.nav-tabs.nav-justified{width:100%;border-bottom:0}.nav-tabs.nav-justified>li{float:none}.nav-tabs.nav-justified>li>a{margin-bottom:5px;text-align:center}.nav-tabs.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-tabs.nav-justified>li{display:table-cell;width:1%}.nav-tabs.nav-justified>li>a{margin-bottom:0}}.nav-tabs.nav-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:hover,.nav-tabs.nav-justified>.active>a:focus{border:1px solid #ddd}@media (min-width:768px){.nav-tabs.nav-justified>li>a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:hover,.nav-tabs.nav-justified>.active>a:focus{border-bottom-color:#fff}}.nav-pills>li{float:left}.nav-pills>li>a{border-radius:4px}.nav-pills>li+li{margin-left:2px}.nav-pills>li.active>a,.nav-pills>li.active>a:hover,.nav-pills>li.active>a:focus{color:#fff;background-color:#428bca}.nav-stacked>li{float:none}.nav-stacked>li+li{margin-top:2px;margin-left:0}.nav-justified{width:100%}.nav-justified>li{float:none}.nav-justified>li>a{margin-bottom:5px;text-align:center}.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-justified>li{display:table-cell;width:1%}.nav-justified>li>a{margin-bottom:0}}.nav-tabs-justified{border-bottom:0}.nav-tabs-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:hover,.nav-tabs-justified>.active>a:focus{border:1px solid #ddd}@media (min-width:768px){.nav-tabs-justified>li>a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:hover,.nav-tabs-justified>.active>a:focus{border-bottom-color:#fff}}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-left-radius:0;border-top-right-radius:0}.navbar{position:relative;min-height:50px;margin-bottom:20px;border:1px solid transparent}@media (min-width:768px){.navbar{border-radius:4px}}@media (min-width:768px){.navbar-header{float:left}}.navbar-collapse{padding-right:15px;padding-left:15px;overflow-x:visible;-webkit-overflow-scrolling:touch;border-top:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.1);box-shadow:inset 0 1px 0 rgba(255,255,255,.1)}.navbar-collapse.in{overflow-y:auto}@media (min-width:768px){.navbar-collapse{width:auto;border-top:0;-webkit-box-shadow:none;box-shadow:none}.navbar-collapse.collapse{display:block!important;height:auto!important;padding-bottom:0;overflow:visible!important}.navbar-collapse.in{overflow-y:visible}.navbar-fixed-top .navbar-collapse,.navbar-static-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{padding-right:0;padding-left:0}}.navbar-fixed-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{max-height:340px}@media (max-width:480px) and (orientation:landscape){.navbar-fixed-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{max-height:200px}}.container>.navbar-header,.container-fluid>.navbar-header,.container>.navbar-collapse,.container-fluid>.navbar-collapse{margin-right:-15px;margin-left:-15px}@media (min-width:768px){.container>.navbar-header,.container-fluid>.navbar-header,.container>.navbar-collapse,.container-fluid>.navbar-collapse{margin-right:0;margin-left:0}}.navbar-static-top{z-index:1000;border-width:0 0 1px}@media (min-width:768px){.navbar-static-top{border-radius:0}}.navbar-fixed-top,.navbar-fixed-bottom{position:fixed;right:0;left:0;z-index:1030;-webkit-transform:translate3d(0,0,0);-o-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}@media (min-width:768px){.navbar-fixed-top,.navbar-fixed-bottom{border-radius:0}}.navbar-fixed-top{top:0;border-width:0 0 1px}.navbar-fixed-bottom{bottom:0;margin-bottom:0;border-width:1px 0 0}.navbar-brand{float:left;height:50px;padding:15px 15px;font-size:18px;line-height:20px}.navbar-brand:hover,.navbar-brand:focus{text-decoration:none}@media (min-width:768px){.navbar>.container .navbar-brand,.navbar>.container-fluid .navbar-brand{margin-left:-15px}}.navbar-toggle{position:relative;float:right;padding:9px 10px;margin-top:8px;margin-right:15px;margin-bottom:8px;background-color:transparent;background-image:none;border:1px solid transparent;border-radius:4px}.navbar-toggle:focus{outline:0}.navbar-toggle .icon-bar{display:block;width:22px;height:2px;border-radius:1px}.navbar-toggle .icon-bar+.icon-bar{margin-top:4px}@media (min-width:768px){.navbar-toggle{display:none}}.navbar-nav{margin:7.5px -15px}.navbar-nav>li>a{padding-top:10px;padding-bottom:10px;line-height:20px}@media (max-width:767px){.navbar-nav .open .dropdown-menu{position:static;float:none;width:auto;margin-top:0;background-color:transparent;border:0;-webkit-box-shadow:none;box-shadow:none}.navbar-nav .open .dropdown-menu>li>a,.navbar-nav .open .dropdown-menu .dropdown-header{padding:5px 15px 5px 25px}.navbar-nav .open .dropdown-menu>li>a{line-height:20px}.navbar-nav .open .dropdown-menu>li>a:hover,.navbar-nav .open .dropdown-menu>li>a:focus{background-image:none}}@media (min-width:768px){.navbar-nav{float:left;margin:0}.navbar-nav>li{float:left}.navbar-nav>li>a{padding-top:15px;padding-bottom:15px}.navbar-nav.navbar-right:last-child{margin-right:-15px}}@media (min-width:768px){.navbar-left{float:left!important}.navbar-right{float:right!important}}.navbar-form{padding:10px 15px;margin-top:8px;margin-right:-15px;margin-bottom:8px;margin-left:-15px;border-top:1px solid transparent;border-bottom:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.1);box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.1)}@media (min-width:768px){.navbar-form .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.navbar-form .form-control{display:inline-block;width:auto;vertical-align:middle}.navbar-form .input-group{display:inline-table;vertical-align:middle}.navbar-form .input-group .input-group-addon,.navbar-form .input-group .input-group-btn,.navbar-form .input-group .form-control{width:auto}.navbar-form .input-group>.form-control{width:100%}.navbar-form .control-label{margin-bottom:0;vertical-align:middle}.navbar-form .radio,.navbar-form .checkbox{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.navbar-form .radio label,.navbar-form .checkbox label{padding-left:0}.navbar-form .radio input[type=radio],.navbar-form .checkbox input[type=checkbox]{position:relative;margin-left:0}.navbar-form .has-feedback .form-control-feedback{top:0}}@media (max-width:767px){.navbar-form .form-group{margin-bottom:5px}}@media (min-width:768px){.navbar-form{width:auto;padding-top:0;padding-bottom:0;margin-right:0;margin-left:0;border:0;-webkit-box-shadow:none;box-shadow:none}.navbar-form.navbar-right:last-child{margin-right:-15px}}.navbar-nav>li>.dropdown-menu{margin-top:0;border-top-left-radius:0;border-top-right-radius:0}.navbar-fixed-bottom .navbar-nav>li>.dropdown-menu{border-bottom-right-radius:0;border-bottom-left-radius:0}.navbar-btn{margin-top:8px;margin-bottom:8px}.navbar-btn.btn-sm{margin-top:10px;margin-bottom:10px}.navbar-btn.btn-xs{margin-top:14px;margin-bottom:14px}.navbar-text{margin-top:15px;margin-bottom:15px}@media (min-width:768px){.navbar-text{float:left;margin-right:15px;margin-left:15px}.navbar-text.navbar-right:last-child{margin-right:0}}.navbar-default{background-color:#f8f8f8;border-color:#e7e7e7}.navbar-default .navbar-brand{color:#777}.navbar-default .navbar-brand:hover,.navbar-default .navbar-brand:focus{color:#5e5e5e;background-color:transparent}.navbar-default .navbar-text{color:#777}.navbar-default .navbar-nav>li>a{color:#777}.navbar-default .navbar-nav>li>a:hover,.navbar-default .navbar-nav>li>a:focus{color:#333;background-color:transparent}.navbar-default .navbar-nav>.active>a,.navbar-default .navbar-nav>.active>a:hover,.navbar-default .navbar-nav>.active>a:focus{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav>.disabled>a,.navbar-default .navbar-nav>.disabled>a:hover,.navbar-default .navbar-nav>.disabled>a:focus{color:#ccc;background-color:transparent}.navbar-default .navbar-toggle{border-color:#ddd}.navbar-default .navbar-toggle:hover,.navbar-default .navbar-toggle:focus{background-color:#ddd}.navbar-default .navbar-toggle .icon-bar{background-color:#888}.navbar-default .navbar-collapse,.navbar-default .navbar-form{border-color:#e7e7e7}.navbar-default .navbar-nav>.open>a,.navbar-default .navbar-nav>.open>a:hover,.navbar-default .navbar-nav>.open>a:focus{color:#555;background-color:#e7e7e7}@media (max-width:767px){.navbar-default .navbar-nav .open .dropdown-menu>li>a{color:#777}.navbar-default .navbar-nav .open .dropdown-menu>li>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>li>a:focus{color:#333;background-color:transparent}.navbar-default .navbar-nav .open .dropdown-menu>.active>a,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:focus{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:focus{color:#ccc;background-color:transparent}}.navbar-default .navbar-link{color:#777}.navbar-default .navbar-link:hover{color:#333}.navbar-default .btn-link{color:#777}.navbar-default .btn-link:hover,.navbar-default .btn-link:focus{color:#333}.navbar-default .btn-link[disabled]:hover,fieldset[disabled] .navbar-default .btn-link:hover,.navbar-default .btn-link[disabled]:focus,fieldset[disabled] .navbar-default .btn-link:focus{color:#ccc}.navbar-inverse{background-color:#222;border-color:#080808}.navbar-inverse .navbar-brand{color:#777}.navbar-inverse .navbar-brand:hover,.navbar-inverse .navbar-brand:focus{color:#fff;background-color:transparent}.navbar-inverse .navbar-text{color:#777}.navbar-inverse .navbar-nav>li>a{color:#777}.navbar-inverse .navbar-nav>li>a:hover,.navbar-inverse .navbar-nav>li>a:focus{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav>.active>a,.navbar-inverse .navbar-nav>.active>a:hover,.navbar-inverse .navbar-nav>.active>a:focus{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav>.disabled>a,.navbar-inverse .navbar-nav>.disabled>a:hover,.navbar-inverse .navbar-nav>.disabled>a:focus{color:#444;background-color:transparent}.navbar-inverse .navbar-toggle{border-color:#333}.navbar-inverse .navbar-toggle:hover,.navbar-inverse .navbar-toggle:focus{background-color:#333}.navbar-inverse .navbar-toggle .icon-bar{background-color:#fff}.navbar-inverse .navbar-collapse,.navbar-inverse .navbar-form{border-color:#101010}.navbar-inverse .navbar-nav>.open>a,.navbar-inverse .navbar-nav>.open>a:hover,.navbar-inverse .navbar-nav>.open>a:focus{color:#fff;background-color:#080808}@media (max-width:767px){.navbar-inverse .navbar-nav .open .dropdown-menu>.dropdown-header{border-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu .divider{background-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a{color:#777}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:focus{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:focus{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:focus{color:#444;background-color:transparent}}.navbar-inverse .navbar-link{color:#777}.navbar-inverse .navbar-link:hover{color:#fff}.navbar-inverse .btn-link{color:#777}.navbar-inverse .btn-link:hover,.navbar-inverse .btn-link:focus{color:#fff}.navbar-inverse .btn-link[disabled]:hover,fieldset[disabled] .navbar-inverse .btn-link:hover,.navbar-inverse .btn-link[disabled]:focus,fieldset[disabled] .navbar-inverse .btn-link:focus{color:#444}.breadcrumb{padding:8px 15px;margin-bottom:20px;list-style:none;background-color:#f5f5f5;border-radius:4px}.breadcrumb>li{display:inline-block}.breadcrumb>li+li:before{padding:0 5px;color:#ccc;content:"/\00a0"}.breadcrumb>.active{color:#777}.pagination{display:inline-block;padding-left:0;margin:20px 0;border-radius:4px}.pagination>li{display:inline}.pagination>li>a,.pagination>li>span{position:relative;float:left;padding:6px 12px;margin-left:-1px;line-height:1.42857143;color:#428bca;text-decoration:none;background-color:#fff;border:1px solid #ddd}.pagination>li:first-child>a,.pagination>li:first-child>span{margin-left:0;border-top-left-radius:4px;border-bottom-left-radius:4px}.pagination>li:last-child>a,.pagination>li:last-child>span{border-top-right-radius:4px;border-bottom-right-radius:4px}.pagination>li>a:hover,.pagination>li>span:hover,.pagination>li>a:focus,.pagination>li>span:focus{color:#2a6496;background-color:#eee;border-color:#ddd}.pagination>.active>a,.pagination>.active>span,.pagination>.active>a:hover,.pagination>.active>span:hover,.pagination>.active>a:focus,.pagination>.active>span:focus{z-index:2;color:#fff;cursor:default;background-color:#428bca;border-color:#428bca}.pagination>.disabled>span,.pagination>.disabled>span:hover,.pagination>.disabled>span:focus,.pagination>.disabled>a,.pagination>.disabled>a:hover,.pagination>.disabled>a:focus{color:#777;cursor:not-allowed;background-color:#fff;border-color:#ddd}.pagination-lg>li>a,.pagination-lg>li>span{padding:10px 16px;font-size:18px}.pagination-lg>li:first-child>a,.pagination-lg>li:first-child>span{border-top-left-radius:6px;border-bottom-left-radius:6px}.pagination-lg>li:last-child>a,.pagination-lg>li:last-child>span{border-top-right-radius:6px;border-bottom-right-radius:6px}.pagination-sm>li>a,.pagination-sm>li>span{padding:5px 10px;font-size:12px}.pagination-sm>li:first-child>a,.pagination-sm>li:first-child>span{border-top-left-radius:3px;border-bottom-left-radius:3px}.pagination-sm>li:last-child>a,.pagination-sm>li:last-child>span{border-top-right-radius:3px;border-bottom-right-radius:3px}.pager{padding-left:0;margin:20px 0;text-align:center;list-style:none}.pager li{display:inline}.pager li>a,.pager li>span{display:inline-block;padding:5px 14px;background-color:#fff;border:1px solid #ddd;border-radius:15px}.pager li>a:hover,.pager li>a:focus{text-decoration:none;background-color:#eee}.pager .next>a,.pager .next>span{float:right}.pager .previous>a,.pager .previous>span{float:left}.pager .disabled>a,.pager .disabled>a:hover,.pager .disabled>a:focus,.pager .disabled>span{color:#777;cursor:not-allowed;background-color:#fff}.label{display:inline;padding:.2em .6em .3em;font-size:75%;font-weight:700;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25em}a.label:hover,a.label:focus{color:#fff;text-decoration:none;cursor:pointer}.label:empty{display:none}.btn .label{position:relative;top:-1px}.label-default{background-color:#777}.label-default[href]:hover,.label-default[href]:focus{background-color:#5e5e5e}.label-primary{background-color:#428bca}.label-primary[href]:hover,.label-primary[href]:focus{background-color:#3071a9}.label-success{background-color:#5cb85c}.label-success[href]:hover,.label-success[href]:focus{background-color:#449d44}.label-info{background-color:#5bc0de}.label-info[href]:hover,.label-info[href]:focus{background-color:#31b0d5}.label-warning{background-color:#f0ad4e}.label-warning[href]:hover,.label-warning[href]:focus{background-color:#ec971f}.label-danger{background-color:#d9534f}.label-danger[href]:hover,.label-danger[href]:focus{background-color:#c9302c}.badge{display:inline-block;min-width:10px;padding:3px 7px;font-size:12px;font-weight:700;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;background-color:#777;border-radius:10px}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.btn-xs .badge{top:0;padding:1px 5px}a.badge:hover,a.badge:focus{color:#fff;text-decoration:none;cursor:pointer}a.list-group-item.active>.badge,.nav-pills>.active>a>.badge{color:#428bca;background-color:#fff}.nav-pills>li>a>.badge{margin-left:3px}.jumbotron{padding:30px;margin-bottom:30px;color:inherit;background-color:#eee}.jumbotron h1,.jumbotron .h1{color:inherit}.jumbotron p{margin-bottom:15px;font-size:21px;font-weight:200}.jumbotron>hr{border-top-color:#d5d5d5}.container .jumbotron{border-radius:6px}.jumbotron .container{max-width:100%}@media screen and (min-width:768px){.jumbotron{padding-top:48px;padding-bottom:48px}.container .jumbotron{padding-right:60px;padding-left:60px}.jumbotron h1,.jumbotron .h1{font-size:63px}}.thumbnail{display:block;padding:4px;margin-bottom:20px;line-height:1.42857143;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:all .2s ease-in-out;-o-transition:all .2s ease-in-out;transition:all .2s ease-in-out}.thumbnail>img,.thumbnail a>img{margin-right:auto;margin-left:auto}a.thumbnail:hover,a.thumbnail:focus,a.thumbnail.active{border-color:#428bca}.thumbnail .caption{padding:9px;color:#333}.alert{padding:15px;margin-bottom:20px;border:1px solid transparent;border-radius:4px}.alert h4{margin-top:0;color:inherit}.alert .alert-link{font-weight:700}.alert>p,.alert>ul{margin-bottom:0}.alert>p+p{margin-top:5px}.alert-dismissable,.alert-dismissible{padding-right:35px}.alert-dismissable .close,.alert-dismissible .close{position:relative;top:-2px;right:-21px;color:inherit}.alert-success{color:#3c763d;background-color:#dff0d8;border-color:#d6e9c6}.alert-success hr{border-top-color:#c9e2b3}.alert-success .alert-link{color:#2b542c}.alert-info{color:#31708f;background-color:#d9edf7;border-color:#bce8f1}.alert-info hr{border-top-color:#a6e1ec}.alert-info .alert-link{color:#245269}.alert-warning{color:#8a6d3b;background-color:#fcf8e3;border-color:#faebcc}.alert-warning hr{border-top-color:#f7e1b5}.alert-warning .alert-link{color:#66512c}.alert-danger{color:#a94442;background-color:#f2dede;border-color:#ebccd1}.alert-danger hr{border-top-color:#e4b9c0}.alert-danger .alert-link{color:#843534}@-webkit-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@-o-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}.progress{height:20px;margin-bottom:20px;overflow:hidden;background-color:#f5f5f5;border-radius:4px;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,.1);box-shadow:inset 0 1px 2px rgba(0,0,0,.1)}.progress-bar{float:left;width:0;height:100%;font-size:12px;line-height:20px;color:#fff;text-align:center;background-color:#428bca;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);-webkit-transition:width .6s ease;-o-transition:width .6s ease;transition:width .6s ease}.progress-striped .progress-bar,.progress-bar-striped{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);-webkit-background-size:40px 40px;background-size:40px 40px}.progress.active .progress-bar,.progress-bar.active{-webkit-animation:progress-bar-stripes 2s linear infinite;-o-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}.progress-bar[aria-valuenow="1"],.progress-bar[aria-valuenow="2"]{min-width:30px}.progress-bar[aria-valuenow="0"]{min-width:30px;color:#777;background-color:transparent;background-image:none;-webkit-box-shadow:none;box-shadow:none}.progress-bar-success{background-color:#5cb85c}.progress-striped .progress-bar-success{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-info{background-color:#5bc0de}.progress-striped .progress-bar-info{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-warning{background-color:#f0ad4e}.progress-striped .progress-bar-warning{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-danger{background-color:#d9534f}.progress-striped .progress-bar-danger{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.media,.media-body{overflow:hidden;zoom:1}.media,.media .media{margin-top:15px}.media:first-child{margin-top:0}.media-object{display:block}.media-heading{margin:0 0 5px}.media>.pull-left{margin-right:10px}.media>.pull-right{margin-left:10px}.media-list{padding-left:0;list-style:none}.list-group{padding-left:0;margin-bottom:20px}.list-group-item{position:relative;display:block;padding:10px 15px;margin-bottom:-1px;background-color:#fff;border:1px solid #ddd}.list-group-item:first-child{border-top-left-radius:4px;border-top-right-radius:4px}.list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}.list-group-item>.badge{float:right}.list-group-item>.badge+.badge{margin-right:5px}a.list-group-item{color:#555}a.list-group-item .list-group-item-heading{color:#333}a.list-group-item:hover,a.list-group-item:focus{color:#555;text-decoration:none;background-color:#f5f5f5}.list-group-item.disabled,.list-group-item.disabled:hover,.list-group-item.disabled:focus{color:#777;background-color:#eee}.list-group-item.disabled .list-group-item-heading,.list-group-item.disabled:hover .list-group-item-heading,.list-group-item.disabled:focus .list-group-item-heading{color:inherit}.list-group-item.disabled .list-group-item-text,.list-group-item.disabled:hover .list-group-item-text,.list-group-item.disabled:focus .list-group-item-text{color:#777}.list-group-item.active,.list-group-item.active:hover,.list-group-item.active:focus{z-index:2;color:#fff;background-color:#428bca;border-color:#428bca}.list-group-item.active .list-group-item-heading,.list-group-item.active:hover .list-group-item-heading,.list-group-item.active:focus .list-group-item-heading,.list-group-item.active .list-group-item-heading>small,.list-group-item.active:hover .list-group-item-heading>small,.list-group-item.active:focus .list-group-item-heading>small,.list-group-item.active .list-group-item-heading>.small,.list-group-item.active:hover .list-group-item-heading>.small,.list-group-item.active:focus .list-group-item-heading>.small{color:inherit}.list-group-item.active .list-group-item-text,.list-group-item.active:hover .list-group-item-text,.list-group-item.active:focus .list-group-item-text{color:#e1edf7}.list-group-item-success{color:#3c763d;background-color:#dff0d8}a.list-group-item-success{color:#3c763d}a.list-group-item-success .list-group-item-heading{color:inherit}a.list-group-item-success:hover,a.list-group-item-success:focus{color:#3c763d;background-color:#d0e9c6}a.list-group-item-success.active,a.list-group-item-success.active:hover,a.list-group-item-success.active:focus{color:#fff;background-color:#3c763d;border-color:#3c763d}.list-group-item-info{color:#31708f;background-color:#d9edf7}a.list-group-item-info{color:#31708f}a.list-group-item-info .list-group-item-heading{color:inherit}a.list-group-item-info:hover,a.list-group-item-info:focus{color:#31708f;background-color:#c4e3f3}a.list-group-item-info.active,a.list-group-item-info.active:hover,a.list-group-item-info.active:focus{color:#fff;background-color:#31708f;border-color:#31708f}.list-group-item-warning{color:#8a6d3b;background-color:#fcf8e3}a.list-group-item-warning{color:#8a6d3b}a.list-group-item-warning .list-group-item-heading{color:inherit}a.list-group-item-warning:hover,a.list-group-item-warning:focus{color:#8a6d3b;background-color:#faf2cc}a.list-group-item-warning.active,a.list-group-item-warning.active:hover,a.list-group-item-warning.active:focus{color:#fff;background-color:#8a6d3b;border-color:#8a6d3b}.list-group-item-danger{color:#a94442;background-color:#f2dede}a.list-group-item-danger{color:#a94442}a.list-group-item-danger .list-group-item-heading{color:inherit}a.list-group-item-danger:hover,a.list-group-item-danger:focus{color:#a94442;background-color:#ebcccc}a.list-group-item-danger.active,a.list-group-item-danger.active:hover,a.list-group-item-danger.active:focus{color:#fff;background-color:#a94442;border-color:#a94442}.list-group-item-heading{margin-top:0;margin-bottom:5px}.list-group-item-text{margin-bottom:0;line-height:1.3}.panel{margin-bottom:20px;background-color:#fff;border:1px solid transparent;border-radius:4px;-webkit-box-shadow:0 1px 1px rgba(0,0,0,.05);box-shadow:0 1px 1px rgba(0,0,0,.05)}.panel-body{padding:15px}.panel-heading{padding:10px 15px;border-bottom:1px solid transparent;border-top-left-radius:3px;border-top-right-radius:3px}.panel-heading>.dropdown .dropdown-toggle{color:inherit}.panel-title{margin-top:0;margin-bottom:0;font-size:16px;color:inherit}.panel-title>a{color:inherit}.panel-footer{padding:10px 15px;background-color:#f5f5f5;border-top:1px solid #ddd;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.list-group{margin-bottom:0}.panel>.list-group .list-group-item{border-width:1px 0;border-radius:0}.panel>.list-group:first-child .list-group-item:first-child{border-top:0;border-top-left-radius:3px;border-top-right-radius:3px}.panel>.list-group:last-child .list-group-item:last-child{border-bottom:0;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel-heading+.list-group .list-group-item:first-child{border-top-width:0}.list-group+.panel-footer{border-top-width:0}.panel>.table,.panel>.table-responsive>.table,.panel>.panel-collapse>.table{margin-bottom:0}.panel>.table:first-child,.panel>.table-responsive:first-child>.table:first-child{border-top-left-radius:3px;border-top-right-radius:3px}.panel>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:first-child{border-top-left-radius:3px}.panel>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:last-child{border-top-right-radius:3px}.panel>.table:last-child,.panel>.table-responsive:last-child>.table:last-child{border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:first-child{border-bottom-left-radius:3px}.panel>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:last-child{border-bottom-right-radius:3px}.panel>.panel-body+.table,.panel>.panel-body+.table-responsive{border-top:1px solid #ddd}.panel>.table>tbody:first-child>tr:first-child th,.panel>.table>tbody:first-child>tr:first-child td{border-top:0}.panel>.table-bordered,.panel>.table-responsive>.table-bordered{border:0}.panel>.table-bordered>thead>tr>th:first-child,.panel>.table-responsive>.table-bordered>thead>tr>th:first-child,.panel>.table-bordered>tbody>tr>th:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:first-child,.panel>.table-bordered>tfoot>tr>th:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:first-child,.panel>.table-bordered>thead>tr>td:first-child,.panel>.table-responsive>.table-bordered>thead>tr>td:first-child,.panel>.table-bordered>tbody>tr>td:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:first-child,.panel>.table-bordered>tfoot>tr>td:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:first-child{border-left:0}.panel>.table-bordered>thead>tr>th:last-child,.panel>.table-responsive>.table-bordered>thead>tr>th:last-child,.panel>.table-bordered>tbody>tr>th:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:last-child,.panel>.table-bordered>tfoot>tr>th:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:last-child,.panel>.table-bordered>thead>tr>td:last-child,.panel>.table-responsive>.table-bordered>thead>tr>td:last-child,.panel>.table-bordered>tbody>tr>td:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:last-child,.panel>.table-bordered>tfoot>tr>td:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:last-child{border-right:0}.panel>.table-bordered>thead>tr:first-child>td,.panel>.table-responsive>.table-bordered>thead>tr:first-child>td,.panel>.table-bordered>tbody>tr:first-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>td,.panel>.table-bordered>thead>tr:first-child>th,.panel>.table-responsive>.table-bordered>thead>tr:first-child>th,.panel>.table-bordered>tbody>tr:first-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>th{border-bottom:0}.panel>.table-bordered>tbody>tr:last-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>td,.panel>.table-bordered>tfoot>tr:last-child>td,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>td,.panel>.table-bordered>tbody>tr:last-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>th,.panel>.table-bordered>tfoot>tr:last-child>th,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>th{border-bottom:0}.panel>.table-responsive{margin-bottom:0;border:0}.panel-group{margin-bottom:20px}.panel-group .panel{margin-bottom:0;border-radius:4px}.panel-group .panel+.panel{margin-top:5px}.panel-group .panel-heading{border-bottom:0}.panel-group .panel-heading+.panel-collapse>.panel-body{border-top:1px solid #ddd}.panel-group .panel-footer{border-top:0}.panel-group .panel-footer+.panel-collapse .panel-body{border-bottom:1px solid #ddd}.panel-default{border-color:#ddd}.panel-default>.panel-heading{color:#333;background-color:#f5f5f5;border-color:#ddd}.panel-default>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ddd}.panel-default>.panel-heading .badge{color:#f5f5f5;background-color:#333}.panel-default>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ddd}.panel-primary{border-color:#428bca}.panel-primary>.panel-heading{color:#fff;background-color:#428bca;border-color:#428bca}.panel-primary>.panel-heading+.panel-collapse>.panel-body{border-top-color:#428bca}.panel-primary>.panel-heading .badge{color:#428bca;background-color:#fff}.panel-primary>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#428bca}.panel-success{border-color:#d6e9c6}.panel-success>.panel-heading{color:#3c763d;background-color:#dff0d8;border-color:#d6e9c6}.panel-success>.panel-heading+.panel-collapse>.panel-body{border-top-color:#d6e9c6}.panel-success>.panel-heading .badge{color:#dff0d8;background-color:#3c763d}.panel-success>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#d6e9c6}.panel-info{border-color:#bce8f1}.panel-info>.panel-heading{color:#31708f;background-color:#d9edf7;border-color:#bce8f1}.panel-info>.panel-heading+.panel-collapse>.panel-body{border-top-color:#bce8f1}.panel-info>.panel-heading .badge{color:#d9edf7;background-color:#31708f}.panel-info>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#bce8f1}.panel-warning{border-color:#faebcc}.panel-warning>.panel-heading{color:#8a6d3b;background-color:#fcf8e3;border-color:#faebcc}.panel-warning>.panel-heading+.panel-collapse>.panel-body{border-top-color:#faebcc}.panel-warning>.panel-heading .badge{color:#fcf8e3;background-color:#8a6d3b}.panel-warning>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#faebcc}.panel-danger{border-color:#ebccd1}.panel-danger>.panel-heading{color:#a94442;background-color:#f2dede;border-color:#ebccd1}.panel-danger>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ebccd1}.panel-danger>.panel-heading .badge{color:#f2dede;background-color:#a94442}.panel-danger>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ebccd1}.embed-responsive{position:relative;display:block;height:0;padding:0;overflow:hidden}.embed-responsive .embed-responsive-item,.embed-responsive iframe,.embed-responsive embed,.embed-responsive object{position:absolute;top:0;bottom:0;left:0;width:100%;height:100%;border:0}.embed-responsive.embed-responsive-16by9{padding-bottom:56.25%}.embed-responsive.embed-responsive-4by3{padding-bottom:75%}.well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#f5f5f5;border:1px solid #e3e3e3;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.05);box-shadow:inset 0 1px 1px rgba(0,0,0,.05)}.well blockquote{border-color:#ddd;border-color:rgba(0,0,0,.15)}.well-lg{padding:24px;border-radius:6px}.well-sm{padding:9px;border-radius:3px}.close{float:right;font-size:21px;font-weight:700;line-height:1;color:#000;text-shadow:0 1px 0 #fff;filter:alpha(opacity=20);opacity:.2}.close:hover,.close:focus{color:#000;text-decoration:none;cursor:pointer;filter:alpha(opacity=50);opacity:.5}button.close{-webkit-appearance:none;padding:0;cursor:pointer;background:0 0;border:0}.modal-open{overflow:hidden}.modal{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1050;display:none;overflow:hidden;-webkit-overflow-scrolling:touch;outline:0}.modal.fade .modal-dialog{-webkit-transition:-webkit-transform .3s ease-out;-o-transition:-o-transform .3s ease-out;transition:transform .3s ease-out;-webkit-transform:translate3d(0,-25%,0);-o-transform:translate3d(0,-25%,0);transform:translate3d(0,-25%,0)}.modal.in .modal-dialog{-webkit-transform:translate3d(0,0,0);-o-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}.modal-open .modal{overflow-x:hidden;overflow-y:auto}.modal-dialog{position:relative;width:auto;margin:10px}.modal-content{position:relative;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #999;border:1px solid rgba(0,0,0,.2);border-radius:6px;outline:0;-webkit-box-shadow:0 3px 9px rgba(0,0,0,.5);box-shadow:0 3px 9px rgba(0,0,0,.5)}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;background-color:#000}.modal-backdrop.fade{filter:alpha(opacity=0);opacity:0}.modal-backdrop.in{filter:alpha(opacity=50);opacity:.5}.modal-header{min-height:16.43px;padding:15px;border-bottom:1px solid #e5e5e5}.modal-header .close{margin-top:-2px}.modal-title{margin:0;line-height:1.42857143}.modal-body{position:relative;padding:15px}.modal-footer{padding:15px;text-align:right;border-top:1px solid #e5e5e5}.modal-footer .btn+.btn{margin-bottom:0;margin-left:5px}.modal-footer .btn-group .btn+.btn{margin-left:-1px}.modal-footer .btn-block+.btn-block{margin-left:0}.modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}@media (min-width:768px){.modal-dialog{width:600px;margin:30px auto}.modal-content{-webkit-box-shadow:0 5px 15px rgba(0,0,0,.5);box-shadow:0 5px 15px rgba(0,0,0,.5)}.modal-sm{width:300px}}@media (min-width:992px){.modal-lg{width:900px}}.tooltip{position:absolute;z-index:1070;display:block;font-size:12px;line-height:1.4;visibility:visible;filter:alpha(opacity=0);opacity:0}.tooltip.in{filter:alpha(opacity=90);opacity:.9}.tooltip.top{padding:5px 0;margin-top:-3px}.tooltip.right{padding:0 5px;margin-left:3px}.tooltip.bottom{padding:5px 0;margin-top:3px}.tooltip.left{padding:0 5px;margin-left:-3px}.tooltip-inner{max-width:200px;padding:3px 8px;color:#fff;text-align:center;text-decoration:none;background-color:#000;border-radius:4px}.tooltip-arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:solid}.tooltip.top .tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.top-left .tooltip-arrow{bottom:0;left:5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.top-right .tooltip-arrow{right:5px;bottom:0;border-width:5px 5px 0;border-top-color:#000}.tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-width:5px 5px 5px 0;border-right-color:#000}.tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-width:5px 0 5px 5px;border-left-color:#000}.tooltip.bottom .tooltip-arrow{top:0;left:50%;margin-left:-5px;border-width:0 5px 5px;border-bottom-color:#000}.tooltip.bottom-left .tooltip-arrow{top:0;left:5px;border-width:0 5px 5px;border-bottom-color:#000}.tooltip.bottom-right .tooltip-arrow{top:0;right:5px;border-width:0 5px 5px;border-bottom-color:#000}.popover{position:absolute;top:0;left:0;z-index:1060;display:none;max-width:276px;padding:1px;text-align:left;white-space:normal;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0,0,0,.2);border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,.2);box-shadow:0 5px 10px rgba(0,0,0,.2)}.popover.top{margin-top:-10px}.popover.right{margin-left:10px}.popover.bottom{margin-top:10px}.popover.left{margin-left:-10px}.popover-title{padding:8px 14px;margin:0;font-size:14px;font-weight:400;line-height:18px;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-radius:5px 5px 0 0}.popover-content{padding:9px 14px}.popover>.arrow,.popover>.arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.popover>.arrow{border-width:11px}.popover>.arrow:after{content:"";border-width:10px}.popover.top>.arrow{bottom:-11px;left:50%;margin-left:-11px;border-top-color:#999;border-top-color:rgba(0,0,0,.25);border-bottom-width:0}.popover.top>.arrow:after{bottom:1px;margin-left:-10px;content:" ";border-top-color:#fff;border-bottom-width:0}.popover.right>.arrow{top:50%;left:-11px;margin-top:-11px;border-right-color:#999;border-right-color:rgba(0,0,0,.25);border-left-width:0}.popover.right>.arrow:after{bottom:-10px;left:1px;content:" ";border-right-color:#fff;border-left-width:0}.popover.bottom>.arrow{top:-11px;left:50%;margin-left:-11px;border-top-width:0;border-bottom-color:#999;border-bottom-color:rgba(0,0,0,.25)}.popover.bottom>.arrow:after{top:1px;margin-left:-10px;content:" ";border-top-width:0;border-bottom-color:#fff}.popover.left>.arrow{top:50%;right:-11px;margin-top:-11px;border-right-width:0;border-left-color:#999;border-left-color:rgba(0,0,0,.25)}.popover.left>.arrow:after{right:1px;bottom:-10px;content:" ";border-right-width:0;border-left-color:#fff}.carousel{position:relative}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel-inner>.item{position:relative;display:none;-webkit-transition:.6s ease-in-out left;-o-transition:.6s ease-in-out left;transition:.6s ease-in-out left}.carousel-inner>.item>img,.carousel-inner>.item>a>img{line-height:1}.carousel-inner>.active,.carousel-inner>.next,.carousel-inner>.prev{display:block}.carousel-inner>.active{left:0}.carousel-inner>.next,.carousel-inner>.prev{position:absolute;top:0;width:100%}.carousel-inner>.next{left:100%}.carousel-inner>.prev{left:-100%}.carousel-inner>.next.left,.carousel-inner>.prev.right{left:0}.carousel-inner>.active.left{left:-100%}.carousel-inner>.active.right{left:100%}.carousel-control{position:absolute;top:0;bottom:0;left:0;width:15%;font-size:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,.6);filter:alpha(opacity=50);opacity:.5}.carousel-control.left{background-image:-webkit-linear-gradient(left,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);background-image:-o-linear-gradient(left,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);background-image:-webkit-gradient(linear,left top,right top,from(rgba(0,0,0,.5)),to(rgba(0,0,0,.0001)));background-image:linear-gradient(to right,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1);background-repeat:repeat-x}.carousel-control.right{right:0;left:auto;background-image:-webkit-linear-gradient(left,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);background-image:-o-linear-gradient(left,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);background-image:-webkit-gradient(linear,left top,right top,from(rgba(0,0,0,.0001)),to(rgba(0,0,0,.5)));background-image:linear-gradient(to right,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1);background-repeat:repeat-x}.carousel-control:hover,.carousel-control:focus{color:#fff;text-decoration:none;filter:alpha(opacity=90);outline:0;opacity:.9}.carousel-control .icon-prev,.carousel-control .icon-next,.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right{position:absolute;top:50%;z-index:5;display:inline-block}.carousel-control .icon-prev,.carousel-control .glyphicon-chevron-left{left:50%;margin-left:-10px}.carousel-control .icon-next,.carousel-control .glyphicon-chevron-right{right:50%;margin-right:-10px}.carousel-control .icon-prev,.carousel-control .icon-next{width:20px;height:20px;margin-top:-10px;font-family:serif}.carousel-control .icon-prev:before{content:'\2039'}.carousel-control .icon-next:before{content:'\203a'}.carousel-indicators{position:absolute;bottom:10px;left:50%;z-index:15;width:60%;padding-left:0;margin-left:-30%;text-align:center;list-style:none}.carousel-indicators li{display:inline-block;width:10px;height:10px;margin:1px;text-indent:-999px;cursor:pointer;background-color:#000 \9;background-color:rgba(0,0,0,0);border:1px solid #fff;border-radius:10px}.carousel-indicators .active{width:12px;height:12px;margin:0;background-color:#fff}.carousel-caption{position:absolute;right:15%;bottom:20px;left:15%;z-index:10;padding-top:20px;padding-bottom:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,.6)}.carousel-caption .btn{text-shadow:none}@media screen and (min-width:768px){.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right,.carousel-control .icon-prev,.carousel-control .icon-next{width:30px;height:30px;margin-top:-15px;font-size:30px}.carousel-control .glyphicon-chevron-left,.carousel-control .icon-prev{margin-left:-15px}.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next{margin-right:-15px}.carousel-caption{right:20%;left:20%;padding-bottom:30px}.carousel-indicators{bottom:20px}}.clearfix:before,.clearfix:after,.dl-horizontal dd:before,.dl-horizontal dd:after,.container:before,.container:after,.container-fluid:before,.container-fluid:after,.row:before,.row:after,.form-horizontal .form-group:before,.form-horizontal .form-group:after,.btn-toolbar:before,.btn-toolbar:after,.btn-group-vertical>.btn-group:before,.btn-group-vertical>.btn-group:after,.nav:before,.nav:after,.navbar:before,.navbar:after,.navbar-header:before,.navbar-header:after,.navbar-collapse:before,.navbar-collapse:after,.pager:before,.pager:after,.panel-body:before,.panel-body:after,.modal-footer:before,.modal-footer:after{display:table;content:" "}.clearfix:after,.dl-horizontal dd:after,.container:after,.container-fluid:after,.row:after,.form-horizontal .form-group:after,.btn-toolbar:after,.btn-group-vertical>.btn-group:after,.nav:after,.navbar:after,.navbar-header:after,.navbar-collapse:after,.pager:after,.panel-body:after,.modal-footer:after{clear:both}.center-block{display:block;margin-right:auto;margin-left:auto}.pull-right{float:right!important}.pull-left{float:left!important}.hide{display:none!important}.show{display:block!important}.invisible{visibility:hidden}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.hidden{display:none!important;visibility:hidden!important}.affix{position:fixed;-webkit-transform:translate3d(0,0,0);-o-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}@-ms-viewport{width:device-width}.visible-xs,.visible-sm,.visible-md,.visible-lg{display:none!important}.visible-xs-block,.visible-xs-inline,.visible-xs-inline-block,.visible-sm-block,.visible-sm-inline,.visible-sm-inline-block,.visible-md-block,.visible-md-inline,.visible-md-inline-block,.visible-lg-block,.visible-lg-inline,.visible-lg-inline-block{display:none!important}@media (max-width:767px){.visible-xs{display:block!important}table.visible-xs{display:table}tr.visible-xs{display:table-row!important}th.visible-xs,td.visible-xs{display:table-cell!important}}@media (max-width:767px){.visible-xs-block{display:block!important}}@media (max-width:767px){.visible-xs-inline{display:inline!important}}@media (max-width:767px){.visible-xs-inline-block{display:inline-block!important}}@media (min-width:768px) and (max-width:991px){.visible-sm{display:block!important}table.visible-sm{display:table}tr.visible-sm{display:table-row!important}th.visible-sm,td.visible-sm{display:table-cell!important}}@media (min-width:768px) and (max-width:991px){.visible-sm-block{display:block!important}}@media (min-width:768px) and (max-width:991px){.visible-sm-inline{display:inline!important}}@media (min-width:768px) and (max-width:991px){.visible-sm-inline-block{display:inline-block!important}}@media (min-width:992px) and (max-width:1199px){.visible-md{display:block!important}table.visible-md{display:table}tr.visible-md{display:table-row!important}th.visible-md,td.visible-md{display:table-cell!important}}@media (min-width:992px) and (max-width:1199px){.visible-md-block{display:block!important}}@media (min-width:992px) and (max-width:1199px){.visible-md-inline{display:inline!important}}@media (min-width:992px) and (max-width:1199px){.visible-md-inline-block{display:inline-block!important}}@media (min-width:1200px){.visible-lg{display:block!important}table.visible-lg{display:table}tr.visible-lg{display:table-row!important}th.visible-lg,td.visible-lg{display:table-cell!important}}@media (min-width:1200px){.visible-lg-block{display:block!important}}@media (min-width:1200px){.visible-lg-inline{display:inline!important}}@media (min-width:1200px){.visible-lg-inline-block{display:inline-block!important}}@media (max-width:767px){.hidden-xs{display:none!important}}@media (min-width:768px) and (max-width:991px){.hidden-sm{display:none!important}}@media (min-width:992px) and (max-width:1199px){.hidden-md{display:none!important}}@media (min-width:1200px){.hidden-lg{display:none!important}}.visible-print{display:none!important}@media print{.visible-print{display:block!important}table.visible-print{display:table}tr.visible-print{display:table-row!important}th.visible-print,td.visible-print{display:table-cell!important}}.visible-print-block{display:none!important}@media print{.visible-print-block{display:block!important}}.visible-print-inline{display:none!important}@media print{.visible-print-inline{display:inline!important}}.visible-print-inline-block{display:none!important}@media print{.visible-print-inline-block{display:inline-block!important}}@media print{.hidden-print{display:none!important}} diff --git a/ffmpeg/doc/build_system.txt b/ffmpeg/doc/build_system.txt new file mode 100644 index 0000000..2efde5c --- /dev/null +++ b/ffmpeg/doc/build_system.txt @@ -0,0 +1,56 @@ +FFmpeg currently uses a custom build system, this text attempts to document +some of its obscure features and options. + +Makefile variables: + +V + Disable the default terse mode, the full command issued by make and its + output will be shown on the screen. + +DESTDIR + Destination directory for the install targets, useful to prepare packages + or install FFmpeg in cross-environments. + +Makefile targets: + +all + Default target, builds all the libraries and the executables. + +fate + Run the fate test suite, note you must have installed it + +fate-list + Will list all fate/regression test targets + +install + Install headers, libraries and programs. + +examples + Build all examples located in doc/examples. + +libavformat/output-example + Build the libavformat basic example. + +libavcodec/api-example + Build the libavcodec basic example. + +libswscale/swscale-test + Build the swscale self-test (useful also as example). + +config + Reconfigure the project with current configuration. + + +Useful standard make commands: +make -t + Touch all files that otherwise would be build, this is useful to reduce + unneeded rebuilding when changing headers, but note you must force rebuilds + of files that actually need it by hand then. + +make -j + rebuild with multiple jobs at the same time. Faster on multi processor systems + +make -k + continue build in case of errors, this is useful for the regression tests + sometimes but note it will still not run all reg tests. + diff --git a/ffmpeg/doc/codecs.texi b/ffmpeg/doc/codecs.texi new file mode 100644 index 0000000..5a1abb8 --- /dev/null +++ b/ffmpeg/doc/codecs.texi @@ -0,0 +1,1126 @@ +@anchor{codec-options} +@chapter Codec Options +@c man begin CODEC OPTIONS + +libavcodec provides some generic global options, which can be set on +all the encoders and decoders. In addition each codec may support +so-called private options, which are specific for a given codec. + +Sometimes, a global option may only affect a specific kind of codec, +and may be unsensical or ignored by another, so you need to be aware +of the meaning of the specified options. Also some options are +meant only for decoding or encoding. + +Options may be set by specifying -@var{option} @var{value} in the +FFmpeg tools, or by setting the value explicitly in the +@code{AVCodecContext} options or using the @file{libavutil/opt.h} API +for programmatic use. + +The list of supported options follow: + +@table @option +@item b @var{integer} (@emph{encoding,audio,video}) +Set bitrate in bits/s. Default value is 200K. + +@item ab @var{integer} (@emph{encoding,audio}) +Set audio bitrate (in bits/s). Default value is 128K. + +@item bt @var{integer} (@emph{encoding,video}) +Set video bitrate tolerance (in bits/s). In 1-pass mode, bitrate +tolerance specifies how far ratecontrol is willing to deviate from the +target average bitrate value. This is not related to min/max +bitrate. Lowering tolerance too much has an adverse effect on quality. + +@item flags @var{flags} (@emph{decoding/encoding,audio,video,subtitles}) +Set generic flags. + +Possible values: +@table @samp +@item mv4 +Use four motion vector by macroblock (mpeg4). +@item qpel +Use 1/4 pel motion compensation. +@item loop +Use loop filter. +@item qscale +Use fixed qscale. +@item gmc +Use gmc. +@item mv0 +Always try a mb with mv=<0,0>. +@item input_preserved + +@item pass1 +Use internal 2pass ratecontrol in first pass mode. +@item pass2 +Use internal 2pass ratecontrol in second pass mode. +@item gray +Only decode/encode grayscale. +@item emu_edge +Do not draw edges. +@item psnr +Set error[?] variables during encoding. +@item truncated + +@item naq +Normalize adaptive quantization. +@item ildct +Use interlaced DCT. +@item low_delay +Force low delay. +@item global_header +Place global headers in extradata instead of every keyframe. +@item bitexact +Use only bitexact stuff (except (I)DCT). +@item aic +Apply H263 advanced intra coding / mpeg4 ac prediction. +@item cbp +Deprecated, use mpegvideo private options instead. +@item qprd +Deprecated, use mpegvideo private options instead. +@item ilme +Apply interlaced motion estimation. +@item cgop +Use closed gop. +@end table + +@item me_method @var{integer} (@emph{encoding,video}) +Set motion estimation method. + +Possible values: +@table @samp +@item zero +zero motion estimation (fastest) +@item full +full motion estimation (slowest) +@item epzs +EPZS motion estimation (default) +@item esa +esa motion estimation (alias for full) +@item tesa +tesa motion estimation +@item dia +dia motion estimation (alias for epzs) +@item log +log motion estimation +@item phods +phods motion estimation +@item x1 +X1 motion estimation +@item hex +hex motion estimation +@item umh +umh motion estimation +@item iter +iter motion estimation +@end table + +@item extradata_size @var{integer} +Set extradata size. + +@item time_base @var{rational number} +Set codec time base. + +It is the fundamental unit of time (in seconds) in terms of which +frame timestamps are represented. For fixed-fps content, timebase +should be @code{1 / frame_rate} and timestamp increments should be +identically 1. + +@item g @var{integer} (@emph{encoding,video}) +Set the group of picture size. Default value is 12. + +@item ar @var{integer} (@emph{decoding/encoding,audio}) +Set audio sampling rate (in Hz). + +@item ac @var{integer} (@emph{decoding/encoding,audio}) +Set number of audio channels. + +@item cutoff @var{integer} (@emph{encoding,audio}) +Set cutoff bandwidth. + +@item frame_size @var{integer} (@emph{encoding,audio}) +Set audio frame size. + +Each submitted frame except the last must contain exactly frame_size +samples per channel. May be 0 when the codec has +CODEC_CAP_VARIABLE_FRAME_SIZE set, in that case the frame size is not +restricted. It is set by some decoders to indicate constant frame +size. + +@item frame_number @var{integer} +Set the frame number. + +@item delay @var{integer} + +@item qcomp @var{float} (@emph{encoding,video}) +Set video quantizer scale compression (VBR). It is used as a constant +in the ratecontrol equation. Recommended range for default rc_eq: +0.0-1.0. + +@item qblur @var{float} (@emph{encoding,video}) +Set video quantizer scale blur (VBR). + +@item qmin @var{integer} (@emph{encoding,video}) +Set min video quantizer scale (VBR). Must be included between -1 and +69, default value is 2. + +@item qmax @var{integer} (@emph{encoding,video}) +Set max video quantizer scale (VBR). Must be included between -1 and +1024, default value is 31. + +@item qdiff @var{integer} (@emph{encoding,video}) +Set max difference between the quantizer scale (VBR). + +@item bf @var{integer} (@emph{encoding,video}) +Set max number of B frames between non-B-frames. + +Must be an integer between -1 and 16. 0 means that B-frames are +disabled. If a value of -1 is used, it will choose an automatic value +depending on the encoder. + +Default value is 0. + +@item b_qfactor @var{float} (@emph{encoding,video}) +Set qp factor between P and B frames. + +@item rc_strategy @var{integer} (@emph{encoding,video}) +Set ratecontrol method. + +@item b_strategy @var{integer} (@emph{encoding,video}) +Set strategy to choose between I/P/B-frames. + +@item ps @var{integer} (@emph{encoding,video}) +Set RTP payload size in bytes. + +@item mv_bits @var{integer} +@item header_bits @var{integer} +@item i_tex_bits @var{integer} +@item p_tex_bits @var{integer} +@item i_count @var{integer} +@item p_count @var{integer} +@item skip_count @var{integer} +@item misc_bits @var{integer} +@item frame_bits @var{integer} +@item codec_tag @var{integer} +@item bug @var{flags} (@emph{decoding,video}) +Workaround not auto detected encoder bugs. + +Possible values: +@table @samp +@item autodetect + +@item old_msmpeg4 +some old lavc generated msmpeg4v3 files (no autodetection) +@item xvid_ilace +Xvid interlacing bug (autodetected if fourcc==XVIX) +@item ump4 +(autodetected if fourcc==UMP4) +@item no_padding +padding bug (autodetected) +@item amv + +@item ac_vlc +illegal vlc bug (autodetected per fourcc) +@item qpel_chroma + +@item std_qpel +old standard qpel (autodetected per fourcc/version) +@item qpel_chroma2 + +@item direct_blocksize +direct-qpel-blocksize bug (autodetected per fourcc/version) +@item edge +edge padding bug (autodetected per fourcc/version) +@item hpel_chroma + +@item dc_clip + +@item ms +Workaround various bugs in microsoft broken decoders. +@item trunc +trancated frames +@end table + +@item lelim @var{integer} (@emph{encoding,video}) +Set single coefficient elimination threshold for luminance (negative +values also consider DC coefficient). + +@item celim @var{integer} (@emph{encoding,video}) +Set single coefficient elimination threshold for chrominance (negative +values also consider dc coefficient) + +@item strict @var{integer} (@emph{decoding/encoding,audio,video}) +Specify how strictly to follow the standards. + +Possible values: +@table @samp +@item very +strictly conform to a older more strict version of the spec or reference software +@item strict +strictly conform to all the things in the spec no matter what consequences +@item normal + +@item unofficial +allow unofficial extensions +@item experimental +allow non standardized experimental things, experimental +(unfinished/work in progress/not well tested) decoders and encoders. +Note: experimental decoders can pose a security risk, do not use this for +decoding untrusted input. +@end table + +@item b_qoffset @var{float} (@emph{encoding,video}) +Set QP offset between P and B frames. + +@item err_detect @var{flags} (@emph{decoding,audio,video}) +Set error detection flags. + +Possible values: +@table @samp +@item crccheck +verify embedded CRCs +@item bitstream +detect bitstream specification deviations +@item buffer +detect improper bitstream length +@item explode +abort decoding on minor error detection +@item ignore_err +ignore decoding errors, and continue decoding. +This is useful if you want to analyze the content of a video and thus want +everything to be decoded no matter what. This option will not result in a video +that is pleasing to watch in case of errors. +@item careful +consider things that violate the spec and have not been seen in the wild as errors +@item compliant +consider all spec non compliancies as errors +@item aggressive +consider things that a sane encoder should not do as an error +@end table + +@item has_b_frames @var{integer} + +@item block_align @var{integer} + +@item mpeg_quant @var{integer} (@emph{encoding,video}) +Use MPEG quantizers instead of H.263. + +@item qsquish @var{float} (@emph{encoding,video}) +How to keep quantizer between qmin and qmax (0 = clip, 1 = use +differentiable function). + +@item rc_qmod_amp @var{float} (@emph{encoding,video}) +Set experimental quantizer modulation. + +@item rc_qmod_freq @var{integer} (@emph{encoding,video}) +Set experimental quantizer modulation. + +@item rc_override_count @var{integer} + +@item rc_eq @var{string} (@emph{encoding,video}) +Set rate control equation. When computing the expression, besides the +standard functions defined in the section 'Expression Evaluation', the +following functions are available: bits2qp(bits), qp2bits(qp). Also +the following constants are available: iTex pTex tex mv fCode iCount +mcVar var isI isP isB avgQP qComp avgIITex avgPITex avgPPTex avgBPTex +avgTex. + +@item maxrate @var{integer} (@emph{encoding,audio,video}) +Set max bitrate tolerance (in bits/s). Requires bufsize to be set. + +@item minrate @var{integer} (@emph{encoding,audio,video}) +Set min bitrate tolerance (in bits/s). Most useful in setting up a CBR +encode. It is of little use elsewise. + +@item bufsize @var{integer} (@emph{encoding,audio,video}) +Set ratecontrol buffer size (in bits). + +@item rc_buf_aggressivity @var{float} (@emph{encoding,video}) +Currently useless. + +@item i_qfactor @var{float} (@emph{encoding,video}) +Set QP factor between P and I frames. + +@item i_qoffset @var{float} (@emph{encoding,video}) +Set QP offset between P and I frames. + +@item rc_init_cplx @var{float} (@emph{encoding,video}) +Set initial complexity for 1-pass encoding. + +@item dct @var{integer} (@emph{encoding,video}) +Set DCT algorithm. + +Possible values: +@table @samp +@item auto +autoselect a good one (default) +@item fastint +fast integer +@item int +accurate integer +@item mmx + +@item altivec + +@item faan +floating point AAN DCT +@end table + +@item lumi_mask @var{float} (@emph{encoding,video}) +Compress bright areas stronger than medium ones. + +@item tcplx_mask @var{float} (@emph{encoding,video}) +Set temporal complexity masking. + +@item scplx_mask @var{float} (@emph{encoding,video}) +Set spatial complexity masking. + +@item p_mask @var{float} (@emph{encoding,video}) +Set inter masking. + +@item dark_mask @var{float} (@emph{encoding,video}) +Compress dark areas stronger than medium ones. + +@item idct @var{integer} (@emph{decoding/encoding,video}) +Select IDCT implementation. + +Possible values: +@table @samp +@item auto + +@item int + +@item simple + +@item simplemmx + +@item simpleauto +Automatically pick a IDCT compatible with the simple one + +@item arm + +@item altivec + +@item sh4 + +@item simplearm + +@item simplearmv5te + +@item simplearmv6 + +@item simpleneon + +@item simplealpha + +@item ipp + +@item xvidmmx + +@item faani +floating point AAN IDCT +@end table + +@item slice_count @var{integer} + +@item ec @var{flags} (@emph{decoding,video}) +Set error concealment strategy. + +Possible values: +@table @samp +@item guess_mvs +iterative motion vector (MV) search (slow) +@item deblock +use strong deblock filter for damaged MBs +@item favor_inter +favor predicting from the previous frame instead of the current +@end table + +@item bits_per_coded_sample @var{integer} + +@item pred @var{integer} (@emph{encoding,video}) +Set prediction method. + +Possible values: +@table @samp +@item left + +@item plane + +@item median + +@end table + +@item aspect @var{rational number} (@emph{encoding,video}) +Set sample aspect ratio. + +@item debug @var{flags} (@emph{decoding/encoding,audio,video,subtitles}) +Print specific debug info. + +Possible values: +@table @samp +@item pict +picture info +@item rc +rate control +@item bitstream + +@item mb_type +macroblock (MB) type +@item qp +per-block quantization parameter (QP) +@item mv +motion vector +@item dct_coeff + +@item skip + +@item startcode + +@item pts + +@item er +error recognition +@item mmco +memory management control operations (H.264) +@item bugs + +@item vis_qp +visualize quantization parameter (QP), lower QP are tinted greener +@item vis_mb_type +visualize block types +@item buffers +picture buffer allocations +@item thread_ops +threading operations +@end table + +@item vismv @var{integer} (@emph{decoding,video}) +Visualize motion vectors (MVs). + +This option is deprecated, see the codecview filter instead. + +Possible values: +@table @samp +@item pf +forward predicted MVs of P-frames +@item bf +forward predicted MVs of B-frames +@item bb +backward predicted MVs of B-frames +@end table + +@item cmp @var{integer} (@emph{encoding,video}) +Set full pel me compare function. + +Possible values: +@table @samp +@item sad +sum of absolute differences, fast (default) +@item sse +sum of squared errors +@item satd +sum of absolute Hadamard transformed differences +@item dct +sum of absolute DCT transformed differences +@item psnr +sum of squared quantization errors (avoid, low quality) +@item bit +number of bits needed for the block +@item rd +rate distortion optimal, slow +@item zero +0 +@item vsad +sum of absolute vertical differences +@item vsse +sum of squared vertical differences +@item nsse +noise preserving sum of squared differences +@item w53 +5/3 wavelet, only used in snow +@item w97 +9/7 wavelet, only used in snow +@item dctmax + +@item chroma + +@end table + +@item subcmp @var{integer} (@emph{encoding,video}) +Set sub pel me compare function. + +Possible values: +@table @samp +@item sad +sum of absolute differences, fast (default) +@item sse +sum of squared errors +@item satd +sum of absolute Hadamard transformed differences +@item dct +sum of absolute DCT transformed differences +@item psnr +sum of squared quantization errors (avoid, low quality) +@item bit +number of bits needed for the block +@item rd +rate distortion optimal, slow +@item zero +0 +@item vsad +sum of absolute vertical differences +@item vsse +sum of squared vertical differences +@item nsse +noise preserving sum of squared differences +@item w53 +5/3 wavelet, only used in snow +@item w97 +9/7 wavelet, only used in snow +@item dctmax + +@item chroma + +@end table + +@item mbcmp @var{integer} (@emph{encoding,video}) +Set macroblock compare function. + +Possible values: +@table @samp +@item sad +sum of absolute differences, fast (default) +@item sse +sum of squared errors +@item satd +sum of absolute Hadamard transformed differences +@item dct +sum of absolute DCT transformed differences +@item psnr +sum of squared quantization errors (avoid, low quality) +@item bit +number of bits needed for the block +@item rd +rate distortion optimal, slow +@item zero +0 +@item vsad +sum of absolute vertical differences +@item vsse +sum of squared vertical differences +@item nsse +noise preserving sum of squared differences +@item w53 +5/3 wavelet, only used in snow +@item w97 +9/7 wavelet, only used in snow +@item dctmax + +@item chroma + +@end table + +@item ildctcmp @var{integer} (@emph{encoding,video}) +Set interlaced dct compare function. + +Possible values: +@table @samp +@item sad +sum of absolute differences, fast (default) +@item sse +sum of squared errors +@item satd +sum of absolute Hadamard transformed differences +@item dct +sum of absolute DCT transformed differences +@item psnr +sum of squared quantization errors (avoid, low quality) +@item bit +number of bits needed for the block +@item rd +rate distortion optimal, slow +@item zero +0 +@item vsad +sum of absolute vertical differences +@item vsse +sum of squared vertical differences +@item nsse +noise preserving sum of squared differences +@item w53 +5/3 wavelet, only used in snow +@item w97 +9/7 wavelet, only used in snow +@item dctmax + +@item chroma + +@end table + +@item dia_size @var{integer} (@emph{encoding,video}) +Set diamond type & size for motion estimation. + +@item last_pred @var{integer} (@emph{encoding,video}) +Set amount of motion predictors from the previous frame. + +@item preme @var{integer} (@emph{encoding,video}) +Set pre motion estimation. + +@item precmp @var{integer} (@emph{encoding,video}) +Set pre motion estimation compare function. + +Possible values: +@table @samp +@item sad +sum of absolute differences, fast (default) +@item sse +sum of squared errors +@item satd +sum of absolute Hadamard transformed differences +@item dct +sum of absolute DCT transformed differences +@item psnr +sum of squared quantization errors (avoid, low quality) +@item bit +number of bits needed for the block +@item rd +rate distortion optimal, slow +@item zero +0 +@item vsad +sum of absolute vertical differences +@item vsse +sum of squared vertical differences +@item nsse +noise preserving sum of squared differences +@item w53 +5/3 wavelet, only used in snow +@item w97 +9/7 wavelet, only used in snow +@item dctmax + +@item chroma + +@end table + +@item pre_dia_size @var{integer} (@emph{encoding,video}) +Set diamond type & size for motion estimation pre-pass. + +@item subq @var{integer} (@emph{encoding,video}) +Set sub pel motion estimation quality. + +@item dtg_active_format @var{integer} + +@item me_range @var{integer} (@emph{encoding,video}) +Set limit motion vectors range (1023 for DivX player). + +@item ibias @var{integer} (@emph{encoding,video}) +Set intra quant bias. + +@item pbias @var{integer} (@emph{encoding,video}) +Set inter quant bias. + +@item color_table_id @var{integer} + +@item global_quality @var{integer} (@emph{encoding,audio,video}) + +@item coder @var{integer} (@emph{encoding,video}) + +Possible values: +@table @samp +@item vlc +variable length coder / huffman coder +@item ac +arithmetic coder +@item raw +raw (no encoding) +@item rle +run-length coder +@item deflate +deflate-based coder +@end table + +@item context @var{integer} (@emph{encoding,video}) +Set context model. + +@item slice_flags @var{integer} + +@item xvmc_acceleration @var{integer} + +@item mbd @var{integer} (@emph{encoding,video}) +Set macroblock decision algorithm (high quality mode). + +Possible values: +@table @samp +@item simple +use mbcmp (default) +@item bits +use fewest bits +@item rd +use best rate distortion +@end table + +@item stream_codec_tag @var{integer} + +@item sc_threshold @var{integer} (@emph{encoding,video}) +Set scene change threshold. + +@item lmin @var{integer} (@emph{encoding,video}) +Set min lagrange factor (VBR). + +@item lmax @var{integer} (@emph{encoding,video}) +Set max lagrange factor (VBR). + +@item nr @var{integer} (@emph{encoding,video}) +Set noise reduction. + +@item rc_init_occupancy @var{integer} (@emph{encoding,video}) +Set number of bits which should be loaded into the rc buffer before +decoding starts. + +@item flags2 @var{flags} (@emph{decoding/encoding,audio,video}) + +Possible values: +@table @samp +@item fast +Allow non spec compliant speedup tricks. +@item sgop +Deprecated, use mpegvideo private options instead. +@item noout +Skip bitstream encoding. +@item ignorecrop +Ignore cropping information from sps. +@item local_header +Place global headers at every keyframe instead of in extradata. +@item chunks +Frame data might be split into multiple chunks. +@item showall +Show all frames before the first keyframe. +@item skiprd +Deprecated, use mpegvideo private options instead. +@item export_mvs +Export motion vectors into frame side-data (see @code{AV_FRAME_DATA_MOTION_VECTORS}) +for codecs that support it. See also @file{doc/examples/export_mvs.c}. +@end table + +@item error @var{integer} (@emph{encoding,video}) + +@item qns @var{integer} (@emph{encoding,video}) +Deprecated, use mpegvideo private options instead. + +@item threads @var{integer} (@emph{decoding/encoding,video}) + +Possible values: +@table @samp +@item auto +detect a good number of threads +@end table + +@item me_threshold @var{integer} (@emph{encoding,video}) +Set motion estimation threshold. + +@item mb_threshold @var{integer} (@emph{encoding,video}) +Set macroblock threshold. + +@item dc @var{integer} (@emph{encoding,video}) +Set intra_dc_precision. + +@item nssew @var{integer} (@emph{encoding,video}) +Set nsse weight. + +@item skip_top @var{integer} (@emph{decoding,video}) +Set number of macroblock rows at the top which are skipped. + +@item skip_bottom @var{integer} (@emph{decoding,video}) +Set number of macroblock rows at the bottom which are skipped. + +@item profile @var{integer} (@emph{encoding,audio,video}) + +Possible values: +@table @samp +@item unknown + +@item aac_main + +@item aac_low + +@item aac_ssr + +@item aac_ltp + +@item aac_he + +@item aac_he_v2 + +@item aac_ld + +@item aac_eld + +@item mpeg2_aac_low + +@item mpeg2_aac_he + +@item dts + +@item dts_es + +@item dts_96_24 + +@item dts_hd_hra + +@item dts_hd_ma + +@end table + +@item level @var{integer} (@emph{encoding,audio,video}) + +Possible values: +@table @samp +@item unknown + +@end table + +@item lowres @var{integer} (@emph{decoding,audio,video}) +Decode at 1= 1/2, 2=1/4, 3=1/8 resolutions. + +@item skip_threshold @var{integer} (@emph{encoding,video}) +Set frame skip threshold. + +@item skip_factor @var{integer} (@emph{encoding,video}) +Set frame skip factor. + +@item skip_exp @var{integer} (@emph{encoding,video}) +Set frame skip exponent. +Negative values behave identical to the corresponding positive ones, except +that the score is normalized. +Positive values exist primarily for compatibility reasons and are not so useful. + +@item skipcmp @var{integer} (@emph{encoding,video}) +Set frame skip compare function. + +Possible values: +@table @samp +@item sad +sum of absolute differences, fast (default) +@item sse +sum of squared errors +@item satd +sum of absolute Hadamard transformed differences +@item dct +sum of absolute DCT transformed differences +@item psnr +sum of squared quantization errors (avoid, low quality) +@item bit +number of bits needed for the block +@item rd +rate distortion optimal, slow +@item zero +0 +@item vsad +sum of absolute vertical differences +@item vsse +sum of squared vertical differences +@item nsse +noise preserving sum of squared differences +@item w53 +5/3 wavelet, only used in snow +@item w97 +9/7 wavelet, only used in snow +@item dctmax + +@item chroma + +@end table + +@item border_mask @var{float} (@emph{encoding,video}) +Increase the quantizer for macroblocks close to borders. + +@item mblmin @var{integer} (@emph{encoding,video}) +Set min macroblock lagrange factor (VBR). + +@item mblmax @var{integer} (@emph{encoding,video}) +Set max macroblock lagrange factor (VBR). + +@item mepc @var{integer} (@emph{encoding,video}) +Set motion estimation bitrate penalty compensation (1.0 = 256). + +@item skip_loop_filter @var{integer} (@emph{decoding,video}) +@item skip_idct @var{integer} (@emph{decoding,video}) +@item skip_frame @var{integer} (@emph{decoding,video}) + +Make decoder discard processing depending on the frame type selected +by the option value. + +@option{skip_loop_filter} skips frame loop filtering, @option{skip_idct} +skips frame IDCT/dequantization, @option{skip_frame} skips decoding. + +Possible values: +@table @samp +@item none +Discard no frame. + +@item default +Discard useless frames like 0-sized frames. + +@item noref +Discard all non-reference frames. + +@item bidir +Discard all bidirectional frames. + +@item nokey +Discard all frames excepts keyframes. + +@item all +Discard all frames. +@end table + +Default value is @samp{default}. + +@item bidir_refine @var{integer} (@emph{encoding,video}) +Refine the two motion vectors used in bidirectional macroblocks. + +@item brd_scale @var{integer} (@emph{encoding,video}) +Downscale frames for dynamic B-frame decision. + +@item keyint_min @var{integer} (@emph{encoding,video}) +Set minimum interval between IDR-frames. + +@item refs @var{integer} (@emph{encoding,video}) +Set reference frames to consider for motion compensation. + +@item chromaoffset @var{integer} (@emph{encoding,video}) +Set chroma qp offset from luma. + +@item trellis @var{integer} (@emph{encoding,audio,video}) +Set rate-distortion optimal quantization. + +@item sc_factor @var{integer} (@emph{encoding,video}) +Set value multiplied by qscale for each frame and added to +scene_change_score. + +@item mv0_threshold @var{integer} (@emph{encoding,video}) +@item b_sensitivity @var{integer} (@emph{encoding,video}) +Adjust sensitivity of b_frame_strategy 1. + +@item compression_level @var{integer} (@emph{encoding,audio,video}) +@item min_prediction_order @var{integer} (@emph{encoding,audio}) +@item max_prediction_order @var{integer} (@emph{encoding,audio}) +@item timecode_frame_start @var{integer} (@emph{encoding,video}) +Set GOP timecode frame start number, in non drop frame format. + +@item request_channels @var{integer} (@emph{decoding,audio}) +Set desired number of audio channels. + +@item bits_per_raw_sample @var{integer} +@item channel_layout @var{integer} (@emph{decoding/encoding,audio}) + +Possible values: +@table @samp +@end table +@item request_channel_layout @var{integer} (@emph{decoding,audio}) + +Possible values: +@table @samp +@end table +@item rc_max_vbv_use @var{float} (@emph{encoding,video}) +@item rc_min_vbv_use @var{float} (@emph{encoding,video}) +@item ticks_per_frame @var{integer} (@emph{decoding/encoding,audio,video}) +@item color_primaries @var{integer} (@emph{decoding/encoding,video}) +@item color_trc @var{integer} (@emph{decoding/encoding,video}) +@item colorspace @var{integer} (@emph{decoding/encoding,video}) +@item color_range @var{integer} (@emph{decoding/encoding,video}) +@item chroma_sample_location @var{integer} (@emph{decoding/encoding,video}) + +@item log_level_offset @var{integer} +Set the log level offset. + +@item slices @var{integer} (@emph{encoding,video}) +Number of slices, used in parallelized encoding. + +@item thread_type @var{flags} (@emph{decoding/encoding,video}) +Select which multithreading methods to use. + +Use of @samp{frame} will increase decoding delay by one frame per +thread, so clients which cannot provide future frames should not use +it. + +Possible values: +@table @samp +@item slice +Decode more than one part of a single frame at once. + +Multithreading using slices works only when the video was encoded with +slices. + +@item frame +Decode more than one frame at once. +@end table + +Default value is @samp{slice+frame}. + +@item audio_service_type @var{integer} (@emph{encoding,audio}) +Set audio service type. + +Possible values: +@table @samp +@item ma +Main Audio Service +@item ef +Effects +@item vi +Visually Impaired +@item hi +Hearing Impaired +@item di +Dialogue +@item co +Commentary +@item em +Emergency +@item vo +Voice Over +@item ka +Karaoke +@end table + +@item request_sample_fmt @var{sample_fmt} (@emph{decoding,audio}) +Set sample format audio decoders should prefer. Default value is +@code{none}. + +@item pkt_timebase @var{rational number} + +@item sub_charenc @var{encoding} (@emph{decoding,subtitles}) +Set the input subtitles character encoding. + +@item field_order @var{field_order} (@emph{video}) +Set/override the field order of the video. +Possible values: +@table @samp +@item progressive +Progressive video +@item tt +Interlaced video, top field coded and displayed first +@item bb +Interlaced video, bottom field coded and displayed first +@item tb +Interlaced video, top coded first, bottom displayed first +@item bt +Interlaced video, bottom coded first, top displayed first +@end table + +@item skip_alpha @var{integer} (@emph{decoding,video}) +Set to 1 to disable processing alpha (transparency). This works like the +@samp{gray} flag in the @option{flags} option which skips chroma information +instead of alpha. Default is 0. +@end table + +@c man end CODEC OPTIONS + +@ifclear config-writeonly +@include decoders.texi +@end ifclear +@ifclear config-readonly +@include encoders.texi +@end ifclear diff --git a/ffmpeg/doc/decoders.texi b/ffmpeg/doc/decoders.texi new file mode 100644 index 0000000..6910dc1 --- /dev/null +++ b/ffmpeg/doc/decoders.texi @@ -0,0 +1,236 @@ +@chapter Decoders +@c man begin DECODERS + +Decoders are configured elements in FFmpeg which allow the decoding of +multimedia streams. + +When you configure your FFmpeg build, all the supported native decoders +are enabled by default. Decoders requiring an external library must be enabled +manually via the corresponding @code{--enable-lib} option. You can list all +available decoders using the configure option @code{--list-decoders}. + +You can disable all the decoders with the configure option +@code{--disable-decoders} and selectively enable / disable single decoders +with the options @code{--enable-decoder=@var{DECODER}} / +@code{--disable-decoder=@var{DECODER}}. + +The option @code{-decoders} of the ff* tools will display the list of +enabled decoders. + +@c man end DECODERS + +@chapter Video Decoders +@c man begin VIDEO DECODERS + +A description of some of the currently available video decoders +follows. + +@section rawvideo + +Raw video decoder. + +This decoder decodes rawvideo streams. + +@subsection Options + +@table @option +@item top @var{top_field_first} +Specify the assumed field type of the input video. +@table @option +@item -1 +the video is assumed to be progressive (default) +@item 0 +bottom-field-first is assumed +@item 1 +top-field-first is assumed +@end table + +@end table + +@c man end VIDEO DECODERS + +@chapter Audio Decoders +@c man begin AUDIO DECODERS + +A description of some of the currently available audio decoders +follows. + +@section ac3 + +AC-3 audio decoder. + +This decoder implements part of ATSC A/52:2010 and ETSI TS 102 366, as well as +the undocumented RealAudio 3 (a.k.a. dnet). + +@subsection AC-3 Decoder Options + +@table @option + +@item -drc_scale @var{value} +Dynamic Range Scale Factor. The factor to apply to dynamic range values +from the AC-3 stream. This factor is applied exponentially. +There are 3 notable scale factor ranges: +@table @option +@item drc_scale == 0 +DRC disabled. Produces full range audio. +@item 0 < drc_scale <= 1 +DRC enabled. Applies a fraction of the stream DRC value. +Audio reproduction is between full range and full compression. +@item drc_scale > 1 +DRC enabled. Applies drc_scale asymmetrically. +Loud sounds are fully compressed. Soft sounds are enhanced. +@end table + +@end table + +@section ffwavesynth + +Internal wave synthetizer. + +This decoder generates wave patterns according to predefined sequences. Its +use is purely internal and the format of the data it accepts is not publicly +documented. + +@section libcelt + +libcelt decoder wrapper. + +libcelt allows libavcodec to decode the Xiph CELT ultra-low delay audio codec. +Requires the presence of the libcelt headers and library during configuration. +You need to explicitly configure the build with @code{--enable-libcelt}. + +@section libgsm + +libgsm decoder wrapper. + +libgsm allows libavcodec to decode the GSM full rate audio codec. Requires +the presence of the libgsm headers and library during configuration. You need +to explicitly configure the build with @code{--enable-libgsm}. + +This decoder supports both the ordinary GSM and the Microsoft variant. + +@section libilbc + +libilbc decoder wrapper. + +libilbc allows libavcodec to decode the Internet Low Bitrate Codec (iLBC) +audio codec. Requires the presence of the libilbc headers and library during +configuration. You need to explicitly configure the build with +@code{--enable-libilbc}. + +@subsection Options + +The following option is supported by the libilbc wrapper. + +@table @option +@item enhance + +Enable the enhancement of the decoded audio when set to 1. The default +value is 0 (disabled). + +@end table + +@section libopencore-amrnb + +libopencore-amrnb decoder wrapper. + +libopencore-amrnb allows libavcodec to decode the Adaptive Multi-Rate +Narrowband audio codec. Using it requires the presence of the +libopencore-amrnb headers and library during configuration. You need to +explicitly configure the build with @code{--enable-libopencore-amrnb}. + +An FFmpeg native decoder for AMR-NB exists, so users can decode AMR-NB +without this library. + +@section libopencore-amrwb + +libopencore-amrwb decoder wrapper. + +libopencore-amrwb allows libavcodec to decode the Adaptive Multi-Rate +Wideband audio codec. Using it requires the presence of the +libopencore-amrwb headers and library during configuration. You need to +explicitly configure the build with @code{--enable-libopencore-amrwb}. + +An FFmpeg native decoder for AMR-WB exists, so users can decode AMR-WB +without this library. + +@section libopus + +libopus decoder wrapper. + +libopus allows libavcodec to decode the Opus Interactive Audio Codec. +Requires the presence of the libopus headers and library during +configuration. You need to explicitly configure the build with +@code{--enable-libopus}. + +An FFmpeg native decoder for Opus exists, so users can decode Opus +without this library. + +@c man end AUDIO DECODERS + +@chapter Subtitles Decoders +@c man begin SUBTILES DECODERS + +@section dvdsub + +This codec decodes the bitmap subtitles used in DVDs; the same subtitles can +also be found in VobSub file pairs and in some Matroska files. + +@subsection Options + +@table @option +@item palette +Specify the global palette used by the bitmaps. When stored in VobSub, the +palette is normally specified in the index file; in Matroska, the palette is +stored in the codec extra-data in the same format as in VobSub. In DVDs, the +palette is stored in the IFO file, and therefore not available when reading +from dumped VOB files. + +The format for this option is a string containing 16 24-bits hexadecimal +numbers (without 0x prefix) separated by comas, for example @code{0d00ee, +ee450d, 101010, eaeaea, 0ce60b, ec14ed, ebff0b, 0d617a, 7b7b7b, d1d1d1, +7b2a0e, 0d950c, 0f007b, cf0dec, cfa80c, 7c127b}. +@end table + +@section libzvbi-teletext + +Libzvbi allows libavcodec to decode DVB teletext pages and DVB teletext +subtitles. Requires the presence of the libzvbi headers and library during +configuration. You need to explicitly configure the build with +@code{--enable-libzvbi}. + +@subsection Options + +@table @option +@item txt_page +List of teletext page numbers to decode. You may use the special * string to +match all pages. Pages that do not match the specified list are dropped. +Default value is *. +@item txt_chop_top +Discards the top teletext line. Default value is 1. +@item txt_format +Specifies the format of the decoded subtitles. The teletext decoder is capable +of decoding the teletext pages to bitmaps or to simple text, you should use +"bitmap" for teletext pages, because certain graphics and colors cannot be +expressed in simple text. You might use "text" for teletext based subtitles if +your application can handle simple text based subtitles. Default value is +bitmap. +@item txt_left +X offset of generated bitmaps, default is 0. +@item txt_top +Y offset of generated bitmaps, default is 0. +@item txt_chop_spaces +Chops leading and trailing spaces and removes empty lines from the generated +text. This option is useful for teletext based subtitles where empty spaces may +be present at the start or at the end of the lines or empty lines may be +present between the subtitle lines because of double-sized teletext charactes. +Default value is 1. +@item txt_duration +Sets the display duration of the decoded teletext pages or subtitles in +miliseconds. Default value is 30000 which is 30 seconds. +@item txt_transparent +Force transparent background of the generated teletext bitmaps. Default value +is 0 which means an opaque (black) background. +@end table + +@c man end SUBTILES DECODERS diff --git a/ffmpeg/doc/default.css b/ffmpeg/doc/default.css new file mode 100644 index 0000000..bf50200 --- /dev/null +++ b/ffmpeg/doc/default.css @@ -0,0 +1,165 @@ +a.summary-letter { + text-decoration: none; +} + +a { + color: #2D6198; +} + +a:visited { + color: #884488; +} + +#banner { + background-color: white; + position: relative; + text-align: center; +} + +#banner img { + margin-bottom: 1px; + margin-top: 5px; +} + +#body { + margin-left: 1em; + margin-right: 1em; +} + +body { + background-color: #313131; + margin: 0; + text-align: justify; +} + +.center { + margin-left: auto; + margin-right: auto; + text-align: center; +} + +#container { + background-color: white; + color: #202020; + margin-left: 1em; + margin-right: 1em; +} + +#footer { + text-align: center; +} + +h1 a, h2 a, h3 a, h4 a { + text-decoration: inherit; + color: inherit; +} + +h1, h2, h3, h4 { + padding-left: 0.4em; + border-radius: 4px; + padding-bottom: 0.25em; + padding-top: 0.25em; + border: 1px solid #6A996A; +} + +h1 { + background-color: #7BB37B; + color: #151515; + font-size: 1.2em; + padding-bottom: 0.3em; + padding-top: 0.3em; +} + +h2 { + color: #313131; + font-size: 1.0em; + background-color: #ABE3AB; +} + +h3 { + color: #313131; + font-size: 0.9em; + margin-bottom: -6px; + background-color: #BBF3BB; +} + +h4 { + color: #313131; + font-size: 0.8em; + margin-bottom: -8px; + background-color: #D1FDD1; +} + +img { + border: 0; +} + +#navbar { + background-color: #738073; + border-bottom: 1px solid #5C665C; + border-top: 1px solid #5C665C; + margin-top: 12px; + padding: 0.3em; + position: relative; + text-align: center; +} + +#navbar a, #navbar_secondary a { + color: white; + padding: 0.3em; + text-decoration: none; +} + +#navbar a:hover, #navbar_secondary a:hover { + background-color: #313131; + color: white; + text-decoration: none; +} + +#navbar_secondary { + background-color: #738073; + border-bottom: 1px solid #5C665C; + border-left: 1px solid #5C665C; + border-right: 1px solid #5C665C; + padding: 0.3em; + position: relative; + text-align: center; +} + +p { + margin-left: 1em; + margin-right: 1em; +} + +pre { + margin-left: 3em; + margin-right: 3em; + padding: 0.3em; + border: 1px solid #bbb; + background-color: #f7f7f7; +} + +dl dt { + font-weight: bold; +} + +#proj_desc { + font-size: 1.2em; +} + +#repos { + margin-left: 1em; + margin-right: 1em; + border-collapse: collapse; + border: solid 1px #6A996A; +} + +#repos th { + background-color: #7BB37B; + border: solid 1px #6A996A; +} + +#repos td { + padding: 0.2em; + border: solid 1px #6A996A; +} diff --git a/ffmpeg/doc/demuxers.texi b/ffmpeg/doc/demuxers.texi new file mode 100644 index 0000000..e582322 --- /dev/null +++ b/ffmpeg/doc/demuxers.texi @@ -0,0 +1,435 @@ +@chapter Demuxers +@c man begin DEMUXERS + +Demuxers are configured elements in FFmpeg that can read the +multimedia streams from a particular type of file. + +When you configure your FFmpeg build, all the supported demuxers +are enabled by default. You can list all available ones using the +configure option @code{--list-demuxers}. + +You can disable all the demuxers using the configure option +@code{--disable-demuxers}, and selectively enable a single demuxer with +the option @code{--enable-demuxer=@var{DEMUXER}}, or disable it +with the option @code{--disable-demuxer=@var{DEMUXER}}. + +The option @code{-formats} of the ff* tools will display the list of +enabled demuxers. + +The description of some of the currently available demuxers follows. + +@section applehttp + +Apple HTTP Live Streaming demuxer. + +This demuxer presents all AVStreams from all variant streams. +The id field is set to the bitrate variant index number. By setting +the discard flags on AVStreams (by pressing 'a' or 'v' in ffplay), +the caller can decide which variant streams to actually receive. +The total bitrate of the variant that the stream belongs to is +available in a metadata key named "variant_bitrate". + +@section asf + +Advanced Systems Format demuxer. + +This demuxer is used to demux ASF files and MMS network streams. + +@table @option +@item -no_resync_search @var{bool} +Do not try to resynchronize by looking for a certain optional start code. +@end table + +@anchor{concat} +@section concat + +Virtual concatenation script demuxer. + +This demuxer reads a list of files and other directives from a text file and +demuxes them one after the other, as if all their packet had been muxed +together. + +The timestamps in the files are adjusted so that the first file starts at 0 +and each next file starts where the previous one finishes. Note that it is +done globally and may cause gaps if all streams do not have exactly the same +length. + +All files must have the same streams (same codecs, same time base, etc.). + +The duration of each file is used to adjust the timestamps of the next file: +if the duration is incorrect (because it was computed using the bit-rate or +because the file is truncated, for example), it can cause artifacts. The +@code{duration} directive can be used to override the duration stored in +each file. + +@subsection Syntax + +The script is a text file in extended-ASCII, with one directive per line. +Empty lines, leading spaces and lines starting with '#' are ignored. The +following directive is recognized: + +@table @option + +@item @code{file @var{path}} +Path to a file to read; special characters and spaces must be escaped with +backslash or single quotes. + +All subsequent file-related directives apply to that file. + +@item @code{ffconcat version 1.0} +Identify the script type and version. It also sets the @option{safe} option +to 1 if it was to its default -1. + +To make FFmpeg recognize the format automatically, this directive must +appears exactly as is (no extra space or byte-order-mark) on the very first +line of the script. + +@item @code{duration @var{dur}} +Duration of the file. This information can be specified from the file; +specifying it here may be more efficient or help if the information from the +file is not available or accurate. + +If the duration is set for all files, then it is possible to seek in the +whole concatenated video. + +@item @code{stream} +Introduce a stream in the virtual file. +All subsequent stream-related directives apply to the last introduced +stream. +Some streams properties must be set in order to allow identifying the +matching streams in the subfiles. +If no streams are defined in the script, the streams from the first file are +copied. + +@item @code{exact_stream_id @var{id}} +Set the id of the stream. +If this directive is given, the string with the corresponding id in the +subfiles will be used. +This is especially useful for MPEG-PS (VOB) files, where the order of the +streams is not reliable. + +@end table + +@subsection Options + +This demuxer accepts the following option: + +@table @option + +@item safe +If set to 1, reject unsafe file paths. A file path is considered safe if it +does not contain a protocol specification and is relative and all components +only contain characters from the portable character set (letters, digits, +period, underscore and hyphen) and have no period at the beginning of a +component. + +If set to 0, any file name is accepted. + +The default is -1, it is equivalent to 1 if the format was automatically +probed and 0 otherwise. + +@item auto_convert +If set to 1, try to perform automatic conversions on packet data to make the +streams concatenable. + +Currently, the only conversion is adding the h264_mp4toannexb bitstream +filter to H.264 streams in MP4 format. This is necessary in particular if +there are resolution changes. + +@end table + +@section flv + +Adobe Flash Video Format demuxer. + +This demuxer is used to demux FLV files and RTMP network streams. + +@table @option +@item -flv_metadata @var{bool} +Allocate the streams according to the onMetaData array content. +@end table + +@section libgme + +The Game Music Emu library is a collection of video game music file emulators. + +See @url{http://code.google.com/p/game-music-emu/} for more information. + +Some files have multiple tracks. The demuxer will pick the first track by +default. The @option{track_index} option can be used to select a different +track. Track indexes start at 0. The demuxer exports the number of tracks as +@var{tracks} meta data entry. + +For very large files, the @option{max_size} option may have to be adjusted. + +@section libquvi + +Play media from Internet services using the quvi project. + +The demuxer accepts a @option{format} option to request a specific quality. It +is by default set to @var{best}. + +See @url{http://quvi.sourceforge.net/} for more information. + +FFmpeg needs to be built with @code{--enable-libquvi} for this demuxer to be +enabled. + +@section gif + +Animated GIF demuxer. + +It accepts the following options: + +@table @option +@item min_delay +Set the minimum valid delay between frames in hundredths of seconds. +Range is 0 to 6000. Default value is 2. + +@item default_delay +Set the default delay between frames in hundredths of seconds. +Range is 0 to 6000. Default value is 10. + +@item ignore_loop +GIF files can contain information to loop a certain number of times (or +infinitely). If @option{ignore_loop} is set to 1, then the loop setting +from the input will be ignored and looping will not occur. If set to 0, +then looping will occur and will cycle the number of times according to +the GIF. Default value is 1. +@end table + +For example, with the overlay filter, place an infinitely looping GIF +over another video: +@example +ffmpeg -i input.mp4 -ignore_loop 0 -i input.gif -filter_complex overlay=shortest=1 out.mkv +@end example + +Note that in the above example the shortest option for overlay filter is +used to end the output video at the length of the shortest input file, +which in this case is @file{input.mp4} as the GIF in this example loops +infinitely. + +@section image2 + +Image file demuxer. + +This demuxer reads from a list of image files specified by a pattern. +The syntax and meaning of the pattern is specified by the +option @var{pattern_type}. + +The pattern may contain a suffix which is used to automatically +determine the format of the images contained in the files. + +The size, the pixel format, and the format of each image must be the +same for all the files in the sequence. + +This demuxer accepts the following options: +@table @option +@item framerate +Set the frame rate for the video stream. It defaults to 25. +@item loop +If set to 1, loop over the input. Default value is 0. +@item pattern_type +Select the pattern type used to interpret the provided filename. + +@var{pattern_type} accepts one of the following values. +@table @option +@item sequence +Select a sequence pattern type, used to specify a sequence of files +indexed by sequential numbers. + +A sequence pattern may contain the string "%d" or "%0@var{N}d", which +specifies the position of the characters representing a sequential +number in each filename matched by the pattern. If the form +"%d0@var{N}d" is used, the string representing the number in each +filename is 0-padded and @var{N} is the total number of 0-padded +digits representing the number. The literal character '%' can be +specified in the pattern with the string "%%". + +If the sequence pattern contains "%d" or "%0@var{N}d", the first filename of +the file list specified by the pattern must contain a number +inclusively contained between @var{start_number} and +@var{start_number}+@var{start_number_range}-1, and all the following +numbers must be sequential. + +For example the pattern "img-%03d.bmp" will match a sequence of +filenames of the form @file{img-001.bmp}, @file{img-002.bmp}, ..., +@file{img-010.bmp}, etc.; the pattern "i%%m%%g-%d.jpg" will match a +sequence of filenames of the form @file{i%m%g-1.jpg}, +@file{i%m%g-2.jpg}, ..., @file{i%m%g-10.jpg}, etc. + +Note that the pattern must not necessarily contain "%d" or +"%0@var{N}d", for example to convert a single image file +@file{img.jpeg} you can employ the command: +@example +ffmpeg -i img.jpeg img.png +@end example + +@item glob +Select a glob wildcard pattern type. + +The pattern is interpreted like a @code{glob()} pattern. This is only +selectable if libavformat was compiled with globbing support. + +@item glob_sequence @emph{(deprecated, will be removed)} +Select a mixed glob wildcard/sequence pattern. + +If your version of libavformat was compiled with globbing support, and +the provided pattern contains at least one glob meta character among +@code{%*?[]@{@}} that is preceded by an unescaped "%", the pattern is +interpreted like a @code{glob()} pattern, otherwise it is interpreted +like a sequence pattern. + +All glob special characters @code{%*?[]@{@}} must be prefixed +with "%". To escape a literal "%" you shall use "%%". + +For example the pattern @code{foo-%*.jpeg} will match all the +filenames prefixed by "foo-" and terminating with ".jpeg", and +@code{foo-%?%?%?.jpeg} will match all the filenames prefixed with +"foo-", followed by a sequence of three characters, and terminating +with ".jpeg". + +This pattern type is deprecated in favor of @var{glob} and +@var{sequence}. +@end table + +Default value is @var{glob_sequence}. +@item pixel_format +Set the pixel format of the images to read. If not specified the pixel +format is guessed from the first image file in the sequence. +@item start_number +Set the index of the file matched by the image file pattern to start +to read from. Default value is 0. +@item start_number_range +Set the index interval range to check when looking for the first image +file in the sequence, starting from @var{start_number}. Default value +is 5. +@item ts_from_file +If set to 1, will set frame timestamp to modification time of image file. Note +that monotonity of timestamps is not provided: images go in the same order as +without this option. Default value is 0. +If set to 2, will set frame timestamp to the modification time of the image file in +nanosecond precision. +@item video_size +Set the video size of the images to read. If not specified the video +size is guessed from the first image file in the sequence. +@end table + +@subsection Examples + +@itemize +@item +Use @command{ffmpeg} for creating a video from the images in the file +sequence @file{img-001.jpeg}, @file{img-002.jpeg}, ..., assuming an +input frame rate of 10 frames per second: +@example +ffmpeg -framerate 10 -i 'img-%03d.jpeg' out.mkv +@end example + +@item +As above, but start by reading from a file with index 100 in the sequence: +@example +ffmpeg -framerate 10 -start_number 100 -i 'img-%03d.jpeg' out.mkv +@end example + +@item +Read images matching the "*.png" glob pattern , that is all the files +terminating with the ".png" suffix: +@example +ffmpeg -framerate 10 -pattern_type glob -i "*.png" out.mkv +@end example +@end itemize + +@section mpegts + +MPEG-2 transport stream demuxer. + +@table @option + +@item fix_teletext_pts +Overrides teletext packet PTS and DTS values with the timestamps calculated +from the PCR of the first program which the teletext stream is part of and is +not discarded. Default value is 1, set this option to 0 if you want your +teletext packet PTS and DTS values untouched. +@end table + +@section rawvideo + +Raw video demuxer. + +This demuxer allows one to read raw video data. Since there is no header +specifying the assumed video parameters, the user must specify them +in order to be able to decode the data correctly. + +This demuxer accepts the following options: +@table @option + +@item framerate +Set input video frame rate. Default value is 25. + +@item pixel_format +Set the input video pixel format. Default value is @code{yuv420p}. + +@item video_size +Set the input video size. This value must be specified explicitly. +@end table + +For example to read a rawvideo file @file{input.raw} with +@command{ffplay}, assuming a pixel format of @code{rgb24}, a video +size of @code{320x240}, and a frame rate of 10 images per second, use +the command: +@example +ffplay -f rawvideo -pixel_format rgb24 -video_size 320x240 -framerate 10 input.raw +@end example + +@section sbg + +SBaGen script demuxer. + +This demuxer reads the script language used by SBaGen +@url{http://uazu.net/sbagen/} to generate binaural beats sessions. A SBG +script looks like that: +@example +-SE +a: 300-2.5/3 440+4.5/0 +b: 300-2.5/0 440+4.5/3 +off: - +NOW == a ++0:07:00 == b ++0:14:00 == a ++0:21:00 == b ++0:30:00 off +@end example + +A SBG script can mix absolute and relative timestamps. If the script uses +either only absolute timestamps (including the script start time) or only +relative ones, then its layout is fixed, and the conversion is +straightforward. On the other hand, if the script mixes both kind of +timestamps, then the @var{NOW} reference for relative timestamps will be +taken from the current time of day at the time the script is read, and the +script layout will be frozen according to that reference. That means that if +the script is directly played, the actual times will match the absolute +timestamps up to the sound controller's clock accuracy, but if the user +somehow pauses the playback or seeks, all times will be shifted accordingly. + +@section tedcaptions + +JSON captions used for @url{http://www.ted.com/, TED Talks}. + +TED does not provide links to the captions, but they can be guessed from the +page. The file @file{tools/bookmarklets.html} from the FFmpeg source tree +contains a bookmarklet to expose them. + +This demuxer accepts the following option: +@table @option +@item start_time +Set the start time of the TED talk, in milliseconds. The default is 15000 +(15s). It is used to sync the captions with the downloadable videos, because +they include a 15s intro. +@end table + +Example: convert the captions to a format most players understand: +@example +ffmpeg -i http://www.ted.com/talks/subtitles/id/1/lang/en talk1-en.srt +@end example + +@c man end DEMUXERS diff --git a/ffmpeg/doc/developer.texi b/ffmpeg/doc/developer.texi new file mode 100644 index 0000000..8b1f150 --- /dev/null +++ b/ffmpeg/doc/developer.texi @@ -0,0 +1,800 @@ +\input texinfo @c -*- texinfo -*- + +@settitle Developer Documentation +@titlepage +@center @titlefont{Developer Documentation} +@end titlepage + +@top + +@contents + +@chapter Developers Guide + +@section Notes for external developers + +This document is mostly useful for internal FFmpeg developers. +External developers who need to use the API in their application should +refer to the API doxygen documentation in the public headers, and +check the examples in @file{doc/examples} and in the source code to +see how the public API is employed. + +You can use the FFmpeg libraries in your commercial program, but you +are encouraged to @emph{publish any patch you make}. In this case the +best way to proceed is to send your patches to the ffmpeg-devel +mailing list following the guidelines illustrated in the remainder of +this document. + +For more detailed legal information about the use of FFmpeg in +external programs read the @file{LICENSE} file in the source tree and +consult @url{http://ffmpeg.org/legal.html}. + +@section Contributing + +There are 3 ways by which code gets into ffmpeg. +@itemize @bullet +@item Submitting Patches to the main developer mailing list + see @ref{Submitting patches} for details. +@item Directly committing changes to the main tree. +@item Committing changes to a git clone, for example on github.com or + gitorious.org. And asking us to merge these changes. +@end itemize + +Whichever way, changes should be reviewed by the maintainer of the code +before they are committed. And they should follow the @ref{Coding Rules}. +The developer making the commit and the author are responsible for their changes +and should try to fix issues their commit causes. + +@anchor{Coding Rules} +@section Coding Rules + +@subsection Code formatting conventions + +There are the following guidelines regarding the indentation in files: + +@itemize @bullet +@item +Indent size is 4. + +@item +The TAB character is forbidden outside of Makefiles as is any +form of trailing whitespace. Commits containing either will be +rejected by the git repository. + +@item +You should try to limit your code lines to 80 characters; however, do so if +and only if this improves readability. +@end itemize +The presentation is one inspired by 'indent -i4 -kr -nut'. + +The main priority in FFmpeg is simplicity and small code size in order to +minimize the bug count. + +@subsection Comments +Use the JavaDoc/Doxygen format (see examples below) so that code documentation +can be generated automatically. All nontrivial functions should have a comment +above them explaining what the function does, even if it is just one sentence. +All structures and their member variables should be documented, too. + +Avoid Qt-style and similar Doxygen syntax with @code{!} in it, i.e. replace +@code{//!} with @code{///} and similar. Also @@ syntax should be employed +for markup commands, i.e. use @code{@@param} and not @code{\param}. + +@example +/** + * @@file + * MPEG codec. + * @@author ... + */ + +/** + * Summary sentence. + * more text ... + * ... + */ +typedef struct Foobar @{ + int var1; /**< var1 description */ + int var2; ///< var2 description + /** var3 description */ + int var3; +@} Foobar; + +/** + * Summary sentence. + * more text ... + * ... + * @@param my_parameter description of my_parameter + * @@return return value description + */ +int myfunc(int my_parameter) +... +@end example + +@subsection C language features + +FFmpeg is programmed in the ISO C90 language with a few additional +features from ISO C99, namely: + +@itemize @bullet +@item +the @samp{inline} keyword; + +@item +@samp{//} comments; + +@item +designated struct initializers (@samp{struct s x = @{ .i = 17 @};}) + +@item +compound literals (@samp{x = (struct s) @{ 17, 23 @};}) +@end itemize + +These features are supported by all compilers we care about, so we will not +accept patches to remove their use unless they absolutely do not impair +clarity and performance. + +All code must compile with recent versions of GCC and a number of other +currently supported compilers. To ensure compatibility, please do not use +additional C99 features or GCC extensions. Especially watch out for: + +@itemize @bullet +@item +mixing statements and declarations; + +@item +@samp{long long} (use @samp{int64_t} instead); + +@item +@samp{__attribute__} not protected by @samp{#ifdef __GNUC__} or similar; + +@item +GCC statement expressions (@samp{(x = (@{ int y = 4; y; @})}). +@end itemize + +@subsection Naming conventions +All names should be composed with underscores (_), not CamelCase. For example, +@samp{avfilter_get_video_buffer} is an acceptable function name and +@samp{AVFilterGetVideo} is not. The exception from this are type names, like +for example structs and enums; they should always be in the CamelCase + +There are the following conventions for naming variables and functions: + +@itemize @bullet +@item +For local variables no prefix is required. + +@item +For file-scope variables and functions declared as @code{static}, no prefix +is required. + +@item +For variables and functions visible outside of file scope, but only used +internally by a library, an @code{ff_} prefix should be used, +e.g. @samp{ff_w64_demuxer}. + +@item +For variables and functions visible outside of file scope, used internally +across multiple libraries, use @code{avpriv_} as prefix, for example, +@samp{avpriv_aac_parse_header}. + +@item +Each library has its own prefix for public symbols, in addition to the +commonly used @code{av_} (@code{avformat_} for libavformat, +@code{avcodec_} for libavcodec, @code{swr_} for libswresample, etc). +Check the existing code and choose names accordingly. +Note that some symbols without these prefixes are also exported for +retro-compatibility reasons. These exceptions are declared in the +@code{lib/lib.v} files. +@end itemize + +Furthermore, name space reserved for the system should not be invaded. +Identifiers ending in @code{_t} are reserved by +@url{http://pubs.opengroup.org/onlinepubs/007904975/functions/xsh_chap02_02.html#tag_02_02_02, POSIX}. +Also avoid names starting with @code{__} or @code{_} followed by an uppercase +letter as they are reserved by the C standard. Names starting with @code{_} +are reserved at the file level and may not be used for externally visible +symbols. If in doubt, just avoid names starting with @code{_} altogether. + +@subsection Miscellaneous conventions + +@itemize @bullet +@item +fprintf and printf are forbidden in libavformat and libavcodec, +please use av_log() instead. + +@item +Casts should be used only when necessary. Unneeded parentheses +should also be avoided if they don't make the code easier to understand. +@end itemize + +@subsection Editor configuration +In order to configure Vim to follow FFmpeg formatting conventions, paste +the following snippet into your @file{.vimrc}: +@example +" indentation rules for FFmpeg: 4 spaces, no tabs +set expandtab +set shiftwidth=4 +set softtabstop=4 +set cindent +set cinoptions=(0 +" Allow tabs in Makefiles. +autocmd FileType make,automake set noexpandtab shiftwidth=8 softtabstop=8 +" Trailing whitespace and tabs are forbidden, so highlight them. +highlight ForbiddenWhitespace ctermbg=red guibg=red +match ForbiddenWhitespace /\s\+$\|\t/ +" Do not highlight spaces at the end of line while typing on that line. +autocmd InsertEnter * match ForbiddenWhitespace /\t\|\s\+\%#\@@ 5 lines) chunk of code, +then either do NOT change the indentation of the inner part within (do not +move it to the right)! or do so in a separate commit + +@item +Always fill out the commit log message. Describe in a few lines what you +changed and why. You can refer to mailing list postings if you fix a +particular bug. Comments such as "fixed!" or "Changed it." are unacceptable. +Recommended format: + +@example +area changed: Short 1 line description + +details describing what and why and giving references. +@end example + +@item +Make sure the author of the commit is set correctly. (see git commit --author) +If you apply a patch, send an +answer to ffmpeg-devel (or wherever you got the patch from) saying that +you applied the patch. + +@item +When applying patches that have been discussed (at length) on the mailing +list, reference the thread in the log message. + +@item +Do NOT commit to code actively maintained by others without permission. +Send a patch to ffmpeg-devel instead. If no one answers within a reasonable +timeframe (12h for build failures and security fixes, 3 days small changes, +1 week for big patches) then commit your patch if you think it is OK. +Also note, the maintainer can simply ask for more time to review! + +@item +Subscribe to the ffmpeg-cvslog mailing list. The diffs of all commits +are sent there and reviewed by all the other developers. Bugs and possible +improvements or general questions regarding commits are discussed there. We +expect you to react if problems with your code are uncovered. + +@item +Update the documentation if you change behavior or add features. If you are +unsure how best to do this, send a patch to ffmpeg-devel, the documentation +maintainer(s) will review and commit your stuff. + +@item +Try to keep important discussions and requests (also) on the public +developer mailing list, so that all developers can benefit from them. + +@item +Never write to unallocated memory, never write over the end of arrays, +always check values read from some untrusted source before using them +as array index or other risky things. + +@item +Remember to check if you need to bump versions for the specific libav* +parts (libavutil, libavcodec, libavformat) you are changing. You need +to change the version integer. +Incrementing the first component means no backward compatibility to +previous versions (e.g. removal of a function from the public API). +Incrementing the second component means backward compatible change +(e.g. addition of a function to the public API or extension of an +existing data structure). +Incrementing the third component means a noteworthy binary compatible +change (e.g. encoder bug fix that matters for the decoder). The third +component always starts at 100 to distinguish FFmpeg from Libav. + +@item +Compiler warnings indicate potential bugs or code with bad style. If a type of +warning always points to correct and clean code, that warning should +be disabled, not the code changed. +Thus the remaining warnings can either be bugs or correct code. +If it is a bug, the bug has to be fixed. If it is not, the code should +be changed to not generate a warning unless that causes a slowdown +or obfuscates the code. + +@item +Make sure that no parts of the codebase that you maintain are missing from the +@file{MAINTAINERS} file. If something that you want to maintain is missing add it with +your name after it. +If at some point you no longer want to maintain some code, then please help +finding a new maintainer and also don't forget updating the @file{MAINTAINERS} file. +@end enumerate + +We think our rules are not too hard. If you have comments, contact us. + +@anchor{Submitting patches} +@section Submitting patches + +First, read the @ref{Coding Rules} above if you did not yet, in particular +the rules regarding patch submission. + +When you submit your patch, please use @code{git format-patch} or +@code{git send-email}. We cannot read other diffs :-) + +Also please do not submit a patch which contains several unrelated changes. +Split it into separate, self-contained pieces. This does not mean splitting +file by file. Instead, make the patch as small as possible while still +keeping it as a logical unit that contains an individual change, even +if it spans multiple files. This makes reviewing your patches much easier +for us and greatly increases your chances of getting your patch applied. + +Use the patcheck tool of FFmpeg to check your patch. +The tool is located in the tools directory. + +Run the @ref{Regression tests} before submitting a patch in order to verify +it does not cause unexpected problems. + +It also helps quite a bit if you tell us what the patch does (for example +'replaces lrint by lrintf'), and why (for example '*BSD isn't C99 compliant +and has no lrint()') + +Also please if you send several patches, send each patch as a separate mail, +do not attach several unrelated patches to the same mail. + +Patches should be posted to the +@uref{http://lists.ffmpeg.org/mailman/listinfo/ffmpeg-devel, ffmpeg-devel} +mailing list. Use @code{git send-email} when possible since it will properly +send patches without requiring extra care. If you cannot, then send patches +as base64-encoded attachments, so your patch is not trashed during +transmission. + +Your patch will be reviewed on the mailing list. You will likely be asked +to make some changes and are expected to send in an improved version that +incorporates the requests from the review. This process may go through +several iterations. Once your patch is deemed good enough, some developer +will pick it up and commit it to the official FFmpeg tree. + +Give us a few days to react. But if some time passes without reaction, +send a reminder by email. Your patch should eventually be dealt with. + + +@section New codecs or formats checklist + +@enumerate +@item +Did you use av_cold for codec initialization and close functions? + +@item +Did you add a long_name under NULL_IF_CONFIG_SMALL to the AVCodec or +AVInputFormat/AVOutputFormat struct? + +@item +Did you bump the minor version number (and reset the micro version +number) in @file{libavcodec/version.h} or @file{libavformat/version.h}? + +@item +Did you register it in @file{allcodecs.c} or @file{allformats.c}? + +@item +Did you add the AVCodecID to @file{avcodec.h}? +When adding new codec IDs, also add an entry to the codec descriptor +list in @file{libavcodec/codec_desc.c}. + +@item +If it has a FourCC, did you add it to @file{libavformat/riff.c}, +even if it is only a decoder? + +@item +Did you add a rule to compile the appropriate files in the Makefile? +Remember to do this even if you're just adding a format to a file that is +already being compiled by some other rule, like a raw demuxer. + +@item +Did you add an entry to the table of supported formats or codecs in +@file{doc/general.texi}? + +@item +Did you add an entry in the Changelog? + +@item +If it depends on a parser or a library, did you add that dependency in +configure? + +@item +Did you @code{git add} the appropriate files before committing? + +@item +Did you make sure it compiles standalone, i.e. with +@code{configure --disable-everything --enable-decoder=foo} +(or @code{--enable-demuxer} or whatever your component is)? +@end enumerate + + +@section patch submission checklist + +@enumerate +@item +Does @code{make fate} pass with the patch applied? + +@item +Was the patch generated with git format-patch or send-email? + +@item +Did you sign off your patch? (git commit -s) +See @url{http://git.kernel.org/?p=linux/kernel/git/torvalds/linux.git;a=blob_plain;f=Documentation/SubmittingPatches} for the meaning +of sign off. + +@item +Did you provide a clear git commit log message? + +@item +Is the patch against latest FFmpeg git master branch? + +@item +Are you subscribed to ffmpeg-devel? +(the list is subscribers only due to spam) + +@item +Have you checked that the changes are minimal, so that the same cannot be +achieved with a smaller patch and/or simpler final code? + +@item +If the change is to speed critical code, did you benchmark it? + +@item +If you did any benchmarks, did you provide them in the mail? + +@item +Have you checked that the patch does not introduce buffer overflows or +other security issues? + +@item +Did you test your decoder or demuxer against damaged data? If no, see +tools/trasher, the noise bitstream filter, and +@uref{http://caca.zoy.org/wiki/zzuf, zzuf}. Your decoder or demuxer +should not crash, end in a (near) infinite loop, or allocate ridiculous +amounts of memory when fed damaged data. + +@item +Does the patch not mix functional and cosmetic changes? + +@item +Did you add tabs or trailing whitespace to the code? Both are forbidden. + +@item +Is the patch attached to the email you send? + +@item +Is the mime type of the patch correct? It should be text/x-diff or +text/x-patch or at least text/plain and not application/octet-stream. + +@item +If the patch fixes a bug, did you provide a verbose analysis of the bug? + +@item +If the patch fixes a bug, did you provide enough information, including +a sample, so the bug can be reproduced and the fix can be verified? +Note please do not attach samples >100k to mails but rather provide a +URL, you can upload to ftp://upload.ffmpeg.org + +@item +Did you provide a verbose summary about what the patch does change? + +@item +Did you provide a verbose explanation why it changes things like it does? + +@item +Did you provide a verbose summary of the user visible advantages and +disadvantages if the patch is applied? + +@item +Did you provide an example so we can verify the new feature added by the +patch easily? + +@item +If you added a new file, did you insert a license header? It should be +taken from FFmpeg, not randomly copied and pasted from somewhere else. + +@item +You should maintain alphabetical order in alphabetically ordered lists as +long as doing so does not break API/ABI compatibility. + +@item +Lines with similar content should be aligned vertically when doing so +improves readability. + +@item +Consider to add a regression test for your code. + +@item +If you added YASM code please check that things still work with --disable-yasm + +@item +Make sure you check the return values of function and return appropriate +error codes. Especially memory allocation functions like @code{av_malloc()} +are notoriously left unchecked, which is a serious problem. + +@item +Test your code with valgrind and or Address Sanitizer to ensure it's free +of leaks, out of array accesses, etc. +@end enumerate + +@section Patch review process + +All patches posted to ffmpeg-devel will be reviewed, unless they contain a +clear note that the patch is not for the git master branch. +Reviews and comments will be posted as replies to the patch on the +mailing list. The patch submitter then has to take care of every comment, +that can be by resubmitting a changed patch or by discussion. Resubmitted +patches will themselves be reviewed like any other patch. If at some point +a patch passes review with no comments then it is approved, that can for +simple and small patches happen immediately while large patches will generally +have to be changed and reviewed many times before they are approved. +After a patch is approved it will be committed to the repository. + +We will review all submitted patches, but sometimes we are quite busy so +especially for large patches this can take several weeks. + +If you feel that the review process is too slow and you are willing to try to +take over maintainership of the area of code you change then just clone +git master and maintain the area of code there. We will merge each area from +where its best maintained. + +When resubmitting patches, please do not make any significant changes +not related to the comments received during review. Such patches will +be rejected. Instead, submit significant changes or new features as +separate patches. + +@anchor{Regression tests} +@section Regression tests + +Before submitting a patch (or committing to the repository), you should at least +test that you did not break anything. + +Running 'make fate' accomplishes this, please see @url{fate.html} for details. + +[Of course, some patches may change the results of the regression tests. In +this case, the reference results of the regression tests shall be modified +accordingly]. + +@subsection Adding files to the fate-suite dataset + +When there is no muxer or encoder available to generate test media for a +specific test then the media has to be inlcuded in the fate-suite. +First please make sure that the sample file is as small as possible to test the +respective decoder or demuxer sufficiently. Large files increase network +bandwidth and disk space requirements. +Once you have a working fate test and fate sample, provide in the commit +message or introductionary message for the patch series that you post to +the ffmpeg-devel mailing list, a direct link to download the sample media. + + +@subsection Visualizing Test Coverage + +The FFmpeg build system allows visualizing the test coverage in an easy +manner with the coverage tools @code{gcov}/@code{lcov}. This involves +the following steps: + +@enumerate +@item + Configure to compile with instrumentation enabled: + @code{configure --toolchain=gcov}. + +@item + Run your test case, either manually or via FATE. This can be either + the full FATE regression suite, or any arbitrary invocation of any + front-end tool provided by FFmpeg, in any combination. + +@item + Run @code{make lcov} to generate coverage data in HTML format. + +@item + View @code{lcov/index.html} in your preferred HTML viewer. +@end enumerate + +You can use the command @code{make lcov-reset} to reset the coverage +measurements. You will need to rerun @code{make lcov} after running a +new test. + +@subsection Using Valgrind + +The configure script provides a shortcut for using valgrind to spot bugs +related to memory handling. Just add the option +@code{--toolchain=valgrind-memcheck} or @code{--toolchain=valgrind-massif} +to your configure line, and reasonable defaults will be set for running +FATE under the supervision of either the @strong{memcheck} or the +@strong{massif} tool of the valgrind suite. + +In case you need finer control over how valgrind is invoked, use the +@code{--target-exec='valgrind } option in +your configure line instead. + +@anchor{Release process} +@section Release process + +FFmpeg maintains a set of @strong{release branches}, which are the +recommended deliverable for system integrators and distributors (such as +Linux distributions, etc.). At regular times, a @strong{release +manager} prepares, tests and publishes tarballs on the +@url{http://ffmpeg.org} website. + +There are two kinds of releases: + +@enumerate +@item +@strong{Major releases} always include the latest and greatest +features and functionality. + +@item +@strong{Point releases} are cut from @strong{release} branches, +which are named @code{release/X}, with @code{X} being the release +version number. +@end enumerate + +Note that we promise to our users that shared libraries from any FFmpeg +release never break programs that have been @strong{compiled} against +previous versions of @strong{the same release series} in any case! + +However, from time to time, we do make API changes that require adaptations +in applications. Such changes are only allowed in (new) major releases and +require further steps such as bumping library version numbers and/or +adjustments to the symbol versioning file. Please discuss such changes +on the @strong{ffmpeg-devel} mailing list in time to allow forward planning. + +@anchor{Criteria for Point Releases} +@subsection Criteria for Point Releases + +Changes that match the following criteria are valid candidates for +inclusion into a point release: + +@enumerate +@item +Fixes a security issue, preferably identified by a @strong{CVE +number} issued by @url{http://cve.mitre.org/}. + +@item +Fixes a documented bug in @url{https://trac.ffmpeg.org}. + +@item +Improves the included documentation. + +@item +Retains both source code and binary compatibility with previous +point releases of the same release branch. +@end enumerate + +The order for checking the rules is (1 OR 2 OR 3) AND 4. + + +@subsection Release Checklist + +The release process involves the following steps: + +@enumerate +@item +Ensure that the @file{RELEASE} file contains the version number for +the upcoming release. + +@item +Add the release at @url{https://trac.ffmpeg.org/admin/ticket/versions}. + +@item +Announce the intent to do a release to the mailing list. + +@item +Make sure all relevant security fixes have been backported. See +@url{https://ffmpeg.org/security.html}. + +@item +Ensure that the FATE regression suite still passes in the release +branch on at least @strong{i386} and @strong{amd64} +(cf. @ref{Regression tests}). + +@item +Prepare the release tarballs in @code{bz2} and @code{gz} formats, and +supplementing files that contain @code{gpg} signatures + +@item +Publish the tarballs at @url{http://ffmpeg.org/releases}. Create and +push an annotated tag in the form @code{nX}, with @code{X} +containing the version number. + +@item +Propose and send a patch to the @strong{ffmpeg-devel} mailing list +with a news entry for the website. + +@item +Publish the news entry. + +@item +Send announcement to the mailing list. +@end enumerate + +@bye diff --git a/ffmpeg/doc/devices.texi b/ffmpeg/doc/devices.texi new file mode 100644 index 0000000..5e74a96 --- /dev/null +++ b/ffmpeg/doc/devices.texi @@ -0,0 +1,25 @@ +@chapter Device Options +@c man begin DEVICE OPTIONS + +The libavdevice library provides the same interface as +libavformat. Namely, an input device is considered like a demuxer, and +an output device like a muxer, and the interface and generic device +options are the same provided by libavformat (see the ffmpeg-formats +manual). + +In addition each input or output device may support so-called private +options, which are specific for that component. + +Options may be set by specifying -@var{option} @var{value} in the +FFmpeg tools, or by setting the value explicitly in the device +@code{AVFormatContext} options or using the @file{libavutil/opt.h} API +for programmatic use. + +@c man end DEVICE OPTIONS + +@ifclear config-writeonly +@include indevs.texi +@end ifclear +@ifclear config-readonly +@include outdevs.texi +@end ifclear diff --git a/ffmpeg/doc/doxy-wrapper.sh b/ffmpeg/doc/doxy-wrapper.sh new file mode 100755 index 0000000..d88f60e --- /dev/null +++ b/ffmpeg/doc/doxy-wrapper.sh @@ -0,0 +1,13 @@ +#!/bin/sh + +SRC_PATH="${1}" +DOXYFILE="${2}" +DOXYGEN="${3}" + +shift 3 + +$DOXYGEN - < +#include +#include +#include + +struct buffer_data { + uint8_t *ptr; + size_t size; ///< size left in the buffer +}; + +static int read_packet(void *opaque, uint8_t *buf, int buf_size) +{ + struct buffer_data *bd = (struct buffer_data *)opaque; + buf_size = FFMIN(buf_size, bd->size); + + printf("ptr:%p size:%zu\n", bd->ptr, bd->size); + + /* copy internal buffer data to buf */ + memcpy(buf, bd->ptr, buf_size); + bd->ptr += buf_size; + bd->size -= buf_size; + + return buf_size; +} + +int main(int argc, char *argv[]) +{ + AVFormatContext *fmt_ctx = NULL; + AVIOContext *avio_ctx = NULL; + uint8_t *buffer = NULL, *avio_ctx_buffer = NULL; + size_t buffer_size, avio_ctx_buffer_size = 4096; + char *input_filename = NULL; + int ret = 0; + struct buffer_data bd = { 0 }; + + if (argc != 2) { + fprintf(stderr, "usage: %s input_file\n" + "API example program to show how to read from a custom buffer " + "accessed through AVIOContext.\n", argv[0]); + return 1; + } + input_filename = argv[1]; + + /* register codecs and formats and other lavf/lavc components*/ + av_register_all(); + + /* slurp file content into buffer */ + ret = av_file_map(input_filename, &buffer, &buffer_size, 0, NULL); + if (ret < 0) + goto end; + + /* fill opaque structure used by the AVIOContext read callback */ + bd.ptr = buffer; + bd.size = buffer_size; + + if (!(fmt_ctx = avformat_alloc_context())) { + ret = AVERROR(ENOMEM); + goto end; + } + + avio_ctx_buffer = av_malloc(avio_ctx_buffer_size); + if (!avio_ctx_buffer) { + ret = AVERROR(ENOMEM); + goto end; + } + avio_ctx = avio_alloc_context(avio_ctx_buffer, avio_ctx_buffer_size, + 0, &bd, &read_packet, NULL, NULL); + if (!avio_ctx) { + ret = AVERROR(ENOMEM); + goto end; + } + fmt_ctx->pb = avio_ctx; + + ret = avformat_open_input(&fmt_ctx, NULL, NULL, NULL); + if (ret < 0) { + fprintf(stderr, "Could not open input\n"); + goto end; + } + + ret = avformat_find_stream_info(fmt_ctx, NULL); + if (ret < 0) { + fprintf(stderr, "Could not find stream information\n"); + goto end; + } + + av_dump_format(fmt_ctx, 0, input_filename, 0); + +end: + avformat_close_input(&fmt_ctx); + /* note: the internal buffer could have changed, and be != avio_ctx_buffer */ + if (avio_ctx) { + av_freep(&avio_ctx->buffer); + av_freep(&avio_ctx); + } + av_file_unmap(buffer, buffer_size); + + if (ret < 0) { + fprintf(stderr, "Error occurred: %s\n", av_err2str(ret)); + return 1; + } + + return 0; +} diff --git a/ffmpeg/doc/examples/decoding_encoding.c b/ffmpeg/doc/examples/decoding_encoding.c new file mode 100644 index 0000000..556fe98 --- /dev/null +++ b/ffmpeg/doc/examples/decoding_encoding.c @@ -0,0 +1,664 @@ +/* + * Copyright (c) 2001 Fabrice Bellard + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ + +/** + * @file + * libavcodec API use example. + * + * @example decoding_encoding.c + * Note that libavcodec only handles codecs (mpeg, mpeg4, etc...), + * not file formats (avi, vob, mp4, mov, mkv, mxf, flv, mpegts, mpegps, etc...). See library 'libavformat' for the + * format handling + */ + +#include + +#include +#include +#include +#include +#include +#include +#include + +#define INBUF_SIZE 4096 +#define AUDIO_INBUF_SIZE 20480 +#define AUDIO_REFILL_THRESH 4096 + +/* check that a given sample format is supported by the encoder */ +static int check_sample_fmt(AVCodec *codec, enum AVSampleFormat sample_fmt) +{ + const enum AVSampleFormat *p = codec->sample_fmts; + + while (*p != AV_SAMPLE_FMT_NONE) { + if (*p == sample_fmt) + return 1; + p++; + } + return 0; +} + +/* just pick the highest supported samplerate */ +static int select_sample_rate(AVCodec *codec) +{ + const int *p; + int best_samplerate = 0; + + if (!codec->supported_samplerates) + return 44100; + + p = codec->supported_samplerates; + while (*p) { + best_samplerate = FFMAX(*p, best_samplerate); + p++; + } + return best_samplerate; +} + +/* select layout with the highest channel count */ +static int select_channel_layout(AVCodec *codec) +{ + const uint64_t *p; + uint64_t best_ch_layout = 0; + int best_nb_channels = 0; + + if (!codec->channel_layouts) + return AV_CH_LAYOUT_STEREO; + + p = codec->channel_layouts; + while (*p) { + int nb_channels = av_get_channel_layout_nb_channels(*p); + + if (nb_channels > best_nb_channels) { + best_ch_layout = *p; + best_nb_channels = nb_channels; + } + p++; + } + return best_ch_layout; +} + +/* + * Audio encoding example + */ +static void audio_encode_example(const char *filename) +{ + AVCodec *codec; + AVCodecContext *c= NULL; + AVFrame *frame; + AVPacket pkt; + int i, j, k, ret, got_output; + int buffer_size; + FILE *f; + uint16_t *samples; + float t, tincr; + + printf("Encode audio file %s\n", filename); + + /* find the MP2 encoder */ + codec = avcodec_find_encoder(AV_CODEC_ID_MP2); + if (!codec) { + fprintf(stderr, "Codec not found\n"); + exit(1); + } + + c = avcodec_alloc_context3(codec); + if (!c) { + fprintf(stderr, "Could not allocate audio codec context\n"); + exit(1); + } + + /* put sample parameters */ + c->bit_rate = 64000; + + /* check that the encoder supports s16 pcm input */ + c->sample_fmt = AV_SAMPLE_FMT_S16; + if (!check_sample_fmt(codec, c->sample_fmt)) { + fprintf(stderr, "Encoder does not support sample format %s", + av_get_sample_fmt_name(c->sample_fmt)); + exit(1); + } + + /* select other audio parameters supported by the encoder */ + c->sample_rate = select_sample_rate(codec); + c->channel_layout = select_channel_layout(codec); + c->channels = av_get_channel_layout_nb_channels(c->channel_layout); + + /* open it */ + if (avcodec_open2(c, codec, NULL) < 0) { + fprintf(stderr, "Could not open codec\n"); + exit(1); + } + + f = fopen(filename, "wb"); + if (!f) { + fprintf(stderr, "Could not open %s\n", filename); + exit(1); + } + + /* frame containing input raw audio */ + frame = av_frame_alloc(); + if (!frame) { + fprintf(stderr, "Could not allocate audio frame\n"); + exit(1); + } + + frame->nb_samples = c->frame_size; + frame->format = c->sample_fmt; + frame->channel_layout = c->channel_layout; + + /* the codec gives us the frame size, in samples, + * we calculate the size of the samples buffer in bytes */ + buffer_size = av_samples_get_buffer_size(NULL, c->channels, c->frame_size, + c->sample_fmt, 0); + if (buffer_size < 0) { + fprintf(stderr, "Could not get sample buffer size\n"); + exit(1); + } + samples = av_malloc(buffer_size); + if (!samples) { + fprintf(stderr, "Could not allocate %d bytes for samples buffer\n", + buffer_size); + exit(1); + } + /* setup the data pointers in the AVFrame */ + ret = avcodec_fill_audio_frame(frame, c->channels, c->sample_fmt, + (const uint8_t*)samples, buffer_size, 0); + if (ret < 0) { + fprintf(stderr, "Could not setup audio frame\n"); + exit(1); + } + + /* encode a single tone sound */ + t = 0; + tincr = 2 * M_PI * 440.0 / c->sample_rate; + for (i = 0; i < 200; i++) { + av_init_packet(&pkt); + pkt.data = NULL; // packet data will be allocated by the encoder + pkt.size = 0; + + for (j = 0; j < c->frame_size; j++) { + samples[2*j] = (int)(sin(t) * 10000); + + for (k = 1; k < c->channels; k++) + samples[2*j + k] = samples[2*j]; + t += tincr; + } + /* encode the samples */ + ret = avcodec_encode_audio2(c, &pkt, frame, &got_output); + if (ret < 0) { + fprintf(stderr, "Error encoding audio frame\n"); + exit(1); + } + if (got_output) { + fwrite(pkt.data, 1, pkt.size, f); + av_free_packet(&pkt); + } + } + + /* get the delayed frames */ + for (got_output = 1; got_output; i++) { + ret = avcodec_encode_audio2(c, &pkt, NULL, &got_output); + if (ret < 0) { + fprintf(stderr, "Error encoding frame\n"); + exit(1); + } + + if (got_output) { + fwrite(pkt.data, 1, pkt.size, f); + av_free_packet(&pkt); + } + } + fclose(f); + + av_freep(&samples); + av_frame_free(&frame); + avcodec_close(c); + av_free(c); +} + +/* + * Audio decoding. + */ +static void audio_decode_example(const char *outfilename, const char *filename) +{ + AVCodec *codec; + AVCodecContext *c= NULL; + int len; + FILE *f, *outfile; + uint8_t inbuf[AUDIO_INBUF_SIZE + FF_INPUT_BUFFER_PADDING_SIZE]; + AVPacket avpkt; + AVFrame *decoded_frame = NULL; + + av_init_packet(&avpkt); + + printf("Decode audio file %s to %s\n", filename, outfilename); + + /* find the mpeg audio decoder */ + codec = avcodec_find_decoder(AV_CODEC_ID_MP2); + if (!codec) { + fprintf(stderr, "Codec not found\n"); + exit(1); + } + + c = avcodec_alloc_context3(codec); + if (!c) { + fprintf(stderr, "Could not allocate audio codec context\n"); + exit(1); + } + + /* open it */ + if (avcodec_open2(c, codec, NULL) < 0) { + fprintf(stderr, "Could not open codec\n"); + exit(1); + } + + f = fopen(filename, "rb"); + if (!f) { + fprintf(stderr, "Could not open %s\n", filename); + exit(1); + } + outfile = fopen(outfilename, "wb"); + if (!outfile) { + av_free(c); + exit(1); + } + + /* decode until eof */ + avpkt.data = inbuf; + avpkt.size = fread(inbuf, 1, AUDIO_INBUF_SIZE, f); + + while (avpkt.size > 0) { + int got_frame = 0; + + if (!decoded_frame) { + if (!(decoded_frame = av_frame_alloc())) { + fprintf(stderr, "Could not allocate audio frame\n"); + exit(1); + } + } + + len = avcodec_decode_audio4(c, decoded_frame, &got_frame, &avpkt); + if (len < 0) { + fprintf(stderr, "Error while decoding\n"); + exit(1); + } + if (got_frame) { + /* if a frame has been decoded, output it */ + int data_size = av_samples_get_buffer_size(NULL, c->channels, + decoded_frame->nb_samples, + c->sample_fmt, 1); + if (data_size < 0) { + /* This should not occur, checking just for paranoia */ + fprintf(stderr, "Failed to calculate data size\n"); + exit(1); + } + fwrite(decoded_frame->data[0], 1, data_size, outfile); + } + avpkt.size -= len; + avpkt.data += len; + avpkt.dts = + avpkt.pts = AV_NOPTS_VALUE; + if (avpkt.size < AUDIO_REFILL_THRESH) { + /* Refill the input buffer, to avoid trying to decode + * incomplete frames. Instead of this, one could also use + * a parser, or use a proper container format through + * libavformat. */ + memmove(inbuf, avpkt.data, avpkt.size); + avpkt.data = inbuf; + len = fread(avpkt.data + avpkt.size, 1, + AUDIO_INBUF_SIZE - avpkt.size, f); + if (len > 0) + avpkt.size += len; + } + } + + fclose(outfile); + fclose(f); + + avcodec_close(c); + av_free(c); + av_frame_free(&decoded_frame); +} + +/* + * Video encoding example + */ +static void video_encode_example(const char *filename, int codec_id) +{ + AVCodec *codec; + AVCodecContext *c= NULL; + int i, ret, x, y, got_output; + FILE *f; + AVFrame *frame; + AVPacket pkt; + uint8_t endcode[] = { 0, 0, 1, 0xb7 }; + + printf("Encode video file %s\n", filename); + + /* find the mpeg1 video encoder */ + codec = avcodec_find_encoder(codec_id); + if (!codec) { + fprintf(stderr, "Codec not found\n"); + exit(1); + } + + c = avcodec_alloc_context3(codec); + if (!c) { + fprintf(stderr, "Could not allocate video codec context\n"); + exit(1); + } + + /* put sample parameters */ + c->bit_rate = 400000; + /* resolution must be a multiple of two */ + c->width = 352; + c->height = 288; + /* frames per second */ + c->time_base = (AVRational){1,25}; + /* emit one intra frame every ten frames + * check frame pict_type before passing frame + * to encoder, if frame->pict_type is AV_PICTURE_TYPE_I + * then gop_size is ignored and the output of encoder + * will always be I frame irrespective to gop_size + */ + c->gop_size = 10; + c->max_b_frames = 1; + c->pix_fmt = AV_PIX_FMT_YUV420P; + + if (codec_id == AV_CODEC_ID_H264) + av_opt_set(c->priv_data, "preset", "slow", 0); + + /* open it */ + if (avcodec_open2(c, codec, NULL) < 0) { + fprintf(stderr, "Could not open codec\n"); + exit(1); + } + + f = fopen(filename, "wb"); + if (!f) { + fprintf(stderr, "Could not open %s\n", filename); + exit(1); + } + + frame = av_frame_alloc(); + if (!frame) { + fprintf(stderr, "Could not allocate video frame\n"); + exit(1); + } + frame->format = c->pix_fmt; + frame->width = c->width; + frame->height = c->height; + + /* the image can be allocated by any means and av_image_alloc() is + * just the most convenient way if av_malloc() is to be used */ + ret = av_image_alloc(frame->data, frame->linesize, c->width, c->height, + c->pix_fmt, 32); + if (ret < 0) { + fprintf(stderr, "Could not allocate raw picture buffer\n"); + exit(1); + } + + /* encode 1 second of video */ + for (i = 0; i < 25; i++) { + av_init_packet(&pkt); + pkt.data = NULL; // packet data will be allocated by the encoder + pkt.size = 0; + + fflush(stdout); + /* prepare a dummy image */ + /* Y */ + for (y = 0; y < c->height; y++) { + for (x = 0; x < c->width; x++) { + frame->data[0][y * frame->linesize[0] + x] = x + y + i * 3; + } + } + + /* Cb and Cr */ + for (y = 0; y < c->height/2; y++) { + for (x = 0; x < c->width/2; x++) { + frame->data[1][y * frame->linesize[1] + x] = 128 + y + i * 2; + frame->data[2][y * frame->linesize[2] + x] = 64 + x + i * 5; + } + } + + frame->pts = i; + + /* encode the image */ + ret = avcodec_encode_video2(c, &pkt, frame, &got_output); + if (ret < 0) { + fprintf(stderr, "Error encoding frame\n"); + exit(1); + } + + if (got_output) { + printf("Write frame %3d (size=%5d)\n", i, pkt.size); + fwrite(pkt.data, 1, pkt.size, f); + av_free_packet(&pkt); + } + } + + /* get the delayed frames */ + for (got_output = 1; got_output; i++) { + fflush(stdout); + + ret = avcodec_encode_video2(c, &pkt, NULL, &got_output); + if (ret < 0) { + fprintf(stderr, "Error encoding frame\n"); + exit(1); + } + + if (got_output) { + printf("Write frame %3d (size=%5d)\n", i, pkt.size); + fwrite(pkt.data, 1, pkt.size, f); + av_free_packet(&pkt); + } + } + + /* add sequence end code to have a real mpeg file */ + fwrite(endcode, 1, sizeof(endcode), f); + fclose(f); + + avcodec_close(c); + av_free(c); + av_freep(&frame->data[0]); + av_frame_free(&frame); + printf("\n"); +} + +/* + * Video decoding example + */ + +static void pgm_save(unsigned char *buf, int wrap, int xsize, int ysize, + char *filename) +{ + FILE *f; + int i; + + f = fopen(filename,"w"); + fprintf(f, "P5\n%d %d\n%d\n", xsize, ysize, 255); + for (i = 0; i < ysize; i++) + fwrite(buf + i * wrap, 1, xsize, f); + fclose(f); +} + +static int decode_write_frame(const char *outfilename, AVCodecContext *avctx, + AVFrame *frame, int *frame_count, AVPacket *pkt, int last) +{ + int len, got_frame; + char buf[1024]; + + len = avcodec_decode_video2(avctx, frame, &got_frame, pkt); + if (len < 0) { + fprintf(stderr, "Error while decoding frame %d\n", *frame_count); + return len; + } + if (got_frame) { + printf("Saving %sframe %3d\n", last ? "last " : "", *frame_count); + fflush(stdout); + + /* the picture is allocated by the decoder, no need to free it */ + snprintf(buf, sizeof(buf), outfilename, *frame_count); + pgm_save(frame->data[0], frame->linesize[0], + avctx->width, avctx->height, buf); + (*frame_count)++; + } + if (pkt->data) { + pkt->size -= len; + pkt->data += len; + } + return 0; +} + +static void video_decode_example(const char *outfilename, const char *filename) +{ + AVCodec *codec; + AVCodecContext *c= NULL; + int frame_count; + FILE *f; + AVFrame *frame; + uint8_t inbuf[INBUF_SIZE + FF_INPUT_BUFFER_PADDING_SIZE]; + AVPacket avpkt; + + av_init_packet(&avpkt); + + /* set end of buffer to 0 (this ensures that no overreading happens for damaged mpeg streams) */ + memset(inbuf + INBUF_SIZE, 0, FF_INPUT_BUFFER_PADDING_SIZE); + + printf("Decode video file %s to %s\n", filename, outfilename); + + /* find the mpeg1 video decoder */ + codec = avcodec_find_decoder(AV_CODEC_ID_MPEG1VIDEO); + if (!codec) { + fprintf(stderr, "Codec not found\n"); + exit(1); + } + + c = avcodec_alloc_context3(codec); + if (!c) { + fprintf(stderr, "Could not allocate video codec context\n"); + exit(1); + } + + if(codec->capabilities&CODEC_CAP_TRUNCATED) + c->flags|= CODEC_FLAG_TRUNCATED; /* we do not send complete frames */ + + /* For some codecs, such as msmpeg4 and mpeg4, width and height + MUST be initialized there because this information is not + available in the bitstream. */ + + /* open it */ + if (avcodec_open2(c, codec, NULL) < 0) { + fprintf(stderr, "Could not open codec\n"); + exit(1); + } + + f = fopen(filename, "rb"); + if (!f) { + fprintf(stderr, "Could not open %s\n", filename); + exit(1); + } + + frame = av_frame_alloc(); + if (!frame) { + fprintf(stderr, "Could not allocate video frame\n"); + exit(1); + } + + frame_count = 0; + for (;;) { + avpkt.size = fread(inbuf, 1, INBUF_SIZE, f); + if (avpkt.size == 0) + break; + + /* NOTE1: some codecs are stream based (mpegvideo, mpegaudio) + and this is the only method to use them because you cannot + know the compressed data size before analysing it. + + BUT some other codecs (msmpeg4, mpeg4) are inherently frame + based, so you must call them with all the data for one + frame exactly. You must also initialize 'width' and + 'height' before initializing them. */ + + /* NOTE2: some codecs allow the raw parameters (frame size, + sample rate) to be changed at any frame. We handle this, so + you should also take care of it */ + + /* here, we use a stream based decoder (mpeg1video), so we + feed decoder and see if it could decode a frame */ + avpkt.data = inbuf; + while (avpkt.size > 0) + if (decode_write_frame(outfilename, c, frame, &frame_count, &avpkt, 0) < 0) + exit(1); + } + + /* some codecs, such as MPEG, transmit the I and P frame with a + latency of one frame. You must do the following to have a + chance to get the last frame of the video */ + avpkt.data = NULL; + avpkt.size = 0; + decode_write_frame(outfilename, c, frame, &frame_count, &avpkt, 1); + + fclose(f); + + avcodec_close(c); + av_free(c); + av_frame_free(&frame); + printf("\n"); +} + +int main(int argc, char **argv) +{ + const char *output_type; + + /* register all the codecs */ + avcodec_register_all(); + + if (argc < 2) { + printf("usage: %s output_type\n" + "API example program to decode/encode a media stream with libavcodec.\n" + "This program generates a synthetic stream and encodes it to a file\n" + "named test.h264, test.mp2 or test.mpg depending on output_type.\n" + "The encoded stream is then decoded and written to a raw data output.\n" + "output_type must be chosen between 'h264', 'mp2', 'mpg'.\n", + argv[0]); + return 1; + } + output_type = argv[1]; + + if (!strcmp(output_type, "h264")) { + video_encode_example("test.h264", AV_CODEC_ID_H264); + } else if (!strcmp(output_type, "mp2")) { + audio_encode_example("test.mp2"); + audio_decode_example("test.sw", "test.mp2"); + } else if (!strcmp(output_type, "mpg")) { + video_encode_example("test.mpg", AV_CODEC_ID_MPEG1VIDEO); + video_decode_example("test%02d.pgm", "test.mpg"); + } else { + fprintf(stderr, "Invalid output type '%s', choose between 'h264', 'mp2', or 'mpg'\n", + output_type); + return 1; + } + + return 0; +} diff --git a/ffmpeg/doc/examples/demuxing_decoding.c b/ffmpeg/doc/examples/demuxing_decoding.c new file mode 100644 index 0000000..2ce4018 --- /dev/null +++ b/ffmpeg/doc/examples/demuxing_decoding.c @@ -0,0 +1,386 @@ +/* + * Copyright (c) 2012 Stefano Sabatini + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ + +/** + * @file + * Demuxing and decoding example. + * + * Show how to use the libavformat and libavcodec API to demux and + * decode audio and video data. + * @example demuxing_decoding.c + */ + +#include +#include +#include +#include + +static AVFormatContext *fmt_ctx = NULL; +static AVCodecContext *video_dec_ctx = NULL, *audio_dec_ctx; +static AVStream *video_stream = NULL, *audio_stream = NULL; +static const char *src_filename = NULL; +static const char *video_dst_filename = NULL; +static const char *audio_dst_filename = NULL; +static FILE *video_dst_file = NULL; +static FILE *audio_dst_file = NULL; + +static uint8_t *video_dst_data[4] = {NULL}; +static int video_dst_linesize[4]; +static int video_dst_bufsize; + +static int video_stream_idx = -1, audio_stream_idx = -1; +static AVFrame *frame = NULL; +static AVPacket pkt; +static int video_frame_count = 0; +static int audio_frame_count = 0; + +/* The different ways of decoding and managing data memory. You are not + * supposed to support all the modes in your application but pick the one most + * appropriate to your needs. Look for the use of api_mode in this example to + * see what are the differences of API usage between them */ +enum { + API_MODE_OLD = 0, /* old method, deprecated */ + API_MODE_NEW_API_REF_COUNT = 1, /* new method, using the frame reference counting */ + API_MODE_NEW_API_NO_REF_COUNT = 2, /* new method, without reference counting */ +}; + +static int api_mode = API_MODE_OLD; + +static int decode_packet(int *got_frame, int cached) +{ + int ret = 0; + int decoded = pkt.size; + + *got_frame = 0; + + if (pkt.stream_index == video_stream_idx) { + /* decode video frame */ + ret = avcodec_decode_video2(video_dec_ctx, frame, got_frame, &pkt); + if (ret < 0) { + fprintf(stderr, "Error decoding video frame (%s)\n", av_err2str(ret)); + return ret; + } + + if (*got_frame) { + printf("video_frame%s n:%d coded_n:%d pts:%s\n", + cached ? "(cached)" : "", + video_frame_count++, frame->coded_picture_number, + av_ts2timestr(frame->pts, &video_dec_ctx->time_base)); + + /* copy decoded frame to destination buffer: + * this is required since rawvideo expects non aligned data */ + av_image_copy(video_dst_data, video_dst_linesize, + (const uint8_t **)(frame->data), frame->linesize, + video_dec_ctx->pix_fmt, video_dec_ctx->width, video_dec_ctx->height); + + /* write to rawvideo file */ + fwrite(video_dst_data[0], 1, video_dst_bufsize, video_dst_file); + } + } else if (pkt.stream_index == audio_stream_idx) { + /* decode audio frame */ + ret = avcodec_decode_audio4(audio_dec_ctx, frame, got_frame, &pkt); + if (ret < 0) { + fprintf(stderr, "Error decoding audio frame (%s)\n", av_err2str(ret)); + return ret; + } + /* Some audio decoders decode only part of the packet, and have to be + * called again with the remainder of the packet data. + * Sample: fate-suite/lossless-audio/luckynight-partial.shn + * Also, some decoders might over-read the packet. */ + decoded = FFMIN(ret, pkt.size); + + if (*got_frame) { + size_t unpadded_linesize = frame->nb_samples * av_get_bytes_per_sample(frame->format); + printf("audio_frame%s n:%d nb_samples:%d pts:%s\n", + cached ? "(cached)" : "", + audio_frame_count++, frame->nb_samples, + av_ts2timestr(frame->pts, &audio_dec_ctx->time_base)); + + /* Write the raw audio data samples of the first plane. This works + * fine for packed formats (e.g. AV_SAMPLE_FMT_S16). However, + * most audio decoders output planar audio, which uses a separate + * plane of audio samples for each channel (e.g. AV_SAMPLE_FMT_S16P). + * In other words, this code will write only the first audio channel + * in these cases. + * You should use libswresample or libavfilter to convert the frame + * to packed data. */ + fwrite(frame->extended_data[0], 1, unpadded_linesize, audio_dst_file); + } + } + + /* If we use the new API with reference counting, we own the data and need + * to de-reference it when we don't use it anymore */ + if (*got_frame && api_mode == API_MODE_NEW_API_REF_COUNT) + av_frame_unref(frame); + + return decoded; +} + +static int open_codec_context(int *stream_idx, + AVFormatContext *fmt_ctx, enum AVMediaType type) +{ + int ret; + AVStream *st; + AVCodecContext *dec_ctx = NULL; + AVCodec *dec = NULL; + AVDictionary *opts = NULL; + + ret = av_find_best_stream(fmt_ctx, type, -1, -1, NULL, 0); + if (ret < 0) { + fprintf(stderr, "Could not find %s stream in input file '%s'\n", + av_get_media_type_string(type), src_filename); + return ret; + } else { + *stream_idx = ret; + st = fmt_ctx->streams[*stream_idx]; + + /* find decoder for the stream */ + dec_ctx = st->codec; + dec = avcodec_find_decoder(dec_ctx->codec_id); + if (!dec) { + fprintf(stderr, "Failed to find %s codec\n", + av_get_media_type_string(type)); + return AVERROR(EINVAL); + } + + /* Init the decoders, with or without reference counting */ + if (api_mode == API_MODE_NEW_API_REF_COUNT) + av_dict_set(&opts, "refcounted_frames", "1", 0); + if ((ret = avcodec_open2(dec_ctx, dec, &opts)) < 0) { + fprintf(stderr, "Failed to open %s codec\n", + av_get_media_type_string(type)); + return ret; + } + } + + return 0; +} + +static int get_format_from_sample_fmt(const char **fmt, + enum AVSampleFormat sample_fmt) +{ + int i; + struct sample_fmt_entry { + enum AVSampleFormat sample_fmt; const char *fmt_be, *fmt_le; + } sample_fmt_entries[] = { + { AV_SAMPLE_FMT_U8, "u8", "u8" }, + { AV_SAMPLE_FMT_S16, "s16be", "s16le" }, + { AV_SAMPLE_FMT_S32, "s32be", "s32le" }, + { AV_SAMPLE_FMT_FLT, "f32be", "f32le" }, + { AV_SAMPLE_FMT_DBL, "f64be", "f64le" }, + }; + *fmt = NULL; + + for (i = 0; i < FF_ARRAY_ELEMS(sample_fmt_entries); i++) { + struct sample_fmt_entry *entry = &sample_fmt_entries[i]; + if (sample_fmt == entry->sample_fmt) { + *fmt = AV_NE(entry->fmt_be, entry->fmt_le); + return 0; + } + } + + fprintf(stderr, + "sample format %s is not supported as output format\n", + av_get_sample_fmt_name(sample_fmt)); + return -1; +} + +int main (int argc, char **argv) +{ + int ret = 0, got_frame; + + if (argc != 4 && argc != 5) { + fprintf(stderr, "usage: %s [-refcount=] " + "input_file video_output_file audio_output_file\n" + "API example program to show how to read frames from an input file.\n" + "This program reads frames from a file, decodes them, and writes decoded\n" + "video frames to a rawvideo file named video_output_file, and decoded\n" + "audio frames to a rawaudio file named audio_output_file.\n\n" + "If the -refcount option is specified, the program use the\n" + "reference counting frame system which allows keeping a copy of\n" + "the data for longer than one decode call. If unset, it's using\n" + "the classic old method.\n" + "\n", argv[0]); + exit(1); + } + if (argc == 5) { + const char *mode = argv[1] + strlen("-refcount="); + if (!strcmp(mode, "old")) api_mode = API_MODE_OLD; + else if (!strcmp(mode, "new_norefcount")) api_mode = API_MODE_NEW_API_NO_REF_COUNT; + else if (!strcmp(mode, "new_refcount")) api_mode = API_MODE_NEW_API_REF_COUNT; + else { + fprintf(stderr, "unknow mode '%s'\n", mode); + exit(1); + } + argv++; + } + src_filename = argv[1]; + video_dst_filename = argv[2]; + audio_dst_filename = argv[3]; + + /* register all formats and codecs */ + av_register_all(); + + /* open input file, and allocate format context */ + if (avformat_open_input(&fmt_ctx, src_filename, NULL, NULL) < 0) { + fprintf(stderr, "Could not open source file %s\n", src_filename); + exit(1); + } + + /* retrieve stream information */ + if (avformat_find_stream_info(fmt_ctx, NULL) < 0) { + fprintf(stderr, "Could not find stream information\n"); + exit(1); + } + + if (open_codec_context(&video_stream_idx, fmt_ctx, AVMEDIA_TYPE_VIDEO) >= 0) { + video_stream = fmt_ctx->streams[video_stream_idx]; + video_dec_ctx = video_stream->codec; + + video_dst_file = fopen(video_dst_filename, "wb"); + if (!video_dst_file) { + fprintf(stderr, "Could not open destination file %s\n", video_dst_filename); + ret = 1; + goto end; + } + + /* allocate image where the decoded image will be put */ + ret = av_image_alloc(video_dst_data, video_dst_linesize, + video_dec_ctx->width, video_dec_ctx->height, + video_dec_ctx->pix_fmt, 1); + if (ret < 0) { + fprintf(stderr, "Could not allocate raw video buffer\n"); + goto end; + } + video_dst_bufsize = ret; + } + + if (open_codec_context(&audio_stream_idx, fmt_ctx, AVMEDIA_TYPE_AUDIO) >= 0) { + audio_stream = fmt_ctx->streams[audio_stream_idx]; + audio_dec_ctx = audio_stream->codec; + audio_dst_file = fopen(audio_dst_filename, "wb"); + if (!audio_dst_file) { + fprintf(stderr, "Could not open destination file %s\n", audio_dst_filename); + ret = 1; + goto end; + } + } + + /* dump input information to stderr */ + av_dump_format(fmt_ctx, 0, src_filename, 0); + + if (!audio_stream && !video_stream) { + fprintf(stderr, "Could not find audio or video stream in the input, aborting\n"); + ret = 1; + goto end; + } + + /* When using the new API, you need to use the libavutil/frame.h API, while + * the classic frame management is available in libavcodec */ + if (api_mode == API_MODE_OLD) + frame = avcodec_alloc_frame(); + else + frame = av_frame_alloc(); + if (!frame) { + fprintf(stderr, "Could not allocate frame\n"); + ret = AVERROR(ENOMEM); + goto end; + } + + /* initialize packet, set data to NULL, let the demuxer fill it */ + av_init_packet(&pkt); + pkt.data = NULL; + pkt.size = 0; + + if (video_stream) + printf("Demuxing video from file '%s' into '%s'\n", src_filename, video_dst_filename); + if (audio_stream) + printf("Demuxing audio from file '%s' into '%s'\n", src_filename, audio_dst_filename); + + /* read frames from the file */ + while (av_read_frame(fmt_ctx, &pkt) >= 0) { + AVPacket orig_pkt = pkt; + do { + ret = decode_packet(&got_frame, 0); + if (ret < 0) + break; + pkt.data += ret; + pkt.size -= ret; + } while (pkt.size > 0); + av_free_packet(&orig_pkt); + } + + /* flush cached frames */ + pkt.data = NULL; + pkt.size = 0; + do { + decode_packet(&got_frame, 1); + } while (got_frame); + + printf("Demuxing succeeded.\n"); + + if (video_stream) { + printf("Play the output video file with the command:\n" + "ffplay -f rawvideo -pix_fmt %s -video_size %dx%d %s\n", + av_get_pix_fmt_name(video_dec_ctx->pix_fmt), video_dec_ctx->width, video_dec_ctx->height, + video_dst_filename); + } + + if (audio_stream) { + enum AVSampleFormat sfmt = audio_dec_ctx->sample_fmt; + int n_channels = audio_dec_ctx->channels; + const char *fmt; + + if (av_sample_fmt_is_planar(sfmt)) { + const char *packed = av_get_sample_fmt_name(sfmt); + printf("Warning: the sample format the decoder produced is planar " + "(%s). This example will output the first channel only.\n", + packed ? packed : "?"); + sfmt = av_get_packed_sample_fmt(sfmt); + n_channels = 1; + } + + if ((ret = get_format_from_sample_fmt(&fmt, sfmt)) < 0) + goto end; + + printf("Play the output audio file with the command:\n" + "ffplay -f %s -ac %d -ar %d %s\n", + fmt, n_channels, audio_dec_ctx->sample_rate, + audio_dst_filename); + } + +end: + avcodec_close(video_dec_ctx); + avcodec_close(audio_dec_ctx); + avformat_close_input(&fmt_ctx); + if (video_dst_file) + fclose(video_dst_file); + if (audio_dst_file) + fclose(audio_dst_file); + if (api_mode == API_MODE_OLD) + avcodec_free_frame(&frame); + else + av_frame_free(&frame); + av_free(video_dst_data[0]); + + return ret < 0; +} diff --git a/ffmpeg/doc/examples/extract_mvs.c b/ffmpeg/doc/examples/extract_mvs.c new file mode 100644 index 0000000..d6fd613 --- /dev/null +++ b/ffmpeg/doc/examples/extract_mvs.c @@ -0,0 +1,185 @@ +/* + * Copyright (c) 2012 Stefano Sabatini + * Copyright (c) 2014 Clément Bœsch + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ + +#include +#include + +static AVFormatContext *fmt_ctx = NULL; +static AVCodecContext *video_dec_ctx = NULL; +static AVStream *video_stream = NULL; +static const char *src_filename = NULL; + +static int video_stream_idx = -1; +static AVFrame *frame = NULL; +static AVPacket pkt; +static int video_frame_count = 0; + +static int decode_packet(int *got_frame, int cached) +{ + int decoded = pkt.size; + + *got_frame = 0; + + if (pkt.stream_index == video_stream_idx) { + int ret = avcodec_decode_video2(video_dec_ctx, frame, got_frame, &pkt); + if (ret < 0) { + fprintf(stderr, "Error decoding video frame (%s)\n", av_err2str(ret)); + return ret; + } + + if (*got_frame) { + int i; + AVFrameSideData *sd; + + video_frame_count++; + sd = av_frame_get_side_data(frame, AV_FRAME_DATA_MOTION_VECTORS); + if (sd) { + const AVMotionVector *mvs = (const AVMotionVector *)sd->data; + for (i = 0; i < sd->size / sizeof(*mvs); i++) { + const AVMotionVector *mv = &mvs[i]; + printf("%d,%2d,%2d,%2d,%4d,%4d,%4d,%4d,0x%"PRIx64"\n", + video_frame_count, mv->source, + mv->w, mv->h, mv->src_x, mv->src_y, + mv->dst_x, mv->dst_y, mv->flags); + } + } + } + } + + return decoded; +} + +static int open_codec_context(int *stream_idx, + AVFormatContext *fmt_ctx, enum AVMediaType type) +{ + int ret; + AVStream *st; + AVCodecContext *dec_ctx = NULL; + AVCodec *dec = NULL; + AVDictionary *opts = NULL; + + ret = av_find_best_stream(fmt_ctx, type, -1, -1, NULL, 0); + if (ret < 0) { + fprintf(stderr, "Could not find %s stream in input file '%s'\n", + av_get_media_type_string(type), src_filename); + return ret; + } else { + *stream_idx = ret; + st = fmt_ctx->streams[*stream_idx]; + + /* find decoder for the stream */ + dec_ctx = st->codec; + dec = avcodec_find_decoder(dec_ctx->codec_id); + if (!dec) { + fprintf(stderr, "Failed to find %s codec\n", + av_get_media_type_string(type)); + return AVERROR(EINVAL); + } + + /* Init the video decoder */ + av_dict_set(&opts, "flags2", "+export_mvs", 0); + if ((ret = avcodec_open2(dec_ctx, dec, &opts)) < 0) { + fprintf(stderr, "Failed to open %s codec\n", + av_get_media_type_string(type)); + return ret; + } + } + + return 0; +} + +int main(int argc, char **argv) +{ + int ret = 0, got_frame; + + if (argc != 2) { + fprintf(stderr, "Usage: %s