--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
-
-Hardware-accelerated decoding/encoding:
- --enable-cuda enable dynamically linked CUDA [no]
- --enable-libmfx enable HW acceleration through libmfx
- --enable-mmal enable decoding via MMAL [no]
- --enable-nvenc enable encoding via NVENC [no]
-
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-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-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-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-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-x11grab X11 grabbing through xlib (legacy, use xcb instead)
+ --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]
transcode_aac_example
"
+HWACCEL_LIBRARY_LIST="
+ cuda
+ d3d11va
+ dxva2
+ libmfx
+ libnpp
+ mmal
+ nvenc
+ omx
+ vaapi
+ vda
+ vdpau
+"
+
EXTERNAL_LIBRARY_LIST="
avisynth
bzlib
libilbc
libkvazaar
libmp3lame
- libnpp
libopencore_amrnb
libopencore_amrwb
libopencv
FEATURE_LIST="
gray
hardcoded_tables
+ omx_rpi
runtime_cpudetect
safe_bitstream_reader
shared
swscale_alpha
"
-HW_CODECS_LIST="
- cuda
- libmfx
- mmal
- nvenc
-"
-
-HWACCEL_LIST="
- d3d11va
- dxva2
- vaapi
- vda
- vdpau
-"
-
LIBRARY_LIST="
avcodec
avdevice
$COMPONENT_LIST
$EXAMPLE_LIST
$EXTERNAL_LIBRARY_LIST
+ $HWACCEL_LIBRARY_LIST
$FEATURE_LIST
- $HW_CODECS_LIST
- $HWACCEL_LIST
$LICENSE_LIST
$LIBRARY_LIST
$PROGRAM_LIST
libc_msvcrt
libdc1394_1
libdc1394_2
+ MMAL_PARAMETER_VIDEO_MAX_NUM_CALLBACKS
sdl
section_data_rel_ro
threads
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"
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"
# 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"
nvenc_hevc_encoder_deps="nvenc"
# parsers
-h264_parser_select="h264_decoder"
+h264_parser_select="golomb h264dsp"
hevc_parser_select="golomb"
mpegvideo_parser_select="mpegvideo"
mpeg4video_parser_select="error_resilience h263dsp mpegvideo qpeldsp"
ocv_filter_deps="libopencv"
resample_filter_deps="avresample"
scale_filter_deps="swscale"
+scale_qsv_filter_deps="libmfx"
scale_vaapi_filter_deps="vaapi VAProcPipelineParameterBuffer"
# examples
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
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
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
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_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
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
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
done
-echo "Enabled Hardware-accelerated codecs:"
-print_enabled '' $HW_CODECS_LIST | print_3_columns
-echo
-
license="LGPL version 2.1 or later"
if enabled nonfree; then
license="nonfree and unredistributable"
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(){