--disable-avformat disable libavformat build
--disable-swscale disable libswscale build
--enable-postproc enable GPLed postprocessing support [no]
- --enable-avfilter video filter support [no]
+ --disable-avfilter disable video filter support [no]
--enable-avfilter-lavf video filters dependent on avformat [no]
--enable-beosthreads use BeOS threads [no]
--enable-os2threads use OS/2 threads [no]
--enable-hardcoded-tables use hardcoded tables instead of runtime generation
--enable-memalign-hack emulate memalign, interferes with memory debuggers
--enable-beos-netserver enable BeOS netserver
+ --disable-everything disable all components listed below
--disable-encoder=NAME disable encoder NAME
--enable-encoder=NAME enable encoder NAME
--disable-encoders disable all encoders
--enable-libnut enable NUT (de)muxing via libnut,
native (de)muxer exists [no]
--enable-libopenjpeg enable JPEG 2000 decoding via OpenJPEG [no]
+ --enable-librtmp enable RTMP[E] support via librtmp [no]
--enable-libschroedinger enable Dirac support via libschroedinger [no]
--enable-libspeex enable Speex decoding via libspeex [no]
--enable-libtheora enable Theora encoding via libtheora [no]
--enable-libvorbis enable Vorbis encoding via libvorbis,
native implementation exists [no]
+ --enable-libvpx enable VP8 support via libvpx [no]
--enable-libx264 enable H.264 encoding via x264 [no]
--enable-libxvid enable Xvid encoding via xvidcore,
native MPEG-4/Xvid encoder exists [no]
--target-exec=CMD command to run executables on target
--target-path=DIR path to view of build directory on target
--nm=NM use nm tool
+ --ar=AR use archive tool AR [$ar_default]
--as=AS use assembler AS [$as_default]
--cc=CC use C compiler CC [$cc_default]
--ld=LD use linker LD
--disable-optimizations disable compiler optimizations
--enable-extra-warnings enable more compiler warnings
--disable-stripping disable stripping of executables and shared libraries
+ --samples=PATH location of test samples for FATE
NOTE: Object files are built at the place where configure is launched.
EOF
done
}
+map(){
+ m=$1
+ shift
+ for v; do eval $m; done
+}
+
set_all(){
value=$1
shift
bzlib
dct
doc
+ dwt
dxva2
fastdiv
ffmpeg
gpl
gprof
gray
+ h264dsp
hardcoded_tables
libdc1394
libdirac
libopencore_amrnb
libopencore_amrwb
libopenjpeg
+ librtmp
libschroedinger
libspeex
libtheora
libvorbis
+ libvpx
libx264
libxvid
lpc
libdc1394_1
libdc1394_2
llrint
+ llrintf
local_aligned_16
local_aligned_8
log2
soundcard_h
poll_h
setrlimit
+ strerror_r
struct_addrinfo
struct_ipv6_mreq
struct_sockaddr_in6
CMDLINE_SET="
$PATHS_LIST
+ ar
arch
as
build_suffix
logfile
malloc_prefix
nm
+ samples
source_path
strip
sysinclude
rdft_select="fft"
# decoders / encoders / hardware accelerators
-aac_decoder_select="mdct aac_parser"
+aac_decoder_select="mdct rdft aac_parser"
aac_encoder_select="mdct"
ac3_decoder_select="mdct ac3_parser"
alac_encoder_select="lpc"
h261_encoder_select="aandct"
h263_decoder_select="h263_parser"
h263_encoder_select="aandct"
-h263_vaapi_hwaccel_deps="va_va_h"
h263_vaapi_hwaccel_select="vaapi h263_decoder"
h263i_decoder_select="h263_decoder"
h263p_encoder_select="h263_encoder"
-h264_decoder_select="golomb"
+h264_decoder_select="golomb h264dsp"
h264_dxva2_hwaccel_deps="dxva2api_h"
h264_dxva2_hwaccel_select="dxva2 h264_decoder"
-h264_vaapi_hwaccel_deps="va_va_h"
h264_vaapi_hwaccel_select="vaapi"
-h264_vdpau_decoder_deps="vdpau_vdpau_h vdpau_vdpau_x11_h"
h264_vdpau_decoder_select="vdpau h264_decoder"
imc_decoder_select="fft mdct"
jpegls_decoder_select="golomb"
mpeg2video_encoder_select="aandct"
mpeg4_decoder_select="h263_decoder mpeg4video_parser"
mpeg4_encoder_select="h263_encoder"
-mpeg_vdpau_decoder_deps="vdpau_vdpau_h vdpau_vdpau_x11_h"
mpeg_vdpau_decoder_select="vdpau mpegvideo_decoder"
-mpeg1_vdpau_decoder_deps="vdpau_vdpau_h vdpau_vdpau_x11_h"
mpeg1_vdpau_decoder_select="vdpau mpeg1video_decoder"
-mpeg2_vaapi_hwaccel_deps="va_va_h"
mpeg2_vaapi_hwaccel_select="vaapi mpeg2video_decoder"
-mpeg4_vaapi_hwaccel_deps="va_va_h"
mpeg4_vaapi_hwaccel_select="vaapi mpeg4_decoder"
-mpeg4_vdpau_decoder_deps="vdpau_vdpau_h vdpau_vdpau_x11_h"
mpeg4_vdpau_decoder_select="vdpau mpeg4_decoder"
mpeg_xvmc_decoder_deps="X11_extensions_XvMClib_h"
mpeg_xvmc_decoder_select="mpegvideo_decoder"
rv10_encoder_select="h263_encoder"
rv20_decoder_select="h263_decoder"
rv20_encoder_select="h263_encoder"
-rv30_decoder_select="golomb"
-rv40_decoder_select="golomb"
+rv30_decoder_select="golomb h264dsp"
+rv40_decoder_select="golomb h264dsp"
shorten_decoder_select="golomb"
sipr_decoder_select="lsp"
-snow_encoder_select="aandct"
+snow_decoder_select="dwt"
+snow_encoder_select="aandct dwt"
sonic_decoder_select="golomb"
sonic_encoder_select="golomb"
sonic_ls_encoder_select="golomb"
svq1_encoder_select="aandct"
-svq3_decoder_select="golomb"
+svq3_decoder_select="golomb h264dsp"
svq3_decoder_suggest="zlib"
theora_decoder_select="vp3_decoder"
tiff_decoder_suggest="zlib"
vc1_decoder_select="h263_decoder"
vc1_dxva2_hwaccel_deps="dxva2api_h DXVA_PictureParameters_wDecodedPictureIndex"
vc1_dxva2_hwaccel_select="dxva2 vc1_decoder"
-vc1_vaapi_hwaccel_deps="va_va_h"
vc1_vaapi_hwaccel_select="vaapi vc1_decoder"
-vc1_vdpau_decoder_deps="vdpau_vdpau_h vdpau_vdpau_x11_h"
vc1_vdpau_decoder_select="vdpau vc1_decoder"
vorbis_decoder_select="mdct"
vorbis_encoder_select="mdct"
wmav1_encoder_select="mdct"
wmav2_decoder_select="mdct"
wmav2_encoder_select="mdct"
-wmavoice_decoder_select="lsp"
+wmavoice_decoder_select="lsp rdft dct"
wmv1_decoder_select="h263_decoder"
wmv1_encoder_select="h263_encoder"
wmv2_decoder_select="h263_decoder"
zmbv_decoder_select="zlib"
zmbv_encoder_select="zlib"
+vaapi_deps="va_va_h"
+vdpau_deps="vdpau_vdpau_h vdpau_vdpau_x11_h"
+
# parsers
-h264_parser_select="golomb"
+h264_parser_select="golomb h264dsp"
# bitstream_filters
aac_adtstoasc_bsf_select="aac_parser"
libdirac_encoder_deps="libdirac"
libfaac_encoder_deps="libfaac"
libfaad_decoder_deps="libfaad"
-libfaadbin_decoder_extralibs='$ldl'
+libfaadbin_extralibs='$ldl'
libgsm_decoder_deps="libgsm"
libgsm_encoder_deps="libgsm"
libgsm_ms_decoder_deps="libgsm"
libspeex_decoder_deps="libspeex"
libtheora_encoder_deps="libtheora"
libvorbis_encoder_deps="libvorbis"
+libvpx_decoder_deps="libvpx"
libx264_encoder_deps="libx264"
libxvid_encoder_deps="libxvid"
rtsp_muxer_deps="sdp_demuxer"
rtsp_muxer_select="rtp_muxer"
sdp_demuxer_deps="rtp_protocol mpegts_demuxer"
+sdp_demuxer_select="asf_demuxer rm_demuxer"
spdif_muxer_select="aac_parser"
tg2_muxer_select="mov_muxer"
tgp_muxer_select="mov_muxer"
# protocols
gopher_protocol_deps="network"
http_protocol_deps="network"
-rtmp_protocol_deps="tcp_protocol"
-rtp_protocol_deps="udp_protocol"
+http_protocol_select="tcp_protocol"
+mmst_protocol_deps="network"
+rtmp_protocol_select="tcp_protocol"
+rtp_protocol_select="udp_protocol"
tcp_protocol_deps="network"
udp_protocol_deps="network"
# programs
ffmpeg_deps="avcodec avformat swscale"
+ffmpeg_select="buffer_filter"
ffplay_deps="avcodec avformat swscale sdl"
ffplay_select="rdft"
ffprobe_deps="avcodec avformat"
shlibdir_default="$libdir_default"
# toolchain
-ar="ar"
+ar_default="ar"
cc_default="gcc"
cc_version=\"unknown\"
host_cc_default="gcc"
# configurable options
enable avcodec
enable avdevice
+enable avfilter
enable avformat
enable avutil
enable asm
PROTOCOL_LIST=$(find_things protocol PROTOCOL libavformat/allformats.c)
FILTER_LIST=$(find_things filter FILTER libavfilter/allfilters.c)
-enable $ARCH_EXT_LIST \
- $DECODER_LIST \
- $ENCODER_LIST \
- $HWACCEL_LIST \
- $PARSER_LIST \
- $BSF_LIST \
- $DEMUXER_LIST \
- $MUXER_LIST \
- $FILTER_LIST \
- $PROTOCOL_LIST \
- $INDEV_LIST \
- $OUTDEV_LIST \
+for n in $COMPONENT_LIST; do
+ v=$(toupper ${n%s})_LIST
+ eval enable \$$v
+ eval ${n}_if_any="\$$v"
+done
+
+enable $ARCH_EXT_LIST
die_unknown(){
echo "Unknown option \"$1\"."
;;
--enable-debug=*) debuglevel="$optval"
;;
+ --disable-everything)
+ map 'eval disable \${$(toupper ${v%s})_LIST}' $COMPONENT_LIST
+ ;;
--enable-*=*|--disable-*=*)
eval $(echo "${opt%%=*}" | sed 's/--/action=/;s/-/ thing=/')
is_in "${thing}s" $COMPONENT_LIST || die_unknown "$opt"
set_default arch target_os
-ar="${cross_prefix}${ar}"
+ar_default="${cross_prefix}${ar_default}"
cc_default="${cross_prefix}${cc_default}"
nm_default="${cross_prefix}${nm_default}"
ranlib="${cross_prefix}${ranlib}"
AS_DEPFLAGS='-MMD'
speed_cflags='-O3'
size_cflags='-Os'
+ noopt_cflags='-O1'
elif $cc -v 2>&1 | grep -q xlc; then
cc_type=xlc
cc_version="AV_STRINGIFY(__IBMC__)"
-march=*|-mcpu=*)
case "${flag#*=}" in
native) echo -xtarget=native ;;
- v9) echo -xarch=sparc ;;
+ v9|niagara) echo -xarch=sparc ;;
ultrasparc) echo -xarch=sparcvis ;;
- ultrasparc3|niagara*) echo -xarch=sparcvis2 ;;
+ ultrasparc3|niagara2) echo -xarch=sparcvis2 ;;
i586|pentium) echo -xchip=pentium ;;
i686|pentiumpro|pentium2) echo -xtarget=pentium_pro ;;
pentium3*|c3-2) echo -xtarget=pentium3 ;;
: ${as_default:=$cc}
: ${dep_cc_default:=$cc}
: ${ld_default:=$cc}
-set_default as dep_cc ld
+set_default ar as dep_cc ld
test -n "$CC_DEPFLAGS" || CCDEP=$DEPEND_CMD
test -n "$AS_DEPFLAGS" || ASDEP=$DEPEND_CMD
mips|mipsel|IP*)
arch="mips"
;;
- mips64)
+ mips64*)
arch="mips"
subarch="mips64"
;;
"Power Macintosh"|ppc|powerpc)
arch="ppc"
;;
- ppc64)
+ ppc64|powerpc64)
arch="ppc"
subarch="ppc64"
;;
elif enabled sparc; then
case $cpu in
+ niagara)
+ cpuflags="-mcpu=$cpu"
+ disable vis
+ ;;
sparc64)
cpuflags="-mcpu=v9"
;;
enable $subarch
enabled spic && enable pic
-check_cpp_condition stdlib.h "defined(__PIC__) || defined(__pic__) || defined(PIC)" && enable pic
# OS specific
case $target_os in
netbsd)
oss_indev_extralibs="-lossaudio"
oss_outdev_extralibs="-lossaudio"
+ add_cppflags -D_XOPEN_SOURCE=600
;;
openbsd)
enable malloc_aligned
;;
esac
+check_cpp_condition stdlib.h "defined(__PIC__) || defined(__pic__) || defined(PIC)" && enable pic
+
set_default $PATHS_LIST
add_extralibs $osextralibs
die_license_disabled gpl x11grab
die_license_disabled nonfree libfaac
+die_license_disabled nonfree libvpx
die_license_disabled version3 libopencore_amrnb
die_license_disabled version3 libopencore_amrwb
enabled_all armv6t2 shared !pic && enable_pic
-elif enabled ia64; then
-
- # HACK: currently fails to build if .bss is > 4MB and shared libs are built
- enabled shared && enable_weak hardcoded_tables
-
elif enabled mips; then
check_asm loongson '"dmult.g $1, $2, $3"'
check_func mkstemp
check_func ${malloc_prefix}posix_memalign && enable posix_memalign
check_func setrlimit
+check_func strerror_r
check_func_headers io.h setmode
check_func_headers lzo/lzo1x.h lzo1x_999_compress
check_lib2 "windows.h psapi.h" GetProcessMemoryInfo -lpsapi
check_mathfunc exp2
check_mathfunc exp2f
check_mathfunc llrint
+check_mathfunc llrintf
check_mathfunc log2
check_mathfunc log2f
check_mathfunc lrint
enabled libopencore_amrnb && require libopencore_amrnb opencore-amrnb/interf_dec.h Decoder_Interface_init -lopencore-amrnb -lm
enabled libopencore_amrwb && require libopencore_amrwb opencore-amrwb/dec_if.h D_IF_init -lopencore-amrwb -lm
enabled libopenjpeg && require libopenjpeg openjpeg.h opj_version -lopenjpeg
+enabled librtmp && require librtmp librtmp/rtmp.h RTMP_Init -lrtmp
enabled libschroedinger && add_cflags $(pkg-config --cflags schroedinger-1.0) &&
require libschroedinger schroedinger/schro.h schro_init $(pkg-config --libs schroedinger-1.0)
enabled libspeex && require libspeex speex/speex.h speex_decoder_init -lspeex
enabled libtheora && require libtheora theora/theoraenc.h th_info_init -ltheoraenc -ltheoradec -logg
enabled libvorbis && require libvorbis vorbis/vorbisenc.h vorbis_info_init -lvorbisenc -lvorbis -logg
+enabled libvpx && require2 libvpx "vpx/vpx_decoder.h vpx/vp8dx.h" "vpx_codec_dec_init_ver" -lvpx
enabled libx264 && require libx264 x264.h x264_encoder_encode -lx264 -lm &&
- { check_cpp_condition x264.h "X264_BUILD >= 83" ||
- die "ERROR: libx264 version must be >= 0.83."; }
+ { check_cpp_condition x264.h "X264_BUILD >= 90" ||
+ die "ERROR: libx264 version must be >= 0.90."; }
enabled libxvid && require libxvid xvid.h xvid_global -lxvidcore
enabled mlib && require mediaLib mlib_types.h mlib_VectorSub_S16_U8_Mod -lmlib
optimizations="small"
elif enabled optimizations; then
add_cflags $speed_cflags
+else
+ add_cflags $noopt_cflags
fi
check_cflags -fno-math-errno
check_cflags -fno-signed-zeros
elif enabled gcc; then
check_cflags -fno-tree-vectorize
check_cflags -Werror=implicit
+ check_cflags -Werror=missing-prototypes
elif enabled clang; then
check_cflags -Qunused-arguments
elif enabled armcc; then
# Find out if the .align argument is a power of two or not.
check_asm asmalign_pot '".align 3"'
-enabled_any $DECODER_LIST && enable decoders
-enabled_any $ENCODER_LIST && enable encoders
-enabled_any $HWACCEL_LIST && enable hwaccels
-enabled_any $BSF_LIST && enable bsfs
-enabled_any $DEMUXER_LIST && enable demuxers
-enabled_any $MUXER_LIST && enable muxers
-enabled_any $FILTER_LIST && enable filters
-enabled_any $INDEV_LIST && enable indevs
-enabled_any $OUTDEV_LIST && enable outdevs
-enabled_any $PROTOCOL_LIST && enable protocols
-
enabled_any $THREADS_LIST && enable threads
check_deps $CONFIG_LIST \
$OUTDEV_LIST \
$PROTOCOL_LIST \
-enabled asm || disable $ARCH_LIST $ARCH_EXT_LIST
+enabled asm || { arch=c; disable $ARCH_LIST $ARCH_EXT_LIST; }
echo "install prefix $prefix"
echo "source path $source_path"
echo "libopencore-amrnb support ${libopencore_amrnb-no}"
echo "libopencore-amrwb support ${libopencore_amrwb-no}"
echo "libopenjpeg enabled ${libopenjpeg-no}"
+echo "librtmp enabled ${librtmp-no}"
echo "libschroedinger enabled ${libschroedinger-no}"
echo "libspeex enabled ${libspeex-no}"
echo "libtheora enabled ${libtheora-no}"
echo "libvorbis enabled ${libvorbis-no}"
+echo "libvpx enabled ${libvpx-no}"
echo "libx264 enabled ${libx264-no}"
echo "libxvid enabled ${libxvid-no}"
echo "zlib enabled ${zlib-no}"
subdir.mak
doc/texi2pod.pl
libavcodec/Makefile
+ libavcodec/${arch}/Makefile
libavdevice/Makefile
libavfilter/Makefile
libavformat/Makefile
libpostproc/Makefile
libswscale/Makefile
"
- for dir in $DIRS ; do
- mkdir -p $dir
- done
- for f in $FILES ; do
- $ln_s "$source_path/$f" $f
- done
+ map 'mkdir -p $v' $DIRS;
+ map 'test -f "$source_path/$v" && $ln_s "$source_path/$v" $v' $FILES
fi
enabled stripping || strip="echo skipping strip"
LIB_INSTALL_EXTRA_CMD=$LIB_INSTALL_EXTRA_CMD
EXTRALIBS=$extralibs
INSTALL=install
+LIBTARGET=${LIBTARGET}
+SLIBNAME=${SLIBNAME}
+SLIBNAME_WITH_VERSION=${SLIBNAME_WITH_VERSION}
+SLIBNAME_WITH_MAJOR=${SLIBNAME_WITH_MAJOR}
+SLIB_CREATE_DEF_CMD=${SLIB_CREATE_DEF_CMD}
+SLIB_EXTRA_CMD=${SLIB_EXTRA_CMD}
+SLIB_INSTALL_EXTRA_CMD=${SLIB_INSTALL_EXTRA_CMD}
+SLIB_UNINSTALL_EXTRA_CMD=${SLIB_UNINSTALL_EXTRA_CMD}
+SAMPLES=$samples
EOF
get_version(){
get_version LIBAVUTIL libavutil/avutil.h
get_version LIBAVFILTER libavfilter/avfilter.h
-enabled shared && cat >> config.mak <<EOF
-LIBTARGET=${LIBTARGET}
-SLIBNAME=${SLIBNAME}
-SLIBNAME_WITH_VERSION=${SLIBNAME_WITH_VERSION}
-SLIBNAME_WITH_MAJOR=${SLIBNAME_WITH_MAJOR}
-SLIB_CREATE_DEF_CMD=${SLIB_CREATE_DEF_CMD}
-SLIB_EXTRA_CMD=${SLIB_EXTRA_CMD}
-SLIB_INSTALL_EXTRA_CMD=${SLIB_INSTALL_EXTRA_CMD}
-SLIB_UNINSTALL_EXTRA_CMD=${SLIB_UNINSTALL_EXTRA_CMD}
-EOF
-
enabled asmalign_pot || align_shift="1 <<"
cat > $TMPH <<EOF
echo "#define MALLOC_PREFIX $malloc_prefix" >>$TMPH
if enabled small || disabled optimizations; then
+ echo "#undef av_always_inline" >> $TMPH
echo "#define av_always_inline" >> $TMPH
fi