X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=configure;h=766f9c2f267c48a087a6605cf0c8944a7b226672;hb=b776113e5d4a56759615196de98efe802e95a6b6;hp=1954c5448745500766c88afec9a5928d58082dcd;hpb=61b323ce7c7cdc101eadfd7de2203922b8a39e8d;p=ffmpeg diff --git a/configure b/configure index 1954c544874..766f9c2f267 100755 --- a/configure +++ b/configure @@ -86,6 +86,7 @@ Standard options: --shlibdir=DIR install shared libs in DIR [PREFIX/lib] --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] Licensing options: --enable-gpl allow use of GPL code, the resulting libs @@ -108,7 +109,7 @@ Program options: --disable-avconv disable avconv build --disable-avplay disable avplay build --disable-avprobe disable avprobe build - --disable-avserver disable avserver build + --disable-avserver deprecated, does nothing Component options: --disable-doc do not build documentation @@ -129,6 +130,7 @@ Component options: --disable-mdct disable MDCT code --disable-rdft disable RDFT code --disable-fft disable FFT code + --disable-faan disable floating point AAN (I)DCT code Hardware accelerators: --enable-dxva2 enable DXVA2 code @@ -178,6 +180,7 @@ External library support: --enable-bzlib enable bzlib [autodetect] --enable-frei0r enable frei0r video filtering --enable-gnutls enable gnutls [no] + --enable-libbs2b enable bs2b DSP library [no] --enable-libcdio enable audio CD grabbing with libcdio --enable-libdc1394 enable IIDC-1394 grabbing using libdc1394 and libraw1394 [no] @@ -191,12 +194,13 @@ External library support: --enable-libopencore-amrwb enable AMR-WB decoding via libopencore-amrwb [no] --enable-libopencv enable video filtering via libopencv [no] --enable-libopenjpeg enable JPEG 2000 de/encoding via OpenJPEG [no] - --enable-libopus enable Opus decoding via libopus [no] + --enable-libopus enable Opus de/encoding via libopus [no] --enable-libpulse enable Pulseaudio input via libpulse [no] --enable-librtmp enable RTMP[E] support via librtmp [no] --enable-libschroedinger enable Dirac de/encoding via libschroedinger [no] --enable-libspeex enable Speex de/encoding via libspeex [no] --enable-libtheora enable Theora encoding via libtheora [no] + --enable-libtwolame enable MP2 encoding via libtwolame [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] @@ -206,13 +210,19 @@ External library support: --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-libxvid enable Xvid encoding via xvidcore, native MPEG-4/Xvid encoder exists [no] --enable-openssl enable openssl [no] - --enable-x11grab enable X11 grabbing [no] + --enable-x11grab enable X11 grabbing (legacy) [no] --enable-zlib enable zlib [autodetect] -Advanced options (experts only): +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] --enable-cross-compile assume a cross-compiler is used --sysroot=PATH root of cross-build tree @@ -228,6 +238,8 @@ Advanced options (experts only): --cc=CC use C compiler CC [$cc_default] --dep-cc=DEPCC use dependency generator DEPCC [$cc_default] --ld=LD use linker LD + --pkg-config=PKGCONFIG use pkg-config tool PKGCONFIG [$pkg_config_default] + --pkg-config-flags=FLAGS pass additional flags to pkgconf [] --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 @@ -237,27 +249,27 @@ Advanced options (experts only): --host-os=OS compiler host OS [$target_os] --extra-cflags=ECFLAGS add ECFLAGS to CFLAGS [$CFLAGS] --extra-ldflags=ELDFLAGS add ELDFLAGS to LDFLAGS [$LDFLAGS] + --extra-ldexeflags=ELDFLAGS add ELDFLAGS to LDEXEFLAGS [$LDEXEFLAGS] --extra-libs=ELIBS add ELIBS [$ELIBS] --extra-version=STRING version string suffix [] --optflags=OPTFLAGS override optimization-related compiler flags --build-suffix=SUFFIX library name suffix [] - --malloc-prefix=PREFIX prefix malloc and related names with PREFIX - --arch=ARCH select architecture [$arch] - --cpu=CPU select the minimum required CPU (affects - instruction selection, may crash on older CPUs) --enable-pic build position-independent code - --enable-sram allow use of on-chip SRAM --enable-thumb compile for Thumb instruction set + --enable-lto use link-time optimization + +Advanced options (experts only): + --malloc-prefix=PREFIX prefix malloc and related names with PREFIX --disable-symver disable symbol versioning --enable-hardcoded-tables use hardcoded tables instead of runtime generation --disable-safe-bitstream-reader disable buffer boundary checking in bitreaders (faster, but may crash) --enable-memalign-hack emulate memalign, interferes with memory debuggers - --enable-lto use link-time optimization + --enable-sram allow use of on-chip SRAM Optimization options (experts only): - --disable-asm disable all assembler optimizations + --disable-asm disable all assembly optimizations --disable-altivec disable AltiVec optimizations --disable-amd3dnow disable 3DNow! optimizations --disable-amd3dnowext disable 3DNow! extended optimizations @@ -279,9 +291,8 @@ Optimization options (experts only): --disable-armv6t2 disable armv6t2 optimizations --disable-vfp disable VFP optimizations --disable-neon disable NEON optimizations - --disable-vis disable VIS optimizations - --disable-inline-asm disable use of inline assembler - --disable-yasm disable use of yasm assembler + --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-debug disable debugging symbols @@ -649,6 +660,15 @@ prepend(){ eval "$var=\"$* \$$var\"" } +unique(){ + var=$1 + uniq_list="" + for tok in $(eval echo \$$var); do + uniq_list="$(filter_out $tok $uniq_list) $tok" + done + eval "$var=\"${uniq_list}\"" +} + add_cppflags(){ append CPPFLAGS "$@" } @@ -665,6 +685,10 @@ add_ldflags(){ append LDFLAGS $($ldflags_filter "$@") } +add_ldexeflags(){ + append LDEXEFLAGS $($ldflags_filter "$@") +} + add_stripflags(){ append STRIPFLAGS "$@" } @@ -923,8 +947,8 @@ check_pkg_config(){ funcs="$3" shift 3 check_cmd $pkg_config --exists --print-errors $pkg || return - pkg_cflags=$($pkg_config --cflags $pkg) - pkg_libs=$($pkg_config --libs $pkg) + pkg_cflags=$($pkg_config --cflags $pkg_config_flags $pkg) + pkg_libs=$($pkg_config --libs $pkg_config_flags $pkg) check_func_headers "$headers" "$funcs" $pkg_cflags $pkg_libs "$@" && set_safe ${pkg}_cflags $pkg_cflags && set_safe ${pkg}_libs $pkg_libs @@ -994,6 +1018,16 @@ check_builtin(){ check_code ld "$headers" "$builtin" "$@" && enable "$name" } +check_compile_assert(){ + log check_compile_assert "$@" + name=$1 + headers=$2 + condition=$3 + shift 3 + disable "$name" + check_code cc "$headers" "char c[2 * !!($condition) - 1]" "$@" && enable "$name" +} + require(){ name="$1" header="$2" @@ -1036,7 +1070,7 @@ check_host_cpp(){ log check_host_cpp "$@" cat > $TMPC log_file $TMPC - check_cmd $host_cc $HOSTCPPFLAGS $HOSTCFLAGS "$@" $(hostcc_e $TMPO) $TMPC + check_cmd $host_cc $host_cppflags $host_cflags "$@" $(hostcc_e $TMPO) $TMPC } check_host_cppflags(){ @@ -1109,10 +1143,12 @@ EXTERNAL_LIBRARY_LIST=" bzlib frei0r gnutls + libbs2b libcdio libdc1394 libfaac libfdk_aac + libfontconfig libfreetype libgsm libilbc @@ -1127,6 +1163,7 @@ EXTERNAL_LIBRARY_LIST=" libschroedinger libspeex libtheora + libtwolame libvo_aacenc libvo_amrwbenc libvorbis @@ -1136,18 +1173,34 @@ EXTERNAL_LIBRARY_LIST=" libx264 libx265 libxavs + libxcb + libxcb_shm + libxcb_xfixes libxvid openssl x11grab zlib " +FEATURE_LIST=" + gray + hardcoded_tables + runtime_cpudetect + safe_bitstream_reader + shared + small + sram + static + swscale_alpha +" + HWACCEL_LIST=" dxva2 vaapi vda vdpau " + LIBRARY_LIST=" avcodec avdevice @@ -1158,62 +1211,62 @@ LIBRARY_LIST=" swscale " +LICENSE_LIST=" + gpl + nonfree + version3 +" + PROGRAM_LIST=" avconv avplay avprobe - avserver " -CONFIG_LIST=" - $COMPONENT_LIST - $EXAMPLE_LIST - $EXTERNAL_LIBRARY_LIST - $HWACCEL_LIST - $LIBRARY_LIST - $PROGRAM_LIST +SUBSYSTEM_LIST=" dct doc error_resilience + faan fft - gpl - gray - hardcoded_tables lsp lzo mdct + network + rdft +" + +CONFIG_LIST=" + $COMPONENT_LIST + $EXAMPLE_LIST + $EXTERNAL_LIBRARY_LIST + $FEATURE_LIST + $HWACCEL_LIST + $LICENSE_LIST + $LIBRARY_LIST + $PROGRAM_LIST + $SUBSYSTEM_LIST memalign_hack neon_clobber_test - network - nonfree - pod2man pic - rdft - runtime_cpudetect - safe_bitstream_reader - shared - small - sram - static - swscale_alpha + pod2man texi2html thumb - version3 xmm_clobber_test " -THREADS_LIST=' +THREADS_LIST=" pthreads w32threads -' +" -ATOMICS_LIST=' +ATOMICS_LIST=" atomics_gcc atomics_suncc atomics_win32 -' +" -ARCH_LIST=' +ARCH_LIST=" aarch64 alpha arm @@ -1238,27 +1291,25 @@ ARCH_LIST=' x86 x86_32 x86_64 -' +" -ARCH_EXT_LIST_ARM=' +ARCH_EXT_LIST_ARM=" armv5te armv6 armv6t2 + armv8 neon vfp vfpv3 -' +" -ARCH_EXT_LIST_X86=' +ARCH_EXT_LIST_X86_SIMD=" amd3dnow amd3dnowext avx avx2 - cpunop - xop fma3 fma4 - i686 mmx mmxext sse @@ -1267,26 +1318,98 @@ ARCH_EXT_LIST_X86=' sse4 sse42 ssse3 -' + xop +" + +ARCH_EXT_LIST_PPC=" + altivec + dcbzl + ldbrx + ppc4xx +" + +ARCH_EXT_LIST_X86=" + $ARCH_EXT_LIST_X86_SIMD + cpunop + i686 +" ARCH_EXT_LIST=" $ARCH_EXT_LIST_ARM + $ARCH_EXT_LIST_PPC $ARCH_EXT_LIST_X86 - altivec - ppc4xx + loongson vis " -HAVE_LIST_CMDLINE=' +ARCH_FEATURES=" + aligned_stack + fast_64bit + fast_clz + fast_cmov + local_aligned_8 + local_aligned_16 + simd_align_16 +" + +BUILTIN_LIST=" + atomic_cas_ptr + machine_rw_barrier + MemoryBarrier + mm_empty + rdtsc + sync_val_compare_and_swap +" +HAVE_LIST_CMDLINE=" inline_asm symver yasm -' +" -HAVE_LIST_PUB=' +HAVE_LIST_PUB=" bigendian fast_unaligned -' +" + +HEADERS_LIST=" + alsa_asoundlib_h + altivec_h + arpa_inet_h + cdio_paranoia_h + cdio_paranoia_paranoia_h + dev_bktr_ioctl_bt848_h + dev_bktr_ioctl_meteor_h + dev_ic_bt8xx_h + dev_video_bktr_ioctl_bt848_h + dev_video_meteor_ioctl_meteor_h + direct_h + dlfcn_h + dxva_h + gsm_h + io_h + mach_mach_time_h + machine_ioctl_bt848_h + machine_ioctl_meteor_h + malloc_h + poll_h + sndio_h + soundcard_h + sys_mman_h + sys_param_h + sys_resource_h + sys_select_h + sys_soundcard_h + sys_time_h + sys_un_h + sys_videoio_h + unistd_h + windows_h + winsock2_h +" + +INTRINSICS_LIST=" + intrinsics_neon +" MATH_FUNCS=" atanf @@ -1315,47 +1438,16 @@ MATH_FUNCS=" truncf " -HAVE_LIST=" - $ARCH_EXT_LIST - $(add_suffix _external $ARCH_EXT_LIST) - $(add_suffix _inline $ARCH_EXT_LIST) - $HAVE_LIST_CMDLINE - $HAVE_LIST_PUB - $THREADS_LIST - $ATOMICS_LIST - $MATH_FUNCS +SYSTEM_FUNCS=" aligned_malloc - aligned_stack - alsa_asoundlib_h - altivec_h - arpa_inet_h - asm_mod_q - atomic_cas_ptr - atomics_native - attribute_may_alias - attribute_packed - cdio_paranoia_h - cdio_paranoia_paranoia_h + clock_gettime closesocket CommandLineToArgvW + CoTaskMemFree CryptGenRandom - dcbzl - dev_bktr_ioctl_bt848_h - dev_bktr_ioctl_meteor_h - dev_ic_bt8xx_h - dev_video_bktr_ioctl_bt848_h - dev_video_meteor_ioctl_meteor_h - direct_h - dlfcn_h dlopen - dos_paths - dxva_h - ebp_available - ebx_available - fast_64bit - fast_clz - fast_cmov fcntl + flt_lim fork getaddrinfo gethrtime @@ -1363,53 +1455,58 @@ HAVE_LIST=" GetProcessAffinityMask GetProcessMemoryInfo GetProcessTimes - GetSystemTimeAsFileTime getrusage getservbyport + GetSystemTimeAsFileTime gettimeofday - gnu_as - gsm_h - ibm_asm + gmtime_r inet_aton - io_h - inline_asm_labels isatty jack_port_get_latency_range - ldbrx - libc_msvcrt - libdc1394_1 - libdc1394_2 - local_aligned_16 - local_aligned_8 localtime_r - loongson - machine_ioctl_bt848_h - machine_ioctl_meteor_h - machine_rw_barrier - malloc_h + mach_absolute_time MapViewOfFile memalign - MemoryBarrier mkstemp - mm_empty mmap mprotect nanosleep - poll_h posix_memalign - pragma_deprecated - rdtsc sched_getaffinity - sdl SetConsoleTextAttribute setmode setrlimit Sleep - sndio_h - socklen_t - soundcard_h strerror_r strptime + sysconf + sysctl + usleep + VirtualAlloc +" + +TOOLCHAIN_FEATURES=" + as_dn_directive + as_func + asm_mod_q + attribute_may_alias + attribute_packed + ebp_available + ebx_available + gnu_as + ibm_asm + inline_asm_labels + pragma_deprecated + symver_asm_label + symver_gnu_asm + vfp_args + xform_asm + xmm_clobbers +" + +TYPES_LIST=" + CONDITION_VARIABLE_Ptr + socklen_t struct_addrinfo struct_group_source_req struct_ip_mreq_source @@ -1420,30 +1517,34 @@ HAVE_LIST=" struct_sockaddr_sa_len struct_sockaddr_storage struct_v4l2_frmivalenum_discrete - symver_asm_label - symver_gnu_asm - sync_val_compare_and_swap - sysconf - sysctl - sys_mman_h - sys_param_h - sys_resource_h - sys_select_h - sys_soundcard_h - sys_time_h - sys_un_h - sys_videoio_h +" + +HAVE_LIST=" + $ARCH_EXT_LIST + $(add_suffix _external $ARCH_EXT_LIST) + $(add_suffix _inline $ARCH_EXT_LIST) + $ARCH_FEATURES + $ATOMICS_LIST + $BUILTIN_LIST + $HAVE_LIST_CMDLINE + $HAVE_LIST_PUB + $HEADERS_LIST + $INTRINSICS_LIST + $MATH_FUNCS + $SYSTEM_FUNCS + $THREADS_LIST + $TOOLCHAIN_FEATURES + $TYPES_LIST + atomics_native + dos_paths + dxva2_lib + libc_msvcrt + libdc1394_1 + libdc1394_2 + sdl threads - unistd_h - usleep vdpau_x11 - vfp_args - VirtualAlloc - windows_h - winsock2_h - xform_asm xlib - xmm_clobbers " # options emitted with CONFIG_ prefix but not available on the command line @@ -1451,7 +1552,14 @@ CONFIG_EXTRA=" aandcttables ac3dsp audio_frame_queue - dsputil + audiodsp + blockdsp + bswapdsp + cabac + dvprofile + faandct + faanidct + fdctdsp gcrypt golomb gplv3 @@ -1462,22 +1570,33 @@ CONFIG_EXTRA=" h264qpel hpeldsp huffman + huffyuvdsp + huffyuvencdsp + idctdsp + iirfilter intrax8 lgplv3 lpc + me_cmp + mpeg_er mpegaudio mpegaudiodsp mpegvideo mpegvideoenc nettle + pixblockdsp + qpeldsp rangecoder riffdec riffenc rtpdec rtpenc_chain sinewin + startcode + tpeldsp videodsp vp3dsp + wma_freqs " CMDLINE_SELECT=" @@ -1492,9 +1611,10 @@ CMDLINE_SELECT=" logging lto optimizations + rpath " -PATHS_LIST=' +PATHS_LIST=" bindir datadir docdir @@ -1503,7 +1623,7 @@ PATHS_LIST=' mandir prefix shlibdir -' +" CMDLINE_SET=" $PATHS_LIST @@ -1528,6 +1648,7 @@ CMDLINE_SET=" nm optflags pkg_config + pkg_config_flags random_seed samples sysinclude @@ -1551,7 +1672,9 @@ CMDLINE_APPEND=" armv5te_deps="arm" armv6_deps="arm" armv6t2_deps="arm" +armv8_deps="aarch64" neon_deps_any="aarch64 arm" +intrinsics_neon_deps="neon" vfp_deps_any="aarch64 arm" vfpv3_deps="vfp" @@ -1560,8 +1683,6 @@ map 'eval ${v}_inline_deps=inline_asm' $ARCH_EXT_LIST_ARM altivec_deps="ppc" ppc4xx_deps="ppc" -vis_deps="sparc" - cpunop_deps="i686" x86_64_select="i686" x86_64_suggest="fast_cmov" @@ -1587,7 +1708,7 @@ mmx_external_deps="yasm" mmx_inline_deps="inline_asm" mmx_suggest="mmx_external mmx_inline" -for ext in $(filter_out mmx $ARCH_EXT_LIST_X86); do +for ext in $(filter_out mmx $ARCH_EXT_LIST_X86_SIMD); do eval dep=\$${ext}_deps eval ${ext}_external_deps='"${dep}_external"' eval ${ext}_inline_deps='"${dep}_inline"' @@ -1598,8 +1719,7 @@ aligned_stack_if_any="aarch64 ppc x86" fast_64bit_if_any="aarch64 alpha ia64 mips64 parisc64 ppc64 sparc64 x86_64" fast_clz_if_any="aarch64 alpha avr32 mips ppc x86" fast_unaligned_if_any="aarch64 ppc x86" - -need_memalign="altivec neon sse" +simd_align_16_if_any="altivec neon sse" # system capabilities log2_deps="!libc_msvcrt" @@ -1616,101 +1736,106 @@ threads_if_any="$THREADS_LIST" # subsystems dct_select="rdft" -error_resilience_select="dsputil" -lpc_select="dsputil" +error_resilience_select="me_cmp" +faandct_deps="faan fdctdsp" +faanidct_deps="faan idctdsp" +intrax8_select="error_resilience" mdct_select="fft" rdft_select="fft" +me_cmp_select="fdctdsp idctdsp pixblockdsp" +mpeg_er_select="error_resilience" mpegaudio_select="mpegaudiodsp" mpegaudiodsp_select="dct" -mpegvideo_select="dsputil hpeldsp videodsp" -mpegvideoenc_select="mpegvideo" +mpegvideo_select="blockdsp hpeldsp idctdsp me_cmp videodsp" +mpegvideoenc_select="me_cmp mpegvideo pixblockdsp qpeldsp" # decoders / encoders aac_decoder_select="mdct sinewin" -aac_encoder_select="audio_frame_queue mdct sinewin" +aac_encoder_select="audio_frame_queue iirfilter mdct sinewin" aac_latm_decoder_select="aac_decoder aac_latm_parser" -ac3_decoder_select="mdct ac3dsp ac3_parser dsputil" -ac3_encoder_select="mdct ac3dsp dsputil" -ac3_fixed_encoder_select="mdct ac3dsp dsputil" -aic_decoder_select="dsputil golomb" +ac3_decoder_select="ac3_parser ac3dsp bswapdsp mdct" +ac3_encoder_select="ac3dsp audiodsp mdct me_cmp" +ac3_fixed_encoder_select="ac3dsp audiodsp mdct me_cmp" +aic_decoder_select="golomb idctdsp" alac_encoder_select="lpc" -als_decoder_select="dsputil" +als_decoder_select="bswapdsp" amrnb_decoder_select="lsp" amrwb_decoder_select="lsp" amv_decoder_select="sp5x_decoder" -ape_decoder_select="dsputil" -asv1_decoder_select="dsputil" -asv1_encoder_select="dsputil" -asv2_decoder_select="dsputil" -asv2_encoder_select="dsputil" +ape_decoder_select="bswapdsp" +asv1_decoder_select="blockdsp bswapdsp idctdsp" +asv1_encoder_select="bswapdsp fdctdsp pixblockdsp" +asv2_decoder_select="blockdsp bswapdsp idctdsp" +asv2_encoder_select="bswapdsp fdctdsp pixblockdsp" atrac1_decoder_select="mdct sinewin" atrac3_decoder_select="mdct" atrac3p_decoder_select="mdct sinewin" -bink_decoder_select="dsputil hpeldsp" -binkaudio_dct_decoder_select="mdct rdft dct sinewin" -binkaudio_rdft_decoder_select="mdct rdft sinewin" -cavs_decoder_select="dsputil golomb h264chroma videodsp" -cllc_decoder_select="dsputil" +bink_decoder_select="blockdsp hpeldsp" +binkaudio_dct_decoder_select="mdct rdft dct sinewin wma_freqs" +binkaudio_rdft_decoder_select="mdct rdft sinewin wma_freqs" +cavs_decoder_select="blockdsp golomb h264chroma idctdsp qpeldsp videodsp" +cllc_decoder_select="bswapdsp" comfortnoise_encoder_select="lpc" -cook_decoder_select="dsputil mdct sinewin" +cook_decoder_select="audiodsp mdct sinewin" cscd_decoder_select="lzo" cscd_decoder_suggest="zlib" dca_decoder_select="mdct" -dnxhd_decoder_select="dsputil" -dnxhd_encoder_select="aandcttables dsputil mpegvideoenc" -dvvideo_decoder_select="dsputil" -dvvideo_encoder_select="dsputil" +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" eac3_decoder_select="ac3_decoder" eac3_encoder_select="ac3_encoder" -eamad_decoder_select="aandcttables dsputil mpegvideo" -eatgq_decoder_select="aandcttables dsputil" -eatqi_decoder_select="aandcttables error_resilience mpegvideo" -ffv1_decoder_select="dsputil golomb rangecoder" -ffv1_encoder_select="dsputil rangecoder" +eamad_decoder_select="aandcttables blockdsp bswapdsp idctdsp mpegvideo" +eatgq_decoder_select="aandcttables idctdsp" +eatqi_decoder_select="aandcttables blockdsp bswapdsp idctdsp mpeg1video_decoder" +exr_decoder_deps="zlib" +ffv1_decoder_select="golomb rangecoder" +ffv1_encoder_select="rangecoder" ffvhuff_decoder_select="huffyuv_decoder" ffvhuff_encoder_select="huffyuv_encoder" -fic_decoder_select="dsputil golomb" +fic_decoder_select="golomb" flac_decoder_select="golomb" -flac_encoder_select="dsputil golomb lpc" +flac_encoder_select="bswapdsp golomb lpc" flashsv_decoder_deps="zlib" flashsv_encoder_deps="zlib" flashsv2_decoder_deps="zlib" flv_decoder_select="h263_decoder" flv_encoder_select="h263_encoder" -fourxm_decoder_select="dsputil" -fraps_decoder_select="dsputil huffman" +fourxm_decoder_select="blockdsp bswapdsp" +fraps_decoder_select="bswapdsp huffman" g2m_decoder_deps="zlib" -g2m_decoder_select="dsputil" -h261_decoder_select="error_resilience mpegvideo" +g2m_decoder_select="blockdsp idctdsp" +h261_decoder_select="mpeg_er mpegvideo" h261_encoder_select="aandcttables mpegvideoenc" -h263_decoder_select="error_resilience h263_parser h263dsp mpegvideo" +h263_decoder_select="error_resilience h263_parser h263dsp mpeg_er mpegvideo qpeldsp" h263_encoder_select="aandcttables h263dsp mpegvideoenc" h263i_decoder_select="h263_decoder" h263p_encoder_select="h263_encoder" -h264_decoder_select="golomb h264chroma h264dsp h264pred h264qpel videodsp" +h264_decoder_select="cabac golomb h264chroma h264dsp h264pred h264qpel startcode videodsp" h264_decoder_suggest="error_resilience" -hevc_decoder_select="dsputil golomb videodsp" -huffyuv_decoder_select="dsputil" -huffyuv_encoder_select="dsputil huffman" +hevc_decoder_select="bswapdsp cabac golomb videodsp" +huffyuv_decoder_select="bswapdsp huffyuvdsp" +huffyuv_encoder_select="bswapdsp huffman huffyuvencdsp" iac_decoder_select="imc_decoder" -imc_decoder_select="dsputil fft mdct sinewin" +imc_decoder_select="bswapdsp fft mdct sinewin" indeo3_decoder_select="hpeldsp" interplay_video_decoder_select="hpeldsp" jpegls_decoder_select="golomb mjpeg_decoder" jpegls_encoder_select="golomb" -jv_decoder_select="dsputil" -lagarith_decoder_select="dsputil" -ljpeg_encoder_select="aandcttables mpegvideoenc" +jv_decoder_select="blockdsp" +lagarith_decoder_select="huffyuvdsp" +ljpeg_encoder_select="aandcttables idctdsp" loco_decoder_select="golomb" -mdec_decoder_select="dsputil error_resilience mpegvideo" +mdec_decoder_select="blockdsp idctdsp mpegvideo" metasound_decoder_select="lsp mdct sinewin" -mimic_decoder_select="dsputil hpeldsp" -mjpeg_decoder_select="dsputil hpeldsp" +mimic_decoder_select="blockdsp bswapdsp hpeldsp idctdsp" +mjpeg_decoder_select="blockdsp hpeldsp idctdsp" +mjpeg_encoder_select="aandcttables mpegvideoenc" mjpegb_decoder_select="mjpeg_decoder" -mjpeg_encoder_select="aandcttables dsputil mpegvideoenc" -mlp_decoder_select="dsputil mlp_parser" -motionpixels_decoder_select="dsputil" +mlp_decoder_select="mlp_parser" +motionpixels_decoder_select="bswapdsp" mp1_decoder_select="mpegaudio" mp1float_decoder_select="mpegaudio" mp2_decoder_select="mpegaudio" @@ -1721,13 +1846,13 @@ mp3adufloat_decoder_select="mpegaudio" mp3float_decoder_select="mpegaudio" mp3on4_decoder_select="mpegaudio" mp3on4float_decoder_select="mpegaudio" -mpc7_decoder_select="dsputil mpegaudiodsp" -mpc8_decoder_select="dsputil mpegaudiodsp" +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 mpegvideo" +mpeg1video_decoder_select="error_resilience mpeg_er mpegvideo" mpeg1video_encoder_select="aandcttables mpegvideoenc" -mpeg2video_decoder_select="error_resilience mpegvideo" +mpeg2video_decoder_select="error_resilience mpeg_er mpegvideo" mpeg2video_encoder_select="aandcttables mpegvideoenc" mpeg4_decoder_select="h263_decoder mpeg4video_parser" mpeg4_encoder_select="h263_encoder" @@ -1736,48 +1861,49 @@ 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 vc1_decoder" +mss2_decoder_select="error_resilience mpeg_er qpeldsp vc1_decoder" mxpeg_decoder_select="mjpeg_decoder" nellymoser_decoder_select="mdct sinewin" nellymoser_encoder_select="audio_frame_queue mdct sinewin" -nuv_decoder_select="dsputil lzo" +nuv_decoder_select="idctdsp lzo" +on2avc_decoder_select="mdct" +opus_decoder_deps="avresample" png_decoder_deps="zlib" -png_decoder_select="dsputil" png_encoder_deps="zlib" -png_encoder_select="dsputil" -prores_decoder_select="dsputil" -prores_encoder_select="dsputil" +png_encoder_select="huffyuvencdsp" +prores_decoder_select="idctdsp" +prores_encoder_select="fdctdsp" qcelp_decoder_select="lsp" qdm2_decoder_select="mdct rdft mpegaudiodsp" ra_144_encoder_select="audio_frame_queue lpc" ralf_decoder_select="golomb" -rv10_decoder_select="error_resilience h263_decoder h263dsp" +rv10_decoder_select="error_resilience h263_decoder h263dsp mpeg_er" rv10_encoder_select="h263_encoder" -rv20_decoder_select="error_resilience h263_decoder h263dsp" +rv20_decoder_select="error_resilience h263_decoder h263dsp mpeg_er" rv20_encoder_select="h263_encoder" -rv30_decoder_select="error_resilience golomb h264chroma h264pred h264qpel mpegvideo videodsp" -rv40_decoder_select="error_resilience golomb h264chroma h264pred h264qpel mpegvideo videodsp" +rv30_decoder_select="error_resilience golomb h264chroma h264pred h264qpel mpeg_er mpegvideo videodsp" +rv40_decoder_select="error_resilience golomb h264chroma h264pred h264qpel mpeg_er mpegvideo videodsp" shorten_decoder_select="golomb" sipr_decoder_select="lsp" sp5x_decoder_select="mjpeg_decoder" svq1_decoder_select="hpeldsp" -svq1_encoder_select="aandcttables dsputil hpeldsp mpegvideoenc" -svq3_decoder_select="golomb h264chroma h264dsp h264pred h264qpel hpeldsp mpegvideo videodsp" -svq3_decoder_suggest="error_resilience zlib" -tak_decoder_select="dsputil" +svq1_encoder_select="aandcttables hpeldsp me_cmp mpegvideoenc" +svq3_decoder_select="h264_decoder hpeldsp tpeldsp" +svq3_decoder_suggest="zlib" +tak_decoder_select="audiodsp" theora_decoder_select="vp3_decoder" +thp_decoder_select="mjpeg_decoder" tiff_decoder_suggest="zlib" tiff_encoder_suggest="zlib" -thp_decoder_select="mjpeg_decoder" truehd_decoder_select="mlp_decoder" -truemotion2_decoder_select="dsputil" -truespeech_decoder_select="dsputil" +truemotion2_decoder_select="bswapdsp" +truespeech_decoder_select="bswapdsp" tscc_decoder_deps="zlib" twinvq_decoder_select="mdct lsp sinewin" -utvideo_decoder_select="dsputil" -utvideo_encoder_select="dsputil huffman" -vble_decoder_select="dsputil" -vc1_decoder_select="error_resilience h263_decoder h264chroma h264qpel intrax8" +utvideo_decoder_select="bswapdsp" +utvideo_encoder_select="bswapdsp huffman huffyuvencdsp" +vble_decoder_select="huffyuvdsp" +vc1_decoder_select="blockdsp error_resilience h263_decoder h264chroma h264qpel intrax8 mpeg_er qpeldsp startcode" vc1image_decoder_select="vc1_decoder" vorbis_decoder_select="mdct" vorbis_encoder_select="mdct" @@ -1786,18 +1912,19 @@ vp5_decoder_select="h264chroma hpeldsp videodsp vp3dsp" vp6_decoder_select="h264chroma hpeldsp huffman videodsp vp3dsp" vp6a_decoder_select="vp6_decoder" vp6f_decoder_select="vp6_decoder" +vp7_decoder_select="h264pred videodsp" vp8_decoder_select="h264pred videodsp" vp9_decoder_select="videodsp" webp_decoder_select="vp8_decoder" -wmapro_decoder_select="mdct sinewin" -wmav1_decoder_select="mdct sinewin" -wmav1_encoder_select="mdct sinewin" -wmav2_decoder_select="mdct sinewin" -wmav2_encoder_select="mdct sinewin" +wmapro_decoder_select="mdct sinewin wma_freqs" +wmav1_decoder_select="mdct sinewin wma_freqs" +wmav1_encoder_select="mdct sinewin wma_freqs" +wmav2_decoder_select="mdct sinewin wma_freqs" +wmav2_encoder_select="mdct sinewin wma_freqs" wmavoice_decoder_select="lsp rdft dct mdct sinewin" wmv1_decoder_select="h263_decoder" wmv1_encoder_select="h263_encoder" -wmv2_decoder_select="h263_decoder intrax8 videodsp" +wmv2_decoder_select="blockdsp h263_decoder idctdsp intrax8 videodsp" wmv2_encoder_select="h263_encoder" wmv3_decoder_select="vc1_decoder" wmv3image_decoder_select="wmv3_decoder" @@ -1824,6 +1951,8 @@ h264_vaapi_hwaccel_deps="vaapi" h264_vaapi_hwaccel_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_hwaccel_deps="vdpau" h264_vdpau_hwaccel_select="h264_decoder" mpeg1_vdpau_hwaccel_deps="vdpau" @@ -1849,10 +1978,10 @@ wmv3_vaapi_hwaccel_select="vc1_vaapi_hwaccel" wmv3_vdpau_hwaccel_select="vc1_vdpau_hwaccel" # parsers -h264_parser_select="golomb h264chroma h264dsp h264pred h264qpel videodsp" -mpeg4video_parser_select="error_resilience h263dsp mpegvideo" -mpegvideo_parser_select="error_resilience mpegvideo" -vc1_parser_select="mpegvideo" +h264_parser_select="h264_decoder" +mpegvideo_parser_select="mpegvideo" +mpeg4video_parser_select="error_resilience h263dsp mpeg_er mpegvideo qpeldsp" +vc1_parser_select="mpegvideo startcode" # external libraries libfaac_encoder_deps="libfaac" @@ -1883,6 +2012,7 @@ libspeex_decoder_deps="libspeex" libspeex_encoder_deps="libspeex" libspeex_encoder_select="audio_frame_queue" 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" @@ -1910,6 +2040,8 @@ avisynth_demuxer_deps="avisynth" avisynth_demuxer_select="riffdec" caf_demuxer_select="riffdec" dirac_demuxer_select="dirac_parser" +dv_demuxer_select="dvprofile" +dv_muxer_select="dvprofile" dxa_demuxer_select="riffdec" eac3_demuxer_select="ac3_parser" f4v_muxer_select="mov_muxer" @@ -1933,7 +2065,9 @@ mpegtsraw_demuxer_select="mpegts_demuxer" mxf_d10_muxer_select="mxf_muxer" nut_muxer_select="riffenc" nuv_demuxer_select="riffdec" +oga_muxer_select="ogg_muxer" ogg_demuxer_select="golomb" +opus_muxer_select="ogg_muxer" psp_muxer_select="mov_muxer" rtp_demuxer_select="sdp_demuxer" rtpdec_select="asf_demuxer rm_demuxer rtp_protocol mpegts_demuxer mov_demuxer" @@ -1944,6 +2078,7 @@ sap_muxer_select="rtp_muxer rtp_protocol rtpenc_chain" sdp_demuxer_select="rtpdec" smoothstreaming_muxer_select="ismv_muxer" spdif_muxer_select="aac_parser" +spx_muxer_select="ogg_muxer" tak_demuxer_select="tak_parser" tg2_muxer_select="mov_muxer" tgp_muxer_select="mov_muxer" @@ -1973,7 +2108,8 @@ sndio_outdev_deps="sndio_h" v4l2_indev_deps_any="linux_videodev2_h sys_videoio_h" vfwcap_indev_deps="capCreateCaptureWindow vfwcap_defines" vfwcap_indev_extralibs="-lavicap32" -x11grab_indev_deps="x11grab XShmCreateImage" +x11grab_indev_deps="x11grab" +x11grab_xcb_indev_deps="libxcb" # protocols ffrtmpcrypt_protocol_deps="!librtmp_protocol" @@ -1982,9 +2118,10 @@ ffrtmpcrypt_protocol_select="tcp_protocol" ffrtmphttp_protocol_deps="!librtmp_protocol" ffrtmphttp_protocol_select="http_protocol" gopher_protocol_select="network" -httpproxy_protocol_select="tcp_protocol" http_protocol_select="tcp_protocol" +httpproxy_protocol_select="tcp_protocol" https_protocol_select="tls_protocol" +icecast_protocol_select="http_protocol" librtmp_protocol_deps="librtmp" librtmpe_protocol_deps="librtmp" librtmps_protocol_deps="librtmp" @@ -2014,6 +2151,7 @@ unix_protocol_select="network" # filters blackframe_filter_deps="gpl" boxblur_filter_deps="gpl" +bs2b_filter_deps="libbs2b" cropdetect_filter_deps="gpl" delogo_filter_deps="gpl" drawtext_filter_deps="libfreetype" @@ -2023,8 +2161,8 @@ frei0r_src_filter_deps="frei0r dlopen" frei0r_src_filter_extralibs='$ldl' hqdn3d_filter_deps="gpl" interlace_filter_deps="gpl" -resample_filter_deps="avresample" ocv_filter_deps="libopencv" +resample_filter_deps="avresample" scale_filter_deps="swscale" # examples @@ -2034,11 +2172,11 @@ metadata_example_deps="avformat avutil" output_example_deps="avcodec avformat avutil swscale" transcode_aac_example_deps="avcodec avformat avresample" -# libraries +# libraries, in linking order avcodec_deps="avutil" -avdevice_deps="avutil avcodec avformat" +avdevice_deps="avformat avcodec avutil" avfilter_deps="avutil" -avformat_deps="avutil avcodec" +avformat_deps="avcodec avutil" avresample_deps="avutil" swscale_deps="avutil" @@ -2051,8 +2189,6 @@ avplay_deps="avcodec avformat avresample swscale sdl" avplay_libs='$sdl_libs' avplay_select="rdft" avprobe_deps="avcodec avformat" -avserver_deps="avformat fork !shared" -avserver_select="ffm_muxer rtp_protocol rtsp_demuxer" # documentation pod2man_deps="doc" @@ -2085,11 +2221,10 @@ ranlib="ranlib" strip="strip" yasmexe="yasm" -nogas=":" - # machine arch_default=$(uname -m) cpu="generic" +intrinsics="none" # OS target_os_default=$(tolower $(uname -s)) @@ -2101,6 +2236,7 @@ enable $EXAMPLE_LIST $LIBRARY_LIST $PROGRAM_LIST enable asm enable debug enable doc +enable faan faandct faanidct enable optimizations enable safe_bitstream_reader enable static @@ -2255,6 +2391,9 @@ for opt do --extra-ldflags=*) add_ldflags $optval ;; + --extra-ldexeflags=*) + add_ldexeflags $optval + ;; --extra-libs=*) add_extralibs $optval ;; @@ -2289,6 +2428,10 @@ for opt do 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" + ;; --enable-?*|--disable-?*) eval $(echo "$opt" | sed 's/--/action=/;s/-/ option=/;s/-/_/g') if is_in $option $COMPONENT_LIST; then @@ -2357,7 +2500,7 @@ case "$toolchain" in ;; clang-usan) cc_default="clang" - add_cflags -fsanitize=undefined + add_cflags -fsanitize=undefined -O1 add_ldflags -fsanitize=undefined ;; gcc-asan) @@ -2419,8 +2562,9 @@ case "$toolchain" in add_ldflags -fprofile-arcs -ftest-coverage ;; hardened) - add_cflags -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 -fno-strict-overflow -fstack-protector-all - add_ldflags -Wl,-z,relro -Wl,-z,now + add_cppflags -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 + add_cflags -fno-strict-overflow -fstack-protector-all + add_ldflags -Wl,-z,relro -Wl,-z,now ;; ?*) die "Unknown toolchain $toolchain" @@ -2494,6 +2638,17 @@ EOF die "Sanity test failed." fi +armasm_flags(){ + for flag; do + case $flag in + # Filter out MSVC cl.exe options from cflags that shouldn't + # be passed to gas-preprocessor + -M[TD]*) ;; + *) echo $flag ;; + esac + done +} + ccc_flags(){ for flag; do case $flag in @@ -2557,7 +2712,7 @@ msvc_flags(){ -Wall) echo -W4 -wd4244 -wd4127 -wd4018 -wd4389 \ -wd4146 -wd4057 -wd4204 -wd4706 -wd4305 \ -wd4152 -wd4324 -we4013 -wd4100 -wd4214 \ - -wd4273 ;; + -wd4273 -wd4701 ;; esac done } @@ -2698,10 +2853,10 @@ probe_cc(){ _cflags_speed='-fast' _cflags_size='-O1' _flags_filter=ccc_flags - elif $_cc --vsn 2>/dev/null | grep -q "ARM C/C++ Compiler"; then + elif $_cc --vsn 2>/dev/null | grep -Eq "ARM (C/C\+\+ )?Compiler"; then test -d "$sysroot" || die "No valid sysroot specified." _type=armcc - _ident=$($_cc --vsn | head -n1) + _ident=$($_cc --vsn | grep -i build | head -n1 | sed 's/.*: //') armcc_conf="$PWD/armcc.conf" $_cc --arm_linux_configure \ --arm_linux_config_file="$armcc_conf" \ @@ -2761,6 +2916,12 @@ probe_cc(){ _cflags_size="-O2 -Munroll=c:1 $opt_common" _cflags_noopt="-O1" _flags_filter=pgi_flags + elif $_cc 2>&1 | grep -q 'Microsoft.*ARM.*Assembler'; then + _type=armasm + _ident=$($_cc | head -n1) + # 4509: "This form of conditional instruction is deprecated" + _flags="-nologo -ignore 4509" + _flags_filter=armasm_flags elif $_cc 2>&1 | grep -q Microsoft; then _type=msvc _ident=$($cc 2>&1 | head -n1) @@ -3077,6 +3238,8 @@ elif enabled mips; then elif enabled ppc; then + disable ldbrx + case $(tolower $cpu) in 601|ppc601|powerpc601) cpuflags="-mcpu=601" @@ -3117,10 +3280,12 @@ elif enabled ppc; then e500v2) cpuflags="-mcpu=8548 -mhard-float -mfloat-gprs=double" disable altivec + disable dcbzl ;; e500) cpuflags="-mcpu=8540 -mhard-float" disable altivec + disable dcbzl ;; esac @@ -3129,7 +3294,6 @@ elif enabled sparc; then case $cpu in cypress|f93[04]|tsc701|sparcl*|supersparc|hypersparc|niagara|v[789]) cpuflags="-mcpu=$cpu" - disable vis ;; ultrasparc*|niagara[234]) cpuflags="-mcpu=$cpu" @@ -3141,6 +3305,7 @@ elif enabled x86; then case $cpu in i[345]86|pentium) cpuflags="-march=$cpu" + disable i686 disable mmx ;; # targets that do NOT support nopl and conditional mov (cmov) @@ -3220,6 +3385,10 @@ case "$arch" in check_64bit ppc ppc64 'sizeof(void *) > 4' spic=$shared ;; + s390) + check_64bit s390 s390x 'sizeof(void *) > 4' + spic=$shared + ;; sparc) check_64bit sparc sparc64 'sizeof(void *) > 4' spic=$shared @@ -3242,6 +3411,13 @@ case $target_os in add_cppflags '-I\$(SRC_PATH)/compat/aix' enabled shared && add_ldflags -Wl,-brtl ;; + android) + disable symver + SLIB_INSTALL_NAME='$(SLIBNAME)' + SLIB_INSTALL_LINKS= + # soname not set on purpose + SHFLAGS=-shared + ;; haiku) prefix_default="/boot/common" network_extralibs="-lnetwork" @@ -3283,7 +3459,6 @@ case $target_os in add_extralibs -lpoll -lgnugetopt ;; darwin) - gas="gas-preprocessor.pl $cc" enabled ppc && add_asflags -force_cpusubtype_ALL SHFLAGS='-dynamiclib -Wl,-single_module -Wl,-install_name,$(SHLIBDIR)/$(SLIBNAME_WITH_MAJOR),-current_version,$(LIBVERSION),-compatibility_version,$(LIBMAJOR)' enabled x86_32 && append SHFLAGS -Wl,-read_only_relocs,suppress @@ -3434,7 +3609,6 @@ case $target_os in add_compat strtod.o strtod=avpriv_strtod network_extralibs='-lbsd' exeobjs=compat/plan9/main.o - disable avserver cp_f='cp' ;; none) @@ -3492,6 +3666,9 @@ probe_libc(){ 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 } @@ -3526,6 +3703,9 @@ if enabled_all ccc libc_glibc; then add_ldflags -Wl,-z,now # calls to libots crash without this fi +check_compile_assert flt_lim "float.h limits.h" "DBL_MAX == (double)DBL_MAX" || + add_cppflags '-I\$(SRC_PATH)/compat/float' + esc(){ echo "$*" | sed 's/%/%25/g;s/:/%3a/g' } @@ -3622,9 +3802,56 @@ unsigned int endian = 'B' << 24 | 'I' << 16 | 'G' << 8 | 'E'; EOF od -t x1 $TMPO | grep -q '42 *49 *47 *45' && enable bigendian +check_gas() { + log "check_gas using '$as' as AS" + # :vararg is used on aarch64, arm and ppc altivec + check_as <= 3.98.3" lame/lame.h lame_set 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 libopenjpeg && require libopenjpeg openjpeg.h opj_version -lopenjpeg +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 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 librtmp && require_pkg_config librtmp librtmp/rtmp.h RTMP_Socket enabled libschroedinger && require_pkg_config schroedinger-1.0 schroedinger/schro.h schro_init -enabled libspeex && require libspeex speex/speex.h speex_decoder_init -lspeex +enabled libspeex && require_pkg_config speex speex/speex.h speex_decoder_init -lspeex enabled libtheora && require libtheora theora/theoraenc.h th_info_init -ltheoraenc -ltheoradec -logg +enabled libtwolame && require libtwolame twolame.h twolame_init -ltwolame 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 @@ -3968,12 +4205,12 @@ enabled libvpx && { enabled libvpx_vp9_encoder && { check_lib2 "vpx/vpx_encoder.h vpx/vp8cx.h" "vpx_codec_vp9_cx" -lvpx || disable libvpx_vp9_encoder; } } enabled libwavpack && require libwavpack wavpack/wavpack.h WavpackOpenFileOutput -lwavpack enabled libwebp && require_pkg_config libwebp webp/encode.h WebPGetEncoderVersion -enabled libx264 && require libx264 x264.h x264_encoder_encode -lx264 && +enabled libx264 && require_pkg_config x264 "stdint.h x264.h" x264_encoder_encode && { check_cpp_condition x264.h "X264_BUILD >= 118" || die "ERROR: libx264 version must be >= 0.118."; } enabled libx265 && require_pkg_config x265 x265.h x265_encoder_encode && - { check_cpp_condition x265.h "X265_BUILD >= 7" || - die "ERROR: libx265 version must be >= 7."; } + { check_cpp_condition x265.h "X265_BUILD >= 17" || + die "ERROR: libx265 version must be >= 17."; } enabled libxavs && require libxavs xavs.h xavs_encoder_encode -lxavs enabled libxvid && require libxvid xvid.h xvid_global -lxvidcore enabled openssl && { check_lib openssl/ssl.h SSL_library_init -lssl -lcrypto || @@ -4043,10 +4280,30 @@ fi check_lib X11/Xlib.h XOpenDisplay -lX11 && enable xlib -enabled x11grab && -require Xext X11/extensions/XShm.h XShmCreateImage -lXext && -require Xfixes X11/extensions/Xfixes.h XFixesGetCursorImage -lXfixes && -{ enabled xlib || die "ERROR: Xlib not found"; } +if enabled libxcb || enabled x11grab && ! disabled libxcb; then + check_pkg_config xcb xcb/xcb.h xcb_connect || { + enabled libxcb && die "ERROR: libxcb not found"; + } && disable x11grab && enable libxcb + + 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 + + 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 + + add_cflags "$xcb_event_cflags $xcb_shm_cflags $xcb_xfixes_cflags" + add_extralibs "$xcb_event_libs $xcb_shm_libs $xcb_xfixes_libs" +fi + +if enabled x11grab; then + enabled xlib || die "ERROR: Xlib not found" + require Xext X11/extensions/XShm.h XShmCreateImage -lXext + require Xfixes X11/extensions/Xfixes.h XFixesGetCursorImage -lXfixes +fi enabled vdpau && check_cpp_condition vdpau/vdpau.h "defined VDP_DECODER_PROFILE_MPEG4_PART2_ASP" || @@ -4086,6 +4343,7 @@ 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 +enabled rpath && add_ldexeflags -Wl,-rpath,$libdir test_ldflags -Wl,-Bsymbolic && append SHFLAGS -Wl,-Bsymbolic # add some strip flags @@ -4202,7 +4460,9 @@ elif enabled cparser; then add_cflags -Wno-missing-variable-declarations add_cflags -Wno-empty-statement elif enabled armcc; then - # 2523: use of inline assembler is deprecated + add_cflags -W${armcc_opt},--diag_suppress=4343 # hardfp compat + add_cflags -W${armcc_opt},--diag_suppress=3036 # using . as system include dir + # 2523: use of inline assembly is deprecated add_cflags -W${armcc_opt},--diag_suppress=2523 add_cflags -W${armcc_opt},--diag_suppress=1207 add_cflags -W${armcc_opt},--diag_suppress=1293 # assignment in condition @@ -4258,8 +4518,14 @@ check_deps $CONFIG_LIST \ $HAVE_LIST \ $ALL_COMPONENTS \ +enabled_all dxva2 CoTaskMemFree && + prepend avconv_libs $($ldflags_filter "-lole32") && + enable dxva2_lib + ! enabled_any memalign posix_memalign aligned_malloc && - enabled_any $need_memalign && enable memalign_hack + enabled $simd_align_16 && enable memalign_hack + +map 'enabled $v && intrinsics=${v#intrinsics_}' $INTRINSICS_LIST for thread in $THREADS_LIST; do if enabled $thread; then @@ -4269,6 +4535,24 @@ for thread in $THREADS_LIST; do fi done +enabled zlib && add_cppflags -DZLIB_CONST + +# conditional library dependencies, in linking order +enabled movie_filter && prepend avfilter_deps "avformat avcodec" +enabled resample_filter && prepend avfilter_deps "avresample" +enabled scale_filter && prepend avfilter_deps "swscale" + +enabled opus_decoder && prepend avcodec_deps "avresample" + +expand_deps(){ + lib_deps=${1}_deps + eval "deps=\$$lib_deps" + append $lib_deps $(map 'eval echo \$${v}_deps' $deps) + unique $lib_deps +} + +map 'expand_deps $v' $LIBRARY_LIST + echo "install prefix $prefix" echo "source path $source_path" echo "C compiler $cc" @@ -4319,9 +4603,6 @@ if enabled ppc; then echo "PPC 4xx optimizations ${ppc4xx-no}" echo "dcbzl available ${dcbzl-no}" fi -if enabled sparc; then - echo "VIS enabled ${vis-no}" -fi echo "debug symbols ${debug-no}" echo "optimize for size ${small-no}" echo "optimizations ${optimizations-no}" @@ -4380,6 +4661,7 @@ MANDIR=\$(DESTDIR)$mandir SRC_PATH=$source_path CC_IDENT=$cc_ident ARCH=$arch +INTRINSICS=$intrinsics CC=$cc AS=$as LD=$ld @@ -4408,6 +4690,7 @@ LD_LIB=$LD_LIB LD_PATH=$LD_PATH DLLTOOL=$dlltool LDFLAGS=$LDFLAGS +LDEXEFLAGS=$LDEXEFLAGS SHFLAGS=$(echo $($ldflags_filter $SHFLAGS)) STRIPFLAGS=$STRIPFLAGS YASMFLAGS=$YASMFLAGS @@ -4477,6 +4760,8 @@ get_version(){ map 'get_version $v' $LIBRARY_LIST +map 'eval echo "${v}_FFLIBS=\$${v}_deps" >> config.mak' $LIBRARY_LIST + print_program_libs(){ eval "program_libs=\$${1}_libs" eval echo "LIBS-${1}=${program_libs}" >> config.mak @@ -4538,13 +4823,18 @@ test -n "$WARNINGS" && printf "\n$WARNINGS" # build pkg-config files +lib_version(){ + eval printf "\"lib${1} >= \$LIB$(toupper ${1})_VERSION, \"" +} + pkgconfig_generate(){ name=$1 shortname=${name#lib}${build_suffix} comment=$2 version=$3 libs=$4 - requires=$5 + requires=$(map 'lib_version $v' $(eval echo \$${name#lib}_deps)) + requires=${requires%, } enabled ${name#lib} || return 0 mkdir -p $name cat < $name/$name.pc @@ -4579,15 +4869,10 @@ Cflags: -I\${includedir} EOF } -lavfi_libs="libavutil = $LIBAVUTIL_VERSION" -enabled movie_filter && prepend lavfi_libs "libavformat >= $LIBAVFORMAT_VERSION, libavcodec >= $LIBAVCODEC_VERSION," -enabled resample_filter && prepend lavfi_libs "libavresample >= $LIBAVRESAMPLE_VERSION," -enabled scale_filter && prepend lavfi_libs "libswscale >= $LIBSWSCALE_VERSION," - -pkgconfig_generate libavutil "Libav utility library" "$LIBAVUTIL_VERSION" "$LIBM" -pkgconfig_generate libavcodec "Libav codec library" "$LIBAVCODEC_VERSION" "$extralibs" "libavutil = $LIBAVUTIL_VERSION" -pkgconfig_generate libavformat "Libav container format library" "$LIBAVFORMAT_VERSION" "$extralibs" "libavcodec = $LIBAVCODEC_VERSION" -pkgconfig_generate libavdevice "Libav device handling library" "$LIBAVDEVICE_VERSION" "$extralibs" "libavformat = $LIBAVFORMAT_VERSION" -pkgconfig_generate libavfilter "Libav video filtering library" "$LIBAVFILTER_VERSION" "$extralibs" "$lavfi_libs" -pkgconfig_generate libavresample "Libav audio resampling library" "$LIBAVRESAMPLE_VERSION" "$extralibs" "libavutil = $LIBAVUTIL_VERSION" -pkgconfig_generate libswscale "Libav image rescaling library" "$LIBSWSCALE_VERSION" "$LIBM" "libavutil = $LIBAVUTIL_VERSION" +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"