X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=configure;h=e67ddf6eb78104c1a156d4d7deed467fda3cfca6;hb=0cbae3763d96f40e0eae0c9f04794a38e1f78ca6;hp=2c3e77a77d47e9e9914ab9050146b8cdad1307d2;hpb=b197f78329615893201c0e241d00b71b7c749dbb;p=ffmpeg diff --git a/configure b/configure index 2c3e77a77d4..e67ddf6eb78 100755 --- a/configure +++ b/configure @@ -1,6 +1,6 @@ #!/bin/sh # -# Libav configure script +# FFmpeg configure script # # Copyright (c) 2000-2002 Fabrice Bellard # Copyright (c) 2005-2008 Diego Biurrun @@ -44,9 +44,9 @@ if test "$E1" != 0 || test "$E2" = 0; then 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 LIBAV, DO NOT REPORT IT AS SUCH." + 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 Libav." + 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." @@ -78,15 +78,19 @@ Help options: Standard options: --logfile=FILE log tests and output to FILE [config.log] --disable-logging do not log configure debug information + --fatal-warnings fail if any configure warning is generated --prefix=PREFIX install in PREFIX [$prefix] --bindir=DIR install binaries in DIR [PREFIX/bin] - --datadir=DIR install data files in DIR [PREFIX/share/avconv] - --docdir=DIR install documentation in DIR [PREFIX/share/doc/libav] + --datadir=DIR install data files in DIR [PREFIX/share/ffmpeg] + --docdir=DIR install documentation in DIR [PREFIX/share/doc/ffmpeg] --libdir=DIR install libs in DIR [PREFIX/lib] - --shlibdir=DIR install shared libs in DIR [PREFIX/lib] + --shlibdir=DIR install shared libs in DIR [LIBDIR] --incdir=DIR install includes in DIR [PREFIX/include] --mandir=DIR install man page in DIR [PREFIX/share/man] - --enable-rpath use rpath when linking programs [USE WITH CARE] + --pkgconfigdir=DIR install pkg-config files in DIR [LIBDIR/pkgconfig] + --enable-rpath use rpath to allow installing libraries in paths + not part of the dynamic linker search path + use rpath when linking programs [USE WITH CARE] Licensing options: --enable-gpl allow use of GPL code, the resulting libs @@ -99,31 +103,43 @@ Configuration options: --disable-static do not build static libraries [no] --enable-shared build shared libraries [no] --enable-small optimize for size instead of speed - --enable-runtime-cpudetect detect cpu capabilities at runtime (bigger binary) + --disable-runtime-cpudetect disable detecting cpu capabilities at runtime (smaller binary) --enable-gray enable full grayscale support (slower color) --disable-swscale-alpha disable alpha channel support in swscale --disable-all disable building components, libraries and programs + --enable-incompatible-libav-abi enable incompatible Libav fork ABI [no] + --enable-raise-major increase major version numbers in sonames [no] Program options: --disable-programs do not build command line programs - --disable-avconv disable avconv build - --disable-avplay disable avplay build - --disable-avprobe disable avprobe build - --disable-avserver deprecated, does nothing + --disable-ffmpeg disable ffmpeg build + --disable-ffplay disable ffplay build + --disable-ffprobe disable ffprobe build + --disable-ffserver disable ffserver build -Component options: +Documentation options: --disable-doc do not build documentation + --disable-htmlpages do not build HTML documentation pages + --disable-manpages do not build man documentation pages + --disable-podpages do not build POD documentation pages + --disable-txtpages do not build text documentation pages + +Component options: --disable-avdevice disable libavdevice build --disable-avcodec disable libavcodec build --disable-avformat disable libavformat build --disable-avutil disable libavutil build + --disable-swresample disable libswresample build --disable-swscale disable libswscale build - --disable-avfilter disable video filter support [no] - --disable-avresample disable libavresample build [no] - --disable-pthreads disable pthreads [auto] - --disable-w32threads disable Win32 threads [auto] + --disable-postproc disable libpostproc build + --disable-avfilter disable libavfilter build + --enable-avresample enable libavresample build [no] + --disable-pthreads disable pthreads [autodetect] + --disable-w32threads disable Win32 threads [autodetect] + --disable-os2threads disable OS/2 threads [autodetect] --disable-network disable network support [no] --disable-dct disable DCT code + --disable-dwt disable DWT code --disable-error-resilience disable error resilience code --disable-lsp disable LSP code --disable-lzo disable LZO decoder code @@ -131,13 +147,15 @@ Component options: --disable-rdft disable RDFT code --disable-fft disable FFT code --disable-faan disable floating point AAN (I)DCT code + --disable-pixelutils disable pixel utils in libavutil Hardware accelerators: - --enable-d3d11va enable D3D11VA code - --enable-dxva2 enable DXVA2 code - --enable-vaapi enable VAAPI code - --enable-vda enable VDA code - --enable-vdpau enable VDPAU code + --disable-d3d11va disable D3D11VA code [autodetect] + --disable-dxva2 disable DXVA2 code [autodetect] + --disable-vaapi disable VAAPI code [autodetect] + --disable-vda disable VDA code [autodetect] + --disable-vdpau disable VDPAU code [autodetect] + --enable-videotoolbox enable VideoToolbox code [autodetect] Individual component options: --disable-everything disable all components listed below @@ -178,21 +196,39 @@ Individual component options: External library support: --enable-avisynth enable reading of AviSynth script files [no] - --enable-bzlib enable bzlib [autodetect] - --enable-frei0r enable frei0r video filtering - --enable-gnutls enable gnutls [no] + --disable-bzlib disable bzlib [autodetect] + --enable-fontconfig enable fontconfig, useful for drawtext filter [no] + --enable-frei0r enable frei0r video filtering [no] + --enable-gnutls enable gnutls, needed for https support + if openssl is not used [no] + --disable-iconv disable iconv [autodetect] + --enable-ladspa enable LADSPA audio filtering [no] + --enable-libaacplus enable AAC+ encoding via libaacplus [no] + --enable-libass enable libass subtitles rendering, + needed for subtitles and ass filter [no] + --enable-libbluray enable BluRay reading using libbluray [no] --enable-libbs2b enable bs2b DSP library [no] - --enable-libcdio enable audio CD grabbing with libcdio + --enable-libcaca enable textual display using libcaca [no] + --enable-libcelt enable CELT decoding via libcelt [no] + --enable-libcdio enable audio CD grabbing with libcdio [no] --enable-libdc1394 enable IIDC-1394 grabbing using libdc1394 and libraw1394 [no] --enable-libdcadec enable DCA decoding via libdcadec [no] --enable-libfaac enable AAC encoding via libfaac [no] --enable-libfdk-aac enable AAC de/encoding via libfdk-aac [no] - --enable-libfreetype enable libfreetype [no] + --enable-libflite enable flite (voice synthesis) support via libflite [no] + --enable-libfreetype enable libfreetype, needed for drawtext filter [no] + --enable-libfribidi enable libfribidi, improves drawtext filter [no] + --enable-libgme enable Game Music Emu via libgme [no] --enable-libgsm enable GSM de/encoding via libgsm [no] + --enable-libiec61883 enable iec61883 via libiec61883 [no] --enable-libilbc enable iLBC de/encoding via libilbc [no] + --enable-libkvazaar enable HEVC encoding via libkvazaar [no] --enable-libmfx enable HW acceleration through libmfx + --enable-libmodplug enable ModPlug via libmodplug [no] --enable-libmp3lame enable MP3 encoding via libmp3lame [no] + --enable-libnut enable NUT (de)muxing via libnut, + native (de)muxer exists [no] --enable-libopencore-amrnb enable AMR-NB de/encoding via libopencore-amrnb [no] --enable-libopencore-amrwb enable AMR-WB decoding via libopencore-amrwb [no] --enable-libopencv enable video filtering via libopencv [no] @@ -200,37 +236,61 @@ External library support: --enable-libopenjpeg enable JPEG 2000 de/encoding via OpenJPEG [no] --enable-libopus enable Opus de/encoding via libopus [no] --enable-libpulse enable Pulseaudio input via libpulse [no] + --enable-libquvi enable quvi input via libquvi [no] --enable-librtmp enable RTMP[E] support via librtmp [no] --enable-libschroedinger enable Dirac de/encoding via libschroedinger [no] - --enable-libsnappy enable Snappy compression [no] + --enable-libshine enable fixed-point MP3 encoding via libshine [no] + --enable-libsmbclient enable Samba protocol via libsmbclient [no] + --enable-libsnappy enable Snappy compression, needed for hap encoding [no] + --enable-libsoxr enable Include libsoxr resampling [no] --enable-libspeex enable Speex de/encoding via libspeex [no] + --enable-libssh enable SFTP protocol via libssh [no] + --enable-libstagefright-h264 enable H.264 decoding via libstagefright [no] --enable-libtheora enable Theora encoding via libtheora [no] --enable-libtwolame enable MP2 encoding via libtwolame [no] + --enable-libutvideo enable Ut Video encoding and decoding via libutvideo [no] + --enable-libv4l2 enable libv4l2/v4l-utils [no] + --enable-libvidstab enable video stabilization using vid.stab [no] --enable-libvo-aacenc enable AAC encoding via libvo-aacenc [no] --enable-libvo-amrwbenc enable AMR-WB encoding via libvo-amrwbenc [no] - --enable-libvorbis enable Vorbis encoding via libvorbis [no] + --enable-libvorbis enable Vorbis en/decoding via libvorbis, + native implementation exists [no] --enable-libvpx enable VP8 and VP9 de/encoding via libvpx [no] --enable-libwavpack enable wavpack encoding via libwavpack [no] --enable-libwebp enable WebP encoding via libwebp [no] --enable-libx264 enable H.264 encoding via x264 [no] --enable-libx265 enable HEVC encoding via x265 [no] --enable-libxavs enable AVS encoding via xavs [no] - --enable-libxcb enable X11 grabbing using XCB [no] - --enable-libxcb-shm enable X11 grabbing shm communication [auto] - --enable-libxcb-xfixes enable X11 grabbing mouse rendering [auto] + --enable-libxcb enable X11 grabbing using XCB [autodetect] + --enable-libxcb-shm enable X11 grabbing shm communication [autodetect] + --enable-libxcb-xfixes enable X11 grabbing mouse rendering [autodetect] + --enable-libxcb-shape enable X11 grabbing shape rendering [autodetect] --enable-libxvid enable Xvid encoding via xvidcore, native MPEG-4/Xvid encoder exists [no] + --enable-libzmq enable message passing via libzmq [no] + --enable-libzvbi enable teletext support via libzvbi [no] + --disable-lzma disable lzma [autodetect] + --enable-decklink enable Blackmagick DeckLink I/O support [no] --enable-mmal enable decoding via MMAL [no] - --enable-nvenc enable encoding via NVENC [no] - --enable-openssl enable openssl [no] + --enable-nvenc enable NVIDIA NVENC support [no] + --enable-openal enable OpenAL 1.1 capture support [no] + --enable-opencl enable OpenCL code + --enable-opengl enable OpenGL rendering [no] + --enable-openssl enable openssl, needed for https support + if gnutls is not used [no] + --disable-sdl disable sdl [autodetect] + --disable-securetransport disable Secure Transport, needed for TLS support + on OSX if openssl and gnutls are not used [autodetect] --enable-x11grab enable X11 grabbing (legacy) [no] - --enable-zlib enable zlib [autodetect] + --disable-xlib disable xlib [autodetect] + --disable-zlib disable zlib [autodetect] Toolchain options: --arch=ARCH select architecture [$arch] --cpu=CPU select the minimum required CPU (affects instruction selection, may crash on older CPUs) --cross-prefix=PREFIX use PREFIX for compilation tools [$cross_prefix] + --progs-suffix=SUFFIX program name suffix [] --enable-cross-compile assume a cross-compiler is used --sysroot=PATH root of cross-build tree --sysinclude=PATH location of cross-build system headers @@ -238,15 +298,21 @@ Toolchain options: --target-exec=CMD command to run executables on target --target-path=DIR path to view of build directory on target --target-samples=DIR path to samples directory on target + --tempprefix=PATH force fixed dir/prefix instead of mktemp for checks --toolchain=NAME set tool defaults according to NAME - --nm=NM use nm tool + --nm=NM use nm tool NM [$nm_default] --ar=AR use archive tool AR [$ar_default] --as=AS use assembler AS [$as_default] + --windres=WINDRES use windows resource compiler WINDRES [$windres_default] + --yasmexe=EXE use yasm-compatible assembler EXE [$yasmexe_default] --cc=CC use C compiler CC [$cc_default] + --cxx=CXX use C compiler CXX [$cxx_default] --dep-cc=DEPCC use dependency generator DEPCC [$cc_default] - --ld=LD use linker LD + --ld=LD use linker LD [$ld_default] --pkg-config=PKGCONFIG use pkg-config tool PKGCONFIG [$pkg_config_default] --pkg-config-flags=FLAGS pass additional flags to pkgconf [] + --ranlib=RANLIB use ranlib RANLIB [$ranlib_default] + --doxygen=DOXYGEN use DOXYGEN to generate API doc [$doxygen_default] --host-cc=HOSTCC use host C compiler HOSTCC --host-cflags=HCFLAGS use HCFLAGS when compiling for host --host-cppflags=HCPPFLAGS use HCPPFLAGS when compiling for host @@ -255,8 +321,10 @@ Toolchain options: --host-libs=HLIBS use libs HLIBS when linking for host --host-os=OS compiler host OS [$target_os] --extra-cflags=ECFLAGS add ECFLAGS to CFLAGS [$CFLAGS] + --extra-cxxflags=ECFLAGS add ECFLAGS to CXXFLAGS [$CXXFLAGS] --extra-ldflags=ELDFLAGS add ELDFLAGS to LDFLAGS [$LDFLAGS] --extra-ldexeflags=ELDFLAGS add ELDFLAGS to LDEXEFLAGS [$LDEXEFLAGS] + --extra-ldlibflags=ELDFLAGS add ELDFLAGS to LDLIBFLAGS [$LDLIBFLAGS] --extra-libs=ELIBS add ELIBS [$ELIBS] --extra-version=STRING version string suffix [] --optflags=OPTFLAGS override optimization-related compiler flags @@ -274,7 +342,7 @@ Advanced options (experts only): disable buffer boundary checking in bitreaders (faster, but may crash) --enable-memalign-hack emulate memalign, interferes with memory debuggers - --enable-sram allow use of on-chip SRAM + --sws-max-filter-size=N the max filter size swscale uses [$sws_max_filter_size_default] Optimization options (experts only): --disable-asm disable all assembly optimizations @@ -303,14 +371,30 @@ Optimization options (experts only): --disable-neon disable NEON optimizations --disable-inline-asm disable use of inline assembly --disable-yasm disable use of nasm/yasm assembly - -Developer options (useful when working on Libav itself): + --disable-mips32r5 disable MIPS32R5 optimizations + --disable-mips64r6 disable MIPS64R6 optimizations + --disable-mipsdspr1 disable MIPS DSP ASE R1 optimizations + --disable-mipsdspr2 disable MIPS DSP ASE R2 optimizations + --disable-msa disable MSA optimizations + --disable-mipsfpu disable floating point MIPS optimizations + --disable-mmi disable Loongson SIMD optimizations + --disable-fast-unaligned consider unaligned accesses slow + +Developer options (useful when working on FFmpeg itself): --disable-debug disable debugging symbols --enable-debug=LEVEL set the debug level [$debuglevel] --disable-optimizations disable compiler optimizations --enable-extra-warnings enable more compiler warnings + --disable-stripping disable stripping of executables and shared libraries + --assert-level=level 0(default), 1 or 2, amount of assertion testing, + 2 causes a slowdown at runtime. + --enable-memory-poisoning fill heap uninitialized allocated space with arbitrary data + --valgrind=VALGRIND run "make fate" tests through valgrind to detect memory + leaks and errors, using the specified valgrind binary. + Cannot be combined with --target-exec + --enable-ftrapv Trap arithmetic overflows --samples=PATH location of test samples for FATE, if not set use - \$LIBAV_SAMPLES at make invocation time. + \$FATE_SAMPLES at make invocation time. --enable-neon-clobber-test check NEON registers for clobbering (should be used only for debugging purposes) --enable-xmm-clobber-test check XMM registers for clobbering (Win64-only; @@ -359,7 +443,7 @@ die(){ If you think configure made a mistake, make sure you are using the latest version from Git. If the latest version fails, report the problem to the -libav-tools@libav.org mailing list or IRC #libav on irc.freenode.net. +ffmpeg-user@ffmpeg.org mailing list or IRC #ffmpeg on irc.freenode.net. EOF if disabled logging; then cat <>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; } } }" @@ -689,6 +779,10 @@ add_cflags(){ append CFLAGS $($cflags_filter "$@") } +add_cxxflags(){ + append CXXFLAGS $($cflags_filter "$@") +} + add_asflags(){ append ASFLAGS $($asflags_filter "$@") } @@ -701,8 +795,12 @@ add_ldexeflags(){ append LDEXEFLAGS $($ldflags_filter "$@") } +add_ldlibflags(){ + append LDLIBFLAGS $($ldflags_filter "$@") +} + add_stripflags(){ - append STRIPFLAGS "$@" + append ASMSTRIPFLAGS "$@" } add_extralibs(){ @@ -732,6 +830,11 @@ check_cmd(){ "$@" >> $logfile 2>&1 } +check_stat(){ + log check_stat "$@" + stat "$1" >> $logfile 2>&1 +} + cc_o(){ eval printf '%s\\n' $CC_O } @@ -747,6 +850,20 @@ check_cc(){ 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 @@ -787,7 +904,7 @@ check_yasm(){ echo "$1" > $TMPS log_file $TMPS shift 1 - check_cmd $yasmexe $YASMFLAGS "$@" -o $TMPO $TMPS + check_cmd $yasmexe $YASMFLAGS -Werror "$@" -o $TMPO $TMPS } ld_o(){ @@ -796,9 +913,11 @@ ld_o(){ check_ld(){ log check_ld "$@" - flags=$(filter_out '-l*' "$@") - libs=$(filter '-l*' "$@") - check_cc $($cflags_filter $flags) || return + 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 @@ -845,9 +964,17 @@ check_cflags(){ test_cflags "$@" && add_cflags "$@" } +check_cxxflags(){ + log check_cxxflags "$@" + set -- $($cflags_filter "$@") + check_cxx "$@" <" + 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 "$@" < float foo(float f, float g) { return $func($args); } -int main(void){ return 0; } +int main(void){ return (int) foo; } EOF } @@ -920,7 +1059,26 @@ check_func_headers(){ echo "long check_$func(void) { return (long) $func; }" done echo "int main(void) { return 0; }" - } | check_ld "$@" && enable $funcs && enable_safe $headers + } | 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(){ @@ -952,13 +1110,22 @@ check_lib2(){ 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 "$@" - pkg="$1" + pkgandversion="$1" + pkg="${1%% *}" headers="$2" funcs="$3" shift 3 - check_cmd $pkg_config --exists --print-errors $pkg || return + 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 "$@" && @@ -967,7 +1134,7 @@ check_pkg_config(){ } check_exec(){ - check_ld "$@" && { enabled cross_compile || $TMPE >> $logfile 2>&1; } + check_ld "cc" "$@" && { enabled cross_compile || $TMPE >> $logfile 2>&1; } } check_exec_crash(){ @@ -1027,7 +1194,7 @@ check_builtin(){ builtin=$3 shift 3 disable "$name" - check_code ld "$headers" "$builtin" "$@" && enable "$name" + check_code ld "$headers" "$builtin" "cc" "$@" && enable "$name" } check_compile_assert(){ @@ -1056,9 +1223,41 @@ require2(){ check_lib2 "$headers" $func "$@" || die "ERROR: $name not found" } -require_pkg_config(){ +require_cpp(){ + name="$1" + headers="$2" + classes="$3" + shift 3 + check_lib_cpp "$headers" "$classes" "$@" || die "ERROR: $name not found" +} + +use_pkg_config(){ pkg="$1" - check_pkg_config "$@" || die "ERROR: $pkg not found" + check_pkg_config "$@" || return 1 + add_cflags $(get_safe "${pkg}_cflags") + add_extralibs $(get_safe "${pkg}_libs") +} + +require_pkg_config(){ + use_pkg_config "$@" || die "ERROR: $pkg not found using pkg-config$pkg_config_fail_message" +} + +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") } @@ -1143,31 +1342,57 @@ COMPONENT_LIST=" " EXAMPLE_LIST=" - avcodec_example + avio_reading_example + avio_dir_cmd_example + decoding_encoding_example + demuxing_decoding_example + extract_mvs_example filter_audio_example + filtering_audio_example + filtering_video_example metadata_example - output_example + muxing_example qsvdec_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 libdcadec libfaac libfdk_aac + libflite libfontconfig libfreetype + libfribidi + libgme libgsm + libiec61883 libilbc + libkvazaar libmfx + libmodplug libmp3lame + libnut libopencore_amrnb libopencore_amrwb libopencv @@ -1175,12 +1400,21 @@ EXTERNAL_LIBRARY_LIST=" libopenjpeg libopus libpulse + libquvi librtmp libschroedinger + libshine + libsmbclient libsnappy + libsoxr libspeex + libssh + libstagefright_h264 libtheora libtwolame + libutvideo + libv4l2 + libvidstab libvo_aacenc libvo_amrwbenc libvorbis @@ -1192,23 +1426,41 @@ EXTERNAL_LIBRARY_LIST=" libxavs libxcb libxcb_shm + libxcb_shape libxcb_xfixes libxvid + libzmq + libzvbi + lzma mmal nvenc + openal + opencl + opengl openssl + sdl + securetransport x11grab + xlib zlib " +DOCUMENT_LIST=" + doc + htmlpages + manpages + podpages + txtpages +" + FEATURE_LIST=" + ftrapv gray hardcoded_tables runtime_cpudetect safe_bitstream_reader shared small - sram static swscale_alpha " @@ -1219,6 +1471,8 @@ HWACCEL_LIST=" vaapi vda vdpau + videotoolbox + xvmc " LIBRARY_LIST=" @@ -1228,6 +1482,8 @@ LIBRARY_LIST=" avformat avresample avutil + postproc + swresample swscale " @@ -1238,26 +1494,30 @@ LICENSE_LIST=" " PROGRAM_LIST=" - avconv - avplay - avprobe + ffplay + ffprobe + ffserver + ffmpeg " SUBSYSTEM_LIST=" dct - doc + 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 @@ -1266,11 +1526,14 @@ CONFIG_LIST=" $LIBRARY_LIST $PROGRAM_LIST $SUBSYSTEM_LIST + fontconfig + incompatible_libav_abi memalign_hack + memory_poisoning neon_clobber_test pic pod2man - texi2html + raise_major thumb valgrind_backtrace xmm_clobber_test @@ -1278,6 +1541,7 @@ CONFIG_LIST=" THREADS_LIST=" pthreads + os2threads w32threads " @@ -1322,6 +1586,23 @@ ARCH_EXT_LIST_ARM=" neon vfp vfpv3 + setend +" + +ARCH_EXT_LIST_MIPS=" + mipsfpu + mips32r2 + mips32r5 + mips64r6 + mipsdspr1 + mipsdspr2 + msa +" + +ARCH_EXT_LIST_LOONGSON=" + loongson2 + loongson3 + mmi " ARCH_EXT_LIST_X86_SIMD=" @@ -1361,8 +1642,8 @@ ARCH_EXT_LIST=" $ARCH_EXT_LIST_ARM $ARCH_EXT_LIST_PPC $ARCH_EXT_LIST_X86 - loongson - vis + $ARCH_EXT_LIST_MIPS + $ARCH_EXT_LIST_LOONGSON " ARCH_FEATURES=" @@ -1372,15 +1653,18 @@ ARCH_FEATURES=" fast_cmov local_aligned_8 local_aligned_16 + local_aligned_32 simd_align_16 " BUILTIN_LIST=" atomic_cas_ptr + atomic_compare_exchange machine_rw_barrier MemoryBarrier mm_empty rdtsc + sarestart sync_val_compare_and_swap " HAVE_LIST_CMDLINE=" @@ -1392,12 +1676,14 @@ HAVE_LIST_CMDLINE=" 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 dev_bktr_ioctl_bt848_h @@ -1409,12 +1695,15 @@ HEADERS_LIST=" dlfcn_h d3d11_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 @@ -1426,6 +1715,8 @@ HEADERS_LIST=" sys_time_h sys_un_h sys_videoio_h + termios_h + udplite_h unistd_h valgrind_valgrind_h windows_h @@ -1439,8 +1730,11 @@ INTRINSICS_LIST=" MATH_FUNCS=" atanf atan2f + cbrt cbrtf + copysign cosf + erf exp2 exp2f expf @@ -1464,6 +1758,7 @@ MATH_FUNCS=" " SYSTEM_FUNCS=" + access aligned_malloc clock_gettime closesocket @@ -1484,12 +1779,15 @@ SYSTEM_FUNCS=" getservbyport GetSystemTimeAsFileTime gettimeofday + glob + glXGetProcAddress gmtime_r inet_aton isatty jack_port_get_latency_range - LoadLibrary + kbhit localtime_r + lzo1x_999_compress mach_absolute_time MapViewOfFile memalign @@ -1497,9 +1795,12 @@ SYSTEM_FUNCS=" mmap mprotect nanosleep + PeekNamedPipe posix_memalign + pthread_cancel sched_getaffinity SetConsoleTextAttribute + SetConsoleCtrlHandler setmode setrlimit Sleep @@ -1508,6 +1809,7 @@ SYSTEM_FUNCS=" sysctl usleep VirtualAlloc + wglGetProcAddress " TOOLCHAIN_FEATURES=" @@ -1520,9 +1822,13 @@ TOOLCHAIN_FEATURES=" 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 @@ -1534,14 +1840,17 @@ TYPES_LIST=" CONDITION_VARIABLE_Ptr socklen_t struct_addrinfo + struct_dcadec_exss_info_matrix_encoding 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 " @@ -1563,12 +1872,18 @@ HAVE_LIST=" $TYPES_LIST atomics_native dos_paths + dxva2api_cobj dxva2_lib libc_msvcrt libdc1394_1 libdc1394_2 + makeinfo + makeinfo_html + perl + pod2man sdl section_data_rel_ro + texi2html threads vaapi_x11 vdpau_x11 @@ -1585,11 +1900,13 @@ CONFIG_EXTRA=" bswapdsp cabac dvprofile + exif faandct faanidct fdctdsp flacdsp fmtconvert + frame_thread_encoder g722dsp gcrypt gmp @@ -1612,6 +1929,8 @@ CONFIG_EXTRA=" jpegtables libx262 lgplv3 + llauddsp + llviddsp lpc me_cmp mpeg_er @@ -1658,6 +1977,7 @@ CMDLINE_SELECT=" lto optimizations rpath + stripping " PATHS_LIST=" @@ -1667,6 +1987,7 @@ PATHS_LIST=" incdir libdir mandir + pkgconfigdir prefix shlibdir " @@ -1676,19 +1997,24 @@ CMDLINE_SET=" ar arch as + assert_level build_suffix cc cpu cross_prefix + cxx dep_cc + doxygen env extra_version + gas host_cc host_cflags host_ld host_ldflags host_libs host_os + install ld logfile malloc_prefix @@ -1696,19 +2022,27 @@ CMDLINE_SET=" 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 " @@ -1724,10 +2058,22 @@ 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" +mipsdspr1_deps="mips" +mipsdspr2_deps="mips" +mips32r2_deps="mips" +mips32r5_deps="mips" +mips64r6_deps="mips" +msa_deps="mips" +mmi_deps="mips" + altivec_deps="ppc" +dcbzl_deps="ppc" +ldbrx_deps="ppc" ppc4xx_deps="ppc" vsx_deps="altivec" power8_deps="vsx" @@ -1775,7 +2121,7 @@ symver_if_any="symver_asm_label symver_gnu_asm" valgrind_backtrace_deps="!optimizations valgrind_valgrind_h" # threading support -atomics_gcc_if="sync_val_compare_and_swap" +atomics_gcc_if_any="sync_val_compare_and_swap atomic_compare_exchange" atomics_suncc_if="atomic_cas_ptr machine_rw_barrier" atomics_win32_if="MemoryBarrier" atomics_native_if_any="$ATOMICS_LIST" @@ -1787,6 +2133,7 @@ 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" @@ -1794,18 +2141,18 @@ me_cmp_select="fdctdsp idctdsp pixblockdsp" mpeg_er_select="error_resilience" mpegaudio_select="mpegaudiodsp" mpegaudiodsp_select="dct" -mpegvideo_select="blockdsp hpeldsp idctdsp me_cmp videodsp" +mpegvideo_select="blockdsp h264chroma hpeldsp idctdsp me_cmp mpeg_er videodsp" mpegvideoenc_select="me_cmp mpegvideo pixblockdsp qpeldsp" -nvenc_deps_any="dlopen LoadLibrary" -nvenc_extralibs='$ldl' qsvdec_select="qsv" qsvenc_select="qsv" # decoders / encoders aac_decoder_select="imdct15 mdct sinewin" +aac_fixed_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 fmtconvert 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" adpcm_g722_decoder_select="g722dsp" @@ -1815,8 +2162,11 @@ alac_encoder_select="lpc" als_decoder_select="bswapdsp" amrnb_decoder_select="lsp" amrwb_decoder_select="lsp" -amv_decoder_select="sp5x_decoder" -ape_decoder_select="bswapdsp" +amv_decoder_select="sp5x_decoder exif" +amv_encoder_select="aandcttables jpegtables mpegvideoenc" +ape_decoder_select="bswapdsp llauddsp" +apng_decoder_select="zlib" +apng_encoder_select="huffyuvencdsp zlib" asv1_decoder_select="blockdsp bswapdsp idctdsp" asv1_encoder_select="bswapdsp fdctdsp pixblockdsp" asv2_decoder_select="blockdsp bswapdsp idctdsp" @@ -1824,6 +2174,7 @@ asv2_encoder_select="bswapdsp fdctdsp pixblockdsp" atrac1_decoder_select="mdct sinewin" atrac3_decoder_select="mdct" atrac3p_decoder_select="mdct sinewin" +avrn_decoder_select="exif jpegtables" bink_decoder_select="blockdsp hpeldsp" binkaudio_dct_decoder_select="mdct rdft dct sinewin wma_freqs" binkaudio_rdft_decoder_select="mdct rdft sinewin wma_freqs" @@ -1835,17 +2186,18 @@ cscd_decoder_select="lzo" cscd_decoder_suggest="zlib" dca_decoder_select="fmtconvert mdct" dds_decoder_select="texturedsp" +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_deps="zlib" +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 idctdsp" +eatgq_decoder_select="aandcttables" eatqi_decoder_select="aandcttables blockdsp bswapdsp idctdsp mpeg1video_decoder" -exr_decoder_deps="zlib" +exr_decoder_select="zlib" ffv1_decoder_select="golomb rangecoder" ffv1_encoder_select="rangecoder" ffvhuff_decoder_select="huffyuv_decoder" @@ -1853,24 +2205,25 @@ ffvhuff_encoder_select="huffyuv_encoder" fic_decoder_select="golomb" flac_decoder_select="flacdsp golomb" flac_encoder_select="bswapdsp flacdsp golomb lpc" -flashsv_decoder_deps="zlib" -flashsv_encoder_deps="zlib" -flashsv2_decoder_deps="zlib" +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_deps="zlib" -g2m_decoder_select="blockdsp idctdsp jpegtables" -h261_decoder_select="mpeg_er mpegvideo" +g2m_decoder_select="blockdsp idctdsp jpegtables zlib" +g729_decoder_select="audiodsp" +h261_decoder_select="mpegvideo" h261_encoder_select="aandcttables mpegvideoenc" -h263_decoder_select="error_resilience h263_parser h263dsp mpeg_er mpegvideo qpeldsp" +h263_decoder_select="h263_parser h263dsp mpegvideo qpeldsp" h263_encoder_select="aandcttables h263dsp mpegvideoenc" h263i_decoder_select="h263_decoder" +h263p_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" -h264_nvenc_encoder_deps="nvenc" h264_qsv_decoder_deps="libmfx" h264_qsv_decoder_select="h264_mp4toannexb_bsf h264_parser qsvdec h264_qsv_hwaccel" h264_qsv_encoder_deps="libmfx" @@ -1879,13 +2232,12 @@ hap_decoder_select="snappy texturedsp" hap_encoder_deps="libsnappy" hap_encoder_select="texturedspenc" hevc_decoder_select="bswapdsp cabac golomb videodsp" -hevc_nvenc_encoder_deps="nvenc" hevc_qsv_encoder_deps="libmfx" hevc_qsv_decoder_deps="libmfx" hevc_qsv_decoder_select="hevc_mp4toannexb_bsf hevc_parser qsvdec hevc_qsv_hwaccel" hevc_qsv_encoder_select="qsvenc" -huffyuv_decoder_select="bswapdsp huffyuvdsp" -huffyuv_encoder_select="bswapdsp huffman huffyuvencdsp" +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" @@ -1901,7 +2253,7 @@ 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 idctdsp jpegtables" +mjpeg_decoder_select="blockdsp hpeldsp exif idctdsp jpegtables" mjpeg_encoder_select="aandcttables jpegtables mpegvideoenc" mjpegb_decoder_select="mjpeg_decoder" mlp_decoder_select="mlp_parser" @@ -1920,12 +2272,13 @@ mpc7_decoder_select="bswapdsp mpegaudiodsp" mpc8_decoder_select="mpegaudiodsp" mpeg_xvmc_decoder_deps="X11_extensions_XvMClib_h" mpeg_xvmc_decoder_select="mpeg2video_decoder" -mpeg1video_decoder_select="error_resilience mpeg_er mpegvideo" -mpeg1video_encoder_select="aandcttables mpegvideoenc" -mpeg2video_decoder_select="error_resilience mpeg_er mpegvideo" -mpeg2video_encoder_select="aandcttables mpegvideoenc" +mpegvideo_decoder_select="mpegvideo" +mpeg1video_decoder_select="mpegvideo" +mpeg1video_encoder_select="aandcttables mpegvideoenc h263dsp" +mpeg2video_decoder_select="mpegvideo" +mpeg2video_encoder_select="aandcttables mpegvideoenc h263dsp" mpeg2_qsv_decoder_deps="libmfx" -mpeg2_qsv_decoder_select="qsvdec mpeg2_qsv_hwaccel mpegvideo_parser" +mpeg2_qsv_decoder_select="qsvdec mpeg2_qsv_hwaccel" mpeg2_qsv_encoder_deps="libmfx" mpeg2_qsv_encoder_select="qsvenc" mpeg4_decoder_select="h263_decoder mpeg4video_parser" @@ -1936,55 +2289,63 @@ 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" +mss2_decoder_select="vc1_decoder" mts2_decoder_select="mss34dsp" 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="avresample" +opus_decoder_deps="swresample" opus_decoder_select="imdct15" -png_decoder_deps="zlib" -png_encoder_deps="zlib" -png_encoder_select="huffyuvencdsp" -prores_decoder_select="idctdsp" +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" +ra_144_encoder_select="audio_frame_queue lpc audiodsp" +ra_144_decoder_select="audiodsp" ralf_decoder_select="golomb" -rv10_decoder_select="error_resilience h263_decoder h263dsp mpeg_er" +rawvideo_decoder_select="bswapdsp" +rtjpeg_decoder_select="me_cmp" +rv10_decoder_select="h263_decoder" rv10_encoder_select="h263_encoder" -rv20_decoder_select="error_resilience h263_decoder h263dsp mpeg_er" +rv20_decoder_select="h263_decoder" rv20_encoder_select="h263_encoder" -rv30_decoder_select="error_resilience golomb h264chroma h264pred h264qpel mpeg_er mpegvideo rv34dsp videodsp" -rv40_decoder_select="error_resilience golomb h264chroma h264pred h264qpel mpeg_er mpegvideo rv34dsp videodsp" +rv30_decoder_select="golomb h264pred h264qpel mpegvideo rv34dsp" +rv40_decoder_select="golomb h264pred h264qpel mpegvideo rv34dsp" 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" -tdsc_decoder_deps="zlib" -tdsc_decoder_select="mjpeg_decoder" +tdsc_decoder_select="zlib mjpeg_decoder" theora_decoder_select="vp3_decoder" thp_decoder_select="mjpeg_decoder" -tiff_decoder_suggest="zlib" +tiff_decoder_suggest="zlib lzma" tiff_encoder_suggest="zlib" -truehd_decoder_select="mlp_decoder" +truehd_decoder_select="mlp_parser" truemotion2_decoder_select="bswapdsp" truespeech_decoder_select="bswapdsp" -tscc_decoder_deps="zlib" -txd_decoder_select="texturedsp" +tscc_decoder_select="zlib" twinvq_decoder_select="mdct lsp sinewin" +txd_decoder_select="texturedsp" 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" +vc1_decoder_select="blockdsp h263_decoder h264qpel intrax8 qpeldsp startcode" vc1image_decoder_select="vc1_decoder" +vc1_qsv_decoder_deps="libmfx" +vc1_qsv_decoder_select="qsvdec vc1_qsv_hwaccel" vorbis_decoder_select="mdct" vorbis_encoder_select="mdct" vp3_decoder_select="hpeldsp vp3dsp videodsp" @@ -1994,8 +2355,9 @@ vp6a_decoder_select="vp6_decoder" vp6f_decoder_select="vp6_decoder" vp7_decoder_select="h264pred videodsp vp8dsp" vp8_decoder_select="h264pred videodsp vp8dsp" -vp9_decoder_select="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" @@ -2008,24 +2370,31 @@ wmv2_decoder_select="blockdsp h263_decoder idctdsp intrax8 videodsp wmv2dsp" wmv2_encoder_select="h263_encoder wmv2dsp" wmv3_decoder_select="vc1_decoder" wmv3image_decoder_select="wmv3_decoder" -zerocodec_decoder_deps="zlib" -zlib_decoder_deps="zlib" -zlib_encoder_deps="zlib" -zmbv_decoder_deps="zlib" -zmbv_encoder_deps="zlib" +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" d3d11va_deps="d3d11_h dxva_h ID3D11VideoDecoder" dxva2_deps="dxva2api_h DXVA2_ConfigPictureDecode" vaapi_deps="va_va_h" -vda_deps="VideoDecodeAcceleration_VDADecoder_h pthreads" -vda_extralibs="-framework CoreFoundation -framework VideoDecodeAcceleration -framework QuartzCore" +vda_deps="VideoDecodeAcceleration_VDADecoder_h pthreads CoreServices_CoreServices_h" +vda_extralibs="-framework CoreFoundation -framework VideoDecodeAcceleration -framework QuartzCore -framework CoreServices" vdpau_deps="vdpau_vdpau_h vdpau_vdpau_x11_h" +videotoolbox_deps="VideoToolbox_VideoToolbox_h pthreads CoreServices_CoreServices_h" +videotoolbox_extralibs="-framework CoreFoundation -framework VideoToolbox -framework CoreMedia -framework QuartzCore -framework CoreServices" +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" +h263_videotoolbox_hwaccel_deps="videotoolbox" +h263_videotoolbox_hwaccel_select="h263_decoder" +h264_crystalhd_decoder_select="crystalhd h264_mp4toannexb_bsf h264_parser" h264_d3d11va_hwaccel_deps="d3d11va" h264_d3d11va_hwaccel_select="h264_decoder" h264_dxva2_hwaccel_deps="dxva2" @@ -2037,68 +2406,110 @@ h264_mmal_encoder_deps="mmal" h264_qsv_hwaccel_deps="libmfx" 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" +h264_videotoolbox_hwaccel_deps="videotoolbox" +h264_videotoolbox_hwaccel_select="h264_decoder" hevc_d3d11va_hwaccel_deps="d3d11va DXVA_PicParams_HEVC" hevc_d3d11va_hwaccel_select="hevc_decoder" hevc_dxva2_hwaccel_deps="dxva2 DXVA_PicParams_HEVC" hevc_dxva2_hwaccel_select="hevc_decoder" hevc_qsv_hwaccel_deps="libmfx" +hevc_vdpau_hwaccel_deps="vdpau VdpPictureInfoHEVC" +hevc_vdpau_hwaccel_select="hevc_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_videotoolbox_hwaccel_deps="videotoolbox" +mpeg1_videotoolbox_hwaccel_select="mpeg1video_decoder" +mpeg1_xvmc_hwaccel_deps="xvmc" +mpeg1_xvmc_hwaccel_select="mpeg1video_decoder" +mpeg2_crystalhd_decoder_select="crystalhd" mpeg2_d3d11va_hwaccel_deps="d3d11va" mpeg2_d3d11va_hwaccel_select="mpeg2video_decoder" mpeg2_dxva2_hwaccel_deps="dxva2" mpeg2_dxva2_hwaccel_select="mpeg2video_decoder" mpeg2_qsv_hwaccel_deps="libmfx" +mpeg2_qsv_hwaccel_select="qsvdec_mpeg2" mpeg2_vaapi_hwaccel_deps="vaapi" mpeg2_vaapi_hwaccel_select="mpeg2video_decoder" mpeg2_vdpau_hwaccel_deps="vdpau" mpeg2_vdpau_hwaccel_select="mpeg2video_decoder" +mpeg2_videotoolbox_hwaccel_deps="videotoolbox" +mpeg2_videotoolbox_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" +mpeg4_videotoolbox_hwaccel_deps="videotoolbox" +mpeg4_videotoolbox_hwaccel_select="mpeg4_decoder" +msmpeg4_crystalhd_decoder_select="crystalhd" +vc1_crystalhd_decoder_select="crystalhd" vc1_d3d11va_hwaccel_deps="d3d11va" vc1_d3d11va_hwaccel_select="vc1_decoder" 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" +vc1_qsv_hwaccel_deps="libmfx" +vc1_qsv_hwaccel_select="qsvdec_vc1" +wmv3_crystalhd_decoder_select="crystalhd" wmv3_d3d11va_hwaccel_select="vc1_d3d11va_hwaccel" 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="golomb" mpegvideo_parser_select="mpegvideo" -mpeg4video_parser_select="error_resilience h263dsp mpeg_er mpegvideo qpeldsp" +mpeg4video_parser_select="h263dsp mpegvideo qpeldsp" vc1_parser_select="mpegvideo startcode vc1_decoder" # bitstream_filters mjpeg2jpeg_bsf_select="jpegtables" # external libraries +libaacplus_encoder_deps="libaacplus" +libcelt_decoder_deps="libcelt" libdcadec_decoder_deps="libdcadec" 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" +libkvazaar_encoder_deps="libkvazaar" +libmodplug_demuxer_deps="libmodplug" libmp3lame_encoder_deps="libmp3lame" libmp3lame_encoder_select="audio_frame_queue" libopencore_amrnb_decoder_deps="libopencore_amrnb" @@ -2111,16 +2522,21 @@ 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" @@ -2129,24 +2545,36 @@ libvpx_vp9_decoder_deps="libvpx" libvpx_vp9_encoder_deps="libvpx" libwavpack_encoder_deps="libwavpack" libwebp_encoder_deps="libwebp" +libwebp_anim_encoder_deps="libwebp" libx262_encoder_deps="libx262" libx264_encoder_deps="libx264" +libx264rgb_encoder_deps="libx264" +libx264rgb_encoder_select="libx264_encoder" 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" +nvenc_encoder_deps="nvenc" +nvenc_h264_encoder_deps="nvenc" +nvenc_hevc_encoder_deps="nvenc" # demuxers / muxers ac3_demuxer_select="ac3_parser" asf_demuxer_select="riffdec" +asf_o_demuxer_select="riffdec" asf_muxer_select="riffenc" asf_stream_muxer_select="asf_muxer" -avi_demuxer_select="riffdec" +avi_demuxer_select="riffdec exif" avi_muxer_select="riffenc" avisynth_demuxer_deps="avisynth" avisynth_demuxer_select="riffdec" caf_demuxer_select="riffdec" dash_muxer_select="mp4_muxer" 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" @@ -2155,8 +2583,12 @@ 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" @@ -2170,6 +2602,7 @@ mp4_muxer_select="mov_muxer" mpegts_muxer_select="adts_muxer latm_muxer" mpegtsraw_demuxer_select="mpegts_demuxer" mxf_d10_muxer_select="mxf_muxer" +mxf_opatom_muxer_select="mxf_muxer" nut_muxer_select="riffenc" nuv_demuxer_select="riffdec" oga_muxer_select="ogg_muxer" @@ -2189,41 +2622,73 @@ 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++" +decklink_indev_deps="decklink pthreads" +decklink_indev_extralibs="-lstdc++" +dshow_indev_deps="IBaseFilter" +dshow_indev_extralibs="-lpsapi -lole32 -lstrmiids -luuid -loleaut32 -lshlwapi" dv1394_indev_deps="dv1394" dv1394_indev_select="dv_demuxer" fbdev_indev_deps="linux_fb_h" -jack_indev_deps="jack_jack_h pthreads" +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" x11grab_xcb_indev_deps="libxcb" # protocols +async_protocol_deps="pthreads" +bluray_protocol_deps="libbluray" ffrtmpcrypt_protocol_deps="!librtmp_protocol" ffrtmpcrypt_protocol_deps_any="gcrypt gmp 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" @@ -2234,6 +2699,8 @@ 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" @@ -2249,39 +2716,112 @@ sctp_protocol_deps="struct_sctp_event_subscribe" sctp_protocol_select="network" srtp_protocol_select="rtp_protocol" tcp_protocol_select="network" -tls_gnutls_protocol_deps="gnutls" +tls_gnutls_protocol_deps="gnutls !tls_securetransport_protocol" tls_gnutls_protocol_select="tcp_protocol" -tls_openssl_protocol_deps="openssl !tls_gnutls_protocol" +tls_openssl_protocol_deps="openssl !tls_securetransport_protocol !tls_gnutls_protocol" tls_openssl_protocol_select="tcp_protocol" -tls_protocol_deps_any="tls_gnutls_protocol tls_openssl_protocol" +tls_securetransport_protocol_deps="securetransport" +tls_securetransport_protocol_select="tcp_protocol" +tls_protocol_deps_any="tls_securetransport_protocol tls_gnutls_protocol tls_openssl_protocol" udp_protocol_select="network" +udplite_protocol_select="network" unix_protocol_deps="sys_un_h" unix_protocol_select="network" # filters +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" +cover_rect_filter_deps="avcodec avformat gpl" cropdetect_filter_deps="gpl" delogo_filter_deps="gpl" +deshake_filter_select="pixelutils" drawtext_filter_deps="libfreetype" +dynaudnorm_filter_deps="copysign erf" +ebur128_filter_deps="gpl" +eq_filter_deps="gpl" +fftfilt_filter_deps="avcodec" +fftfilt_filter_select="rdft" +flite_filter_deps="libflite" +find_rect_filter_deps="avcodec avformat gpl" frei0r_filter_deps="frei0r dlopen" -frei0r_filter_extralibs='$ldl' frei0r_src_filter_deps="frei0r dlopen" -frei0r_src_filter_extralibs='$ldl' +fspp_filter_deps="gpl" +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" +mcdeint_filter_deps="avcodec gpl" +movie_filter_deps="avcodec avformat" +mpdecimate_filter_deps="gpl" +mpdecimate_filter_select="pixelutils" +mptestsrc_filter_deps="gpl" +negate_filter_deps="lut_filter" +perspective_filter_deps="gpl" +pp7_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" +repeatfields_filter_deps="gpl" resample_filter_deps="avresample" +sab_filter_deps="gpl swscale" scale_filter_deps="swscale" +scale2ref_filter_deps="swscale" +select_filter_select="pixelutils" +smartblur_filter_deps="gpl swscale" +showcqt_filter_deps="avcodec" +showcqt_filter_select="fft" +showfreqs_filter_deps="avcodec" +showfreqs_filter_select="fft" +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" +uspp_filter_deps="gpl avcodec" +zmq_filter_deps="libzmq" +zoompan_filter_deps="swscale" # examples +avio_reading="avformat avcodec avutil" +avio_dir_cmd="avformat 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" -output_example_deps="avcodec avformat avutil swscale" +muxing_example_deps="avcodec avformat avutil swscale" qsvdec_example_deps="avcodec avutil libmfx h264_qsv_decoder vaapi_x11" -transcode_aac_example_deps="avcodec avformat avresample" +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" @@ -2289,21 +2829,29 @@ 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 -avconv_deps="avcodec avfilter avformat avresample swscale" -avconv_select="aformat_filter anull_filter asyncts_filter atrim_filter format_filter - fps_filter null_filter resample_filter scale_filter +ffmpeg_deps="avcodec avfilter avformat swresample" +ffmpeg_select="aformat_filter anull_filter atrim_filter format_filter + null_filter setpts_filter trim_filter" -avplay_deps="avcodec avformat avresample swscale sdl" -avplay_libs='$sdl_libs' -avplay_select="rdft transpose_filter hflip_filter vflip_filter" -avprobe_deps="avcodec avformat" +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 -pod2man_deps="doc" -texi2html_deps="doc" +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 @@ -2312,50 +2860,67 @@ logfile="config.log" # installation paths prefix_default="/usr/local" bindir_default='${prefix}/bin' -datadir_default='${prefix}/share/avconv' -docdir_default='${prefix}/share/doc/libav' +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="ranlib" -strip="strip" -yasmexe="yasm" - -# machine -arch_default=$(uname -m) -cpu="generic" -intrinsics="none" +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 $EXAMPLE_LIST $LIBRARY_LIST $PROGRAM_LIST +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 enable valgrind_backtrace -# By default, enable only those hwaccels that have no external dependencies. -enable d3d11va dxva2 vda vdpau +sws_max_filter_size_default=256 +set_default sws_max_filter_size + +# Enable hwaccels by default. +enable d3d11va dxva2 vaapi vda vdpau videotoolbox xvmc +enable xlib # build settings SHFLAGS='-shared -Wl,-soname,$$(@F)' @@ -2381,6 +2946,8 @@ 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' @@ -2415,7 +2982,7 @@ for v in "$@"; do r=${v#*=} l=${v%"$r"} r=$(sh_quote "$r") - LIBAV_CONFIGURATION="${LIBAV_CONFIGURATION# } ${l}${r}" + FFMPEG_CONFIGURATION="${FFMPEG_CONFIGURATION# } ${l}${r}" done find_things(){ @@ -2506,6 +3073,9 @@ for opt do --extra-ldexeflags=*) add_ldexeflags $optval ;; + --extra-ldlibflags=*) + add_ldlibflags $optval + ;; --extra-libs=*) add_extralibs $optval ;; @@ -2538,11 +3108,9 @@ for opt do is_in "${thing}s" $COMPONENT_LIST || die_unknown "$opt" eval list=\$$(toupper $thing)_LIST name=$(echo "${optval}" | sed "s/,/_${thing}|/g")_${thing} - $action $(filter "$name" $list) - ;; - --enable-avserver|--disable-avserver*) - warn "avserver has been removed, the ${opt} option is only"\ - "provided for compatibility and will be removed in the future" + 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') @@ -2563,6 +3131,8 @@ for opt do ;; --help|-h) show_help ;; + --fatal-warnings) enable fatal_warnings + ;; *) optname="${opt%%=*}" optname="${optname#--}" @@ -2584,9 +3154,11 @@ done disabled logging && logfile=/dev/null -echo "# $0 $LIBAV_CONFIGURATION" > $logfile +echo "# $0 $FFMPEG_CONFIGURATION" > $logfile set >> $logfile +test -n "$valgrind" && toolchain="valgrind-memcheck" + case "$toolchain" in clang-asan) cc_default="clang" @@ -2600,7 +3172,7 @@ case "$toolchain" in ;; clang-usan) cc_default="clang" - add_cflags -fsanitize=undefined -O1 + add_cflags -fsanitize=undefined add_ldflags -fsanitize=undefined ;; gcc-asan) @@ -2619,17 +3191,17 @@ case "$toolchain" in add_ldflags -fsanitize=undefined ;; valgrind-massif) - target_exec_default="valgrind" - target_exec_args="--alloc-fn=av_malloc --alloc-fn=av_mallocz" + 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" - target_exec_args="--track-origins=yes --leak-check=full" + 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 libav. Default to the new + # 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). @@ -2685,20 +3257,36 @@ 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="${cross_prefix}${ranlib}" -strip="${cross_prefix}${strip}" +if ${cross_prefix}${ranlib_default} 2>&1 | grep -q "\-D "; then + ranlib_default="${cross_prefix}${ranlib_default} -D" +else + ranlib_default="${cross_prefix}${ranlib_default}" +fi +strip_default="${cross_prefix}${strip_default}" +windres_default="${cross_prefix}${windres_default}" sysinclude_default="${sysroot}/usr/include" -set_default arch cc pkg_config sysinclude target_exec target_os +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 +pkg_config_fail_message="" if ! $pkg_config --version >/dev/null 2>&1; then warn "$pkg_config not found, library detection may fail." pkg_config=false +elif is_in -static $cc $LDFLAGS && ! is_in --static $pkg_config $pkg_config_flags; then + pkg_config_fail_message=" +Note: When building a static binary, add --pkg-config-flags=\"--static\"." +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() { @@ -2715,7 +3303,11 @@ HOSTEXESUF=$(exesuf $host_os) : ${TMPDIR:=$TMP} : ${TMPDIR:=/tmp} -if ! check_cmd mktemp -u XXXXXX; then +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(){ @@ -2735,8 +3327,10 @@ 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 @@ -2821,6 +3415,7 @@ msvc_common_flags(){ -lavifil32) echo vfw32.lib ;; -lavicap32) echo vfw32.lib user32.lib ;; -l*) echo ${flag#-l}.lib ;; + -LARGEADDRESSAWARE) echo $flag ;; -L*) echo -libpath:${flag#-L} ;; *) echo $flag ;; esac @@ -2834,6 +3429,7 @@ msvc_flags(){ -Wall) echo -W4 -wd4244 -wd4127 -wd4018 -wd4389 \ -wd4146 -wd4057 -wd4204 -wd4706 -wd4305 \ -wd4152 -wd4324 -we4013 -wd4100 -wd4214 \ + -wd4307 \ -wd4273 -wd4554 -wd4701 ;; esac done @@ -2847,6 +3443,16 @@ icl_flags(){ # on Windows, does enable remarks so disable them here. -Wall) echo $flag -Qdiag-disable:remark ;; -std=c99) echo -Qstd=c99 ;; + -flto) echo -ipo ;; + esac + done +} + +icc_flags(){ + for flag; do + case $flag in + -flto) echo -ipo ;; + *) echo $flag ;; esac done } @@ -2879,9 +3485,16 @@ suncc_flags(){ prescott|nocona) echo -xarch=sse3 -xchip=pentium4 ;; *-sse3) echo -xarch=sse3 ;; core2) echo -xarch=ssse3 -xchip=core2 ;; - corei7) echo -xarch=sse4_2 -xchip=nehalem ;; - corei7-avx) echo -xarch=avx -xchip=sandybridge ;; - amdfam10|barcelona|bdver*) echo -xarch=sse4_1 ;; + bonnell) echo -xarch=ssse3 ;; + corei7|nehalem) echo -xtarget=nehalem ;; + westmere) echo -xtarget=westmere ;; + silvermont) echo -xarch=sse4_2 ;; + corei7-avx|sandybridge) echo -xtarget=sandybridge ;; + core-avx*|ivybridge|haswell|broadwell) + echo -xarch=avx ;; + amdfam10|barcelona) echo -xtarget=barcelona ;; + btver1) echo -xarch=amdsse4a ;; + btver2|bdver*) echo -xarch=avx ;; athlon-4|athlon-[mx]p) echo -xarch=ssea ;; k8|opteron|athlon64|athlon-fx) echo -xarch=sse2a ;; @@ -2937,7 +3550,9 @@ probe_cc(){ unset _depflags _DEPCMD _DEPFLAGS _flags_filter=echo - if $_cc -v 2>&1 | grep -q '^gcc.*LLVM'; then + if $_cc --version 2>&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 2>/dev/null | head -n1)" : '.*\((.*)\)') _ident="llvm-gcc $($_cc -dumpversion 2>/dev/null) $gcc_extra_ver" @@ -2963,6 +3578,7 @@ probe_cc(){ _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) @@ -3036,7 +3652,7 @@ probe_cc(){ 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="-O1" + _cflags_noopt="-O" _flags_filter=pgi_flags elif $_cc 2>&1 | grep -q 'Microsoft.*ARM.*Assembler'; then _type=armasm @@ -3044,25 +3660,6 @@ probe_cc(){ # 4509: "This form of conditional instruction is deprecated" _flags="-nologo -ignore 4509" _flags_filter=armasm_flags - elif $_cc -nologo- 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 -nologo- 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' elif $_cc 2>&1 | grep -q Intel; then _type=icl _ident=$($_cc 2>&1 | head -n1) @@ -3083,9 +3680,30 @@ probe_cc(){ _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 for consistency + # -Qvec- -Qsimd- to prevent miscompilation, -GS, fp:precise for consistency # with MSVC which enables it by default. - _cflags='-D_USE_MATH_DEFINES -Qms0 -Qvec- -Qsimd- -GS' + _cflags='-D_USE_MATH_DEFINES -Qms0 -Qvec- -Qsimd- -GS -fp:precise' + disable stripping + elif $_cc -nologo- 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 -nologo- 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' + disable stripping elif $_cc --version 2>/dev/null | grep -q ^cparser; then _type=cparser _ident=$($_cc --version | head -n1) @@ -3134,7 +3752,7 @@ test -n "$cc_type" && enable $cc_type || : ${dep_cc_default:=$cc} : ${ld_default:=$cc} : ${host_ld_default:=$host_cc} -set_default ar as dep_cc ld host_ld +set_default ar as dep_cc ld host_ld windres probe_cc as "$as" asflags_filter=$_flags_filter @@ -3170,12 +3788,16 @@ elif $ar 2>&1 | grep -q 'Texas Instruments'; then elif $ar 2>&1 | grep -q 'Usage: ar.*-X.*any'; then arflags='-Xany -r -c' ar_o='$@' +elif $ar 2>&1 | grep -q "\[D\] "; then + arflags="rcD" + 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 @@ -3183,6 +3805,9 @@ if test -n "$sysroot"; then 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" @@ -3218,7 +3843,7 @@ case "$arch" in aarch64|arm64) arch="aarch64" ;; - arm*) + arm*|iPad*|iPhone*) arch="arm" ;; mips*|IP*) @@ -3242,7 +3867,7 @@ case "$arch" in tilegx|tile-gx) arch="tilegx" ;; - i[3-6]86|i86pc|BePC|x86pc|x86_64|amd64) + i[3-6]86*|i86pc|BePC|x86pc|x86_64|x86_32|amd64) arch="x86" ;; esac @@ -3321,7 +3946,10 @@ elif enabled arm; then case "$subarch" in armv5t*) enable fast_clz ;; - armv[6-8]*) enable fast_clz fast_unaligned ;; + armv[6-8]*) + enable fast_clz + disabled fast_unaligned || enable fast_unaligned + ;; esac elif enabled avr32; then @@ -3353,6 +3981,96 @@ elif enabled mips; then cpuflags="-march=$cpu" + case $cpu in + 24kc) + disable mips32r5 + disable mips64r6 + disable mipsfpu + disable mipsdspr1 + disable mipsdspr2 + disable msa + ;; + 24kf*) + disable mips32r5 + disable mips64r6 + disable mipsdspr1 + disable mipsdspr2 + disable msa + ;; + 24kec|34kc|1004kc) + disable mips32r5 + disable mips64r6 + disable mipsfpu + disable mipsdspr2 + disable msa + ;; + 24kef*|34kf*|1004kf*) + disable mips32r5 + disable mips64r6 + disable mipsdspr2 + disable msa + ;; + 74kc) + disable mips32r5 + disable mips64r6 + disable mipsfpu + disable msa + ;; + 74kf) + disable mips32r5 + disable mips64r6 + disable msa + ;; + p5600) + disable mips64r6 + disable mipsdspr1 + disable mipsdspr2 + + check_cflags "-mtune=p5600" + ;; + i6400) + disable mips32r5 + disable mipsdspr1 + disable mipsdspr2 + disable mipsfpu + + check_cflags "-mtune=i6400 -mabi=64" + check_ldflags "-mabi=64" + ;; + loongson*) + disable mipsfpu + disable mips32r2 + disable mips32r5 + disable mips64r6 + disable mipsdspr1 + disable mipsdspr2 + disable msa + enable local_aligned_8 local_aligned_16 local_aligned_32 + enable simd_align_16 + enable fast_64bit + enable fast_clz + enable fast_cmov + enable fast_unaligned + disable aligned_stack + case $cpu in + loongson3*) + cpuflags="-march=loongson3a -mhard-float -fno-expensive-optimizations" + ;; + loongson2e) + cpuflags="-march=loongson2e -mhard-float -fno-expensive-optimizations" + ;; + loongson2f) + cpuflags="-march=loongson2f -mhard-float -fno-expensive-optimizations" + ;; + esac + ;; + generic) + disable mips32r5 + disable mips64r6 + disable msa + ;; + esac + elif enabled ppc; then disable ldbrx @@ -3392,7 +4110,6 @@ elif enabled ppc; then ;; power[7-8]*) cpuflags="-mcpu=$cpu" - enable ldbrx ;; cell) cpuflags="-mcpu=cell" @@ -3440,7 +4157,8 @@ elif enabled x86; then 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|core2|corei7*|amdfam10|barcelona|atom|bdver*) + 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 @@ -3474,6 +4192,7 @@ if test "$?" != 0; then fi add_cppflags -D_ISOC99_SOURCE +add_cxxflags -D__STDC_CONSTANT_MACROS check_cflags -std=c99 check_cc -D_FILE_OFFSET_BITS=64 < @@ -3521,10 +4240,18 @@ case "$arch" in ;; x86) check_64bit x86_32 x86_64 'sizeof(void *) > 4' + # Treat x32 as x64 for now. Note it also needs spic=$shared + test "$subarch" = "x86_32" && check_cpp_condition stddef.h 'defined(__x86_64__)' && + subarch=x86_64 if test "$subarch" = "x86_64"; then spic=$shared fi ;; + ppc) + check_cc < $$(@:$(SLIBSUF)=.def); $(DLLTOOL) -m $(LIBTARGET) -d $$(@:$(SLIBSUF)=.def) -l $(SUBDIR)$(SLIBNAME:$(SLIBSUF)=.lib) -D $(SLIBNAME_WITH_MAJOR)' + 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" - dlltool="${cross_prefix}dlltool" ranlib=: enable dos_paths ;; @@ -3637,6 +4379,7 @@ case $target_os in # Cannot build both shared and static libs with MSVC or icl. disable static fi + enabled x86_32 && check_ldflags -LARGEADDRESSAWARE shlibdir_default="$bindir_default" SLIBPREF="" SLIBSUF=".dll" @@ -3665,6 +4408,7 @@ case $target_os in 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" @@ -3681,6 +4425,7 @@ case $target_os in ranlib="echo ignoring ranlib" ;; os/2*) + strip="lxlite -CS" ln_s="cp -f" objformat="aout" add_cppflags -D_GNU_SOURCE @@ -3700,6 +4445,7 @@ case $target_os in 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 @@ -3736,6 +4482,7 @@ case $target_os in add_compat strtod.o strtod=avpriv_strtod network_extralibs='-lbsd' exeobjs=compat/plan9/main.o + disable ffserver cp_f='cp' ;; none) @@ -3764,6 +4511,10 @@ probe_libc(){ # 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__ @@ -3814,10 +4565,16 @@ EOF 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 - else - eval ${pfx}libc_type=default - add_${pfx}cppflags -D_DEFAULT_SOURCE fi + check_${pfx}cc < +void *v = localtime_r; +EOF +test "$?" != 0 && check_${pfx}cc -D_POSIX_C_SOURCE=200112 -D_XOPEN_SOURCE=600 < +void *v = localtime_r; +EOF + } probe_libc @@ -3852,10 +4609,14 @@ esc(){ echo "$*" | sed 's/%/%25/g;s/:/%3a/g' } -echo "config:$arch:$subarch:$cpu:$target_os:$(esc $cc_ident):$(esc $LIBAV_CONFIGURATION)" >config.fate +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 libdir +: ${shlibdir_default:="$libdir"} +: ${pkgconfigdir_default:="$libdir/pkgconfig"} + set_default $PATHS_LIST set_default nm @@ -3874,20 +4635,31 @@ die_license_disabled() { enabled $1 || { enabled $2 && die "$2 is $1 and --enable-$1 is not specified."; } } +die_license_disabled_gpl() { + enabled $1 || { enabled $2 && die "$2 is incompatible with the gpl and --enable-$1 is not specified."; } +} + +die_license_disabled gpl frei0r die_license_disabled gpl libcdio +die_license_disabled gpl libsmbclient +die_license_disabled gpl libutvideo +die_license_disabled gpl libvidstab die_license_disabled gpl libx264 die_license_disabled gpl libx265 die_license_disabled gpl libxavs die_license_disabled gpl libxvid +die_license_disabled gpl libzvbi die_license_disabled gpl x11grab +die_license_disabled nonfree libaacplus die_license_disabled nonfree libfaac -die_license_disabled nonfree libfdk_aac die_license_disabled nonfree nvenc -die_license_disabled nonfree openssl +enabled gpl && die_license_disabled_gpl nonfree libfdk_aac +enabled gpl && die_license_disabled_gpl nonfree openssl die_license_disabled version3 libopencore_amrnb die_license_disabled version3 libopencore_amrwb +die_license_disabled version3 libsmbclient die_license_disabled version3 libvo_aacenc die_license_disabled version3 libvo_amrwbenc @@ -3945,6 +4717,10 @@ unsigned int endian = 'B' << 24 | 'I' << 16 | 'G' << 8 | 'E'; EOF od -t x1 $TMPO | grep -q '42 *49 *47 *45' && enable bigendian +if ! enabled ppc64 || enabled bigendian; then + disable vsx +fi + check_gas() { log "check_gas using '$as' as AS" # :vararg is used on aarch64, arm and ppc altivec @@ -3965,7 +4741,7 @@ EOF if enabled_any arm aarch64 || enabled_all ppc altivec && enabled asm; then nogas=: enabled_any arm aarch64 && nogas=die - enabled_all ppc altivec && nogas=warn + enabled_all ppc altivec && [ $target_os_default != aix ] && nogas=warn as_noop=-v case $as_type in @@ -3976,8 +4752,9 @@ if enabled_any arm aarch64 || enabled_all ppc altivec && enabled asm; then [ $target_os = "darwin" ] && gaspp_as_type="apple-$gaspp_as_type" - check_cmd gas-preprocessor.pl -arch $arch -as-type $gaspp_as_type -- $as $as_noop && - gas="gas-preprocessor.pl -arch $arch -as-type $gaspp_as_type -- $as" + test "${as#*gas-preprocessor.pl}" != "$as" || + check_cmd gas-preprocessor.pl -arch $arch -as-type $gaspp_as_type -- ${as:=$cc} $as_noop && + gas="${gas:=gas-preprocessor.pl} -arch $arch -as-type $gaspp_as_type -- ${as:=$cc}" if ! check_gas ; then as=${gas:=$as} @@ -3993,6 +4770,8 @@ fi check_inline_asm inline_asm_labels '"1:\n"' +check_inline_asm inline_asm_nonlocal_labels '"Label:\n"' + if enabled aarch64; then enabled armv8 && check_insn armv8 'prfm pldl1strm, [x0]' # internal assembler in clang 3.3 does not support this instruction @@ -4008,17 +4787,21 @@ elif enabled alpha; then elif enabled arm; then enabled msvc && check_cpp_condition stddef.h "defined _M_ARMT" && enable thumb - check_cpp_condition stddef.h "defined __thumb__" && enable_weak thumb + + check_cpp_condition stddef.h "defined __thumb__" && check_cc <= 30"; then enable vfp_args - elif ! check_cpp_condition stddef.h "defined __ARM_PCS || defined __SOFTFP__"; then + elif ! check_cpp_condition stddef.h "defined __ARM_PCS || defined __SOFTFP__" && [ $target_os != darwin ]; then case "${cross_prefix:-$cc}" in *hardfloat*) enable vfp_args; fpabi=vfp ;; - *) check_ld <= 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 libdcadec && require libdcadec libdcadec/dca_context.h dcadec_context_create -ldcadec +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 libdcadec && require_pkg_config dcadec libdcadec/dca_context.h dcadec_context_create && + check_struct libdcadec/dca_context.h "struct dcadec_exss_info" matrix_encoding enabled libfaac && require2 libfaac "stdint.h faac.h" faacEncGetVersion -lfaac -enabled libfdk_aac && require_pkg_config fdk-aac "fdk-aac/aacenc_lib.h" aacEncOpen +enabled libfdk_aac && { use_pkg_config fdk-aac "fdk-aac/aacenc_lib.h" aacEncOpen || + { require libfdk_aac fdk-aac/aacenc_lib.h aacEncOpen -lfdk-aac && + warn "using libfdk without pkg-config"; } } +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_pkg_config freetype2 "ft2build.h FT_FREETYPE_H" FT_Init_FreeType +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 libkvazaar && require_pkg_config kvazaar kvazaar.h kvz_api_get enabled libmfx && require_pkg_config libmfx "mfx/mfxvideo.h" MFXInit +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/cv.h cvCreateImageHeader +enabled libopencv && require_pkg_config opencv opencv/cxcore.h cvCreateImageHeader enabled libopenh264 && require_pkg_config openh264 wels/codec_api.h WelsGetCodecVersion -enabled libopenjpeg && { { check_header openjpeg.h && check_lib2 openjpeg.h opj_version -lopenjpeg -DOPJ_STATIC; } || - { require_pkg_config libopenjpeg1 openjpeg.h opj_version -DOPJ_STATIC; } } +enabled libopenjpeg && { check_lib openjpeg.h opj_version -lopenmj2 -DOPJ_STATIC || + 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-simple pulse/simple.h pa_simple_new +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 && { use_pkg_config smbclient libsmbclient.h smbc_init || + require smbclient libsmbclient.h smbc_init -lsmbclient; } enabled libsnappy && require snappy snappy-c.h snappy_compress -lsnappy +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 +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 && require_pkg_config "vpx >= 1.3.0" vpx/vpx_codec.h vpx_codec_version && { + +enabled libvpx && { enabled libvpx_vp8_decoder && { - check_pkg_config vpx "vpx/vpx_decoder.h vpx/vp8dx.h" vpx_codec_vp8_dx || - disable libvpx_vp8_decoder; + use_pkg_config "vpx >= 0.9.1" "vpx/vpx_decoder.h vpx/vp8dx.h" vpx_codec_vp8_dx || + 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_pkg_config vpx "vpx/vpx_encoder.h vpx/vp8cx.h" vpx_codec_vp8_cx || - disable libvpx_vp8_encoder; + use_pkg_config "vpx >= 0.9.7" "vpx/vpx_encoder.h vpx/vp8cx.h" vpx_codec_vp8_cx || + 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_pkg_config vpx "vpx/vpx_decoder.h vpx/vp8dx.h" vpx_codec_vp9_dx || - disable libvpx_vp9_decoder; + use_pkg_config "vpx >= 1.3.0" "vpx/vpx_decoder.h vpx/vp8dx.h" vpx_codec_vp9_dx || + check_lib2 "vpx/vpx_decoder.h vpx/vp8dx.h" "vpx_codec_vp9_dx" -lvpx || + disable libvpx_vp9_decoder; } enabled libvpx_vp9_encoder && { - check_pkg_config vpx "vpx/vpx_encoder.h vpx/vp8cx.h" vpx_codec_vp9_cx || - disable libvpx_vp9_encoder; + use_pkg_config "vpx >= 1.3.0" "vpx/vpx_encoder.h vpx/vp8cx.h" vpx_codec_vp9_cx || + check_lib2 "vpx/vpx_encoder.h vpx/vp8cx.h" "vpx_codec_vp9_cx VP9E_SET_AQ_MODE" -lvpx || + disable libvpx_vp9_encoder; } if disabled_all libvpx_vp8_decoder libvpx_vp9_decoder libvpx_vp8_encoder libvpx_vp9_encoder; then die "libvpx enabled but no supported decoders found" fi } + enabled libwavpack && require libwavpack wavpack/wavpack.h WavpackOpenFileOutput -lwavpack -enabled libwebp && require_pkg_config libwebp webp/encode.h WebPGetEncoderVersion -enabled libx264 && require_pkg_config x264 "stdint.h x264.h" x264_encoder_encode && +enabled libwebp && { + enabled libwebp_encoder && require_pkg_config "libwebp >= 0.2.0" webp/encode.h WebPGetEncoderVersion + enabled libwebp_anim_encoder && { use_pkg_config "libwebpmux >= 0.4.0" webp/mux.h WebPAnimEncoderOptionsInit || disable libwebp_anim_encoder; } } +enabled libx264 && { use_pkg_config x264 "stdint.h x264.h" x264_encoder_encode || + { require libx264 x264.h x264_encoder_encode -lx264 && + warn "using libx264 without pkg-config"; } } && { check_cpp_condition x264.h "X264_BUILD >= 118" || - die "ERROR: libx264 version must be >= 0.118."; } && + die "ERROR: libx264 must be installed and version must be >= 0.118."; } && { check_cpp_condition x264.h "X264_MPEG2" && enable libx262; } enabled libx265 && require_pkg_config x265 x265.h x265_api_get && @@ -4399,6 +5310,8 @@ enabled libx265 && require_pkg_config x265 x265.h x265_api_get && die "ERROR: libx265 version must be >= 57."; } 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 mmal && { check_lib interface/mmal/mmal.h mmal_port_connect -lmmal_core -lmmal_util -lmmal_vc_client -lbcm_host || { ! enabled cross_compile && { add_cflags -isystem/opt/vc/include/ -isystem/opt/vc/include/interface/vmcs_host/linux -isystem/opt/vc/include/interface/vcos/pthreads -fgnu89-inline ; @@ -4406,10 +5319,32 @@ enabled mmal && { check_lib interface/mmal/mmal.h mmal_port_connect check_lib interface/mmal/mmal.h mmal_port_connect ; } check_lib interface/mmal/mmal.h mmal_port_connect ; } || die "ERROR: mmal not found"; } +enabled nvenc && { check_header nvEncodeAPI.h || die "ERROR: nvEncodeAPI.h not found."; } && + { check_cpp_condition nvEncodeAPI.h "NVENCAPI_MAJOR_VERSION >= 5" || + die "ERROR: NVENC API version 4 or older is not supported"; } && + { [ $target_os != cygwin ] || die "ERROR: NVENC is not supported on Cygwin currently."; } +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_lib2 gmp.h mpz_export -lgmp && enable gmp; } || @@ -4424,34 +5359,60 @@ if enabled libdc1394; then enable libdc1394_1; } || die "ERROR: No version of libdc1394 found " fi - -if enabled nvenc; then - check_header cuda.h || die "ERROR: cuda.h not found."; - check_header nvEncodeAPI.h || die "ERROR: nvEncodeAPI.h not found."; - check_cpp_condition nvEncodeAPI.h "NVENCAPI_MAJOR_VERSION >= 5" || - die "ERROR: NVENC API version 4 or older is not supported"; -fi - -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 +if ! disabled sdl; then + 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 + elif enabled sdl ; then + die "ERROR: SDL not found" + else + disable sdl + fi + fi + if test $target_os = "mingw32"; then + sdl_libs="$sdl_libs -mconsole" + fi fi - +enabled sdl && add_cflags $sdl_cflags && add_extralibs $sdl_libs + +disabled securetransport || { check_func SecIdentityCreate "-Wl,-framework,CoreFoundation -Wl,-framework,Security" && + check_lib2 "Security/SecureTransport.h Security/Security.h" "SSLCreateContext SecItemImport" "-Wl,-framework,CoreFoundation -Wl,-framework,Security" && + enable securetransport; } + +makeinfo --version > /dev/null 2>&1 && enable makeinfo || disable makeinfo +enabled makeinfo \ + && [ 0$(makeinfo --version | grep "texinfo" | sed 's/.*texinfo[^0-9]*\([0-9]*\)\..*/\1/') -ge 5 ] \ + && 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 -texi2html -version > /dev/null 2>&1 && enable texi2html || disable texi2html +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_struct linux/videodev2.h "struct v4l2_frmivalenum" discrete +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_code cc sys/videoio.h "struct v4l2_frmsizeenum vfse; vfse.discrete.width = 0;" && enable_safe struct_v4l2_frmivalenum_discrete 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; } || @@ -4462,13 +5423,20 @@ check_cpp_condition vfw.h "WM_CAP_DRIVER_CONNECT > WM_USER" && enable vfwcap_def check_header dev/ic/bt8xx.h check_header sndio.h -check_header sys/soundcard.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 && +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 @@ -4479,25 +5447,33 @@ if enabled libcdio; then die "ERROR: No usable libcdio/cdparanoia found" fi -check_lib X11/Xlib.h XOpenDisplay -lX11 && enable xlib +enabled xlib && + check_lib X11/Xlib.h XOpenDisplay -lX11 || disable xlib -if enabled libxcb || enabled x11grab && ! disabled libxcb; then - check_pkg_config xcb-shape xcb/shape.h xcb_shape_rectangles || { - enabled libxcb && die "ERROR: libxcb not found"; +if ! disabled libxcb; then + check_pkg_config "xcb >= 1.4" xcb/xcb.h xcb_connect || { + enabled libxcb && die "ERROR: libxcb >= 1.4 not found"; } && disable x11grab && enable libxcb - disabled libxcb_shm || +if enabled libxcb; then + disabled libxcb_shm || { check_pkg_config xcb-shm xcb/shm.h xcb_shm_attach || { enabled libxcb_shm && die "ERROR: libxcb_shm not found"; - } && check_header sys/shm.h && enable libxcb_shm + } && check_header sys/shm.h && enable libxcb_shm; } - disabled libxcb_xfixes || + disabled libxcb_xfixes || { check_pkg_config xcb-xfixes xcb/xfixes.h xcb_xfixes_get_cursor_image || { enabled libxcb_xfixes && die "ERROR: libxcb_xfixes not found"; - } && enable libxcb_xfixes + } && enable libxcb_xfixes; } + + disabled libxcb_shape || { + check_pkg_config xcb-shape xcb/shape.h xcb_shape_get_rectangles || { + enabled libxcb_shape && die "ERROR: libxcb_shape not found"; + } && enable libxcb_shape; } - add_cflags "$xcb_event_cflags $xcb_shm_cflags $xcb_xfixes_cflags" - add_extralibs "$xcb_event_libs $xcb_shm_libs $xcb_xfixes_libs" + add_cflags $xcb_cflags $xcb_shm_cflags $xcb_xfixes_cflags $xcb_shape_cflags + add_extralibs $xcb_libs $xcb_shm_libs $xcb_xfixes_libs $xcb_shape_libs +fi fi if enabled x11grab; then @@ -4506,6 +5482,22 @@ if enabled x11grab; then require Xfixes X11/extensions/Xfixes.h XFixesGetCursorImage -lXfixes fi +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 vaapi && enabled xlib && check_lib2 "va/va.h va/va_x11.h" vaGetDisplay -lva -lva-x11 && enable vaapi_x11 @@ -4516,9 +5508,12 @@ enabled vdpau && enabled vdpau && enabled xlib && check_func_headers "vdpau/vdpau.h vdpau/vdpau_x11.h" vdp_device_create_x11 -lvdpau && - prepend avconv_libs $($ldflags_filter "-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 @@ -4527,12 +5522,13 @@ check_cflags -Wall check_cflags -Wdisabled-optimization check_cflags -Wpointer-arith check_cflags -Wredundant-decls -check_cflags -Wcast-qual 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(){ @@ -4547,13 +5543,14 @@ check_disable_warning -Wno-pointer-sign # add some linker flags check_ldflags -Wl,--warn-common -check_ldflags -Wl,-rpath-link=libswscale:libavfilter:libavdevice:libavformat:libavcodec:libavutil:libavresample +check_ldflags -Wl,-rpath-link=libpostproc:libswresample:libswscale:libavfilter:libavdevice:libavformat:libavcodec:libavutil:libavresample enabled rpath && add_ldexeflags -Wl,-rpath,$libdir +enabled rpath && add_ldlibflags -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 || strip='true' +check_stripflags -wN \'..@*\' || check_stripflags -x enabled neon_clobber_test && check_ldflags -Wl,--wrap,avcodec_open2 \ @@ -4563,6 +5560,7 @@ enabled neon_clobber_test && -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 @@ -4572,8 +5570,10 @@ enabled xmm_clobber_test && -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 @@ -4611,28 +5611,41 @@ if enabled lto; then test "$cc_type" != "$ld_type" && die "LTO requires same compiler and linker" check_cflags -flto check_ldflags -flto $cpuflags + disable inline_asm_direct_symbol_refs fi check_optflags $optflags check_optflags -fno-math-errno check_optflags -fno-signed-zeros +enabled ftrapv && check_cflags -ftrapv + +check_cc -mno-red-zone <= 1400" && add_cflags -Qansi-alias - # icl will pass the inline asm tests but inline asm is currently - # not supported (build will fail) - disable inline_asm + # 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 (MSVC 2013) onwards actually has log2. check_cpp_condition crtversion.h "_VC_CRT_MAJOR_VERSION >= 12" || disable log2 @@ -4742,6 +5757,8 @@ case $target_os in ;; esac +enable frame_thread_encoder + enabled asm || { arch=c; disable $ARCH_LIST $ARCH_EXT_LIST; } check_deps $CONFIG_LIST \ @@ -4749,13 +5766,48 @@ check_deps $CONFIG_LIST \ $HAVE_LIST \ $ALL_COMPONENTS \ -enabled_all dxva2 CoTaskMemFree && - prepend avconv_libs $($ldflags_filter "-lole32") && +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" "-luser32") && 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 @@ -4769,11 +5821,32 @@ done enabled zlib && add_cppflags -DZLIB_CONST # conditional library dependencies, in linking order +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 cover_rect_filter && prepend avfilter_deps "avformat avcodec" +enabled ebur128_filter && enabled swresample && prepend avfilter_deps "swresample" +enabled elbg_filter && prepend avfilter_deps "avcodec" +enabled fftfilt_filter && prepend avfilter_deps "avcodec" +enabled find_rect_filter && prepend avfilter_deps "avformat avcodec" +enabled mcdeint_filter && prepend avfilter_deps "avcodec" enabled movie_filter && prepend avfilter_deps "avformat 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 scale2ref_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 uspp_filter && prepend avfilter_deps "avcodec" + +enabled lavfi_indev && prepend avdevice_deps "avfilter" -enabled opus_decoder && prepend avcodec_deps "avresample" +enabled opus_decoder && prepend avcodec_deps "swresample" expand_deps(){ lib_deps=${1}_deps @@ -4782,6 +5855,9 @@ expand_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" @@ -4796,6 +5872,9 @@ 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 @@ -4828,6 +5907,16 @@ if enabled arm; then 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 "MIPS32R5 enabled ${mips32r5-no}" + echo "MIPS64R6 enabled ${mips64r6-no}" + echo "MIPS DSP R1 enabled ${mipsdspr1-no}" + echo "MIPS DSP R2 enabled ${mipsdspr2-no}" + echo "MIPS MSA enabled ${msa-no}" + echo "LOONGSON MMI enabled ${mmi-no}" fi if enabled ppc; then echo "AltiVec enabled ${altivec-no}" @@ -4837,15 +5926,23 @@ if enabled ppc; then 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 @@ -4874,15 +5971,19 @@ fi echo "License: $license" -echo "Creating config.mak and config.h..." +echo "Creating config.mak, config.h, and doc/config.texi..." test -e Makefile || echo "include $source_path/Makefile" > Makefile -config_files="$TMPH config.mak" +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 @@ -5004,18 +6122,26 @@ map 'print_program_libs $v' $PROGRAM_LIST cat > $TMPH <>$TMPH + test -n "$malloc_prefix" && echo "#define MALLOC_PREFIX $malloc_prefix" >>$TMPH @@ -5026,13 +6152,20 @@ fi enabled getenv || echo "#define getenv(x) NULL" >> $TMPH + +mkdir -p doc +mkdir -p tests +mkdir -p tests/api +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 /* LIBAV_CONFIG_H */" >> $TMPH +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 @@ -5052,12 +6185,15 @@ echo "#endif /* AVUTIL_AVCONFIG_H */" >> $TMPH cp_if_changed $TMPH libavutil/avconfig.h -test -n "$WARNINGS" && printf "\n$WARNINGS" +if test -n "$WARNINGS"; then + printf "\n$WARNINGS" + enabled fatal_warnings && exit 1 +fi # build pkg-config files lib_version(){ - eval printf "\"lib${1} >= \$LIB$(toupper ${1})_VERSION, \"" + eval printf "\"lib${1}${build_suffix} >= \$LIB$(toupper ${1})_VERSION, \"" } pkgconfig_generate(){ @@ -5070,7 +6206,7 @@ pkgconfig_generate(){ requires=${requires%, } enabled ${name#lib} || return 0 mkdir -p $name - cat < $name/$name.pc + cat < $name/$name${build_suffix}.pc prefix=$prefix exec_prefix=\${prefix} libdir=$libdir @@ -5082,30 +6218,36 @@ Version: $version Requires: $(enabled shared || echo $requires) Requires.private: $(enabled shared && echo $requires) Conflicts: -Libs: -L\${libdir} -l${shortname} $(enabled shared || echo $libs) +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 - cat < $name/$name-uninstalled.pc + +mkdir -p doc/examples/pc-uninstalled +includedir=${source_path} +[ "$includedir" = . ] && includedir="\${pcfiledir}/../../.." + cat < doc/examples/pc-uninstalled/$name.pc prefix= exec_prefix= -libdir=\${pcfiledir} -includedir=${source_path} +libdir=\${pcfiledir}/../../../$name +includedir=${includedir} Name: $name Description: $comment Version: $version Requires: $requires Conflicts: -Libs: \${libdir}/${LIBPREF}${shortname}${LIBSUF} $libs +Libs: -L\${libdir} -Wl,-rpath,\${libdir} -l${shortname} $(enabled shared || echo $libs) Cflags: -I\${includedir} EOF } -pkgconfig_generate libavutil "Libav utility library" "$LIBAVUTIL_VERSION" "$LIBRT $LIBM" -pkgconfig_generate libavcodec "Libav codec library" "$LIBAVCODEC_VERSION" "$extralibs" -pkgconfig_generate libavformat "Libav container format library" "$LIBAVFORMAT_VERSION" "$extralibs" -pkgconfig_generate libavdevice "Libav device handling library" "$LIBAVDEVICE_VERSION" "$extralibs" -pkgconfig_generate libavfilter "Libav video filtering library" "$LIBAVFILTER_VERSION" "$extralibs" -pkgconfig_generate libavresample "Libav audio resampling library" "$LIBAVRESAMPLE_VERSION" "$LIBM" -pkgconfig_generate libswscale "Libav image rescaling library" "$LIBSWSCALE_VERSION" "$LIBM" +pkgconfig_generate libavutil "FFmpeg utility library" "$LIBAVUTIL_VERSION" "$LIBRT $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"