--disable-lzma disable lzma [autodetect]
--enable-decklink enable Blackmagic DeckLink I/O support [no]
--enable-mediacodec enable Android MediaCodec support [no]
- --enable-netcdf enable NetCDF, needed for sofalizer filter [no]
+ --enable-libmysofa enable libmysofa, needed for sofalizer filter [no]
--enable-openal enable OpenAL 1.1 capture support [no]
--enable-opencl enable OpenCL code
--enable-opengl enable OpenGL rendering [no]
--ln_s=LN_S use symbolic link tool LN_S [$ln_s_default]
--strip=STRIP use strip tool STRIP [$strip_default]
--windres=WINDRES use windows resource compiler WINDRES [$windres_default]
- --yasmexe=EXE use yasm-compatible assembler EXE [$yasmexe_default]
+ --x86asmexe=EXE use nasm-compatible assembler EXE [$x86asmexe_default]
--cc=CC use C compiler CC [$cc_default]
--cxx=CXX use C compiler CXX [$cxx_default]
--objcc=OCC use ObjC compiler OCC [$cc_default]
--disable-vfp disable VFP optimizations
--disable-neon disable NEON optimizations
--disable-inline-asm disable use of inline assembly
- --disable-yasm disable use of nasm/yasm assembly
+ --disable-x86asm disable use of standalone x86 assembly
--disable-mipsdsp disable MIPS DSP ASE R1 optimizations
--disable-mipsdspr2 disable MIPS DSP ASE R2 optimizations
--disable-msa disable MSA optimizations
echo "$2" | check_as && enable ${1}_external || disable ${1}_external
}
-check_yasm(){
- log check_yasm "$@"
+check_x86asm(){
+ log check_x86asm "$@"
echo "$1" > $TMPS
log_file $TMPS
shift 1
- check_cmd $yasmexe $YASMFLAGS -Werror "$@" -o $TMPO $TMPS
+ check_cmd $x86asmexe $X86ASMFLAGS -Werror "$@" -o $TMPO $TMPS
}
ld_o(){
libkvazaar
libmodplug
libmp3lame
+ libmysofa
libopencv
libopenh264
libopenjpeg
libzmq
libzvbi
mediacodec
- netcdf
openal
opencl
opengl
HAVE_LIST_CMDLINE="
inline_asm
symver
- yasm
+ x86asm
"
HAVE_LIST_PUB="
machine_ioctl_meteor_h
malloc_h
opencv2_core_core_c_h
+ openjpeg_2_2_openjpeg_h
openjpeg_2_1_openjpeg_h
openjpeg_2_0_openjpeg_h
openjpeg_1_5_openjpeg_h
tempprefix
toolchain
valgrind
- yasmexe
+ x86asmexe
"
CMDLINE_APPEND="
fma4_deps="avx"
avx2_deps="avx"
-mmx_external_deps="yasm"
+mmx_external_deps="x86asm"
mmx_inline_deps="inline_asm"
mmx_suggest="mmx_external mmx_inline"
binkaudio_dct_decoder_select="mdct rdft dct sinewin wma_freqs"
binkaudio_rdft_decoder_select="mdct rdft sinewin wma_freqs"
cavs_decoder_select="blockdsp golomb h264chroma idctdsp qpeldsp videodsp"
+clearvideo_decoder_select="idctdsp"
cllc_decoder_select="bswapdsp"
comfortnoise_encoder_select="lpc"
cook_decoder_select="audiodsp mdct sinewin"
mpeg2_d3d11va_hwaccel_select="mpeg2video_decoder"
mpeg2_dxva2_hwaccel_deps="dxva2"
mpeg2_dxva2_hwaccel_select="mpeg2video_decoder"
+mpeg2_mediacodec_hwaccel_deps="mediacodec"
mpeg2_mmal_hwaccel_deps="mmal"
mpeg2_qsv_hwaccel_deps="libmfx"
mpeg2_qsv_hwaccel_select="qsvdec_mpeg2"
mpeg2_crystalhd_decoder_select="crystalhd"
mpeg2_cuvid_decoder_deps="cuda cuvid"
mpeg2_mmal_decoder_deps="mmal"
+mpeg2_mediacodec_decoder_deps="mediacodec"
mpeg2_qsv_decoder_deps="libmfx"
mpeg2_qsv_decoder_select="qsvdec mpeg2_qsv_hwaccel"
mpeg2_qsv_encoder_deps="libmfx"
vp8_vaapi_encoder_select="vaapi_encode"
vp9_cuvid_decoder_deps="cuda cuvid"
vp9_mediacodec_decoder_deps="mediacodec"
+vp9_vaapi_encoder_deps="VAEncPictureParameterBufferVP9"
+vp9_vaapi_encoder_select="vaapi_encode"
wmv3_crystalhd_decoder_select="crystalhd"
wmv3_vdpau_decoder_select="vc1_vdpau_decoder"
showspectrumpic_filter_select="fft"
signature_filter_deps="gpl avcodec avformat"
smartblur_filter_deps="gpl swscale"
-sofalizer_filter_deps="netcdf avcodec"
+sofalizer_filter_deps="libmysofa avcodec"
sofalizer_filter_select="fft"
spectrumsynth_filter_deps="avcodec"
spectrumsynth_filter_select="fft"
install="install"
ln_s_default="ln -s -f"
nm_default="nm -g"
-objformat="elf"
pkg_config_default=pkg-config
ranlib_default="ranlib"
strip_default="strip"
version_script='--version-script'
-yasmexe_default="yasm"
+x86asmexe_default="nasm"
windres_default="windres"
nvcc_default="nvcc"
nvccflags_default="-gencode arch=compute_30,code=sm_30 -O2"
OBJCC_C='-c'
OBJCC_E='-E -o $@'
OBJCC_O='-o $@'
+X86ASM_O='-o $@'
LD_O='-o $@'
LD_LIB='-l%'
LD_PATH='-L'
DEPCMD='$(DEP$(1)) $(DEP$(1)FLAGS) $($(1)DEP_FLAGS) $< 2>/dev/null | sed -e "/^\#.*/d" -e "s,^[[:space:]]*$(@F),$(@D)/$(@F)," > $(@:.o=.d)'
DEPFLAGS='-MM'
+mkdir -p ffbuild
+
# find source path
if test -f configure; then
source_path=.
[ "$list" = "" ] && warn "Option $opt did not match anything"
$action $list
;;
+ --enable-yasm|--disable-yasm)
+ warn "The ${opt} option is only provided for compatibility and will be\n"\
+ "removed in the future. Use --enable-x86asm / --disable-x86asm instead."
+ test $opt = --enable-yasm && x86asm=yes || x86asm=no
+ ;;
+ --yasmexe=*)
+ warn "The --yasmexe option is only provided for compatibility and will be\n"\
+ "removed in the future. Use --x86asmexe instead."
+ x86asmexe="$optval"
+ ;;
--enable-?*|--disable-?*)
eval $(echo "$opt" | sed 's/--/action=/;s/-/ option=/;s/-/_/g')
if is_in $option $COMPONENT_LIST; then
map 'disable_components $v' $LIBRARY_LIST
-mkdir -p ffbuild
echo "# $0 $FFMPEG_CONFIGURATION" > $logfile
set >> $logfile
sysinclude_default="${sysroot}/usr/include"
set_default arch cc cxx doxygen pkg_config ranlib strip sysinclude \
- target_exec target_os yasmexe nvcc
+ target_exec target_os x86asmexe nvcc
enabled cross_compile || host_cc_default=$cc
set_default host_cc
enable $subarch
enabled spic && enable_weak pic
+enabled x86_64 && objformat=elf64 || objformat="elf32"
+
# OS specific
case $target_os in
aix)
SLIBNAME_WITH_VERSION='$(SLIBPREF)$(FULLNAME).$(LIBVERSION)$(SLIBSUF)'
SLIBNAME_WITH_MAJOR='$(SLIBPREF)$(FULLNAME).$(LIBMAJOR)$(SLIBSUF)'
objformat="macho"
- enabled x86_64 && objformat="macho64"
+ enabled x86_64 && objformat="macho64" || objformat="macho32"
enabled_any pic shared x86_64 ||
{ check_cflags -mdynamic-no-pic && add_asflags -mdynamic-no-pic; }
check_header dispatch/dispatch.h &&
SLIB_INSTALL_EXTRA_SHLIB='$(SLIBNAME:$(SLIBSUF)=.lib)'
SLIB_INSTALL_EXTRA_LIB='lib$(SLIBNAME:$(SLIBSUF)=.dll.a) $(SLIBNAME_WITH_MAJOR:$(SLIBSUF)=.def)'
SHFLAGS='-shared -Wl,--output-def,$$(@:$(SLIBSUF)=.orig.def) -Wl,--out-implib,$(SUBDIR)lib$(SLIBNAME:$(SLIBSUF)=.dll.a) -Wl,--enable-runtime-pseudo-reloc -Wl,--disable-auto-image-base'
- objformat="win32"
+ enabled x86_64 && objformat="win64" || objformat="win32"
ranlib=:
enable dos_paths
check_ldflags -Wl,--nxcompat,--dynamicbase
SLIB_INSTALL_EXTRA_SHLIB='$(SLIBNAME:$(SLIBSUF)=.lib)'
SLIB_INSTALL_EXTRA_LIB='$(SLIBNAME_WITH_MAJOR:$(SLIBSUF)=.def)'
SHFLAGS='-dll -def:$$(@:$(SLIBSUF)=.def) -implib:$(SUBDIR)$(SLIBNAME:$(SLIBSUF)=.lib)'
- objformat="win32"
+ enabled x86_64 && objformat="win64" || objformat="win32"
ranlib=:
enable dos_paths
;;
SLIB_INSTALL_LINKS=
SLIB_INSTALL_EXTRA_LIB='lib$(FULLNAME).dll.a'
SHFLAGS='-shared -Wl,--out-implib,$(SUBDIR)lib$(FULLNAME).dll.a'
- objformat="win32"
+ enabled x86_64 && objformat="win64" || objformat="win32"
enable dos_paths
enabled shared && ! enabled small && check_cmd $windres --version && enable gnu_windres
add_cppflags -D_POSIX_C_SOURCE=200112 -D_XOPEN_SOURCE=600
EOF
# llvm's integrated assembler supports .object_arch from llvm 3.5
- [ "$objformat" = elf ] && check_as <<EOF && enable as_object_arch
+ [ "$objformat" = elf32 ] || [ "$objformat" = elf64 ] &&
+ check_as <<EOF && enable as_object_arch
.object_arch armv4
EOF
enabled ssse3 && check_inline_asm ssse3_inline '"pabsw %xmm0, %xmm0"'
enabled mmxext && check_inline_asm mmxext_inline '"pmaxub %mm0, %mm1"'
- if ! disabled_any asm mmx yasm; then
- if check_cmd $yasmexe --version; then
- enabled x86_64 && yasm_extra="-m amd64"
- yasm_debug="-g dwarf2"
- elif check_cmd nasm -v; then
- yasmexe=nasm
- yasm_debug="-g -F dwarf"
- if enabled x86_64; then
- case "$objformat" in
- elf) objformat=elf64 ;;
- win32) objformat=win64 ;;
- esac
- fi
+ probe_x86asm(){
+ x86asmexe_probe=$1
+ if check_cmd $x86asmexe_probe -v; then
+ x86asmexe=$x86asmexe_probe
+ x86asm_type=nasm
+ x86asm_debug="-g -F dwarf"
+ elif check_cmd $x86asmexe_probe --version; then
+ x86asmexe=$x86asmexe_probe
+ x86asm_type=yasm
+ x86asm_debug="-g dwarf2"
fi
+ check_x86asm "movbe ecx, [5]" && enable x86asm
+ }
- YASMFLAGS="-f $objformat $yasm_extra"
- enabled pic && append YASMFLAGS "-DPIC"
- test -n "$extern_prefix" && append YASMFLAGS "-DPREFIX"
+ if ! disabled_any asm mmx x86asm; then
+ disable x86asm
+ for program in $x86asmexe nasm yasm; do
+ probe_x86asm $program && break
+ done
+ disabled x86asm && die "nasm/yasm not found or too old. Use --disable-x86asm for a crippled build."
+ test $x86asm_type = 'nasm' && X86ASM_DEPFLAGS='-MD $(@:.o=.d)'
+ test $x86asm_type = 'yasm' && X86ASMDEP='$(DEPX86ASM) $(X86ASMFLAGS) -M $(X86ASM_O) $< > $(@:.o=.d)'
+ X86ASMFLAGS="-f $objformat"
+ enabled pic && append X86ASMFLAGS "-DPIC"
+ test -n "$extern_prefix" && append X86ASMFLAGS "-DPREFIX"
case "$objformat" in
- elf*) enabled debug && append YASMFLAGS $yasm_debug ;;
+ elf*) enabled debug && append X86ASMFLAGS $x86asm_debug ;;
esac
- check_yasm "movbe ecx, [5]" && enable yasm ||
- die "yasm/nasm not found or too old. Use --disable-yasm for a crippled build."
- check_yasm "vextracti128 xmm0, ymm0, 0" || disable avx2_external
- check_yasm "vpmacsdd xmm0, xmm1, xmm2, xmm3" || disable xop_external
- check_yasm "vfmaddps ymm0, ymm1, ymm2, ymm3" || disable fma4_external
- check_yasm "CPU amdnop" || disable cpunop
+ check_x86asm "vextracti128 xmm0, ymm0, 0" || disable avx2_external
+ check_x86asm "vpmacsdd xmm0, xmm1, xmm2, xmm3" || disable xop_external
+ check_x86asm "vfmaddps ymm0, ymm1, ymm2, ymm3" || disable fma4_external
+ check_x86asm "CPU amdnop" || disable cpunop
fi
case "$cpu" in
check_type "va/va.h va/va_enc_jpeg.h" "VAEncPictureParameterBufferJPEG"
check_type "va/va.h va/va_enc_mpeg2.h" "VAEncPictureParameterBufferMPEG2"
check_type "va/va.h va/va_enc_vp8.h" "VAEncPictureParameterBufferVP8"
+check_type "va/va.h va/va_enc_vp9.h" "VAEncPictureParameterBufferVP9"
check_type "vdpau/vdpau.h" "VdpPictureInfoHEVC"
{ require libmfx "mfx/mfxvideo.h" MFXInit -llibmfx && warn "using libmfx without pkg-config"; } }
enabled libmodplug && require_pkg_config libmodplug libmodplug/modplug.h ModPlug_Load
enabled libmp3lame && require "libmp3lame >= 3.98.3" lame/lame.h lame_set_VBR_quality -lmp3lame
+enabled libmysofa && require libmysofa "mysofa.h" mysofa_load -lmysofa
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
require opencv opencv2/core/core_c.h cvCreateImageHeader -lopencv_core -lopencv_imgproc; } ||
require_pkg_config opencv opencv/cxcore.h cvCreateImageHeader; }
enabled libopenh264 && require_pkg_config openh264 wels/codec_api.h WelsGetCodecVersion
-enabled libopenjpeg && { { check_lib libopenjpeg openjpeg-2.1/openjpeg.h opj_version -lopenjp2 -DOPJ_STATIC && add_cppflags -DOPJ_STATIC; } ||
+enabled libopenjpeg && { { check_lib libopenjpeg openjpeg-2.2/openjpeg.h opj_version -lopenjp2 -DOPJ_STATIC && add_cppflags -DOPJ_STATIC; } ||
+ check_lib libopenjpeg openjpeg-2.2/openjpeg.h opj_version -lopenjp2 ||
+ { check_lib libopenjpeg openjpeg-2.1/openjpeg.h opj_version -lopenjp2 -DOPJ_STATIC && add_cppflags -DOPJ_STATIC; } ||
check_lib libopenjpeg openjpeg-2.1/openjpeg.h opj_version -lopenjp2 ||
{ check_lib libopenjpeg openjpeg-2.0/openjpeg.h opj_version -lopenjp2 -DOPJ_STATIC && add_cppflags -DOPJ_STATIC; } ||
{ check_lib libopenjpeg openjpeg-1.5/openjpeg.h opj_version -lopenjpeg -DOPJ_STATIC && add_cppflags -DOPJ_STATIC; } ||
check_lib mmal interface/mmal/mmal.h mmal_port_connect -lmmal_core -lmmal_util -lmmal_vc_client -lbcm_host; } ||
die "ERROR: mmal not found" &&
check_func_headers interface/mmal/mmal.h "MMAL_PARAMETER_VIDEO_MAX_NUM_CALLBACKS"; }
-enabled netcdf && require_pkg_config netcdf netcdf.h nc_inq_libvers
enabled openal && { { for al_extralibs in "${OPENAL_LIBS}" "-lopenal" "-lOpenAL32"; do
check_lib openal 'AL/al.h' alGetError "${al_extralibs}" && break; done } ||
die "ERROR: openal not found"; } &&
test_ldflags -Wl,-Bsymbolic && append SHFLAGS -Wl,-Bsymbolic
# add some strip flags
-# -wN '..@*' is more selective than -x, but not available everywhere.
-check_stripflags -wN \'..@*\' || check_stripflags -x
+check_stripflags -x
enabled neon_clobber_test &&
check_ldflags -Wl,--wrap,avcodec_open2 \
echo "big-endian ${bigendian-no}"
echo "runtime cpu detection ${runtime_cpudetect-no}"
if enabled x86; then
- echo "${yasmexe} ${yasm-no}"
+ echo "standalone assembly ${x86asm-no}"
+ echo "x86 assembler ${x86asmexe}"
echo "MMX enabled ${mmx-no}"
echo "MMXEXT enabled ${mmxext-no}"
echo "3DNow! enabled ${amd3dnow-no}"
DEPCCFLAGS=$DEPCCFLAGS \$(CPPFLAGS)
DEPAS=$as
DEPASFLAGS=$DEPASFLAGS \$(CPPFLAGS)
-YASM=$yasmexe
-DEPYASM=$yasmexe
+X86ASM=$x86asmexe
+DEPX86ASM=$x86asmexe
+DEPX86ASMFLAGS=\$(X86ASMFLAGS)
AR=$ar
ARFLAGS=$arflags
AR_O=$ar_o
NVCC_C=$NVCC_C
NVCC_O=$NVCC_O
LD_O=$LD_O
+X86ASM_O=$X86ASM_O
LD_LIB=$LD_LIB
LD_PATH=$LD_PATH
DLLTOOL=$dlltool
LDLIBFLAGS=$LDLIBFLAGS
SHFLAGS=$(echo $($ldflags_filter $SHFLAGS))
ASMSTRIPFLAGS=$ASMSTRIPFLAGS
-YASMFLAGS=$YASMFLAGS
+X86ASMFLAGS=$X86ASMFLAGS
BUILDSUF=$build_suffix
PROGSSUF=$progs_suffix
FULLNAME=$FULLNAME
CCDEP_FLAGS=$CCDEP_FLAGS
ASDEP=$ASDEP
ASDEP_FLAGS=$ASDEP_FLAGS
+X86ASMDEP=$X86ASMDEP
+X86ASMDEP_FLAGS=$X86ASMDEP_FLAGS
CC_DEPFLAGS=$CC_DEPFLAGS
AS_DEPFLAGS=$AS_DEPFLAGS
+X86ASM_DEPFLAGS=$X86ASM_DEPFLAGS
HOSTCC=$host_cc
HOSTLD=$host_ld
HOSTCFLAGS=$host_cflags
test -n "$malloc_prefix" &&
echo "#define MALLOC_PREFIX $malloc_prefix" >>$TMPH
-if enabled yasm; then
+if enabled x86asm; then
append config_files $TMPASM
printf '' >$TMPASM
fi
cp_if_changed $TMPH config.h
touch ffbuild/.config
-enabled yasm && cp_if_changed $TMPASM config.asm
+enabled x86asm && cp_if_changed $TMPASM config.asm
cat > $TMPH <<EOF
/* Generated by ffconf */