--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-runtime-cpudetect detect cpu capabilities at runtime (bigger binary)
--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
--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
exit 0
}
+quotes='""'
+
log(){
echo "$@" >> $logfile
}
avfilter_lavf
avformat
avisynth
- beos_netserver
bzlib
dct
doc
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
struct_sockaddr_sa_len
struct_sockaddr_storage
+ symver
+ symver_gnu_asm
+ symver_asm_label
sys_mman_h
sys_resource_h
sys_select_h
CMDLINE_SET="
$PATHS_LIST
+ ar
arch
as
build_suffix
need_memalign="altivec neon sse"
inline_asm_deps="!tms470"
+symver_if_any="symver_asm_label symver_gnu_asm"
+
# subsystems
mdct_select="fft"
rdft_select="fft"
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 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"
png_encoder_select="zlib"
qcelp_decoder_select="lsp"
qdm2_decoder_select="mdct rdft"
+real_144_encoder_select="lpc"
rv10_decoder_select="h263_decoder"
rv10_encoder_select="h263_encoder"
rv20_decoder_select="h263_decoder"
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 h264dsp"
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"
+libvpx_encoder_deps="libvpx"
libx264_encoder_deps="libx264"
libxvid_encoder_deps="libxvid"
alsa_indev_extralibs="-lasound"
alsa_outdev_deps="alsa_asoundlib_h"
alsa_outdev_extralibs="-lasound"
-audio_beos_indev_deps="audio_beos"
-audio_beos_indev_extralibs="-lmedia -lbe"
-audio_beos_outdev_deps="audio_beos"
-audio_beos_outdev_extralibs="-lmedia -lbe"
bktr_indev_deps_any="dev_bktr_ioctl_bt848_h machine_ioctl_bt848_h dev_video_bktr_ioctl_bt848_h dev_ic_bt8xx_h"
dv1394_indev_deps="dv1394 dv_demuxer"
jack_indev_deps="jack_jack_h"
gopher_protocol_deps="network"
http_protocol_deps="network"
http_protocol_select="tcp_protocol"
-rtmp_protocol_deps="tcp_protocol"
-rtp_protocol_deps="udp_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\"."
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
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
- beos|haiku|zeta)
- prefix_default="$HOME/config"
- # 3 gcc releases known for BeOS, each with ugly bugs
- gcc_version="$($cc -v 2>&1 | grep version | cut -d ' ' -f3-)"
- case "$gcc_version" in
- 2.9-beos-991026*|2.9-beos-000224*) echo "R5/GG gcc"
- disable mmx
- ;;
- *20010315*) echo "BeBits gcc"
- add_cflags -fno-expensive-optimizations
- ;;
- esac
- SHFLAGS=-nostart
- # enable BeOS things
- enable audio_beos
- # no need for libm, but the inet stuff
- # Check for BONE
- # XXX: actually should check for NOT net_server
- if echo $BEINCLUDES | grep -q 'headers/be/bone'; then
- network_extralibs="-lbind -lsocket"
- else
- enable beos_netserver
- network_extralibs="-lnet"
- fi ;;
+ haiku)
+ prefix_default="/boot/common"
+ network_extralibs="-lnetwork"
+ ;;
sunos)
FFSERVERLDFLAGS=""
SHFLAGS='-shared -Wl,-h,$$(@F)'
;;
esac
+check_cpp_condition stdlib.h "defined(__PIC__) || defined(__pic__) || defined(PIC)" && enable pic
+
set_default $PATHS_LIST
add_extralibs $osextralibs
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
done
check_lib math.h sin -lm
-check_lib va/va.h vaInitialize -lva
+disabled vaapi || check_lib va/va.h vaInitialize -lva
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 $(pkg-config --libs librtmp)
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 &&
+ require2 libvpx "vpx/vpx_encoder.h vpx/vp8cx.h" "vpx_codec_enc_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 >= 98" ||
+ die "ERROR: libx264 version must be >= 0.98."; }
enabled libxvid && require libxvid xvid.h xvid_global -lxvidcore
enabled mlib && require mediaLib mlib_types.h mlib_VectorSub_S16_U8_Mod -lmlib
check_ldflags -Wl,-Bsymbolic
echo "X{};" > $TMPV
-test_ldflags -Wl,--version-script,$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
+__asm__(".symver ff_foo,av_foo@VERSION");
+void ff_foo(void) {}
+EOF
+fi
if enabled small; then
add_cflags $size_cflags
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
add_ldflags -p
fi
-# 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 "C compiler $cc"
-echo ".align is power-of-two $asmalign_pot"
echo "ARCH $arch ($cpu)"
if test "$build_suffix" != ""; then
echo "build suffix $build_suffix"
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}"
get_version LIBAVUTIL libavutil/avutil.h
get_version LIBAVFILTER libavfilter/avfilter.h
-enabled asmalign_pot || align_shift="1 <<"
-
cat > $TMPH <<EOF
/* Automatically generated by configure - do not modify! */
#ifndef FFMPEG_CONFIG_H
#define CC_TYPE "$cc_type"
#define CC_VERSION $cc_version
#define restrict $_restrict
-#define ASMALIGN(ZEROBITS) ".align $align_shift " #ZEROBITS "\\n\\t"
+#define ASMALIGN(ZEROBITS) ".p2align " #ZEROBITS "\\n\\t"
#define EXTERN_PREFIX "${extern_prefix}"
#define EXTERN_ASM ${extern_prefix}
EOF