Help options:
--help print this message
+ --quiet Suppress showing informative output
--list-decoders show all available decoders
--list-encoders show all available encoders
--list-hwaccels show all available hardware accelerators
Standard options:
--logfile=FILE log tests and output to FILE [config.log]
--disable-logging do not log configure debug information
- --prefix=PREFIX install in PREFIX [$prefix]
+ --prefix=PREFIX install in PREFIX [$prefix_default]
--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]
--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]
+ --enable-rpath use rpath when linking programs (USE WITH CARE)
Licensing options:
--enable-gpl allow use of GPL code, the resulting libs
--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)
+ --enable-runtime-cpudetect detect CPU capabilities at runtime (bigger 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
Component options:
--disable-doc do not build documentation
+ --disable-pod2man do not build manual pages
+ --disable-texi2html do not build HTML documentation
--disable-avdevice disable libavdevice build
--disable-avcodec disable libavcodec build
--disable-avformat disable libavformat build
--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-libnpp enable NVIDIA Performance Primitives-based code [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]
--disable-safe-bitstream-reader
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
Optimization options (experts only):
pat=$1
shift
for v; do
- eval "case $v in $pat) echo $v ;; esac"
+ eval "case $v in $pat) printf '%s ' $v ;; esac"
done
}
pat=$1
shift
for v; do
- eval "case $v in $pat) ;; *) echo $v ;; esac"
+ eval "case $v in $pat) ;; *) printf '%s ' $v ;; esac"
done
}
suf=$1
shift
for v; do
- enabled $v && printf "%s\n" ${v%$suf};
+ enabled $v && printf "%s\n" ${v%$suf}
done
}
check_cppflags(){
log check_cppflags "$@"
- check_cc "$@" <<EOF && append CPPFLAGS "$@"
+ check_cpp "$@" <<EOF && append CPPFLAGS "$@"
int x;
EOF
}
}
test_objcflags(){
- log test_cflags "$@"
- set -- $($cflags_filter "$@")
+ log test_objcflags "$@"
+ set -- $($objcflags_filter "$@")
check_objcc "$@" <<EOF
int x;
EOF
}
check_objcflags(){
- log check_cflags "$@"
+ log check_objcflags "$@"
test_objcflags "$@" && add_objcflags "$@"
}
EOF
}
-check_lib(){
- log check_lib "$@"
- header="$1"
- func="$2"
+test_cflags_cpp(){
+ log test_cflags_cpp "$@"
+ flags=$1
+ condition=$2
shift 2
- check_header $header && check_func $func "$@" && add_extralibs "$@"
+ set -- $($cflags_filter "$flags")
+ check_cpp "$@" <<EOF
+#if !($condition)
+#error "unsatisfied condition: $condition"
+#endif
+EOF
}
-check_lib2(){
- log check_lib2 "$@"
+check_lib(){
+ log check_lib "$@"
headers="$1"
funcs="$2"
shift 2
}
check_exec_crash(){
+ log check_exec_crash "$@"
code=$(cat)
# exit() is not async signal safe. _Exit (C99) and _exit (POSIX)
}
require(){
- name="$1"
- header="$2"
- func="$3"
- shift 3
- check_lib $header $func "$@" || die "ERROR: $name not found"
-}
-
-require2(){
+ log require "$@"
name="$1"
headers="$2"
func="$3"
shift 3
- check_lib2 "$headers" $func "$@" || die "ERROR: $name not found"
+ check_lib "$headers" $func "$@" || die "ERROR: $name not found"
}
require_pkg_config(){
+ log require_pkg_config "$@"
pkg="$1"
check_pkg_config "$@" || die "ERROR: $pkg not found"
add_cflags $(get_safe "${pkg}_cflags")
check_host_cppflags(){
log check_host_cppflags "$@"
- check_host_cc "$@" <<EOF && append host_cppflags "$@"
+ check_host_cpp "$@" <<EOF && append host_cppflags "$@"
int x;
EOF
}
}
cp_if_changed(){
- cmp -s "$1" "$2" && echo "$2 is unchanged" && return
+ cmp -s "$1" "$2" && { test "$quiet" != "yes" && echo "$2 is unchanged"; } && return
mkdir -p "$(dirname $2)"
$cp_f "$1" "$2"
}
"
EXAMPLE_LIST="
- avcodec_example
+ decode_audio_example
+ decode_video_example
+ encode_audio_example
+ encode_video_example
filter_audio_example
metadata_example
output_example
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
- libnpp
- 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
$SUBSYSTEM_LIST
- memalign_hack
neon_clobber_test
pic
pod2man
fast_cmov
local_aligned_8
local_aligned_16
+ local_aligned_32
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
poll_h
sndio_h
soundcard_h
+ stdatomic_h
sys_mman_h
sys_param_h
sys_resource_h
TOOLCHAIN_FEATURES="
as_dn_directive
+ as_fpu_directive
as_func
as_object_arch
asm_mod_q
$(add_suffix _external $ARCH_EXT_LIST)
$(add_suffix _inline $ARCH_EXT_LIST)
$ARCH_FEATURES
- $ATOMICS_LIST
$BUILTIN_LIST
$HAVE_LIST_CMDLINE
$HAVE_LIST_PUB
$THREADS_LIST
$TOOLCHAIN_FEATURES
$TYPES_LIST
- atomics_native
dos_paths
dxva2_lib
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
"
# options emitted with CONFIG_ prefix but not available on the command line
flacdsp
fmtconvert
g722dsp
- gcrypt
gmp
golomb
gplv3
h263dsp
h264chroma
h264dsp
+ h264parse
h264pred
h264qpel
hpeldsp
texturedsp
texturedspenc
tpeldsp
+ vaapi_encode
vc1dsp
videodsp
vp3dsp
fast_clz_if_any="aarch64 alpha avr32 mips ppc x86"
fast_unaligned_if_any="aarch64 ppc x86"
simd_align_16_if_any="altivec neon sse"
+simd_align_32_if_any="avx"
# system capabilities
symver_if_any="symver_asm_label symver_gnu_asm"
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"
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="golomb h264dsp h264pred hpeldsp tpeldsp videodsp"
+svq3_decoder_select="golomb h264dsp h264parse h264pred hpeldsp tpeldsp videodsp"
svq3_decoder_suggest="zlib"
tak_decoder_select="audiodsp"
tdsc_decoder_deps="zlib"
h264_d3d11va_hwaccel_select="h264_decoder"
h264_dxva2_hwaccel_deps="dxva2"
h264_dxva2_hwaccel_select="h264_decoder"
-h264_mmal_decoder_deps="mmal"
h264_mmal_hwaccel_deps="mmal"
-h264_mmal_decoder_select="h264_decoder"
-h264_mmal_encoder_deps="mmal"
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_hwaccel_deps="mmal"
mpeg2_qsv_hwaccel_deps="libmfx"
mpeg2_vaapi_hwaccel_deps="vaapi"
mpeg2_vaapi_hwaccel_select="mpeg2video_decoder"
vc1_d3d11va_hwaccel_select="vc1_decoder"
vc1_dxva2_hwaccel_deps="dxva2"
vc1_dxva2_hwaccel_select="vc1_decoder"
+vc1_mmal_hwaccel_deps="mmal"
+vc1_qsv_hwaccel_deps="libmfx"
vc1_vaapi_hwaccel_deps="vaapi"
vc1_vaapi_hwaccel_select="vc1_decoder"
vc1_vdpau_hwaccel_deps="vdpau"
vc1_vdpau_hwaccel_select="vc1_decoder"
+vp8_qsv_hwaccel_deps="libmfx"
+vp8_vaapi_hwaccel_deps="vaapi VAPictureParameterBufferVP8"
+vp8_vaapi_hwaccel_select="vp8_decoder"
wmv3_d3d11va_hwaccel_select="vc1_d3d11va_hwaccel"
wmv3_dxva2_hwaccel_select="vc1_dxva2_hwaccel"
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_mmal_decoder_deps="mmal"
+h264_nvenc_encoder_deps="nvenc"
+h264_omx_encoder_deps="omx"
+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"
+mjpeg_vaapi_encoder_deps="VAEncPictureParameterBufferJPEG"
+mjpeg_vaapi_encoder_select="vaapi_encode jpegtables"
+mpeg2_mmal_decoder_deps="mmal"
+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_omx_encoder_deps="omx"
+vc1_mmal_decoder_deps="mmal"
+vc1_qsv_decoder_deps="libmfx"
+vc1_qsv_decoder_select="qsvdec vc1_qsv_hwaccel vc1_parser"
+vp8_qsv_decoder_deps="libmfx"
+vp8_qsv_decoder_select="qsvdec vp8_qsv_hwaccel vp8_parser"
+
+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"
libx264_encoder_deps="libx264"
libx265_encoder_deps="libx265"
libxavs_encoder_deps="libxavs"
-libxvid_encoder_deps="libxvid"
+libxvid_encoder_deps="libxvid mkstemp"
# demuxers / muxers
ac3_demuxer_select="ac3_parser"
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"
-ffrtmpcrypt_protocol_deps_any="gcrypt gmp openssl"
+ffrtmpcrypt_protocol_deps_any="gmp openssl"
ffrtmpcrypt_protocol_select="tcp_protocol"
ffrtmphttp_protocol_deps="!librtmp_protocol"
ffrtmphttp_protocol_select="http_protocol"
unix_protocol_select="network"
# filters
+asyncts_filter_deps="avresample"
blackframe_filter_deps="gpl"
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"
+movie_filter_deps="avcodec avformat"
ocv_filter_deps="libopencv"
resample_filter_deps="avresample"
scale_filter_deps="swscale"
-scale_npp_filter_deps="cuda libnpp"
+scale_qsv_filter_deps="libmfx"
scale_vaapi_filter_deps="vaapi VAProcPipelineParameterBuffer"
# examples
-avcodec_example_deps="avcodec avutil"
+decode_audio_example_deps="avcodec avutil"
+decode_video_example_deps="avcodec avutil"
+encode_audio_example_deps="avcodec avutil"
+encode_video_example_deps="avcodec avutil"
filter_audio_example_deps="avfilter avutil"
metadata_example_deps="avformat avutil"
-output_example_deps="avcodec avformat avutil swscale"
-qsvdec_example_deps="avcodec avutil libmfx h264_qsv_decoder vaapi_x11"
+output_example_deps="avcodec avformat avresample avutil swscale"
+qsvdec_example_deps="avcodec avutil libmfx h264_qsv_decoder"
transcode_aac_example_deps="avcodec avformat avresample"
# libraries, in linking order
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
;;
--help|-h) show_help
;;
+ --quiet|-q) quiet=yes
+ ;;
*)
optname="${opt%%=*}"
optname="${optname#--}"
disabled logging && logfile=/dev/null
+# Die early if licensing-related configure options are incompatible.
+die_license_disabled() {
+ enabled $1 || { enabled $v && die "$v is $1 and --enable-$1 is not specified."; }
+}
+
+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; }
+
# Disable all the library-specific components if the library itself
# is disabled, see AVCODEC_LIST and following _LIST variables.
if enabled cross_compile; then
test -n "$arch" && test -n "$target_os" ||
- die "Must specify target arch and OS when cross-compiling"
+ die "Must specify target arch (--arch) and OS (--target-os) when cross-compiling"
fi
ar_default="${cross_prefix}${ar_default}"
-mthumb) ;;
-march=*) ;;
-lz) echo zlib.lib ;;
- -lavifil32) echo vfw32.lib ;;
-lavicap32) echo vfw32.lib user32.lib ;;
-lx264) echo libx264.lib ;;
-l*) echo ${flag#-l}.lib ;;
-Wall) echo -W4 -wd4244 -wd4127 -wd4018 -wd4389 \
-wd4146 -wd4057 -wd4204 -wd4706 -wd4305 \
-wd4152 -wd4324 -we4013 -wd4100 -wd4214 \
- -wd4273 -wd4554 -wd4701 ;;
+ -wd4273 -wd4554 -wd4701 -wd4703 ;;
esac
done
}
_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 2>/dev/null)
+ _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
}
fi
add_cppflags -D_ISOC99_SOURCE
-check_cflags -std=c99
+
+# some compilers silently accept -std=c11, so we also need to check that the
+# version macro is defined properly
+if test_cflags_cpp -std=c11 "__STDC_VERSION__ >= 201112L"; then
+ add_cflags -std=c11
+else
+ check_cflags -std=c99
+fi
+
check_cc -D_FILE_OFFSET_BITS=64 <<EOF && add_cppflags -D_FILE_OFFSET_BITS=64
#include <stdlib.h>
EOF
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."; }
-}
-
-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 libnpp
-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
-
-enabled version3 && { enabled gpl && enable gplv3 || enable lgplv3; }
-
disabled optimizations || check_cflags -fomit-frame-pointer
enable_weak_pic() {
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_func ${malloc_prefix}posix_memalign && enable posix_memalign
check_cpp_condition unistd.h "defined(_POSIX_MONOTONIC_CLOCK)" &&
- check_func_headers time.h clock_gettime || { check_func_headers time.h clock_gettime -lrt && add_extralibs -lrt && LIBRT="-lrt"; }
+ check_func_headers time.h clock_gettime ||
+ { check_lib time.h clock_gettime -lrt && LIBRT="-lrt"; }
check_func fcntl
check_func fork
check_header windows.h
check_header X11/extensions/XvMClib.h
-check_lib2 "windows.h shellapi.h" CommandLineToArgvW -lshell32
-check_lib2 "windows.h wincrypt.h" CryptGenRandom -ladvapi32
-check_lib2 "windows.h psapi.h" GetProcessMemoryInfo -lpsapi
+# it seems there are versions of clang in some distros that try to use the
+# gcc headers, which explodes for stdatomic
+# so we also check that atomics actually work here
+check_builtin stdatomic_h stdatomic.h "atomic_int foo; atomic_store(&foo, 0)"
+
+check_lib "windows.h shellapi.h" CommandLineToArgvW -lshell32
+check_lib "windows.h wincrypt.h" CryptGenRandom -ladvapi32
+check_lib "windows.h psapi.h" GetProcessMemoryInfo -lpsapi
check_struct "sys/time.h sys/resource.h" "struct rusage" ru_maxrss
check_type "windows.h d3d11.h" "ID3D11VideoDecoder"
check_type "d3d9.h dxva2api.h" DXVA2_ConfigPictureDecode -D_WIN32_WINNT=0x0602
+check_type "va/va.h va/va_dec_vp8.h" "VAPictureParameterBufferVP8"
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
-disabled zlib || check_lib zlib.h zlibVersion -lz || disable zlib
-disabled bzlib || check_lib2 bzlib.h BZ2_bzlibVersion -lbz2 || disable bzlib
+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_lib bzlib.h BZ2_bzlibVersion -lbz2 || disable bzlib
check_lib math.h sin -lm && LIBM="-lm"
-enabled vaapi && require vaapi va/va.h vaInitialize -lva
atan2f_args=2
ldexpf_args=2
powf_args=2
for func in $MATH_FUNCS; do
- eval check_mathfunc $func \${${func}_args:-1}
+ eval check_mathfunc $func \${${func}_args:-1} $LIBM
done
# these are off by default, so fail if requested and not available
-enabled avisynth && { check_lib2 "avisynth/avisynth_c.h windows.h" LoadLibrary ||
- check_lib2 "avxsynth/avxsynth_c.h dlfcn.h" dlopen -ldl ||
+enabled avisynth && { check_lib "avisynth/avisynth_c.h windows.h" LoadLibrary ||
+ check_lib "avxsynth/avxsynth_c.h dlfcn.h" dlopen -ldl ||
die "ERROR: LoadLibrary/dlopen not found, or avisynth header not found"; }
enabled cuda && check_lib cuda.h cuInit -lcuda
enabled frei0r && { check_header frei0r.h || die "ERROR: frei0r.h header not found"; }
enabled gnutls && require_pkg_config gnutls gnutls/gnutls.h gnutls_global_init
enabled libbs2b && require_pkg_config libbs2b bs2b.h bs2b_open
+enabled libdc1394 && require_pkg_config libdc1394-2 dc1394/dc1394.h dc1394_new
enabled libdcadec && require libdcadec libdcadec/dca_context.h dcadec_context_create -ldcadec
-enabled libfaac && require2 libfaac "stdint.h faac.h" faacEncGetVersion -lfaac
+enabled libfaac && require libfaac "stdint.h faac.h" faacEncGetVersion -lfaac
enabled libfdk_aac && require_pkg_config fdk-aac "fdk-aac/aacenc_lib.h" aacEncOpen
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 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 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 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 -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 libsnappy && require snappy snappy-c.h snappy_compress -lsnappy
+enabled libsnappy && require libsnappy snappy-c.h snappy_compress -lsnappy
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 libx265 && require_pkg_config x265 x265.h x265_api_get &&
{ check_cpp_condition x265.h "X265_BUILD >= 57" ||
die "ERROR: libx265 version must be >= 57."; }
-enabled libxavs && require libxavs xavs.h xavs_encoder_encode -lxavs
+enabled libxavs && require libxavs "stdint.h xavs.h" xavs_encoder_encode -lxavs
enabled libxvid && require libxvid xvid.h xvid_global -lxvidcore
enabled mmal && { check_lib interface/mmal/mmal.h mmal_port_connect -lmmal_core -lmmal_util -lmmal_vc_client -lbcm_host ||
{ ! enabled cross_compile && {
check_lib interface/mmal/mmal.h mmal_port_connect ; }
check_lib interface/mmal/mmal.h mmal_port_connect ; } ||
die "ERROR: mmal not found"; }
-enabled openssl && { check_pkg_config openssl openssl/ssl.h SSL_library_init && {
+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 OPENSSL_init_ssl ||
+ 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 ||
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"; }
-if enabled gnutls; then
- { check_lib2 gmp.h mpz_export -lgmp && enable gmp; } ||
- { check_lib gcrypt.h gcry_mpi_new -lgcrypt && enable gcrypt; }
-fi
-
-# libdc1394 check
-if enabled libdc1394; then
- { require_pkg_config libdc1394-2 dc1394/dc1394.h dc1394_new &&
- enable libdc1394_2; } ||
- { check_lib libdc1394/dc1394_control.h dc1394_create_handle -ldc1394_control -lraw1394 &&
- enable libdc1394_1; } ||
- die "ERROR: No version of libdc1394 found "
-fi
+enabled gnutls && check_lib gmp.h mpz_export -lgmp && enable gmp
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
enable sdl
fi
-pod2man --help > /dev/null 2>&1 && enable pod2man || disable pod2man
-texi2html -version > /dev/null 2>&1 && enable texi2html || disable texi2html
+! disabled pod2man && check_cmd pod2man --help && enable pod2man || disable pod2man
+! disabled texi2html && check_cmd texi2html -version && enable texi2html || disable texi2html
check_header linux/fb.h
check_header linux/videodev2.h
check_header soundcard.h
enabled_any alsa_indev alsa_outdev &&
- check_lib2 alsa/asoundlib.h snd_pcm_htimestamp -lasound
+ check_lib alsa/asoundlib.h snd_pcm_htimestamp -lasound
-enabled jack_indev && check_lib2 jack/jack.h jack_client_open -ljack &&
+enabled jack_indev && check_lib jack/jack.h jack_client_open -ljack &&
check_func jack_port_get_latency_range -ljack
-enabled_any sndio_indev sndio_outdev && check_lib2 sndio.h sio_open -lsndio
+enabled_any sndio_indev sndio_outdev && check_lib sndio.h sio_open -lsndio
if enabled libcdio; then
- check_lib2 "cdio/cdda.h cdio/paranoia.h" cdio_cddap_open -lcdio_paranoia -lcdio_cdda -lcdio ||
- check_lib2 "cdio/paranoia/cdda.h cdio/paranoia/paranoia.h" cdio_cddap_open -lcdio_paranoia -lcdio_cdda -lcdio ||
+ check_lib "cdio/cdda.h cdio/paranoia.h" cdio_cddap_open -lcdio_paranoia -lcdio_cdda -lcdio ||
+ check_lib "cdio/paranoia/cdda.h cdio/paranoia/paranoia.h" cdio_cddap_open -lcdio_paranoia -lcdio_cdda -lcdio ||
die "ERROR: No usable libcdio/cdparanoia found"
fi
-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 || {
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"
+ add_cflags "$xcb_shape_cflags $xcb_event_cflags $xcb_shm_cflags $xcb_xfixes_cflags"
+ add_extralibs "$xcb_shape_libs $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 && require vaapi va/va.h vaInitialize -lva
enabled vaapi &&
check_code cc "va/va.h" "vaCreateSurfaces(0, 0, 0, 0, 0, 0, 0, 0)" ||
disable vaapi
-enabled vaapi && enabled xlib &&
- check_lib2 "va/va.h va/va_x11.h" vaGetDisplay -lva -lva-x11 &&
+enabled vaapi &&
+ check_lib "va/va.h va/va_drm.h" vaGetDisplayDRM -lva -lva-drm &&
+ enable vaapi_drm
+
+enabled vaapi &&
+ check_lib "va/va.h va/va_x11.h" vaGetDisplay -lva -lva-x11 -lX11 &&
enable vaapi_x11
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") &&
+enabled vdpau &&
+ check_lib "vdpau/vdpau.h vdpau/vdpau_x11.h" vdp_device_create_x11 -lvdpau -lX11 &&
enable vdpau_x11
enabled debug && add_cflags -g"$debuglevel" && add_asflags -g"$debuglevel"
check_cflags -Wundef
check_cflags -Wmissing-prototypes
check_cflags -Wstrict-prototypes
-enabled extra_warnings && check_cflags -Winline
-enabled extra_warnings && check_cflags -Wcast-qual
+
+if enabled extra_warnings; then
+ check_cflags -Wcast-qual
+ check_cflags -Wextra
+ check_cflags -Wpedantic
+fi
check_disable_warning(){
warning_flag=-W${1#-Wno-}
check_disable_warning -Wno-format-zero-length
check_disable_warning -Wno-pointer-sign
+check_disable_warning_headers(){
+ warning_flag=-W${1#-Wno-}
+ test_cflags $warning_flag && append cflags_headers $1
+}
+
+check_disable_warning_headers -Wno-deprecated-declarations
+check_disable_warning_headers -Wno-unused-variable
+
# add some linker flags
check_ldflags -Wl,--warn-common
check_ldflags -Wl,-rpath-link=libswscale:libavfilter:libavdevice:libavformat:libavcodec:libavutil:libavresample
-Wl,--wrap,avcodec_encode_audio2 \
-Wl,--wrap,avcodec_encode_video2 \
-Wl,--wrap,avcodec_encode_subtitle \
+ -Wl,--wrap,avcodec_send_packet \
+ -Wl,--wrap,avcodec_receive_packet \
+ -Wl,--wrap,avcodec_send_frame \
+ -Wl,--wrap,avcodec_receive_frame \
-Wl,--wrap,avresample_convert ||
disable neon_clobber_test
-Wl,--wrap,avcodec_encode_audio2 \
-Wl,--wrap,avcodec_encode_video2 \
-Wl,--wrap,avcodec_encode_subtitle \
+ -Wl,--wrap,avcodec_send_packet \
+ -Wl,--wrap,avcodec_receive_packet \
+ -Wl,--wrap,avcodec_send_frame \
+ -Wl,--wrap,avcodec_receive_frame \
-Wl,--wrap,avresample_convert \
-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
prepend avconv_libs $($ldflags_filter "-lole32") &&
enable dxva2_lib
-! enabled_any memalign posix_memalign aligned_malloc &&
- enabled simd_align_16 && enable memalign_hack
-
map 'enabled $v && intrinsics=${v#intrinsics_}' $INTRINSICS_LIST
for thread in $THREADS_LIST; do
fi
done
+if disabled stdatomic_h; then
+ if enabled atomics_gcc; then
+ add_cppflags '-I\$(SRC_PATH)/compat/atomics/gcc'
+ elif enabled atomics_win32; then
+ add_cppflags '-I\$(SRC_PATH)/compat/atomics/win32'
+ elif enabled atomics_suncc; then
+ add_cppflags '-I\$(SRC_PATH)/compat/atomics/suncc'
+ elif enabled pthreads; then
+ add_compat atomics/pthread/stdatomic.o
+ add_cppflags '-I\$(SRC_PATH)/compat/atomics/pthread'
+ else
+ enabled threads && die "Threading is enabled, but no atomics are available"
+ add_cppflags '-I\$(SRC_PATH)/compat/atomics/dummy'
+ fi
+fi
+
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_any asyncts_filter resample_filter &&
+ prepend avfilter_deps "avresample"
enabled scale_filter && prepend avfilter_deps "swscale"
enabled opus_decoder && prepend avcodec_deps "avresample"
map 'expand_deps $v' $LIBRARY_LIST
+if test "$quiet" != "yes"; then
+
echo "install prefix $prefix"
echo "source path $source_path"
echo "C compiler $cc"
echo "optimizations ${optimizations-no}"
echo "static ${static-no}"
echo "shared ${shared-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}"
test -n "$random_seed" &&
echo "random seed ${random_seed}"
echo
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
echo
+echo "Programs:"
+print_enabled '' $PROGRAM_LIST | print_3_columns
+echo
+
for type in decoder encoder hwaccel parser demuxer muxer protocol filter bsf indev outdev; do
echo "Enabled ${type}s:"
eval list=\$$(toupper $type)_LIST
echo "License: $license"
-echo "Creating config.mak and config.h..."
+echo "Creating configuration files ..."
+
+fi # test "$quiet" != "yes"
test -e Makefile || echo "include $source_path/Makefile" > Makefile
TARGET_PATH=$target_path
TARGET_SAMPLES=${target_samples:-\$(SAMPLES)}
CFLAGS-avplay=$sdl_cflags
+CFLAGS_HEADERS=$cflags_headers
ZLIB=$($ldflags_filter -lz)
LIB_INSTALL_EXTRA_CMD=$LIB_INSTALL_EXTRA_CMD
EXTRALIBS=$extralibs
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
cp_if_changed $TMPH libavutil/avconfig.h
+# 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
+
test -n "$WARNINGS" && printf "\n$WARNINGS"
# build pkg-config files