--disable-fft disable FFT code
--disable-faan disable floating point AAN (I)DCT code
-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
-
Individual component options:
--disable-everything disable all components listed below
--disable-encoder=NAME disable encoder NAME
--disable-filters disable all filters
External library support:
- --enable-avisynth enable reading of AviSynth script files [no]
- --enable-bzlib enable bzlib [autodetect]
- --enable-cuda enable dynamically linked CUDA [no]
- --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]
- --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-libgsm enable GSM de/encoding via libgsm [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-libmp3lame enable MP3 encoding via libmp3lame [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]
- --enable-libopenh264 enable H.264 encoding via OpenH264 [no]
- --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-librtmp enable RTMP[E] support via librtmp [no]
- --enable-libschroedinger enable Dirac de/encoding via libschroedinger [no]
- --enable-libsnappy enable Snappy compression [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]
- --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-libxvid enable Xvid encoding via xvidcore,
- native MPEG-4/Xvid encoder exists [no]
- --enable-mmal enable decoding via MMAL [no]
- --enable-nvenc enable encoding via NVENC [no]
- --enable-openssl enable openssl [no]
- --enable-x11grab enable X11 grabbing (legacy) [no]
- --enable-zlib enable zlib [autodetect]
+
+ Using any of the following switches will allow Libav to link to the
+ corresponding external library. All the components depending on that library
+ will become enabled, if all their other dependencies are met and they are not
+ explicitly disabled. E.g. --enable-libwavpack will enable linking to
+ libwavpack and allow the libwavpack encoder to be built, unless it is
+ specifically disabled with --disable-encoder=libwavpack.
+
+ Note that only the system libraries are auto-detected. All the other external
+ libraries must be explicitly enabled.
+
+ Also note that the following help text describes the purpose of the libraries
+ themselves, not all their features will necessarily be usable by Libav.
+
+ --enable-avisynth video frameserver
+ --enable-bzlib bzip2 compression [autodetect]
+ --enable-frei0r video filtering plugins
+ --enable-gnutls crypto
+ --enable-libbs2b Bauer stereophonic-to-binaural DSP
+ --enable-libcdio audio CD input
+ --enable-libdc1394 IEEE 1394/Firewire camera input
+ --enable-libdcadec DCA audio decoding
+ --enable-libfaac AAC audio encoding
+ --enable-libfdk-aac AAC audio encoding/decoding
+ --enable-libfontconfig font configuration and management
+ --enable-libfreetype font rendering
+ --enable-libgsm GSM audio encoding/decoding
+ --enable-libhdcd HDCD decoding filter
+ --enable-libilbc ILBC audio encoding/decoding
+ --enable-libkvazaar HEVC video encoding
+ --enable-libmp3lame MP3 audio encoding
+ --enable-libopencore-amrnb AMR-NB audio encoding/decoding
+ --enable-libopencore-amrwb AMR-WB audio decoding
+ --enable-libopencv computer vision
+ --enable-libopenh264 H.264 video encoding/decoding
+ --enable-libopenjpeg JPEG 2000 image encoding/decoding
+ --enable-libopus Opus audio encoding/decoding
+ --enable-libpulse Pulseaudio sound server
+ --enable-librtmp RTMP streaming
+ --enable-libschroedinger Dirac video encoding/decoding
+ --enable-libsnappy snappy compression
+ --enable-libspeex Speex audio encoding/decoding
+ --enable-libtheora Theora video encoding/decoding
+ --enable-libtwolame MP2 audio encoding
+ --enable-libvo-aacenc AAC audio encoding
+ --enable-libvo-amrwbenc AMR-WB audio encoding
+ --enable-libvorbis Vorbis audio encoding/decoding
+ --enable-libvpx VP* video encoding/decoding
+ --enable-libwavpack Wavpack audio encoding/decoding
+ --enable-libwebp WebP image encoding/decoding
+ --enable-libx264 H.264 video encoding
+ --enable-libx265 HEVC video encoding
+ --enable-libxavs Chinese AVS video encoding
+ --enable-libxcb X window system protocol communication
+ --enable-libxcb-shm X11 shm communication [auto]
+ --enable-libxcb-xfixes X11 mouse rendering [auto]
+ --enable-libxvid MPEG-4 ASP video encoding
+ --enable-openssl crypto
+ --enable-zlib compression [autodetect]
+
+ The following libraries provide various hardware acceleration features:
+ --enable-cuda Nvidia CUDA (dynamically linked)
+ --enable-d3d11va Microsoft Direct3D 11 video acceleration [auto]
+ --enable-dxva2 Microsoft DirectX 9 video acceleration [auto]
+ --enable-libmfx Intel MediaSDK (AKA Quick Sync Video)
+ --enable-libnpp Nvidia CUDA processing
+ --enable-mmal Broadcom Multi-Media Abstraction Layer (Raspberry Pi)
+ --enable-nvenc Nvidia video encoding
+ --enable-omx OpenMAX IL
+ --enable-omx-rpi OpenMAX IL for Raspberry Pi
+ --enable-vaapi Video Acceleration API (mainly Unix/Intel)
+ --enable-vda Apple Video Decode Acceleration [auto]
+ --enable-vdpau Nvidia Video Decode and Presentation API for Unix [auto]
Toolchain options:
--arch=ARCH select architecture [$arch]
suf=$1
shift
for v; do
- enabled $v && printf "%s\n" ${v%$suf};
+ enabled $v && printf "%s\n" ${v%$suf}
done
}
transcode_aac_example
"
+HWACCEL_LIBRARY_NONFREE_LIST="
+ cuda
+ libnpp
+"
+HWACCEL_LIBRARY_LIST="
+ $HWACCEL_LIBRARY_NONFREE_LIST
+ d3d11va
+ dxva2
+ libmfx
+ mmal
+ nvenc
+ omx
+ vaapi
+ vda
+ vdpau
+"
+
+EXTERNAL_LIBRARY_GPL_LIST="
+ libcdio
+ libx264
+ libx265
+ libxavs
+ libxvid
+"
+
+EXTERNAL_LIBRARY_NONFREE_LIST="
+ libfaac
+ libfdk_aac
+ openssl
+"
+
+EXTERNAL_LIBRARY_VERSION3_LIST="
+ libopencore_amrnb
+ libopencore_amrwb
+ libvo_aacenc
+ libvo_amrwbenc
+"
+
EXTERNAL_LIBRARY_LIST="
+ $EXTERNAL_LIBRARY_GPL_LIST
+ $EXTERNAL_LIBRARY_NONFREE_LIST
+ $EXTERNAL_LIBRARY_VERSION3_LIST
avisynth
bzlib
- cuda
frei0r
gnutls
libbs2b
- libcdio
libdc1394
libdcadec
- libfaac
- libfdk_aac
libfontconfig
libfreetype
libgsm
+ libhdcd
libilbc
libkvazaar
- libmfx
libmp3lame
- libopencore_amrnb
- libopencore_amrwb
libopencv
libopenh264
libopenjpeg
libspeex
libtheora
libtwolame
- libvo_aacenc
- libvo_amrwbenc
libvorbis
libvpx
libwavpack
libwebp
- libx264
- libx265
- libxavs
libxcb
libxcb_shm
libxcb_xfixes
- libxvid
- mmal
- nvenc
- openssl
- x11grab
zlib
"
FEATURE_LIST="
gray
hardcoded_tables
+ omx_rpi
runtime_cpudetect
safe_bitstream_reader
shared
swscale_alpha
"
-HWACCEL_LIST="
- d3d11va
- dxva2
- vaapi
- vda
- vdpau
-"
-
LIBRARY_LIST="
avcodec
avdevice
$COMPONENT_LIST
$EXAMPLE_LIST
$EXTERNAL_LIBRARY_LIST
+ $HWACCEL_LIBRARY_LIST
$FEATURE_LIST
- $HWACCEL_LIST
$LICENSE_LIST
$LIBRARY_LIST
$PROGRAM_LIST
fast_cmov
local_aligned_8
local_aligned_16
+ local_aligned_32
+ simd_align
simd_align_16
+ simd_align_32
"
BUILTIN_LIST="
MemoryBarrier
mm_empty
rdtsc
+ sem_timedwait
sync_val_compare_and_swap
"
HAVE_LIST_CMDLINE="
arpa_inet_h
cdio_paranoia_h
cdio_paranoia_paranoia_h
+ dispatch_dispatch_h
dev_bktr_ioctl_bt848_h
dev_bktr_ioctl_meteor_h
dev_ic_bt8xx_h
TOOLCHAIN_FEATURES="
as_dn_directive
+ as_fpu_directive
as_func
as_object_arch
asm_mod_q
libc_msvcrt
libdc1394_1
libdc1394_2
+ MMAL_PARAMETER_VIDEO_MAX_NUM_CALLBACKS
sdl
section_data_rel_ro
threads
+ vaapi_drm
vaapi_x11
vdpau_x11
xlib
h263dsp
h264chroma
h264dsp
+ h264parse
h264pred
h264qpel
hpeldsp
texturedsp
texturedspenc
tpeldsp
+ vaapi_encode
vc1dsp
videodsp
vp3dsp
fast_64bit_if_any="aarch64 alpha ia64 mips64 parisc64 ppc64 sparc64 x86_64"
fast_clz_if_any="aarch64 alpha avr32 mips ppc x86"
fast_unaligned_if_any="aarch64 ppc x86"
+simd_align_if_any="simd_align_16 simd_align_32"
simd_align_16_if_any="altivec neon sse"
+simd_align_32_if_any="avx"
# system capabilities
symver_if_any="symver_asm_label symver_gnu_asm"
faandct_deps="faan fdctdsp"
faanidct_deps="faan idctdsp"
h264dsp_select="startcode"
+intrax8_select="blockdsp idctdsp"
mdct_select="fft"
rdft_select="fft"
me_cmp_select="fdctdsp idctdsp pixblockdsp"
mpegaudiodsp_select="dct"
mpegvideo_select="blockdsp 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"
vc1dsp_select="h264chroma qpeldsp startcode"
# decoders / encoders
h263_encoder_select="aandcttables h263dsp mpegvideoenc"
h263i_decoder_select="h263_decoder"
h263p_encoder_select="h263_encoder"
-h264_decoder_select="cabac golomb h264chroma h264dsp h264pred h264qpel videodsp"
+h264_decoder_select="cabac golomb h264chroma h264dsp h264parse h264pred h264qpel 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"
-h264_qsv_encoder_select="qsvenc"
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"
iac_decoder_select="imc_decoder"
lagarith_decoder_select="huffyuvdsp"
ljpeg_encoder_select="aandcttables idctdsp jpegtables"
loco_decoder_select="golomb"
+magicyuv_decoder_select="huffyuvdsp"
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_encoder_select="aandcttables jpegtables mpegvideoenc"
mjpegb_decoder_select="mjpeg_decoder"
+mjpeg_vaapi_encoder_deps="VAEncPictureParameterBufferJPEG"
+mjpeg_vaapi_encoder_select="vaapi_encode jpegtables"
mlp_decoder_select="mlp_parser"
motionpixels_decoder_select="bswapdsp"
mp1_decoder_select="mpegaudio"
mpeg1video_encoder_select="aandcttables mpegvideoenc"
mpeg2video_decoder_select="error_resilience mpeg_er mpegvideo"
mpeg2video_encoder_select="aandcttables mpegvideoenc"
-mpeg2_qsv_decoder_deps="libmfx"
-mpeg2_qsv_decoder_select="qsvdec mpeg2_qsv_hwaccel mpegvideo_parser"
-mpeg2_qsv_encoder_deps="libmfx"
-mpeg2_qsv_encoder_select="qsvenc"
mpeg4_decoder_select="h263_decoder mpeg4video_parser"
mpeg4_encoder_select="h263_encoder"
msa1_decoder_select="mss34dsp"
nellymoser_decoder_select="mdct sinewin"
nellymoser_encoder_select="audio_frame_queue mdct sinewin"
nuv_decoder_select="idctdsp lzo"
-nvenc_h264_encoder_deps="nvenc"
-nvenc_hevc_encoder_deps="nvenc"
on2avc_decoder_select="mdct"
opus_decoder_deps="avresample"
opus_decoder_select="imdct15"
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_select="golomb h264dsp h264parse h264pred hpeldsp tpeldsp videodsp"
svq3_decoder_suggest="zlib"
tak_decoder_select="audiodsp"
tdsc_decoder_deps="zlib"
h264_dxva2_hwaccel_deps="dxva2"
h264_dxva2_hwaccel_select="h264_decoder"
h264_mmal_decoder_deps="mmal"
+h264_mmal_decoder_select="mmal"
h264_mmal_hwaccel_deps="mmal"
-h264_mmal_decoder_select="h264_decoder"
-h264_mmal_encoder_deps="mmal"
+h264_omx_encoder_deps="omx"
h264_qsv_hwaccel_deps="libmfx"
h264_vaapi_hwaccel_deps="vaapi"
h264_vaapi_hwaccel_select="h264_decoder"
mpeg2_d3d11va_hwaccel_select="mpeg2video_decoder"
mpeg2_dxva2_hwaccel_deps="dxva2"
mpeg2_dxva2_hwaccel_select="mpeg2video_decoder"
+mpeg2_mmal_decoder_deps="mmal"
+mpeg2_mmal_decoder_select="mmal"
+mpeg2_mmal_hwaccel_deps="mmal"
mpeg2_qsv_hwaccel_deps="libmfx"
mpeg2_vaapi_hwaccel_deps="vaapi"
mpeg2_vaapi_hwaccel_select="mpeg2video_decoder"
mpeg2_vdpau_hwaccel_deps="vdpau"
mpeg2_vdpau_hwaccel_select="mpeg2video_decoder"
+mpeg4_omx_encoder_deps="omx"
mpeg4_vaapi_hwaccel_deps="vaapi"
mpeg4_vaapi_hwaccel_select="mpeg4_decoder"
mpeg4_vdpau_hwaccel_deps="vdpau"
vc1_d3d11va_hwaccel_select="vc1_decoder"
vc1_dxva2_hwaccel_deps="dxva2"
vc1_dxva2_hwaccel_select="vc1_decoder"
+vc1_mmal_decoder_deps="mmal"
+vc1_mmal_decoder_select="mmal"
+vc1_mmal_hwaccel_deps="mmal"
vc1_vaapi_hwaccel_deps="vaapi"
vc1_vaapi_hwaccel_select="vc1_decoder"
vc1_vdpau_hwaccel_deps="vdpau"
wmv3_vaapi_hwaccel_select="vc1_vaapi_hwaccel"
wmv3_vdpau_hwaccel_select="vc1_vdpau_hwaccel"
+# hardware-accelerated codecs
+nvenc_deps_any="dlopen LoadLibrary"
+nvenc_extralibs='$ldl'
+omx_deps="dlopen pthreads"
+omx_extralibs='$ldl'
+qsvdec_select="qsv"
+qsvenc_select="qsv"
+vaapi_encode_deps="vaapi"
+
+hwupload_cuda_filter_deps="cuda"
+scale_npp_filter_deps="cuda libnpp"
+
+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"
+h264_qsv_encoder_select="qsvenc"
+h264_vaapi_encoder_deps="VAEncPictureParameterBufferH264"
+h264_vaapi_encoder_select="vaapi_encode golomb"
+
+hevc_nvenc_encoder_deps="nvenc"
+hevc_qsv_decoder_deps="libmfx"
+hevc_qsv_encoder_deps="libmfx"
+hevc_qsv_decoder_select="hevc_mp4toannexb_bsf hevc_parser hevc_qsv_hwaccel qsvdec"
+hevc_qsv_encoder_select="qsvenc"
+hevc_vaapi_encoder_deps="VAEncPictureParameterBufferHEVC"
+hevc_vaapi_encoder_select="vaapi_encode golomb"
+mpeg2_qsv_decoder_deps="libmfx"
+mpeg2_qsv_decoder_select="qsvdec mpeg2_qsv_hwaccel mpegvideo_parser"
+mpeg2_qsv_encoder_deps="libmfx"
+mpeg2_qsv_encoder_select="qsvenc"
+
+nvenc_h264_encoder_deps="nvenc"
+nvenc_hevc_encoder_deps="nvenc"
+
# parsers
-h264_parser_select="h264_decoder"
+h264_parser_select="golomb h264dsp h264parse"
hevc_parser_select="golomb"
mpegvideo_parser_select="mpegvideo"
mpeg4video_parser_select="error_resilience h263dsp mpegvideo qpeldsp"
libopencore_amrnb_encoder_deps="libopencore_amrnb"
libopencore_amrnb_encoder_select="audio_frame_queue"
libopencore_amrwb_decoder_deps="libopencore_amrwb"
+libopenh264_decoder_deps="libopenh264"
+libopenh264_decoder_select="h264_mp4toannexb_bsf"
libopenh264_encoder_deps="libopenh264"
libopenjpeg_decoder_deps="libopenjpeg"
libopenjpeg_encoder_deps="libopenjpeg"
dv1394_indev_deps="dv1394"
dv1394_indev_select="dv_demuxer"
fbdev_indev_deps="linux_fb_h"
-jack_indev_deps="jack_jack_h pthreads"
+jack_indev_deps="jack_jack_h"
+jack_indev_deps_any="sem_timedwait dispatch_dispatch_h"
libcdio_indev_deps="libcdio"
libdc1394_indev_deps="libdc1394"
oss_indev_deps_any="soundcard_h sys_soundcard_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"
-x11grab_xcb_indev_deps="libxcb"
+xcbgrab_indev_deps="libxcb"
# protocols
ffrtmpcrypt_protocol_deps="!librtmp_protocol"
boxblur_filter_deps="gpl"
bs2b_filter_deps="libbs2b"
cropdetect_filter_deps="gpl"
+deinterlace_qsv_filter_deps="libmfx"
delogo_filter_deps="gpl"
drawtext_filter_deps="libfreetype"
frei0r_filter_deps="frei0r dlopen"
frei0r_filter_extralibs='$ldl'
frei0r_src_filter_deps="frei0r dlopen"
frei0r_src_filter_extralibs='$ldl'
+hdcd_filter_deps="libhdcd"
hqdn3d_filter_deps="gpl"
-hwupload_cuda_filter_deps="cuda"
interlace_filter_deps="gpl"
ocv_filter_deps="libopencv"
resample_filter_deps="avresample"
scale_filter_deps="swscale"
+scale_qsv_filter_deps="libmfx"
scale_vaapi_filter_deps="vaapi VAProcPipelineParameterBuffer"
# examples
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
- setpts_filter trim_filter"
+ trim_filter"
avplay_deps="avcodec avfilter avformat avresample sdl"
avplay_libs='$sdl_libs'
avplay_select="rdft format_filter transpose_filter hflip_filter vflip_filter"
pkg_config_default=pkg-config
ranlib="ranlib"
strip="strip"
+version_script='--version-script'
yasmexe="yasm"
# machine
LIB_INSTALL_EXTRA_CMD='$$(RANLIB) "$(LIBDIR)/$(LIBNAME)"'
SLIB_INSTALL_NAME='$(SLIBNAME_WITH_VERSION)'
SLIB_INSTALL_LINKS='$(SLIBNAME_WITH_MAJOR) $(SLIBNAME)'
+VERSION_SCRIPT_POSTPROCESS_CMD="cat"
asflags_filter=echo
cflags_filter=echo
_ld_lib='lib%.a'
_ld_path='-libpath:'
_flags='-nologo'
- _cflags='-D_USE_MATH_DEFINES -D_CRT_SECURE_NO_WARNINGS -D_CRT_NONSTDC_NO_WARNINGS'
elif $_cc 2>&1 | grep -q Intel; then
_type=icl
_ident=$($_cc 2>&1 | head -n1)
_flags='-nologo -Qdiag-error:4044,10157'
# -Qvec- -Qsimd- to prevent miscompilation, -GS for consistency
# with MSVC which enables it by default.
- _cflags='-D_USE_MATH_DEFINES -Qms0 -Qvec- -Qsimd- -GS'
+ _cflags='-Qms0 -Qvec- -Qsimd- -GS'
+ elif $_cc -? 2>/dev/null | grep -q 'LLVM.*Linker'; then
+ # lld can emulate multiple different linkers; in ms link.exe mode,
+ # the -? parameter gives the help output which contains an identifyable
+ # string, while it gives an error in other modes.
+ _type=lld-link
+ # The link.exe mode doesn't have a switch for getting the version,
+ # but we can force it back to gnu mode and get the version from there.
+ _ident=$($_cc -flavor gnu --version)
+ _ld_o='-out:$@'
+ _flags_filter=msvc_flags
+ _ld_lib='lib%.a'
+ _ld_path='-libpath:'
elif $_cc --version 2>/dev/null | grep -q ^cparser; then
_type=cparser
_ident=$($_cc --version | head -n1)
}
probe_arm_arch() {
- if check_arm_arch 4; then echo armv4;
- elif check_arm_arch 4T; then echo armv4t;
- elif check_arm_arch 5; then echo armv5;
- elif check_arm_arch 5E; then echo armv5e;
- elif check_arm_arch 5T; then echo armv5t;
- elif check_arm_arch 5TE; then echo armv5te;
- elif check_arm_arch 5TEJ; then echo armv5te;
- elif check_arm_arch 6; then echo armv6;
- elif check_arm_arch 6J; then echo armv6j;
- elif check_arm_arch 6K; then echo armv6k;
- elif check_arm_arch 6Z; then echo armv6z;
- elif check_arm_arch 6ZK; then echo armv6zk;
- elif check_arm_arch 6T2; then echo armv6t2;
- elif check_arm_arch 7; then echo armv7;
- elif check_arm_arch 7A 7_A; then echo armv7-a;
- elif check_arm_arch 7S; then echo armv7-a;
- elif check_arm_arch 7R 7_R; then echo armv7-r;
- elif check_arm_arch 7M 7_M; then echo armv7-m;
- elif check_arm_arch 7EM 7E_M; then echo armv7-m;
- elif check_arm_arch 8A 8_A; then echo armv8-a;
+ if check_arm_arch 4; then echo armv4
+ elif check_arm_arch 4T; then echo armv4t
+ elif check_arm_arch 5; then echo armv5
+ elif check_arm_arch 5E; then echo armv5e
+ elif check_arm_arch 5T; then echo armv5t
+ elif check_arm_arch 5TE; then echo armv5te
+ elif check_arm_arch 5TEJ; then echo armv5te
+ elif check_arm_arch 6; then echo armv6
+ elif check_arm_arch 6J; then echo armv6j
+ elif check_arm_arch 6K; then echo armv6k
+ elif check_arm_arch 6Z; then echo armv6z
+ elif check_arm_arch 6ZK; then echo armv6zk
+ elif check_arm_arch 6T2; then echo armv6t2
+ elif check_arm_arch 7; then echo armv7
+ elif check_arm_arch 7A 7_A; then echo armv7-a
+ elif check_arm_arch 7S; then echo armv7-a
+ elif check_arm_arch 7R 7_R; then echo armv7-r
+ elif check_arm_arch 7M 7_M; then echo armv7-m
+ elif check_arm_arch 7EM 7E_M; then echo armv7-m
+ elif check_arm_arch 8A 8_A; then echo armv8-a
fi
}
echo "hwcap_1 = OVERRIDE;" > mapfile &&
add_ldflags -Wl,-M,mapfile
nm_default='nm -P -g'
- SLIB_CREATE_DEF_CMD='$(Q)perl $(SRC_PATH)/compat/solaris/make_sunver.pl $$(filter %.ver,$$^) $(OBJS) | grep -v @ > $(SUBDIR)lib$(NAME).ver-sol2'
+ version_script='-M'
+ VERSION_SCRIPT_POSTPROCESS_CMD='perl $(SRC_PATH)/compat/solaris/make_sunver.pl - $(OBJS)'
;;
netbsd)
disable symver
enabled x86_64 && objformat="macho64"
enabled_any pic shared ||
{ check_cflags -mdynamic-no-pic && add_asflags -mdynamic-no-pic; }
+ check_header dispatch/dispatch.h &&
+ add_cppflags '-I\$(SRC_PATH)/compat/dispatch_semaphore'
;;
msys*)
- die "Native MSYS builds are discouraged, please use the MINGW environment.";
+ die "Native MSYS builds are discouraged, please use the MINGW environment."
;;
mingw32*|mingw64*)
if test $target_os = "mingw32ce"; then
(__MINGW32_MAJOR_VERSION == 3 && __MINGW32_MINOR_VERSION >= 15)" ||
die "ERROR: MinGW32 runtime version must be >= 3.15."
add_${pfx}cppflags -U__STRICT_ANSI__ -D__USE_MINGW_ANSI_STDIO=1
+ check_${pfx}cpp_condition _mingw.h "__MSVCRT_VERSION__ < 0x0700__" &&
+ add_${pfx}cppflags -D__MSVCRT_VERSION__=0x0700
eval test \$${pfx_no_}cc_type = "gcc" &&
add_${pfx}cppflags -D__printf__=__gnu_printf__
elif check_${pfx}cpp_condition crtversion.h "defined _VC_CRT_MAJOR_VERSION"; then
vsnprintf=avpriv_vsnprintf
fi
fi
+ add_${pfx}cppflags -D_USE_MATH_DEFINES -D_CRT_SECURE_NO_WARNINGS -D_CRT_NONSTDC_NO_WARNINGS
# The MSVC 2010 headers (Win 7.0 SDK) set _WIN32_WINNT to
# 0x601 by default unless something else is set by the user.
# This can easily lead to us detecting functions only present
#endif
#endif
EOF
+ if [ "$pfx" = "" ]; then
+ check_func strtoll || add_cflags -Dstrtoll=_strtoi64
+ fi
elif check_${pfx}cpp_condition stddef.h "defined __KLIBC__"; then
eval ${pfx}libc_type=klibc
elif check_${pfx}cpp_condition sys/cdefs.h "defined __BIONIC__"; then
build the shared libraries as well. To only build the shared libraries specify
--disable-static in addition to --enable-shared.
EOF
- exit 1;
+ exit 1
fi
die_license_disabled() {
- enabled $1 || { enabled $2 && die "$2 is $1 and --enable-$1 is not specified."; }
+ enabled $1 || { enabled $v && die "$v is $1 and --enable-$1 is not specified."; }
}
-die_license_disabled gpl libcdio
-die_license_disabled gpl libx264
-die_license_disabled gpl libx265
-die_license_disabled gpl libxavs
-die_license_disabled gpl libxvid
-die_license_disabled gpl x11grab
-
-die_license_disabled nonfree cuda
-die_license_disabled nonfree libfaac
-die_license_disabled nonfree libfdk_aac
-die_license_disabled nonfree nvenc
-die_license_disabled nonfree openssl
-
-die_license_disabled version3 libopencore_amrnb
-die_license_disabled version3 libopencore_amrwb
-die_license_disabled version3 libvo_aacenc
-die_license_disabled version3 libvo_amrwbenc
+map "die_license_disabled gpl" $EXTERNAL_LIBRARY_GPL_LIST
+map "die_license_disabled nonfree" $EXTERNAL_LIBRARY_NONFREE_LIST $HWACCEL_LIBRARY_NONFREE_LIST
+map "die_license_disabled version3" $EXTERNAL_LIBRARY_VERSION3_LIST
enabled version3 && { enabled gpl && enable gplv3 || enable lgplv3; }
check_as <<EOF && enable as_dn_directive
ra .dn d0.i16
.unreq ra
+EOF
+ check_as <<EOF && enable as_fpu_directive
+.fpu neon
EOF
# llvm's integrated assembler supports .object_arch from llvm 3.5
elif enabled ppc; then
- enable local_aligned_8 local_aligned_16
+ enable local_aligned_8 local_aligned_16 local_aligned_32
check_inline_asm dcbzl '"dcbzl 0, %0" :: "r"(0)'
check_inline_asm ibm_asm '"add 0, 0, 0"'
check_builtin rdtsc intrin.h "__rdtsc()"
check_builtin mm_empty mmintrin.h "_mm_empty()"
- enable local_aligned_8 local_aligned_16
+ enable local_aligned_8 local_aligned_16 local_aligned_32
# check whether EBP is available on x86
# As 'i' is stored on the stack, this program will crash
check_type "d3d9.h dxva2api.h" DXVA2_ConfigPictureDecode -D_WIN32_WINNT=0x0602
check_type "va/va.h va/va_vpp.h" "VAProcPipelineParameterBuffer"
+check_type "va/va.h va/va_enc_h264.h" "VAEncPictureParameterBufferH264"
+check_type "va/va.h va/va_enc_hevc.h" "VAEncPictureParameterBufferHEVC"
+check_type "va/va.h va/va_enc_jpeg.h" "VAEncPictureParameterBufferJPEG"
check_type "vdpau/vdpau.h" "VdpPictureInfoHEVC"
fi
fi
+enabled pthreads &&
+ check_builtin sem_timedwait semaphore.h "sem_t *s; sem_init(s,0,0); sem_timedwait(s,0); sem_destroy(s)"
+
disabled zlib || check_lib zlib.h zlibVersion -lz || disable zlib
disabled bzlib || check_lib2 bzlib.h BZ2_bzlibVersion -lbz2 || disable bzlib
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 libhdcd && require_pkg_config libhdcd "hdcd/hdcd_simple.h" hdcd_new
enabled libilbc && require libilbc ilbc.h WebRtcIlbcfix_InitDecode -lilbc
enabled libkvazaar && require_pkg_config "kvazaar >= 0.8.1" kvazaar.h kvz_api_get
enabled libmfx && require_pkg_config libmfx "mfx/mfxvideo.h" MFXInit
enabled libmp3lame && require "libmp3lame >= 3.98.3" lame/lame.h lame_set_VBR_quality -lmp3lame
+enabled libnpp && require libnpp npp.h nppGetLibVersion -lnppi -lnppc
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
check_lib interface/mmal/mmal.h mmal_port_connect ; }
check_lib interface/mmal/mmal.h mmal_port_connect ; } ||
die "ERROR: mmal not found"; }
+enabled mmal && check_func_headers interface/mmal/mmal.h "MMAL_PARAMETER_VIDEO_MAX_NUM_CALLBACKS"
+enabled omx_rpi && enable omx
+enabled omx && { check_header OMX_Core.h ||
+ { ! enabled cross_compile && enabled omx_rpi && {
+ add_cflags -isystem/opt/vc/include/IL ; }
+ check_header OMX_Core.h ; } ||
+ die "ERROR: OpenMAX IL headers not found"; }
enabled openssl && { check_pkg_config openssl openssl/ssl.h SSL_library_init && {
add_cflags $openssl_cflags && add_extralibs $openssl_libs; }||
check_lib openssl/ssl.h SSL_library_init -lssl -lcrypto ||
fi
if enabled nvenc; then
- enabled cuda || 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";
+ check_header nvEncodeAPI.h || die "ERROR: nvEncodeAPI.h not found."
+ check_cpp_condition nvEncodeAPI.h "NVENCAPI_MAJOR_VERSION >= 6" ||
+ die "ERROR: NVENC API version 5 or older is not supported"
fi
if check_pkg_config sdl SDL_events.h SDL_PollEvent; then
check_lib X11/Xlib.h XOpenDisplay -lX11 && enable xlib
-if enabled libxcb || enabled x11grab && ! disabled libxcb; then
+if enabled libxcb; then
check_pkg_config xcb-shape xcb/shape.h xcb_shape_rectangles || {
enabled libxcb && die "ERROR: libxcb not found";
- } && disable x11grab && enable libxcb
+ } && enable libxcb
disabled libxcb_shm ||
check_pkg_config xcb-shm xcb/shm.h xcb_shm_attach || {
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 vaapi &&
check_code cc "va/va.h" "vaCreateSurfaces(0, 0, 0, 0, 0, 0, 0, 0)" ||
disable vaapi
-enabled vaapi && enabled xlib &&
+if enabled vaapi ; then
+ enabled xlib &&
check_lib2 "va/va.h va/va_x11.h" vaGetDisplay -lva -lva-x11 &&
enable vaapi_x11
+ check_lib2 "va/va.h va/va_drm.h" vaGetDisplayDRM -lva -lva-drm &&
+ enable vaapi_drm
+fi
+
enabled vdpau &&
check_cpp_condition vdpau/vdpau.h "defined VDP_DECODER_PROFILE_MPEG4_PART2_ASP" ||
disable vdpau
enabled vdpau && enabled xlib &&
- check_func_headers "vdpau/vdpau.h vdpau/vdpau_x11.h" vdp_device_create_x11 -lvdpau &&
- prepend avconv_libs $($ldflags_filter "-lvdpau") &&
+ check_lib2 "vdpau/vdpau.h vdpau/vdpau_x11.h" vdp_device_create_x11 -lvdpau &&
enable vdpau_x11
enabled debug && add_cflags -g"$debuglevel" && add_asflags -g"$debuglevel"
-Wl,--wrap,sws_scale ||
disable xmm_clobber_test
-echo "X { local: *; };" > $TMPV
-if test_ldflags -Wl,--version-script,$TMPV; then
- append SHFLAGS '-Wl,--version-script,\$(SUBDIR)lib\$(NAME).ver'
-elif test_ldflags -Wl,-M,$TMPV; then
- append SHFLAGS '-Wl,-M,\$(SUBDIR)lib\$(NAME).ver-sol2'
-fi
+check_ld <<EOF && enable proper_dce
+extern const int array[512];
+static inline int func(void) { return array[0]; }
+int main(void) { return 0; }
+EOF
-check_cc <<EOF && enable symver_asm_label
+if enabled proper_dce; then
+ echo "X { local: *; };" > $TMPV
+ if test_ldflags -Wl,${version_script},$TMPV; then
+ append SHFLAGS '-Wl,${version_script},\$(SUBDIR)lib\$(NAME).ver'
+ check_cc <<EOF && enable symver_asm_label
void ff_foo(void) __asm__ ("av_foo@VERSION");
void ff_foo(void) { ${inline_asm+__asm__($quotes);} }
EOF
- check_cc <<EOF && enable symver_gnu_asm
+ check_cc <<EOF && enable symver_gnu_asm
__asm__(".symver ff_foo,av_foo@VERSION");
void ff_foo(void) {}
EOF
+ fi
+fi
if [ -z "$optflags" ]; then
if enabled small; then
__declspec($_restrict) void* foo(int);
EOF
fi
- check_func strtoll || add_cflags -Dstrtoll=_strtoi64
fi
for pfx in "" host_; do
enable dxva2_lib
! enabled_any memalign posix_memalign aligned_malloc &&
- enabled simd_align_16 && enable memalign_hack
+ enabled simd_align && enable memalign_hack
map 'enabled $v && intrinsics=${v#intrinsics_}' $INTRINSICS_LIST
echo "External libraries:"
print_enabled '' $EXTERNAL_LIBRARY_LIST | print_3_columns
echo
+echo "External libraries providing hardware acceleration:"
+print_enabled '' $HWACCEL_LIBRARY_LIST | print_3_columns
+echo
echo "Libraries:"
print_enabled '' $LIBRARY_LIST | print_3_columns
SLIB_INSTALL_LINKS=${SLIB_INSTALL_LINKS}
SLIB_INSTALL_EXTRA_LIB=${SLIB_INSTALL_EXTRA_LIB}
SLIB_INSTALL_EXTRA_SHLIB=${SLIB_INSTALL_EXTRA_SHLIB}
+VERSION_SCRIPT_POSTPROCESS_CMD=${VERSION_SCRIPT_POSTPROCESS_CMD}
SAMPLES:=${samples:-\$(LIBAV_SAMPLES)}
EOF
test -n "$WARNINGS" && printf "\n$WARNINGS"
+# generate the lists of enabled components
+print_enabled_components(){
+ file=$1
+ struct_name=$2
+ name=$3
+ shift 3
+ echo "static const $struct_name *$name[] = {" > $TMPH
+ for c in $*; do
+ enabled $c && printf " &ff_%s,\n" $c >> $TMPH
+ done
+ echo " NULL };" >> $TMPH
+ cp_if_changed $TMPH $file
+}
+
+print_enabled_components libavcodec/bsf_list.c AVBitStreamFilter bitstream_filters $BSF_LIST
+print_enabled_components libavformat/protocol_list.c URLProtocol url_protocols $PROTOCOL_LIST
+
# build pkg-config files
lib_version(){