diff -r -u -N ffmpeg_git/configure ffmpeg_airvideo/configure
--- ffmpeg_git/configure	2010-02-06 17:52:38.000000000 +0100
+++ ffmpeg_airvideo/configure	2010-02-07 19:46:26.000000000 +0100
@@ -2500,6 +2500,8 @@
         add_extralibs -pthreads
     elif check_func pthread_create -lpthreadGC2; then
         add_extralibs -lpthreadGC2
+    elif check_func pthread_create -lpthreadGC2 -lwsock32; then
+        add_extralibs -lpthreadGC2 -lwsock32
     elif ! check_lib pthread.h pthread_create -lpthread; then
         die "ERROR: can't find pthreads library"
     fi
@@ -2545,7 +2547,7 @@
 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 libx264    && require  libx264 x264.h x264_encoder_encode -lx264 -lm &&
+enabled libx264    && require  libx264 x264.h x264_encoder_encode $(pkg-config --libs x264) &&
                       { check_cpp_condition x264.h "X264_BUILD >= 83" ||
                         die "ERROR: libx264 version must be >= 0.83."; }
 enabled libxvid    && require  libxvid xvid.h xvid_global -lxvidcore
diff -r -u -N ffmpeg_git/_configure ffmpeg_airvideo/_configure
--- ffmpeg_git/_configure	1970-01-01 01:00:00.000000000 +0100
+++ ffmpeg_airvideo/_configure	2009-12-31 01:14:02.000000000 +0100
@@ -0,0 +1,6 @@
+#!/bin/sh
+sed s/posix_memalign/posix_memalign_disabled/ configure.orig > configure.orig.fixed
+chmod u+x configure.orig.fixed
+export MACOSX_DEPLOYMENT_TARGET="10.5"
+export CFLAGS="-mmacosx-version-min=10.5 -isysroot /Developer/SDKs/MacOSX10.5.sdk -I/usr/local/include"
+./configure.orig.fixed --enable-pthreads --disable-shared --enable-static --enable-gpl --enable-libx264 --enable-libmp3lame --enable-libfaad --disable-decoder=aac
\ No newline at end of file
diff -r -u -N ffmpeg_git/_configure.mingw ffmpeg_airvideo/_configure.mingw
--- ffmpeg_git/_configure.mingw	1970-01-01 01:00:00.000000000 +0100
+++ ffmpeg_airvideo/_configure.mingw	2009-12-31 01:13:55.000000000 +0100
@@ -0,0 +1,2 @@
+#!/bin/sh
+./configure --enable-memalign-hack --prefix=/mingw --target-os=mingw32 --arch=i686 --cpu=i686 --enable-gpl --enable-libx264 --enable-static --disable-shared --enable-pthreads --enable-libmp3lame --enable-libfaad --disable-decoder=aac
\ No newline at end of file
diff -r -u -N ffmpeg_git/configure.orig ffmpeg_airvideo/configure.orig
--- ffmpeg_git/configure.orig	1970-01-01 01:00:00.000000000 +0100
+++ ffmpeg_airvideo/configure.orig	2010-02-07 19:46:26.000000000 +0100
@@ -0,0 +1,3087 @@
+#!/bin/sh
+#
+# FFmpeg configure script
+#
+# Copyright (c) 2000-2002 Fabrice Bellard
+# Copyright (c) 2005-2008 Diego Biurrun
+# Copyright (c) 2005-2008 Mans Rullgard
+#
+
+# Prevent locale nonsense from breaking basic text processing.
+LC_ALL=C
+export LC_ALL
+
+# make sure we are running under a compatible shell
+# try to make this part work with most shells
+
+try_exec(){
+    echo "Trying shell $1"
+    type "$1" > /dev/null 2>&1 && exec "$@"
+}
+
+unset foo
+(: ${foo%%bar}) 2> /dev/null
+E1="$?"
+
+(: ${foo?}) 2> /dev/null
+E2="$?"
+
+if test "$E1" != 0 || test "$E2" = 0; then
+    echo "Broken shell detected.  Trying alternatives."
+    export FF_CONF_EXEC
+    if test "0$FF_CONF_EXEC" -lt 1; then
+        FF_CONF_EXEC=1
+        try_exec bash "$0" "$@"
+    fi
+    if test "0$FF_CONF_EXEC" -lt 2; then
+        FF_CONF_EXEC=2
+        try_exec ksh "$0" "$@"
+    fi
+    if test "0$FF_CONF_EXEC" -lt 3; then
+        FF_CONF_EXEC=3
+        try_exec /usr/xpg4/bin/sh "$0" "$@"
+    fi
+    echo "No compatible shell script interpreter found."
+    echo "This configure script requires a POSIX-compatible shell"
+    echo "such as bash or ksh."
+    echo "THIS IS NOT A BUG IN FFMPEG, DO NOT REPORT IT AS SUCH."
+    echo "Instead, install a working POSIX-compatible shell."
+    echo "Disabling this configure test will create a broken FFmpeg."
+    if test "$BASH_VERSION" = '2.04.0(1)-release'; then
+        echo "This bash version ($BASH_VERSION) is broken on your platform."
+        echo "Upgrade to a later version if available."
+    fi
+    exit 1
+fi
+
+show_help(){
+cat <<EOF
+Usage: configure [options]
+Options: [defaults in brackets after descriptions]
+
+Standard options:
+  --help                   print this message
+  --logfile=FILE           log tests and output to FILE [config.err]
+  --disable-logging        do not log configure debug information
+  --prefix=PREFIX          install in PREFIX [$prefix]
+  --bindir=DIR             install binaries in DIR [PREFIX/bin]
+  --datadir=DIR            install data files in DIR [PREFIX/share/ffmpeg]
+  --libdir=DIR             install libs in DIR [PREFIX/lib]
+  --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]
+
+Configuration options:
+  --disable-static         do not build static libraries [no]
+  --enable-shared          build shared libraries [no]
+  --enable-gpl             allow use of GPL code, the resulting libs
+                           and binaries will be under GPL [no]
+  --enable-version3        upgrade (L)GPL to version 3 [no]
+  --enable-nonfree         allow use of nonfree code, the resulting libs
+                           and binaries will be unredistributable [no]
+  --disable-doc            do not build documentation
+  --disable-ffmpeg         disable ffmpeg build
+  --disable-ffplay         disable ffplay build
+  --disable-ffserver       disable ffserver build
+  --disable-avdevice       disable libavdevice build
+  --disable-avcodec        disable libavcodec build
+  --disable-avformat       disable libavformat build
+  --disable-swscale        disable libswscale build
+  --enable-postproc        enable GPLed postprocessing support [no]
+  --enable-avfilter        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-pthreads        use pthreads [no]
+  --enable-w32threads      use Win32 threads [no]
+  --enable-x11grab         enable X11 grabbing [no]
+  --disable-network        disable network support [no]
+  --disable-mpegaudio-hp   faster (but less accurate) MPEG audio decoding [no]
+  --enable-gray            enable full grayscale support (slower color)
+  --disable-swscale-alpha  disable alpha channel support in swscale
+  --disable-fastdiv        disable table-based division
+  --enable-small           optimize for size instead of speed
+  --disable-aandct         disable AAN DCT code
+  --disable-dct            disable DCT code
+  --disable-fft            disable FFT code
+  --disable-golomb         disable Golomb code
+  --disable-lpc            disable LPC code
+  --disable-mdct           disable MDCT code
+  --disable-rdft           disable RDFT code
+  --disable-vaapi          disable VAAPI code
+  --disable-vdpau          disable VDPAU code
+  --disable-dxva2          disable DXVA2 code
+  --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-encoder=NAME   disable encoder NAME
+  --enable-encoder=NAME    enable encoder NAME
+  --disable-encoders       disable all encoders
+  --disable-decoder=NAME   disable decoder NAME
+  --enable-decoder=NAME    enable decoder NAME
+  --disable-decoders       disable all decoders
+  --disable-hwaccel=NAME   disable hwaccel NAME
+  --enable-hwaccel=NAME    enable hwaccel NAME
+  --disable-hwaccels       disable all hwaccels
+  --disable-muxer=NAME     disable muxer NAME
+  --enable-muxer=NAME      enable muxer NAME
+  --disable-muxers         disable all muxers
+  --disable-demuxer=NAME   disable demuxer NAME
+  --enable-demuxer=NAME    enable demuxer NAME
+  --disable-demuxers       disable all demuxers
+  --enable-parser=NAME     enable parser NAME
+  --disable-parser=NAME    disable parser NAME
+  --disable-parsers        disable all parsers
+  --enable-bsf=NAME        enable bitstream filter NAME
+  --disable-bsf=NAME       disable bitstream filter NAME
+  --disable-bsfs           disable all bitstream filters
+  --enable-protocol=NAME   enable protocol NAME
+  --disable-protocol=NAME  disable protocol NAME
+  --disable-protocols      disable all protocols
+  --disable-indev=NAME     disable input device NAME
+  --disable-outdev=NAME    disable output device NAME
+  --disable-indevs         disable input devices
+  --disable-outdevs        disable output devices
+  --disable-devices        disable all devices
+  --enable-filter=NAME     enable filter NAME
+  --disable-filter=NAME    disable filter NAME
+  --disable-filters        disable all filters
+  --list-decoders          show all available decoders
+  --list-encoders          show all available encoders
+  --list-hwaccels          show all available hardware accelerators
+  --list-muxers            show all available muxers
+  --list-demuxers          show all available demuxers
+  --list-parsers           show all available parsers
+  --list-protocols         show all available protocols
+  --list-bsfs              show all available bitstream filters
+  --list-indevs            show all available input devices
+  --list-outdevs           show all available output devices
+  --list-filters           show all available filters
+
+External library support:
+  --enable-avisynth        enable reading of AVISynth script files [no]
+  --enable-bzlib           enable bzlib [autodetect]
+  --enable-libopencore-amrnb enable AMR-NB de/encoding via libopencore-amrnb [no]
+  --enable-libopencore-amrwb enable AMR-WB decoding via libopencore-amrwb [no]
+  --enable-libdc1394       enable IIDC-1394 grabbing using libdc1394
+                           and libraw1394 [no]
+  --enable-libdirac        enable Dirac support via libdirac [no]
+  --enable-libfaac         enable FAAC support via libfaac [no]
+  --enable-libfaad         enable FAAD support via libfaad [no]
+  --enable-libfaadbin      open libfaad.so.0 at runtime [no]
+  --enable-libgsm          enable GSM support via libgsm [no]
+  --enable-libmp3lame      enable MP3 encoding via libmp3lame [no]
+  --enable-libnut          enable NUT (de)muxing via libnut,
+                           native (de)muxer exists [no]
+  --enable-libopenjpeg     enable JPEG 2000 decoding via OpenJPEG [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-libx264         enable H.264 encoding via x264 [no]
+  --enable-libxvid         enable Xvid encoding via xvidcore,
+                           native MPEG-4/Xvid encoder exists [no]
+  --enable-mlib            enable Sun medialib [no]
+  --enable-zlib            enable zlib [autodetect]
+
+Advanced options (experts only):
+  --source-path=PATH       path to source code [$source_path]
+  --cross-prefix=PREFIX    use PREFIX for compilation tools [$cross_prefix]
+  --enable-cross-compile   assume a cross-compiler is used
+  --sysroot=PATH           root of cross-build tree
+  --sysinclude=PATH        location of cross-build system headers
+  --target-os=OS           compiler targets OS [$target_os]
+  --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
+  --as=AS                  use assembler AS [$as_default]
+  --cc=CC                  use C compiler CC [$cc_default]
+  --ld=LD                  use linker LD
+  --host-cc=HOSTCC         use host C compiler HOSTCC
+  --host-cflags=HCFLAGS    use HCFLAGS when compiling for host
+  --host-ldflags=HLDFLAGS  use HLDFLAGS when linking for host
+  --host-libs=HLIBS        use libs HLIBS when linking for host
+  --extra-cflags=ECFLAGS   add ECFLAGS to CFLAGS [$CFLAGS]
+  --extra-ldflags=ELDFLAGS add ELDFLAGS to LDFLAGS [$LDFLAGS]
+  --extra-libs=ELIBS       add ELIBS [$ELIBS]
+  --extra-version=STRING   version string suffix []
+  --build-suffix=SUFFIX    library name suffix []
+  --arch=ARCH              select architecture [$arch]
+  --cpu=CPU                select the minimum required CPU (affects
+                           instruction selection, may crash on older CPUs)
+  --enable-powerpc-perf    enable performance report on PPC
+                           (requires enabling PMC)
+  --disable-asm            disable all assembler optimizations
+  --disable-altivec        disable AltiVec optimizations
+  --disable-amd3dnow       disable 3DNow! optimizations
+  --disable-amd3dnowext    disable 3DNow! extended optimizations
+  --disable-mmx            disable MMX optimizations
+  --disable-mmx2           disable MMX2 optimizations
+  --disable-sse            disable SSE optimizations
+  --disable-ssse3          disable SSSE3 optimizations
+  --disable-armv5te        disable armv5te optimizations
+  --disable-armv6          disable armv6 optimizations
+  --disable-armv6t2        disable armv6t2 optimizations
+  --disable-armvfp         disable ARM VFP optimizations
+  --disable-iwmmxt         disable iwmmxt optimizations
+  --disable-mmi            disable MMI optimizations
+  --disable-neon           disable neon optimizations
+  --disable-vis            disable VIS optimizations
+  --disable-yasm           disable use of yasm assembler
+  --enable-pic             build position-independent code
+  --malloc-prefix=PFX      prefix malloc and related names with PFX
+  --enable-sram            allow use of on-chip SRAM
+
+Developer options (useful when working on FFmpeg itself):
+  --disable-debug          disable debugging symbols
+  --enable-debug=LEVEL     set the debug level [$debuglevel]
+  --enable-gprof           enable profiling with gprof [$gprof]
+  --disable-optimizations  disable compiler optimizations
+  --enable-extra-warnings  enable more compiler warnings
+  --disable-stripping      disable stripping of executables and shared libraries
+
+NOTE: Object files are built at the place where configure is launched.
+EOF
+  exit 0
+}
+
+log(){
+    echo "$@" >> $logfile
+}
+
+log_file(){
+    log BEGIN $1
+    pr -n -t $1 >> $logfile
+    log END $1
+}
+
+echolog(){
+    log "$@"
+    echo "$@"
+}
+
+die(){
+    echolog "$@"
+    cat <<EOF
+
+If you think configure made a mistake, make sure you are using the latest
+version from SVN.  If the latest version fails, report the problem to the
+ffmpeg-user@mplayerhq.hu mailing list or IRC #ffmpeg on irc.freenode.net.
+EOF
+    if disabled logging; then
+        cat <<EOF
+Rerun configure with logging enabled (do not use --disable-logging), and
+include the log this produces with your report.
+EOF
+    else
+cat <<EOF
+Include the log file "$logfile" produced by configure as this will help
+solving the problem.
+EOF
+    fi
+    exit 1
+}
+
+# Avoid locale weirdness, besides we really just want to translate ASCII.
+toupper(){
+    echo "$@" | tr abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ
+}
+
+tolower(){
+    echo "$@" | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz
+}
+
+c_escape(){
+    echo "$*" | sed 's/["\\]/\\\0/g'
+}
+
+sh_quote(){
+    v=$(echo "$1" | sed "s/'/'\\\\''/g")
+    test "$v" = "${v#*[ |&;<>()$\`\\\"\'*?\[\]#~=%]}" || v="'$v'"
+    echo "$v"
+}
+
+filter(){
+    pat=$1
+    shift
+    for v; do
+        eval "case $v in $pat) echo $v ;; esac"
+    done
+}
+
+set_all(){
+    value=$1
+    shift
+    for var in $*; do
+        eval $var=$value
+    done
+}
+
+set_weak(){
+    value=$1
+    shift
+    for var; do
+        eval : \${$var:=$value}
+    done
+}
+
+pushvar(){
+    for var in $*; do
+        eval level=\${${var}_level:=0}
+        eval ${var}_${level}="\$$var"
+        eval ${var}_level=$(($level+1))
+    done
+}
+
+popvar(){
+    for var in $*; do
+        eval level=\${${var}_level:-0}
+        test $level = 0 && continue
+        eval level=$(($level-1))
+        eval $var="\${${var}_${level}}"
+        eval ${var}_level=$level
+        eval unset ${var}_${level}
+    done
+}
+
+enable(){
+    set_all yes $*
+}
+
+disable(){
+    set_all no $*
+}
+
+enable_weak(){
+    set_weak yes $*
+}
+
+disable_weak(){
+    set_weak no $*
+}
+
+enable_safe(){
+    for var; do
+        enable $(echo "$var" | sed 's/[^A-Za-z0-9_]/_/g')
+    done
+}
+
+disable_safe(){
+    for var; do
+        disable $(echo "$var" | sed 's/[^A-Za-z0-9_]/_/g')
+    done
+}
+
+do_enable_deep(){
+    for var; do
+        enabled $var && continue
+        eval sel="\$${var}_select"
+        eval sgs="\$${var}_suggest"
+        pushvar var sgs
+        enable_deep $sel
+        popvar sgs
+        enable_deep_weak $sgs
+        popvar var
+    done
+}
+
+enable_deep(){
+    do_enable_deep $*
+    enable $*
+}
+
+enable_deep_weak(){
+    do_enable_deep $*
+    enable_weak $*
+}
+
+enabled(){
+    test "${1#!}" = "$1" && op== || op=!=
+    eval test "x\$${1#!}" $op "xyes"
+}
+
+disabled(){
+    test "${1#!}" = "$1" && op== || op=!=
+    eval test "x\$${1#!}" $op "xno"
+}
+
+enabled_all(){
+    for opt; do
+        enabled $opt || return 1
+    done
+}
+
+disabled_all(){
+    for opt; do
+        disabled $opt || return 1
+    done
+}
+
+enabled_any(){
+    for opt; do
+        enabled $opt && return 0
+    done
+}
+
+disabled_any(){
+    for opt; do
+        disabled $opt && return 0
+    done
+    return 1
+}
+
+set_default(){
+    for opt; do
+        eval : \${$opt:=\$${opt}_default}
+    done
+}
+
+is_in(){
+    value=$1
+    shift
+    for var in $*; do
+        [ $var = $value ] && return 0
+    done
+    return 1
+}
+
+check_deps(){
+    for cfg; do
+        cfg="${cfg#!}"
+        enabled ${cfg}_checking && die "Circular dependency for $cfg."
+        disabled ${cfg}_checking && continue
+        enable ${cfg}_checking
+
+        eval dep_all="\$${cfg}_deps"
+        eval dep_any="\$${cfg}_deps_any"
+        eval dep_sel="\$${cfg}_select"
+        eval dep_sgs="\$${cfg}_suggest"
+        eval dep_ifa="\$${cfg}_if"
+        eval dep_ifn="\$${cfg}_if_any"
+
+        pushvar cfg dep_all dep_any dep_sel dep_sgs dep_ifa dep_ifn
+        check_deps $dep_all $dep_any $dep_sel $dep_sgs $dep_ifa $dep_ifn
+        popvar cfg dep_all dep_any dep_sel dep_sgs dep_ifa dep_ifn
+
+        [ -n "$dep_ifa" ] && { enabled_all $dep_ifa && enable_weak $cfg; }
+        [ -n "$dep_ifn" ] && { enabled_any $dep_ifn && enable_weak $cfg; }
+        enabled_all  $dep_all || disable $cfg
+        enabled_any  $dep_any || disable $cfg
+        disabled_any $dep_sel && disable $cfg
+
+        if enabled $cfg; then
+            eval dep_extralibs="\$${cfg}_extralibs"
+            test -n "$dep_extralibs" && add_extralibs $dep_extralibs
+            enable_deep $dep_sel
+            enable_deep_weak $dep_sgs
+        fi
+
+        disable ${cfg}_checking
+    done
+}
+
+print_config(){
+    pfx=$1
+    header=$2
+    makefile=$3
+    shift 3
+    for cfg; do
+        ucname="$(toupper $cfg)"
+        if enabled $cfg; then
+            echo "#define ${pfx}${ucname} 1" >> $header
+            echo "${pfx}${ucname}=yes" >> $makefile
+        else
+            echo "#define ${pfx}${ucname} 0" >> $header
+            echo "!${pfx}${ucname}=yes" >> $makefile
+        fi
+    done
+}
+
+flags_saved(){
+    (: ${SAVE_CFLAGS?}) 2> /dev/null
+}
+
+save_flags(){
+    flags_saved && return
+    SAVE_CFLAGS="$CFLAGS"
+    SAVE_LDFLAGS="$LDFLAGS"
+    SAVE_extralibs="$extralibs"
+}
+
+restore_flags(){
+    flags_saved || return
+    CFLAGS="$SAVE_CFLAGS"
+    LDFLAGS="$SAVE_LDFLAGS"
+    extralibs="$SAVE_extralibs"
+    unset SAVE_CFLAGS
+    unset SAVE_LDFLAGS
+    unset SAVE_extralibs
+}
+
+temp_cflags(){
+    save_flags
+    CFLAGS="$CFLAGS $*"
+}
+
+temp_ldflags(){
+    save_flags
+    LDFLAGS="$LDFLAGS $*"
+}
+
+temp_extralibs(){
+    save_flags
+    extralibs="$extralibs $*"
+}
+
+append(){
+    var=$1
+    shift
+    flags_saved && eval "SAVE_$var=\"\$SAVE_$var $*\""
+    eval "$var=\"\$$var $*\""
+}
+
+add_cppflags(){
+    append CPPFLAGS $($filter_cppflags "$@")
+}
+
+add_cflags(){
+    append CFLAGS $($filter_cflags "$@")
+}
+
+add_asflags(){
+    append ASFLAGS $($filter_asflags "$@")
+}
+
+add_ldflags(){
+    append LDFLAGS "$@"
+}
+
+add_extralibs(){
+    append extralibs "$@"
+}
+
+check_cmd(){
+    log "$@"
+    "$@" >> $logfile 2>&1
+}
+
+check_cc(){
+    log check_cc "$@"
+    cat > $TMPC
+    log_file $TMPC
+    check_cmd $cc $CPPFLAGS $CFLAGS "$@" -c -o $TMPO $TMPC
+}
+
+check_cpp(){
+    log check_cpp "$@"
+    cat > $TMPC
+    log_file $TMPC
+    check_cmd $cc $CPPFLAGS $CFLAGS "$@" -E -o $TMPO $TMPC
+}
+
+check_as(){
+    log check_as "$@"
+    cat > $TMPC
+    log_file $TMPC
+    check_cmd $as $CPPFLAGS $ASFLAGS "$@" -c -o $TMPO $TMPC
+}
+
+check_asm(){
+    log check_asm "$@"
+    name="$1"
+    code="$2"
+    shift 2
+    disable $name
+    check_as "$@" <<EOF && enable $name
+void foo(void){ __asm__ volatile($code); }
+EOF
+}
+
+check_yasm(){
+    log check_yasm "$@"
+    echo "$1" > $TMPS
+    log_file $TMPS
+    shift 1
+    check_cmd $yasmexe $YASMFLAGS "$@" -o $TMPO $TMPS
+}
+
+check_ld(){
+    log check_ld "$@"
+    flags=''
+    libs=''
+    for f; do
+        test "${f}" = "${f#-l}" && flags="$flags $f" || libs="$libs $f"
+    done
+    check_cc $($filter_cflags $flags) || return
+    check_cmd $ld $LDFLAGS $flags -o $TMPE $TMPO $extralibs $libs
+}
+
+check_cppflags(){
+    log check_cppflags "$@"
+    set -- $($filter_cppflags "$@")
+    check_cc "$@" <<EOF && append CPPFLAGS "$@"
+int x;
+EOF
+}
+
+check_cflags(){
+    log check_cflags "$@"
+    set -- $($filter_cflags "$@")
+    check_cc "$@" <<EOF && append CFLAGS "$@"
+int x;
+EOF
+}
+
+test_ldflags(){
+    log test_ldflags "$@"
+    check_ld "$@" <<EOF
+int main(void){ return 0; }
+EOF
+}
+
+check_ldflags(){
+    log check_ldflags "$@"
+    test_ldflags "$@" && add_ldflags "$@"
+}
+
+check_header(){
+    log check_header "$@"
+    header=$1
+    shift
+    disable_safe $header
+    check_cpp "$@" <<EOF && enable_safe $header
+#include <$header>
+int x;
+EOF
+}
+
+check_func(){
+    log check_func "$@"
+    func=$1
+    shift
+    disable $func
+    check_ld "$@" <<EOF && enable $func
+extern int $func();
+int main(void){ $func(); }
+EOF
+}
+
+check_func_headers(){
+    log check_func_headers "$@"
+    headers=$1
+    func=$2
+    shift 2
+    disable $func
+    incs=""
+    for hdr in $headers; do
+        incs="$incs
+#include <$hdr>"
+    done
+    check_ld "$@" <<EOF && enable $func && enable_safe $headers
+$incs
+int main(int argc, char **argv){
+    return (long) $func;
+}
+EOF
+}
+
+check_cpp_condition(){
+    log check_cpp_condition "$@"
+    header=$1
+    condition=$2
+    shift 2
+    check_cpp $($filter_cppflags "$@") <<EOF
+#include <$header>
+#if !($condition)
+#error "unsatisfied condition: $condition"
+#endif
+EOF
+}
+
+check_lib(){
+    log check_lib "$@"
+    header="$1"
+    func="$2"
+    shift 2
+    temp_extralibs "$@"
+    check_header $header && check_func $func && add_extralibs "$@"
+    err=$?
+    restore_flags
+    return $err
+}
+
+check_lib2(){
+    log check_lib2 "$@"
+    headers="$1"
+    func="$2"
+    shift 2
+    check_func_headers "$headers" $func "$@" && add_extralibs "$@"
+}
+
+check_exec(){
+    check_ld "$@" && { enabled cross_compile || $TMPE >> $logfile 2>&1; }
+}
+
+check_exec_crash(){
+    code=$(cat)
+
+    # exit() is not async signal safe.  _Exit (C99) and _exit (POSIX)
+    # are safe but may not be available everywhere.  Thus we use
+    # raise(SIGTERM) instead.  The check is run in a subshell so we
+    # can redirect the "Terminated" message from the shell.  SIGBUS
+    # is not defined by standard C so it is used conditionally.
+
+    (check_exec "$@") >> $logfile 2>&1 <<EOF
+#include <signal.h>
+static void sighandler(int sig){
+    raise(SIGTERM);
+}
+int main(void){
+    signal(SIGILL, sighandler);
+    signal(SIGFPE, sighandler);
+    signal(SIGSEGV, sighandler);
+#ifdef SIGBUS
+    signal(SIGBUS, sighandler);
+#endif
+    { $code }
+}
+EOF
+}
+
+check_type(){
+    log check_type "$@"
+    headers=$1
+    type=$2
+    shift 2
+    disable_safe "$type"
+    incs=""
+    for hdr in $headers; do
+        incs="$incs
+#include <$hdr>"
+    done
+    check_cc "$@" <<EOF && enable_safe "$type"
+$incs
+$type v;
+EOF
+}
+
+check_struct(){
+    log check_type "$@"
+    headers=$1
+    struct=$2
+    member=$3
+    shift 3
+    disable_safe "${struct}_${member}"
+    incs=""
+    for hdr in $headers; do
+        incs="$incs
+#include <$hdr>"
+    done
+    check_cc "$@" <<EOF && enable_safe "${struct}_${member}"
+$incs
+const void *p = &(($struct *)0)->$member;
+EOF
+}
+
+require(){
+    name="$1"
+    header="$2"
+    func="$3"
+    shift 3
+    check_lib $header $func "$@" || die "ERROR: $name not found"
+}
+
+require2(){
+    name="$1"
+    headers="$2"
+    func="$3"
+    shift 3
+    check_lib2 "$headers" $func "$@" || die "ERROR: $name not found"
+}
+
+check_foo_config(){
+    cfg=$1
+    pkg=$2
+    header=$3
+    func=$4
+    shift 4
+    disable $cfg
+    check_cmd ${pkg}-config --version
+    err=$?
+    if test "$err" = 0; then
+        temp_cflags $(${pkg}-config --cflags)
+        temp_extralibs $(${pkg}-config --libs)
+        check_lib "$@" $header $func && enable $cfg
+    fi
+    return $err
+}
+
+check_host_cc(){
+    log check_host_cc "$@"
+    cat > $TMPC
+    log_file $TMPC
+    check_cmd $host_cc $host_cflags "$@" -c -o $TMPO $TMPC
+}
+
+check_host_cflags(){
+    log check_host_cflags "$@"
+    check_host_cc "$@" <<EOF && append host_cflags "$@"
+int x;
+EOF
+}
+
+apply(){
+    file=$1
+    shift
+    "$@" < "$file" > "$file.tmp" && mv "$file.tmp" "$file" || rm "$file.tmp"
+}
+
+cp_if_changed(){
+    cmp -s "$1" "$2" &&
+        echo "$2 is unchanged" ||
+        cp -f "$1" "$2"
+}
+
+# CONFIG_LIST contains configurable options, while HAVE_LIST is for
+# system-dependent things.
+
+COMPONENT_LIST="
+    bsfs
+    decoders
+    demuxers
+    encoders
+    filters
+    hwaccels
+    indevs
+    muxers
+    outdevs
+    parsers
+    protocols
+"
+
+CONFIG_LIST="
+    $COMPONENT_LIST
+    aandct
+    avcodec
+    avdevice
+    avfilter
+    avfilter_lavf
+    avformat
+    avisynth
+    beos_netserver
+    bzlib
+    dct
+    doc
+    dxva2
+    fastdiv
+    ffmpeg
+    ffplay
+    ffserver
+    fft
+    golomb
+    gpl
+    gprof
+    gray
+    hardcoded_tables
+    libdc1394
+    libdirac
+    libfaac
+    libfaad
+    libfaadbin
+    libgsm
+    libmp3lame
+    libnut
+    libopencore_amrnb
+    libopencore_amrwb
+    libopenjpeg
+    libschroedinger
+    libspeex
+    libtheora
+    libvorbis
+    libx264
+    libxvid
+    lpc
+    mdct
+    memalign_hack
+    mlib
+    mpegaudio_hp
+    network
+    nonfree
+    pic
+    postproc
+    powerpc_perf
+    rdft
+    runtime_cpudetect
+    shared
+    small
+    sram
+    static
+    swscale
+    swscale_alpha
+    vaapi
+    vdpau
+    version3
+    x11grab
+    zlib
+"
+
+THREADS_LIST='
+    beosthreads
+    os2threads
+    pthreads
+    w32threads
+'
+
+ARCH_LIST='
+    alpha
+    arm
+    avr32
+    avr32_ap
+    avr32_uc
+    bfin
+    ia64
+    m68k
+    mips
+    mips64
+    parisc
+    ppc
+    ppc64
+    s390
+    sh4
+    sparc
+    sparc64
+    x86
+    x86_32
+    x86_64
+'
+
+ARCH_EXT_LIST='
+    altivec
+    amd3dnow
+    amd3dnowext
+    armv5te
+    armv6
+    armv6t2
+    armvfp
+    iwmmxt
+    mmi
+    mmx
+    mmx2
+    neon
+    ppc4xx
+    sse
+    ssse3
+    vis
+'
+
+HAVE_LIST_PUB='
+    bigendian
+'
+
+HAVE_LIST="
+    $ARCH_EXT_LIST
+    $HAVE_LIST_PUB
+    $THREADS_LIST
+    alsa_asoundlib_h
+    altivec_h
+    arpa_inet_h
+    attribute_may_alias
+    attribute_packed
+    bswap
+    closesocket
+    cmov
+    conio_h
+    dcbzl
+    dev_bktr_ioctl_bt848_h
+    dev_bktr_ioctl_meteor_h
+    dev_ic_bt8xx_h
+    dev_video_meteor_ioctl_meteor_h
+    dev_video_bktr_ioctl_bt848_h
+    dlfcn_h
+    dlopen
+    dos_paths
+    ebp_available
+    ebx_available
+    exp2
+    exp2f
+    fast_64bit
+    fast_clz
+    fast_cmov
+    fast_unaligned
+    fork
+    getaddrinfo
+    gethrtime
+    GetProcessTimes
+    getrusage
+    inet_aton
+    inline_asm
+    isatty
+    ldbrx
+    libdc1394_1
+    libdc1394_2
+    llrint
+    log2
+    log2f
+    loongson
+    lrint
+    lrintf
+    lzo1x_999_compress
+    machine_ioctl_bt848_h
+    machine_ioctl_meteor_h
+    malloc_h
+    memalign
+    mkstemp
+    pld
+    posix_memalign
+    round
+    roundf
+    sdl
+    sdl_video_size
+    setmode
+    socklen_t
+    soundcard_h
+    poll_h
+    struct_addrinfo
+    struct_ipv6_mreq
+    struct_sockaddr_in6
+    struct_sockaddr_sa_len
+    struct_sockaddr_storage
+    sys_mman_h
+    sys_resource_h
+    sys_select_h
+    sys_soundcard_h
+    sys_videoio_h
+    ten_operands
+    termios_h
+    threads
+    truncf
+    vfp_args
+    VirtualAlloc
+    winsock2_h
+    xform_asm
+    yasm
+"
+
+# options emitted with CONFIG_ prefix but not available on command line
+CONFIG_EXTRA="
+    avutil
+    gplv3
+    lgplv3
+"
+
+CMDLINE_SELECT="
+    $ARCH_EXT_LIST
+    $CONFIG_LIST
+    $THREADS_LIST
+    asm
+    cross_compile
+    debug
+    extra_warnings
+    logging
+    optimizations
+    stripping
+    yasm
+"
+
+PATHS_LIST='
+    bindir
+    datadir
+    incdir
+    libdir
+    mandir
+    prefix
+    shlibdir
+'
+
+CMDLINE_SET="
+    $PATHS_LIST
+    arch
+    as
+    build_suffix
+    cc
+    cpu
+    cross_prefix
+    dep_cc
+    extra_version
+    host_cc
+    host_cflags
+    host_ldflags
+    host_libs
+    host_os
+    ld
+    logfile
+    malloc_prefix
+    nm
+    source_path
+    sysinclude
+    sysroot
+    target_exec
+    target_os
+    target_path
+"
+
+CMDLINE_APPEND="
+    extra_cflags
+"
+
+# code dependency declarations
+
+# architecture extensions
+
+armv5te_deps="arm"
+armv6_deps="arm"
+armv6t2_deps="arm"
+armvfp_deps="arm"
+iwmmxt_deps="arm"
+neon_deps="arm"
+
+mmi_deps="mips"
+
+altivec_deps="ppc"
+ppc4xx_deps="ppc"
+
+vis_deps="sparc"
+
+x86_64_suggest="cmov fast_cmov"
+amd3dnow_deps="mmx"
+amd3dnowext_deps="amd3dnow"
+mmx_deps="x86"
+mmx2_deps="mmx"
+sse_deps="mmx"
+ssse3_deps="sse"
+
+fast_64bit_if_any="alpha ia64 mips64 parisc64 ppc64 sparc64 x86_64"
+fast_clz_if_any="alpha armv5te avr32 mips ppc x86"
+fast_unaligned_if_any="armv6 ppc x86"
+
+need_memalign="altivec neon sse"
+inline_asm_deps="!tms470"
+
+# decoders / encoders / hardware accelerators
+aac_decoder_select="fft mdct aac_parser"
+aac_encoder_select="fft mdct"
+ac3_decoder_select="fft mdct ac3_parser"
+alac_encoder_select="lpc"
+atrac3_decoder_select="fft mdct"
+binkaudio_dct_decoder_select="fft mdct rdft dct"
+binkaudio_rdft_decoder_select="fft mdct rdft"
+cavs_decoder_select="golomb"
+cook_decoder_select="fft mdct"
+cscd_decoder_suggest="zlib"
+dca_decoder_select="fft mdct"
+dnxhd_encoder_select="aandct"
+dxa_decoder_select="zlib"
+eac3_decoder_select="ac3_decoder"
+eamad_decoder_select="aandct"
+eatgq_decoder_select="aandct"
+eatqi_decoder_select="aandct"
+ffv1_decoder_select="golomb"
+flac_decoder_select="golomb"
+flac_encoder_select="golomb lpc"
+flashsv_decoder_select="zlib"
+flashsv_encoder_select="zlib"
+flv_decoder_select="h263_decoder"
+flv_encoder_select="h263_encoder"
+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_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"
+jpegls_encoder_select="golomb"
+ljpeg_encoder_select="aandct"
+loco_decoder_select="golomb"
+mjpeg_encoder_select="aandct"
+mlp_decoder_select="mlp_parser"
+mpeg1video_encoder_select="aandct"
+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"
+msmpeg4v1_decoder_select="h263_decoder"
+msmpeg4v1_encoder_select="h263_encoder"
+msmpeg4v2_decoder_select="h263_decoder"
+msmpeg4v2_encoder_select="h263_encoder"
+msmpeg4v3_decoder_select="h263_decoder"
+msmpeg4v3_encoder_select="h263_encoder"
+nellymoser_decoder_select="fft mdct"
+nellymoser_encoder_select="fft mdct"
+png_decoder_select="zlib"
+png_encoder_select="zlib"
+qdm2_decoder_select="fft mdct rdft"
+rv10_decoder_select="h263_decoder"
+rv10_encoder_select="h263_encoder"
+rv20_decoder_select="h263_decoder"
+rv20_encoder_select="h263_encoder"
+rv30_decoder_select="golomb"
+rv40_decoder_select="golomb"
+shorten_decoder_select="golomb"
+sonic_decoder_select="golomb"
+sonic_encoder_select="golomb"
+sonic_ls_encoder_select="golomb"
+svq3_decoder_select="golomb"
+svq3_decoder_suggest="zlib"
+theora_decoder_select="vp3_decoder"
+tiff_decoder_suggest="zlib"
+tiff_encoder_suggest="zlib"
+truehd_decoder_select="mlp_decoder"
+tscc_decoder_select="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="fft mdct"
+vorbis_encoder_select="fft mdct"
+vp6a_decoder_select="vp6_decoder"
+vp6f_decoder_select="vp6_decoder"
+wmav1_decoder_select="fft mdct"
+wmav1_encoder_select="fft mdct"
+wmav2_decoder_select="fft mdct"
+wmav2_encoder_select="fft mdct"
+wmv1_decoder_select="h263_decoder"
+wmv1_encoder_select="h263_encoder"
+wmv2_decoder_select="h263_decoder"
+wmv2_encoder_select="h263_encoder"
+wmv3_decoder_select="vc1_decoder"
+wmv3_dxva2_hwaccel_select="vc1_dxva2_hwaccel"
+wmv3_vaapi_hwaccel_select="vc1_vaapi_hwaccel"
+wmv3_vdpau_decoder_select="vc1_vdpau_decoder"
+zlib_decoder_select="zlib"
+zlib_encoder_select="zlib"
+zmbv_decoder_select="zlib"
+zmbv_encoder_select="zlib"
+
+# parsers
+h264_parser_select="golomb"
+
+# bitstream_filters
+aac_adtstoasc_bsf_select="aac_parser"
+
+# external libraries
+libdirac_decoder_deps="libdirac !libschroedinger"
+libdirac_encoder_deps="libdirac"
+libfaac_encoder_deps="libfaac"
+libfaad_decoder_deps="libfaad"
+libfaadbin_decoder_extralibs='$ldl'
+libgsm_decoder_deps="libgsm"
+libgsm_encoder_deps="libgsm"
+libgsm_ms_decoder_deps="libgsm"
+libgsm_ms_encoder_deps="libgsm"
+libmp3lame_encoder_deps="libmp3lame"
+libopencore_amrnb_decoder_deps="libopencore_amrnb"
+libopencore_amrnb_encoder_deps="libopencore_amrnb"
+libopencore_amrwb_decoder_deps="libopencore_amrwb"
+libopenjpeg_decoder_deps="libopenjpeg"
+libschroedinger_decoder_deps="libschroedinger"
+libschroedinger_encoder_deps="libschroedinger"
+libspeex_decoder_deps="libspeex"
+libtheora_encoder_deps="libtheora"
+libvorbis_encoder_deps="libvorbis"
+libx264_encoder_deps="libx264"
+libxvid_encoder_deps="libxvid"
+
+# demuxers / muxers
+ac3_demuxer_deps="ac3_parser"
+asf_stream_muxer_select="asf_muxer"
+avisynth_demuxer_deps="avisynth"
+dirac_demuxer_deps="dirac_parser"
+eac3_demuxer_select="ac3_parser"
+ipod_muxer_select="mov_muxer"
+libnut_demuxer_deps="libnut"
+libnut_muxer_deps="libnut"
+matroska_audio_muxer_select="matroska_muxer"
+matroska_demuxer_suggest="zlib bzlib"
+mov_demuxer_suggest="zlib"
+mp3_demuxer_deps="mpegaudio_parser"
+mp4_muxer_select="mov_muxer"
+mpegtsraw_demuxer_select="mpegts_demuxer"
+mxf_d10_muxer_select="mxf_muxer"
+ogg_demuxer_select="golomb"
+psp_muxer_select="mov_muxer"
+rtsp_demuxer_deps="sdp_demuxer"
+sdp_demuxer_deps="rtp_protocol mpegts_demuxer"
+spdif_muxer_select="aac_parser"
+tg2_muxer_select="mov_muxer"
+tgp_muxer_select="mov_muxer"
+w64_demuxer_deps="wav_demuxer"
+
+# indevs / outdevs
+alsa_indev_deps="alsa_asoundlib_h snd_pcm_htimestamp"
+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"
+jack_indev_extralibs="-ljack"
+libdc1394_indev_deps="libdc1394"
+oss_indev_deps_any="soundcard_h sys_soundcard_h"
+oss_outdev_deps_any="soundcard_h sys_soundcard_h"
+v4l_indev_deps="linux_videodev_h"
+v4l2_indev_deps_any="linux_videodev2_h sys_videoio_h"
+vfwcap_indev_deps="capCreateCaptureWindow"
+vfwcap_indev_extralibs="-lavicap32"
+x11_grab_device_indev_deps="x11grab XShmCreateImage"
+x11_grab_device_indev_extralibs="-lX11 -lXext -lXfixes"
+
+# protocols
+gopher_protocol_deps="network"
+http_protocol_deps="network"
+rtmp_protocol_deps="tcp_protocol"
+rtp_protocol_deps="udp_protocol"
+tcp_protocol_deps="network"
+udp_protocol_deps="network"
+
+# filters
+movie_filter_deps="avfilter_lavf"
+avfilter_lavf_deps="avformat"
+
+# libraries
+avdevice_deps="avcodec avformat"
+avformat_deps="avcodec"
+
+# programs
+ffmpeg_deps="avcodec avformat swscale"
+ffplay_deps="avcodec avformat swscale sdl"
+ffserver_deps="avformat ffm_muxer rtp_protocol rtsp_demuxer"
+ffserver_extralibs='$ldl'
+
+doc_deps="texi2html"
+
+# default parameters
+
+logfile="config.err"
+
+# installation paths
+prefix_default="/usr/local"
+bindir_default='${prefix}/bin'
+datadir_default='${prefix}/share/ffmpeg'
+incdir_default='${prefix}/include'
+libdir_default='${prefix}/lib'
+mandir_default='${prefix}/share/man'
+shlibdir_default="$libdir_default"
+
+# toolchain
+ar="ar"
+cc_default="gcc"
+cc_version=\"unknown\"
+host_cc_default="gcc"
+ln_s="ln -sf"
+nm_default="nm"
+objformat="elf"
+ranlib="ranlib"
+strip="strip"
+yasmexe="yasm"
+
+nm_opts='-g'
+
+# machine
+arch=$(uname -m)
+cpu="generic"
+
+# OS
+target_os=$(tolower $(uname -s))
+host_os=$target_os
+
+# configurable options
+enable avcodec
+enable avdevice
+enable avformat
+enable avutil
+enable asm
+enable debug
+enable doc
+enable fastdiv
+enable ffmpeg
+enable ffplay
+enable ffserver
+enable mpegaudio_hp
+enable network
+enable optimizations
+enable protocols
+enable static
+enable stripping
+enable swscale
+enable swscale_alpha
+
+# build settings
+SHFLAGS='-shared -Wl,-soname,$$(@F)'
+FFSERVERLDFLAGS=-Wl,-E
+LIBPREF="lib"
+LIBSUF=".a"
+FULLNAME='$(NAME)$(BUILDSUF)'
+LIBNAME='$(LIBPREF)$(FULLNAME)$(LIBSUF)'
+SLIBPREF="lib"
+SLIBSUF=".so"
+SLIBNAME='$(SLIBPREF)$(FULLNAME)$(SLIBSUF)'
+SLIBNAME_WITH_VERSION='$(SLIBNAME).$(LIBVERSION)'
+SLIBNAME_WITH_MAJOR='$(SLIBNAME).$(LIBMAJOR)'
+LIB_INSTALL_EXTRA_CMD='$(RANLIB) "$(LIBDIR)/$(LIBNAME)"'
+
+CC_O='-o $@'
+
+host_cflags='-D_ISOC99_SOURCE -D_POSIX_C_SOURCE=200112 -O3 -g -Wall'
+host_libs='-lm'
+
+target_path='$(CURDIR)'
+
+# gcc stupidly only outputs the basename of targets with -MM, but we need the
+# full relative path for objects in subdirectories for non-recursive Make.
+DEPEND_CMD='$(DEPCC) $(DEPFLAGS) $< | sed -e "/^\#.*/d" -e "s,^[[:space:]]*$(*F)\\.o,$(@D)/$(*F).o," > $(@:.o=.d)'
+DEPFLAGS='$(CPPFLAGS) $(CFLAGS) -MM'
+
+# find source path
+source_path="$(dirname "$0")"
+enable source_path_used
+if test -f configure; then
+    source_path="$(pwd)"
+    disable source_path_used
+else
+    source_path="$(cd "$source_path"; pwd)"
+    echo "$source_path" | grep -q '[[:blank:]]' &&
+        die "Out of tree builds are impossible with whitespace in source path."
+    test -e "$source_path/config.h" &&
+        die "Out of tree builds are impossible with config.h in source dir."
+fi
+
+for v in "$@"; do
+    r=${v#*=}
+    l=${v%"$r"}
+    r=$(sh_quote "$r")
+    FFMPEG_CONFIGURATION="${FFMPEG_CONFIGURATION# } ${l}${r}"
+done
+
+find_things(){
+    thing=$1
+    pattern=$2
+    file=$source_path/$3
+    sed -n "s/^[^#]*$pattern.*([^,]*, *\([^,]*\)\(,.*\)*).*/\1_$thing/p" "$file"
+}
+
+ENCODER_LIST=$(find_things  encoder  ENC      libavcodec/allcodecs.c)
+DECODER_LIST=$(find_things  decoder  DEC      libavcodec/allcodecs.c)
+HWACCEL_LIST=$(find_things  hwaccel  HWACCEL  libavcodec/allcodecs.c)
+PARSER_LIST=$(find_things   parser   PARSER   libavcodec/allcodecs.c)
+BSF_LIST=$(find_things      bsf      BSF      libavcodec/allcodecs.c)
+MUXER_LIST=$(find_things    muxer    _MUX     libavformat/allformats.c)
+DEMUXER_LIST=$(find_things  demuxer  DEMUX    libavformat/allformats.c)
+OUTDEV_LIST=$(find_things   outdev   OUTDEV   libavdevice/alldevices.c)
+INDEV_LIST=$(find_things    indev    _IN      libavdevice/alldevices.c)
+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 \
+
+die_unknown(){
+    echo "Unknown option \"$1\"."
+    echo "See $0 --help for available options."
+    exit 1
+}
+
+show_list() {
+    suffix=_$1
+    shift
+    echo $* | sed s/$suffix//g | tr ' ' '\n' | sort | pr -3 -t
+    exit 0
+}
+
+for opt do
+    optval="${opt#*=}"
+    case "$opt" in
+    --extra-ldflags=*) add_ldflags $optval
+    ;;
+    --extra-libs=*) add_extralibs $optval
+    ;;
+    --disable-devices) disable $INDEV_LIST $OUTDEV_LIST
+    ;;
+    --enable-debug=*) debuglevel="$optval"
+    ;;
+    --enable-*=*|--disable-*=*)
+    eval $(echo "${opt%%=*}" | sed 's/--/action=/;s/-/ thing=/')
+    is_in "${thing}s" $COMPONENT_LIST || die_unknown "$opt"
+    eval list=\$$(toupper $thing)_LIST
+    name=$(echo "${optval}" | sed "s/,/_${thing}|/g")_${thing}
+    $action $(filter "$name" $list)
+    ;;
+    --enable-?*|--disable-?*)
+    eval $(echo "$opt" | sed 's/--/action=/;s/-/ option=/;s/-/_/g')
+    if is_in $option $COMPONENT_LIST; then
+        test $action = disable && action=unset
+        eval $action \$$(toupper ${option%s})_LIST
+    elif is_in $option $CMDLINE_SELECT; then
+        $action $option
+    else
+        die_unknown $opt
+    fi
+    ;;
+    --list-*)
+        NAME="${opt#--list-}"
+        is_in $NAME $COMPONENT_LIST || die_unknown $opt
+        NAME=${NAME%s}
+        eval show_list $NAME \$$(toupper $NAME)_LIST
+    ;;
+    --help|-h) show_help
+    ;;
+    *)
+    optname="${opt%%=*}"
+    optname="${optname#--}"
+    optname=$(echo "$optname" | sed 's/-/_/g')
+    if is_in $optname $CMDLINE_SET; then
+        eval $optname='$optval'
+    elif is_in $optname $CMDLINE_APPEND; then
+        append $optname "$optval"
+    else
+         die_unknown $opt
+    fi
+    ;;
+    esac
+done
+
+disabled logging && logfile=/dev/null
+
+echo "# $0 $FFMPEG_CONFIGURATION" > $logfile
+set >> $logfile
+
+test -n "$cross_prefix" && enable cross_compile
+
+ar="${cross_prefix}${ar}"
+cc_default="${cross_prefix}${cc_default}"
+nm_default="${cross_prefix}${nm_default}"
+ranlib="${cross_prefix}${ranlib}"
+strip="${cross_prefix}${strip}"
+
+sysinclude_default="${sysroot}/usr/include"
+
+set_default cc nm sysinclude
+enabled cross_compile || host_cc_default=$cc
+set_default host_cc
+
+exesuf() {
+    case $1 in
+        mingw32*|cygwin*|*-dos|freedos|opendos|os/2*) echo .exe ;;
+    esac
+}
+
+EXESUF=$(exesuf $target_os)
+HOSTEXESUF=$(exesuf $host_os)
+
+# set temporary file name
+: ${TMPDIR:=$TEMPDIR}
+: ${TMPDIR:=$TMP}
+: ${TMPDIR:=/tmp}
+
+if ! check_cmd type mktemp; then
+    # simple replacement for missing mktemp
+    # NOT SAFE FOR GENERAL USE
+    mktemp(){
+        echo "${2%XXX*}.${HOSTNAME}.${UID}.$$"
+    }
+fi
+
+tmpfile(){
+    tmp=$(mktemp -u "${TMPDIR}/ffconf.XXXXXXXX")$2 &&
+        (set -C; exec > $tmp) 2>/dev/null ||
+        die "Unable to create temporary file in $TMPDIR."
+    append TMPFILES $tmp
+    eval $1=$tmp
+}
+
+trap 'rm -f -- $TMPFILES' EXIT
+trap exit HUP INT TERM
+
+tmpfile TMPC  .c
+tmpfile TMPE  $EXESUF
+tmpfile TMPH  .h
+tmpfile TMPO  .o
+tmpfile TMPS  .S
+tmpfile TMPV  .ver
+tmpfile TMPSH .sh
+
+unset -f mktemp
+
+# make sure we can execute files in $TMPDIR
+cat > $TMPSH 2>> $logfile <<EOF
+#! /bin/sh
+EOF
+chmod +x $TMPSH >> $logfile 2>&1
+if ! $TMPSH >> $logfile 2>&1; then
+    cat <<EOF
+Unable to create and execute files in $TMPDIR.  Set the TMPDIR environment
+variable to another directory and make sure that it is not mounted noexec.
+EOF
+    die "Sanity test failed."
+fi
+
+filter_cflags=echo
+filter_cppflags=echo
+filter_asflags=echo
+
+if   $cc -v 2>&1 | grep -qi ^gcc; then
+    cc_type=gcc
+    cc_version=__VERSION__
+    if ! $cc -dumpversion | grep -q '^2\.'; then
+        CC_DEPFLAGS='-MMD -MF $(@:.o=.d) -MT $@'
+        AS_DEPFLAGS='-MMD -MF $(@:.o=.d) -MT $@'
+    fi
+    speed_cflags='-O3'
+    size_cflags='-Os'
+elif $cc --version 2>/dev/null | grep -q Intel; then
+    cc_type=icc
+    cc_version="AV_STRINGIFY(__INTEL_COMPILER)"
+    CC_DEPFLAGS='-MMD'
+    AS_DEPFLAGS='-MMD'
+    speed_cflags='-O3'
+    size_cflags='-Os'
+elif $cc -v 2>&1 | grep -q xlc; then
+    cc_type=xlc
+    cc_version="AV_STRINGIFY(__IBMC__)"
+    speed_cflags='-O5'
+    size_cflags='-O5 -qcompact'
+elif $cc -V 2>/dev/null | grep -q Compaq; then
+    cc_type=ccc
+    cc_version="AV_STRINGIFY(__DECC_VER)"
+    DEPFLAGS='$(CPPFLAGS) $(CFLAGS) -M'
+    debuglevel=3
+    add_ldflags -Wl,-z,now # calls to libots crash without this
+    speed_cflags='-fast'
+    size_cflags='-O1'
+elif $cc --vsn 2>/dev/null | grep -q "ARM C/C++ Compiler"; then
+    test -d "$sysroot" || die "No valid sysroot specified."
+    cc_type=armcc
+    cc_version="AV_STRINGIFY(__ARMCC_VERSION)"
+    armcc_conf="$PWD/armcc.conf"
+    $cc --arm_linux_configure                 \
+        --arm_linux_config_file="$armcc_conf" \
+        --configure_sysroot="$sysroot"        \
+        --configure_cpp_headers="$sysinclude" >>$logfile 2>&1 ||
+        die "Error creating armcc configuration file."
+    cc="$cc --arm_linux_config_file=$armcc_conf --translate_gcc"
+    as_default="${cross_prefix}gcc"
+    CC_DEPFLAGS='-MMD'
+    AS_DEPFLAGS='-MMD'
+    speed_cflags='-O3'
+    size_cflags='-Os'
+elif $cc -version 2>/dev/null | grep -q TMS470; then
+    cc_type=tms470
+    cc_version="AV_STRINGIFY(__TI_COMPILER_VERSION__)"
+    cc="$cc --gcc --abi=eabi -eo=.o -mc -me"
+    CC_O='-fr=$(@D)'
+    as_default="${cross_prefix}gcc"
+    ld_default="${cross_prefix}gcc"
+    TMPO=$(basename $TMPC .c).o
+    append TMPFILES $TMPO
+    add_cflags -D__gnuc_va_list=va_list -D__USER_LABEL_PREFIX__=
+    CC_DEPFLAGS='-ppa -ppd=$(@:.o=.d)'
+    AS_DEPFLAGS='-MMD'
+    speed_cflags='-O3 -mf=5'
+    size_cflags='-O3 -mf=2'
+    filter_cflags=tms470_flags
+    tms470_flags(){
+        for flag; do
+            case $flag in
+                -march=*|-mcpu=*)
+                    case "${flag#*=}" in
+                        armv7-a|cortex-a*)      echo -mv=7a8 ;;
+                        armv7-r|cortex-r*)      echo -mv=7r4 ;;
+                        armv7-m|cortex-m*)      echo -mv=7m3 ;;
+                        armv6*|arm11*)          echo -mv=6   ;;
+                        armv5*e|arm[79]*e*|arm9[24]6*|arm96*|arm102[26])
+                                                echo -mv=5e  ;;
+                        armv4*|arm7*|arm9[24]*) echo -mv=4   ;;
+                    esac
+                    ;;
+                -mfpu=neon)     echo --float_support=vfpv3 --neon ;;
+                -mfpu=vfp)      echo --float_support=vfpv2        ;;
+                -mfpu=vfpv3)    echo --float_support=vfpv3        ;;
+                -msoft-float)   echo --float_support=vfplib       ;;
+                -O[0-3]|-mf=*)  echo $flag                        ;;
+                -g)             echo -g -mn                       ;;
+                -pds=*)         echo $flag                        ;;
+            esac
+        done
+    }
+elif $cc -v 2>&1 | grep -q clang; then
+    cc_type=clang
+    cc_version=__VERSION__
+    CC_DEPFLAGS='-MMD'
+    AS_DEPFLAGS='-MMD'
+    speed_cflags='-O3'
+    size_cflags='-Os'
+elif $cc -V 2>&1 | grep -q Sun; then
+    cc_type=suncc
+    cc_version="AV_STRINGIFY(__SUNPRO_C)"
+    DEPEND_CMD='$(DEPCC) $(DEPFLAGS) $< | sed -e "1s,^.*: ,$@: ," -e "\$$!s,\$$, \\\," -e "1!s,^.*: , ," > $(@:.o=.d)'
+    DEPFLAGS='$(CPPFLAGS) $(CFLAGS) -xM1'
+    speed_cflags='-O5'
+    size_cflags='-O5 -xspace'
+    filter_cflags=suncc_flags
+    suncc_flags(){
+        for flag; do
+            case $flag in
+                -march=*|-mcpu=*)
+                    case "${flag#*=}" in
+                        native)                   echo -xtarget=native       ;;
+                        v9)                       echo -xarch=sparc          ;;
+                        ultrasparc)               echo -xarch=sparcvis       ;;
+                        ultrasparc3|niagara*)     echo -xarch=sparcvis2      ;;
+                        i586|pentium)             echo -xchip=pentium        ;;
+                        i686|pentiumpro|pentium2) echo -xtarget=pentium_pro  ;;
+                        pentium3*|c3-2)           echo -xtarget=pentium3     ;;
+                        pentium-m)          echo -xarch=sse2 -xchip=pentium3 ;;
+                        pentium4*)          echo -xtarget=pentium4           ;;
+                        prescott|nocona)    echo -xarch=sse3 -xchip=pentium4 ;;
+                        *-sse3)             echo -xarch=sse3                 ;;
+                        core2)              echo -xarch=ssse3 -xchip=core2   ;;
+                        amdfam10|barcelona)       echo -xarch=sse4_1         ;;
+                        athlon-4|athlon-[mx]p)    echo -xarch=ssea           ;;
+                        k8|opteron|athlon64|athlon-fx)
+                                                  echo -xarch=sse2a          ;;
+                        athlon*)                  echo -xarch=pentium_proa   ;;
+                    esac
+                    ;;
+                -std=c99)             echo -xc99              ;;
+                -fomit-frame-pointer) echo -xregs=frameptr    ;;
+                -fPIC)                echo -KPIC -xcode=pic32 ;;
+                -W*,*)                echo $flag              ;;
+                -f*-*|-W*)                                    ;;
+                *)                    echo $flag              ;;
+            esac
+        done
+    }
+fi
+
+test -n "$cc_type" && enable $cc_type || echolog "Unknown C compiler $cc"
+
+: ${as_default:=$cc}
+: ${dep_cc_default:=$cc}
+: ${ld_default:=$cc}
+set_default as dep_cc ld
+
+test -n "$CC_DEPFLAGS" || CCDEP=$DEPEND_CMD
+test -n "$AS_DEPFLAGS" || ASDEP=$DEPEND_CMD
+
+add_cflags $extra_cflags
+add_asflags $extra_cflags
+
+if test -n "$sysroot"; then
+    case "$cc_type" in
+        gcc)
+            add_cppflags --sysroot="$sysroot"
+            add_ldflags --sysroot="$sysroot"
+        ;;
+        tms470)
+            add_cppflags -I"$sysinclude"
+            add_ldflags  --sysroot="$sysroot"
+        ;;
+        clang)
+            add_cppflags -isysroot="$sysroot"
+            add_ldflags -isysroot="$sysroot"
+        ;;
+    esac
+fi
+
+if test "$cpu" = host; then
+    enabled cross_compile && die "--cpu=host makes no sense when cross-compiling."
+
+    case "$cc_type" in
+        gcc)
+            check_native(){
+                $cc $1=native -v -c -o $TMPO $TMPC >$TMPE 2>&1 || return
+                sed -n "/$1=/{
+                            s/.*$1=\\([^ ]*\\).*/\\1/
+                            p
+                            q
+                        }" $TMPE
+            }
+            cpu=$(check_native -march || check_native -mcpu)
+        ;;
+    esac
+
+    test "${cpu:-host}" = host && die "--cpu=host not supported with compiler $cc"
+fi
+
+# Deal with common $arch aliases
+case "$arch" in
+    arm*)
+        arch="arm"
+    ;;
+    mips|mipsel|IP*)
+        arch="mips"
+    ;;
+    mips64)
+        arch="mips"
+        subarch="mips64"
+    ;;
+    parisc|hppa)
+        arch="parisc"
+    ;;
+    parisc64|hppa64)
+        arch="parisc"
+        subarch="parisc64"
+    ;;
+    "Power Macintosh"|ppc|powerpc)
+        arch="ppc"
+    ;;
+    ppc64)
+        arch="ppc"
+        subarch="ppc64"
+    ;;
+    s390|s390x)
+        arch="s390"
+    ;;
+    sh4|sh)
+        arch="sh4"
+    ;;
+    sun4u|sparc64)
+        arch="sparc"
+        subarch="sparc64"
+    ;;
+    i[3-6]86|i86pc|BePC|x86_64|amd64)
+        arch="x86"
+    ;;
+esac
+
+is_in $arch $ARCH_LIST || echo "WARNING: unknown arch $arch"
+enable $arch
+
+# Add processor-specific flags
+if test "$cpu" = generic; then
+    : do nothing
+elif enabled ppc; then
+
+    case $(tolower $cpu) in
+        601|ppc601|powerpc601)
+            cpuflags="-mcpu=601"
+            disable altivec
+        ;;
+        603*|ppc603*|powerpc603*)
+            cpuflags="-mcpu=603"
+            disable altivec
+        ;;
+        604*|ppc604*|powerpc604*)
+            cpuflags="-mcpu=604"
+            disable altivec
+        ;;
+        g3|75*|ppc75*|powerpc75*)
+            cpuflags="-mcpu=750 -mpowerpc-gfxopt"
+            disable altivec
+        ;;
+        g4|745*|ppc745*|powerpc745*)
+            cpuflags="-mcpu=7450 -mpowerpc-gfxopt"
+        ;;
+        74*|ppc74*|powerpc74*)
+            cpuflags="-mcpu=7400 -mpowerpc-gfxopt"
+        ;;
+        g5|970|ppc970|powerpc970|power4*)
+            cpuflags="-mcpu=970 -mpowerpc-gfxopt -mpowerpc64"
+        ;;
+        cell)
+            cpuflags="-mcpu=cell"
+            enable ldbrx
+        ;;
+        e500v2)
+            cpuflags="-mcpu=8548 -mhard-float -mfloat-gprs=double"
+            disable altivec
+        ;;
+        e500)
+            cpuflags="-mcpu=8540 -mhard-float"
+            disable altivec
+        ;;
+    esac
+
+elif enabled x86; then
+
+    case $cpu in
+        i[345]86|pentium)
+            cpuflags="-march=$cpu"
+            disable mmx
+        ;;
+        # targets that do NOT support conditional mov (cmov)
+        pentium-mmx|k6|k6-[23]|winchip-c6|winchip2|c3)
+            cpuflags="-march=$cpu"
+            disable cmov
+        ;;
+        # targets that do support conditional mov (cmov)
+        i686|pentiumpro|pentium[23]|pentium-m|athlon|athlon-tbird|athlon-4|athlon-[mx]p|athlon64|k8|opteron|athlon-fx|core2|amdfam10)
+            cpuflags="-march=$cpu"
+            enable cmov
+            enable fast_cmov
+        ;;
+        # targets that do support conditional mov but on which it's slow
+        pentium4|pentium4m|prescott|nocona)
+            cpuflags="-march=$cpu"
+            enable cmov
+            disable fast_cmov
+        ;;
+    esac
+
+elif enabled sparc; then
+
+    case $cpu in
+        sparc64)
+            cpuflags="-mcpu=v9"
+        ;;
+    esac
+
+elif enabled arm; then
+
+    case $cpu in
+        armv*)
+            cpuflags="-march=$cpu"
+        ;;
+        *)
+            cpuflags="-mcpu=$cpu"
+        ;;
+    esac
+
+elif enabled alpha; then
+
+    enabled ccc && cpuflags="-arch $cpu" || cpuflags="-mcpu=$cpu"
+
+elif enabled bfin; then
+
+    cpuflags="-mcpu=$cpu"
+
+elif enabled mips; then
+
+    cpuflags="-march=$cpu"
+
+elif enabled avr32; then
+
+    case $cpu in
+        ap7[02]0[0-2])
+            subarch="avr32_ap"
+            cpuflags="-mpart=$cpu"
+        ;;
+        ap)
+            subarch="avr32_ap"
+            cpuflags="-march=$cpu"
+        ;;
+        uc3[ab]*)
+            subarch="avr32_uc"
+            cpuflags="-mcpu=$cpu"
+        ;;
+        uc)
+            subarch="avr32_uc"
+            cpuflags="-march=$cpu"
+        ;;
+    esac
+
+fi
+
+add_cflags $cpuflags
+add_asflags $cpuflags
+
+# compiler sanity check
+check_exec <<EOF
+int main(void){ return 0; }
+EOF
+if test "$?" != 0; then
+    echo "$cc is unable to create an executable file."
+    if test -z "$cross_prefix" && ! enabled cross_compile ; then
+        echo "If $cc is a cross-compiler, use the --enable-cross-compile option."
+        echo "Only do this if you know what cross compiling means."
+    fi
+    die "C compiler test failed."
+fi
+
+add_cppflags -D_ISOC99_SOURCE -D_POSIX_C_SOURCE=200112
+check_cflags -std=c99
+check_cc -D_FILE_OFFSET_BITS=64 <<EOF && add_cppflags -D_FILE_OFFSET_BITS=64
+#include <stdlib.h>
+EOF
+check_cc -D_LARGEFILE_SOURCE <<EOF && add_cppflags -D_LARGEFILE_SOURCE
+#include <stdlib.h>
+EOF
+
+check_host_cflags -std=c99
+
+case "$arch" in
+    alpha|ia64|mips|parisc|sparc)
+        spic=$shared
+    ;;
+    x86)
+        subarch="x86_32"
+        check_cc <<EOF && subarch="x86_64"
+        int test[(int)sizeof(char*) - 7];
+EOF
+        if test "$subarch" = "x86_64"; then
+            spic=$shared
+        fi
+    ;;
+esac
+
+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 ;;
+    sunos)
+        FFSERVERLDFLAGS=""
+        SHFLAGS='-shared -Wl,-h,$$(@F)'
+        enabled x86 && SHFLAGS="-mimpure-text $SHFLAGS"
+        network_extralibs="-lsocket -lnsl"
+        add_cppflags -D__EXTENSIONS__
+        nm_opts='-P -g'
+        ;;
+    netbsd)
+        oss_indev_extralibs="-lossaudio"
+        oss_outdev_extralibs="-lossaudio"
+        ;;
+    openbsd)
+        enable malloc_aligned
+        # On OpenBSD 4.5. the compiler does not use PIC unless
+        # explicitly using -fPIC. FFmpeg builds fine without PIC,
+        # however the generated executable will not do anything
+        # (simply quits with exit-code 1, no crash, no output).
+        # Thus explicitly enable PIC here.
+        enable pic
+        SHFLAGS='-shared'
+        oss_indev_extralibs="-lossaudio"
+        oss_outdev_extralibs="-lossaudio"
+        ;;
+    freebsd|dragonfly)
+        enable malloc_aligned
+        ;;
+    bsd/os)
+        osextralibs="-lpoll -lgnugetopt"
+        strip="strip -d"
+        ;;
+    darwin)
+        enable malloc_aligned
+        SHFLAGS='-dynamiclib -Wl,-single_module -Wl,-install_name,$(SHLIBDIR)/$(SLIBNAME),-current_version,$(LIBVERSION),-compatibility_version,$(LIBMAJOR) -Wl,-read_only_relocs,suppress'
+        strip="strip -x"
+        FFLDFLAGS="-Wl,-dynamic,-search_paths_first"
+        SLIBSUF=".dylib"
+        SLIBNAME_WITH_VERSION='$(SLIBPREF)$(FULLNAME).$(LIBVERSION)$(SLIBSUF)'
+        SLIBNAME_WITH_MAJOR='$(SLIBPREF)$(FULLNAME).$(LIBMAJOR)$(SLIBSUF)'
+        FFSERVERLDFLAGS=-Wl,-bind_at_load
+        objformat="macho"
+        enabled x86_64 && objformat="macho64"
+        enabled_any pic shared ||
+            { check_cflags -mdynamic-no-pic && add_asflags -mdynamic-no-pic; }
+        ;;
+    mingw32*)
+        if test $target_os = "mingw32ce"; then
+            disable network
+        else
+            target_os=mingw32
+        fi
+        LIBTARGET=i386
+        if enabled x86_64; then
+            enable malloc_aligned
+            LIBTARGET=x64
+        elif enabled arm; then
+            LIBTARGET=arm
+        fi
+        shlibdir_default="$bindir_default"
+        disable ffserver
+        SLIBPREF=""
+        SLIBSUF=".dll"
+        SLIBNAME_WITH_VERSION='$(SLIBPREF)$(FULLNAME)-$(LIBVERSION)$(SLIBSUF)'
+        SLIBNAME_WITH_MAJOR='$(SLIBPREF)$(FULLNAME)-$(LIBMAJOR)$(SLIBSUF)'
+        SLIB_EXTRA_CMD='-lib.exe /machine:$(LIBTARGET) /def:$$(@:$(SLIBSUF)=.def) /out:$(SUBDIR)$(SLIBNAME_WITH_MAJOR:$(SLIBSUF)=.lib)'
+        SLIB_INSTALL_EXTRA_CMD='-install -m 644 $(SUBDIR)$(SLIBNAME_WITH_MAJOR:$(SLIBSUF)=.lib) "$(SHLIBDIR)/$(SLIBNAME:$(SLIBSUF)=.lib)"; \
+            install -m 644 $(SUBDIR)$(SLIBNAME_WITH_MAJOR:$(SLIBSUF)=.lib) "$(SHLIBDIR)/$(SLIBNAME_WITH_MAJOR:$(SLIBSUF)=.lib)"; \
+            install -d "$(LIBDIR)"; \
+            install -m 644 $(SUBDIR)lib$(SLIBNAME:$(SLIBSUF)=.dll.a) "$(LIBDIR)/lib$(SLIBNAME:$(SLIBSUF)=.dll.a)"'
+        SLIB_UNINSTALL_EXTRA_CMD='rm -f "$(SHLIBDIR)/$(SLIBNAME:$(SLIBSUF)=.lib)"'
+        SHFLAGS='-shared -Wl,--output-def,$$(@:$(SLIBSUF)=.def) -Wl,--out-implib,$(SUBDIR)lib$(SLIBNAME:$(SLIBSUF)=.dll.a) -Wl,--enable-runtime-pseudo-reloc -Wl,--enable-auto-image-base'
+        objformat="win32"
+        enable dos_paths
+        check_cflags -fno-common
+        if ! enabled x86_64; then
+            check_cpp_condition _mingw.h "(__MINGW32_MAJOR_VERSION > 3) || (__MINGW32_MAJOR_VERSION == 3 && __MINGW32_MINOR_VERSION >= 15)" ||
+                die "ERROR: MinGW runtime version must be >= 3.15."
+            enabled_any avisynth vfwcap_indev &&
+                { check_cpp_condition w32api.h "(__W32API_MAJOR_VERSION > 3) || (__W32API_MAJOR_VERSION == 3 && __W32API_MINOR_VERSION >= 13)" ||
+                  die "ERROR: avisynth and vfwcap_indev require w32api version 3.13 or later."; }
+        fi
+        ;;
+    cygwin*)
+        target_os=cygwin
+        shlibdir_default="$bindir_default"
+        SLIBPREF="cyg"
+        SLIBSUF=".dll"
+        SLIBNAME_WITH_VERSION='$(SLIBPREF)$(FULLNAME)-$(LIBVERSION)$(SLIBSUF)'
+        SLIBNAME_WITH_MAJOR='$(SLIBPREF)$(FULLNAME)-$(LIBMAJOR)$(SLIBSUF)'
+        SHFLAGS='-shared -Wl,--enable-auto-image-base'
+        objformat="win32"
+        enable dos_paths
+        check_cflags -fno-common
+        ;;
+    *-dos|freedos|opendos)
+        disable ffplay ffserver
+        disable $INDEV_LIST $OUTDEV_LIST
+        network_extralibs="-lsocket"
+        objformat="coff"
+        enable dos_paths
+        ;;
+    linux)
+        enable dv1394
+        ;;
+    irix*)
+        target_os=irix
+        ranlib="echo ignoring ranlib"
+        ;;
+    os/2*)
+        strip="lxlite"
+        ln_s="cp -f"
+        FFLDFLAGS="-Zomf -Zbin-files -Zargs-wild -Zmap"
+        SHFLAGS='$(SUBDIR)$(NAME).def -Zdll -Zomf'
+        FFSERVERLDFLAGS=""
+        LIBSUF="_s.a"
+        SLIBPREF=""
+        SLIBSUF=".dll"
+        SLIBNAME_WITH_VERSION='$(SLIBPREF)$(NAME)-$(LIBVERSION)$(SLIBSUF)'
+        SLIBNAME_WITH_MAJOR='$(SLIBPREF)$(shell echo $(NAME) | cut -c1-6)$(LIBMAJOR)$(SLIBSUF)'
+        SLIB_CREATE_DEF_CMD='echo LIBRARY $(SLIBNAME_WITH_MAJOR) INITINSTANCE TERMINSTANCE > $(SUBDIR)$(NAME).def; \
+          echo PROTMODE >> $(SUBDIR)$(NAME).def; \
+          echo CODE PRELOAD MOVEABLE DISCARDABLE >> $(SUBDIR)$(NAME).def; \
+          echo DATA PRELOAD MOVEABLE MULTIPLE NONSHARED >> $(SUBDIR)$(NAME).def; \
+          echo EXPORTS >> $(SUBDIR)$(NAME).def; \
+          emxexp -o $(OBJS) >> $(SUBDIR)$(NAME).def'
+        SLIB_EXTRA_CMD='emximp -o $(SUBDIR)$(LIBPREF)$(NAME)_dll.a $(SUBDIR)$(NAME).def; \
+          emximp -o $(SUBDIR)$(LIBPREF)$(NAME)_dll.lib $(SUBDIR)$(NAME).def;'
+        SLIB_INSTALL_EXTRA_CMD='install -m 644 $(SUBDIR)$(LIBPREF)$(NAME)_dll.a $(SUBDIR)$(LIBPREF)$(NAME)_dll.lib "$(LIBDIR)"'
+        SLIB_UNINSTALL_EXTRA_CMD='rm -f "$(LIBDIR)"/$(LIBPREF)$(NAME)_dll.a "$(LIBDIR)"/$(LIBPREF)$(NAME)_dll.lib'
+        enable dos_paths
+        ;;
+    gnu/kfreebsd)
+        ;;
+    gnu)
+        ;;
+
+    *)
+        die "Unknown OS '$target_os'."
+        ;;
+esac
+
+set_default $PATHS_LIST
+
+add_extralibs $osextralibs
+
+# Combine FFLDFLAGS and the LDFLAGS environment variable.
+LDFLAGS="$FFLDFLAGS $LDFLAGS"
+
+# we need to build at least one lib type
+if ! enabled_any static shared; then
+    cat <<EOF
+At least one library type must be built.
+Specify --enable-static to build the static libraries or --enable-shared to
+build the shared libraries as well. To only build the shared libraries specify
+--disable-static in addition to --enable-shared.
+EOF
+    exit 1;
+fi
+
+disabled static && LIBNAME=""
+
+if enabled_any libfaad libfaadbin ; then
+    if check_header faad.h; then
+        check_cc <<EOF
+#include <faad.h>
+#ifndef FAAD2_VERSION
+ok faad1
+#endif
+int main(void) { return 0; }
+EOF
+        test $? = 0 && enable libfaad2
+    else
+        die "FAAD test failed."
+    fi
+fi
+
+
+die_license_disabled() {
+    enabled $1 || { enabled $2 && die "$2 is $1 and --enable-$1 is not specified."; }
+}
+
+die_license_disabled gpl libfaad2
+die_license_disabled gpl libx264
+die_license_disabled gpl libxvid
+die_license_disabled gpl postproc
+die_license_disabled gpl x11grab
+
+die_license_disabled nonfree libfaac
+
+die_license_disabled version3 libopencore_amrnb
+die_license_disabled version3 libopencore_amrwb
+
+enabled version3 && { enabled gpl && enable gplv3 || enable lgplv3; }
+
+check_deps $ARCH_EXT_LIST
+
+disabled optimizations || check_cflags -fomit-frame-pointer
+
+enable_pic() {
+    enable pic
+    add_cppflags -DPIC
+    add_cflags   -fPIC
+    add_asflags  -fPIC
+}
+
+enabled pic && enable_pic
+
+check_cc <<EOF || die "Symbol mangling check failed."
+int ff_extern;
+EOF
+sym=$($nm $nm_opts $TMPO | awk '/ff_extern/{ print substr($0, match($0, /[^ \t]*ff_extern/)) }')
+extern_prefix=${sym%%ff_extern*}
+
+check_cc <<EOF && enable inline_asm
+void foo(void) { __asm__ volatile ("" ::); }
+EOF
+
+_restrict=
+for restrict_keyword in restrict __restrict__ __restrict; do
+    check_cc <<EOF && _restrict=$restrict_keyword && break
+void foo(char * $restrict_keyword p);
+EOF
+done
+
+check_cc <<EOF && enable attribute_packed
+struct { int x; } __attribute__((packed)) x;
+EOF
+
+check_cc <<EOF && enable attribute_may_alias
+union { int x; } __attribute__((may_alias)) x;
+EOF
+
+check_cc <<EOF || die "endian test failed"
+unsigned int endian = 'B' << 24 | 'I' << 16 | 'G' << 8 | 'E';
+EOF
+od -t x1 $TMPO | grep -q '42 *49 *47 *45' && enable bigendian
+
+if enabled alpha; then
+
+    check_cflags -mieee
+
+elif enabled arm; then
+
+    check_cflags -marm
+
+    check_ld <<EOF && enable vfp_args
+__asm__ (".eabi_attribute 28, 1");
+int main(void) { return 0; }
+EOF
+
+    # We have to check if pld is a nop and disable it.
+    check_asm pld '"pld [r0]"'
+
+    enabled armv5te && check_asm armv5te '"qadd r0, r0, r0"'
+    enabled armv6   && check_asm armv6   '"sadd16 r0, r0, r0"'
+    enabled armv6t2 && check_asm armv6t2 '"movt r0, #0"'
+    enabled armvfp  && check_asm armvfp  '"fadds s0, s0, s0"'
+    enabled iwmmxt  && check_asm iwmmxt  '"wunpckelub wr6, wr4"'
+    enabled neon    && check_asm neon    '"vadd.i16 q0, q0, q0"'
+
+    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"'
+    enabled mmi     && check_asm mmi     '"lq $2, 0($2)"'
+
+elif enabled ppc; then
+
+    check_asm dcbzl     '"dcbzl 0, 1"'
+    check_asm ppc4xx    '"maclhw r10, r11, r12"'
+    check_asm xform_asm '"lwzx %1, %y0" :: "Z"(*(int*)0), "r"(0)'
+
+    # AltiVec flags: The FSF version of GCC differs from the Apple version
+    if enabled altivec; then
+        check_cflags -maltivec -mabi=altivec &&
+        { check_header altivec.h && inc_altivec_h="#include <altivec.h>" ; } ||
+        check_cflags -faltivec
+
+        # check if our compiler supports Motorola AltiVec C API
+        check_cc <<EOF || disable altivec
+$inc_altivec_h
+int main(void) {
+    vector signed int v1, v2, v3;
+    v1 = vec_add(v2,v3);
+    return 0;
+}
+EOF
+
+        # check if our compiler supports braces for vector declarations
+        check_cc <<EOF || die "You need a compiler that supports {} in AltiVec vector declarations."
+$inc_altivec_h
+int main (void) { (vector int) {1}; return 0; }
+EOF
+    fi
+
+elif enabled sparc; then
+
+    enabled vis && check_asm vis '"pdist %f0, %f0, %f0"' -mcpu=ultrasparc &&
+        add_cflags -mcpu=ultrasparc -mtune=ultrasparc
+
+elif enabled x86; then
+
+    # check whether EBP is available on x86
+    # As 'i' is stored on the stack, this program will crash
+    # if the base pointer is used to access it because the
+    # base pointer is cleared in the inline assembly code.
+    check_exec_crash <<EOF && enable ebp_available
+    volatile int i=0;
+    __asm__ volatile (
+        "xorl %%ebp, %%ebp"
+    ::: "%ebp");
+    return i;
+EOF
+
+    # check whether EBX is available on x86
+    check_asm ebx_available '""::"b"(0)' &&
+        check_asm ebx_available '"":::"%ebx"'
+
+    # check whether more than 10 operands are supported
+    check_cc <<EOF && enable ten_operands
+int main(void) {
+    int x=0;
+    __asm__ volatile(
+        ""
+        :"+&rm"(x), "+&rm"(x), "+&rm"(x), "+&rm"(x), "+&rm"(x), "+&rm"(x)
+    );
+    return 0;
+}
+EOF
+
+    # check whether binutils is new enough to compile SSSE3/MMX2
+    enabled ssse3 && check_asm ssse3 '"pabsw %xmm0, %xmm0"'
+    enabled mmx2  && check_asm mmx2  '"pmaxub %mm0, %mm1"'
+
+    check_asm bswap '"bswap %%eax" ::: "%eax"'
+
+    YASMFLAGS="-f $objformat -DARCH_$(toupper $subarch)"
+    enabled     x86_64        && append YASMFLAGS "-m amd64"
+    enabled     pic           && append YASMFLAGS "-DPIC"
+    test -n "$extern_prefix"  && append YASMFLAGS "-DPREFIX"
+    case "$objformat" in
+        elf) enabled debug && append YASMFLAGS "-g dwarf2" ;;
+    esac
+    disabled yasm || { check_yasm "pabsw xmm0, xmm0" && enable yasm; }
+
+    case "$cpu" in
+        athlon*|opteron*|k8*|pentium|pentium-mmx|prescott|nocona|atom|geode)
+            disable fast_clz
+        ;;
+    esac
+
+fi
+
+if check_func dlopen; then
+    ldl=
+elif check_func dlopen -ldl; then
+    ldl=-ldl
+fi
+
+# Solaris has nanosleep in -lrt, OpenSolaris no longer needs that
+check_func nanosleep || { check_func nanosleep -lrt && add_extralibs -lrt; }
+
+check_func  fork
+check_func  getaddrinfo $network_extralibs
+check_func  gethrtime
+check_func  getrusage
+check_func  inet_aton $network_extralibs
+check_func  isatty
+check_func  ${malloc_prefix}memalign            && enable memalign
+check_func  mkstemp
+check_func  ${malloc_prefix}posix_memalign      && enable posix_memalign
+check_func_headers io.h setmode
+check_func_headers lzo/lzo1x.h lzo1x_999_compress
+check_func_headers windows.h GetProcessTimes
+check_func_headers windows.h VirtualAlloc
+
+check_header conio.h
+check_header dlfcn.h
+check_header dxva2api.h
+check_header malloc.h
+check_header poll.h
+check_header sys/mman.h
+check_header sys/resource.h
+check_header sys/select.h
+check_header termios.h
+check_header vdpau/vdpau.h
+check_header vdpau/vdpau_x11.h
+check_header X11/extensions/XvMClib.h
+
+check_struct dxva2api.h DXVA_PictureParameters wDecodedPictureIndex
+
+if ! enabled_any memalign memalign_hack posix_memalign malloc_aligned &&
+     enabled_any $need_memalign ; then
+    die "Error, no aligned memory allocator but SSE enabled, disable it or use --enable-memalign-hack."
+fi
+
+disabled  zlib || check_lib   zlib.h      zlibVersion -lz   || disable  zlib
+disabled bzlib || check_lib2 bzlib.h BZ2_bzlibVersion -lbz2 || disable bzlib
+
+# check for some common methods of building with pthread support
+# do this before the optional library checks as some of them require pthreads
+if enabled pthreads; then
+    if check_func pthread_create; then
+        :
+    elif check_func pthread_create -pthread; then
+        add_cflags -pthread
+        add_extralibs -pthread
+    elif check_func pthread_create -pthreads; then
+        add_cflags -pthreads
+        add_extralibs -pthreads
+    elif check_func pthread_create -lpthreadGC2; then
+        add_extralibs -lpthreadGC2
+    elif ! check_lib pthread.h pthread_create -lpthread; then
+        die "ERROR: can't find pthreads library"
+    fi
+fi
+
+for thread in $THREADS_LIST; do
+    if enabled $thread; then
+        test -n "$thread_type" &&
+            die "ERROR: Only one thread type must be selected." ||
+            thread_type="$thread"
+    fi
+done
+
+check_lib math.h sin -lm
+check_lib va/va.h vaInitialize -lva
+
+check_func exp2
+check_func exp2f
+check_func llrint
+check_func log2
+check_func log2f
+check_func lrint
+check_func lrintf
+check_func round
+check_func roundf
+check_func truncf
+
+# these are off by default, so fail if requested and not available
+enabled avisynth   && require2 vfw32 "windows.h vfw.h" AVIFileInit -lavifil32
+enabled libdirac   && add_cflags $(pkg-config --cflags dirac) &&
+                      require  libdirac libdirac_decoder/dirac_parser.h dirac_decoder_init $(pkg-config --libs dirac) &&
+                      require  libdirac libdirac_encoder/dirac_encoder.h dirac_encoder_init $(pkg-config --libs dirac)
+enabled libfaac    && require2 libfaac "stdint.h faac.h" faacEncGetVersion -lfaac
+enabled libfaad    && require2 libfaad faad.h faacDecOpen -lfaad
+enabled libgsm     && require  libgsm gsm/gsm.h gsm_create -lgsm
+enabled libmp3lame && require  libmp3lame lame/lame.h lame_init -lmp3lame -lm
+enabled libnut     && require  libnut libnut.h nut_demuxer_init -lnut
+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 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 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."; }
+enabled libxvid    && require  libxvid xvid.h xvid_global -lxvidcore
+enabled mlib       && require  mediaLib mlib_types.h mlib_VectorSub_S16_U8_Mod -lmlib
+
+# libdc1394 check
+if enabled libdc1394; then
+    { check_lib dc1394/dc1394.h dc1394_new -ldc1394 -lraw1394 &&
+        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
+
+SDL_CONFIG="${cross_prefix}sdl-config"
+if "${SDL_CONFIG}" --version > /dev/null 2>&1; then
+    sdl_cflags=$("${SDL_CONFIG}" --cflags)
+    sdl_libs=$("${SDL_CONFIG}" --libs)
+    check_func_headers SDL.h SDL_Init $sdl_cflags $sdl_libs &&
+    check_cpp_condition SDL.h "(SDL_MAJOR_VERSION<<16 | SDL_MINOR_VERSION<<8 | SDL_PATCHLEVEL) >= 0x010201" $sdl_cflags &&
+    enable sdl &&
+    check_struct SDL.h SDL_VideoInfo current_w $sdl_cflags && enable sdl_video_size
+fi
+
+texi2html -version > /dev/null 2>&1 && enable texi2html || disable texi2html
+
+if enabled network; then
+    check_type "sys/types.h sys/socket.h" socklen_t
+    check_type netdb.h "struct addrinfo"
+    check_type netinet/in.h "struct ipv6_mreq"
+    check_type netinet/in.h "struct sockaddr_in6"
+    check_type "sys/types.h sys/socket.h" "struct sockaddr_storage"
+    check_struct "sys/types.h sys/socket.h" "struct sockaddr" sa_len
+    # Prefer arpa/inet.h over winsock2
+    if check_header arpa/inet.h ; then
+        check_func closesocket
+    elif check_header winsock2.h ; then
+        check_func_headers winsock2.h closesocket -lws2 && \
+            network_extralibs="-lws2" || \
+        { check_func_headers winsock2.h closesocket -lws2_32 && \
+            network_extralibs="-lws2_32"; }
+        check_type ws2tcpip.h socklen_t
+        check_type ws2tcpip.h "struct addrinfo"
+        check_type ws2tcpip.h "struct ipv6_mreq"
+        check_type ws2tcpip.h "struct sockaddr_in6"
+        check_type ws2tcpip.h "struct sockaddr_storage"
+        check_struct winsock2.h "struct sockaddr" sa_len
+    else
+        disable network
+    fi
+fi
+
+check_header linux/videodev.h
+check_header linux/videodev2.h
+check_header sys/videoio.h
+
+check_func_headers "windows.h vfw.h" capCreateCaptureWindow "$vfwcap_indev_extralibs"
+
+# check for ioctl_meteor.h, ioctl_bt848.h and alternatives
+{ check_header dev/bktr/ioctl_meteor.h &&
+  check_header dev/bktr/ioctl_bt848.h; } ||
+{ check_header machine/ioctl_meteor.h &&
+  check_header machine/ioctl_bt848.h; } ||
+{ check_header dev/video/meteor/ioctl_meteor.h &&
+  check_header dev/video/bktr/ioctl_bt848.h; } ||
+check_header dev/ic/bt8xx.h
+
+check_header sys/soundcard.h
+check_header soundcard.h
+
+enabled_any alsa_indev alsa_outdev && check_lib2 alsa/asoundlib.h snd_pcm_htimestamp -lasound
+
+enabled jack_indev && check_lib2 jack/jack.h jack_client_open -ljack
+
+enabled x11grab                         &&
+check_header X11/Xlib.h                 &&
+check_header X11/extensions/XShm.h      &&
+check_header X11/extensions/Xfixes.h    &&
+check_func XOpenDisplay -lX11           &&
+check_func XShmCreateImage -lX11 -lXext &&
+check_func XFixesGetCursorImage -lX11 -lXext -lXfixes
+
+if ! disabled vdpau && enabled vdpau_vdpau_h; then
+check_cpp_condition \
+    vdpau/vdpau.h "defined VDP_DECODER_PROFILE_MPEG4_PART2_ASP" ||
+    { echolog "Please upgrade to libvdpau >= 0.2 if you would like vdpau support." &&
+      disable vdpau; }
+fi
+
+enabled debug && add_cflags -g"$debuglevel" && add_asflags -g"$debuglevel"
+
+# add some useful compiler flags if supported
+check_cflags -Wdeclaration-after-statement
+check_cflags -Wall
+check_cflags -Wno-switch
+check_cflags -Wdisabled-optimization
+check_cflags -Wpointer-arith
+check_cflags -Wredundant-decls
+check_cflags -Wno-pointer-sign
+check_cflags -Wcast-qual
+check_cflags -Wwrite-strings
+check_cflags -Wtype-limits
+check_cflags -Wundef
+enabled extra_warnings && check_cflags -Winline
+
+# add some linker flags
+check_ldflags -Wl,--warn-common
+check_ldflags -Wl,--as-needed
+check_ldflags '-Wl,-rpath-link,\$(BUILD_ROOT)/libpostproc -Wl,-rpath-link,\$(BUILD_ROOT)/libswscale -Wl,-rpath-link,\$(BUILD_ROOT)/libavfilter -Wl,-rpath-link,\$(BUILD_ROOT)/libavdevice -Wl,-rpath-link,\$(BUILD_ROOT)/libavformat -Wl,-rpath-link,\$(BUILD_ROOT)/libavcodec -Wl,-rpath-link,\$(BUILD_ROOT)/libavutil'
+check_ldflags -Wl,-Bsymbolic
+
+echo "X{};" > $TMPV
+test_ldflags -Wl,--version-script,$TMPV &&
+    append SHFLAGS '-Wl,--version-script,\$(SUBDIR)lib\$(NAME).ver'
+
+if enabled small; then
+    add_cflags $size_cflags
+    optimizations="small"
+elif enabled optimizations; then
+    add_cflags $speed_cflags
+fi
+check_cflags -fno-math-errno
+check_cflags -fno-signed-zeros
+
+if enabled icc; then
+    # Just warnings, no remarks
+    check_cflags -w1
+    # -wd: Disable following warnings
+    # 144, 167, 556: -Wno-pointer-sign
+    # 10006: ignoring unknown option -fno-signed-zeros
+    # 10156: ignoring option '-W'; no argument required
+    check_cflags -wd144,167,556,10006,10156
+    # 11030: Warning unknown option --as-needed
+    # 10156: ignoring option '-export'; no argument required
+    check_ldflags -wd10156,11030
+    # Allow to compile with optimizations
+    check_ldflags -march=$cpu
+    # icc 11.0 and 11.1 work with ebp_available, but don't pass the test
+    enable ebp_available
+elif enabled ccc; then
+    # disable some annoying warnings
+    add_cflags -msg_disable cvtu32to64
+    add_cflags -msg_disable embedcomment
+    add_cflags -msg_disable needconstext
+    add_cflags -msg_disable nomainieee
+    add_cflags -msg_disable ptrmismatch1
+    add_cflags -msg_disable unreachcode
+elif enabled gcc; then
+    check_cflags -fno-tree-vectorize
+elif enabled clang; then
+    check_cflags -Qunused-arguments
+elif enabled armcc; then
+    # 2523: use of inline assembler is deprecated
+    add_cflags -Wrvct,--diag_suppress=2523
+elif enabled tms470; then
+    add_cflags -pds=824 -pds=837
+fi
+
+if enabled gprof; then
+    add_cflags  -p
+    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       \
+           $CONFIG_EXTRA      \
+           $HAVE_LIST         \
+           $DECODER_LIST      \
+           $ENCODER_LIST      \
+           $HWACCEL_LIST      \
+           $PARSER_LIST       \
+           $BSF_LIST          \
+           $DEMUXER_LIST      \
+           $MUXER_LIST        \
+           $FILTER_LIST       \
+           $INDEV_LIST        \
+           $OUTDEV_LIST       \
+           $PROTOCOL_LIST     \
+
+enabled asm || 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"
+fi
+if test "$extra_version" != ""; then
+    echo "version string suffix     $extra_version"
+fi
+echo "big-endian                ${bigendian-no}"
+echo "runtime cpu detection     ${runtime_cpudetect-no}"
+if enabled x86; then
+    echo "yasm                      ${yasm-no}"
+    echo "MMX enabled               ${mmx-no}"
+    echo "MMX2 enabled              ${mmx2-no}"
+    echo "3DNow! enabled            ${amd3dnow-no}"
+    echo "3DNow! extended enabled   ${amd3dnowext-no}"
+    echo "SSE enabled               ${sse-no}"
+    echo "SSSE3 enabled             ${ssse3-no}"
+    echo "CMOV enabled              ${cmov-no}"
+    echo "CMOV is fast              ${fast_cmov-no}"
+    echo "EBX available             ${ebx_available-no}"
+    echo "EBP available             ${ebp_available-no}"
+    echo "10 operands supported     ${ten_operands-no}"
+fi
+if enabled arm; then
+    echo "ARMv5TE enabled           ${armv5te-no}"
+    echo "ARMv6 enabled             ${armv6-no}"
+    echo "ARMv6T2 enabled           ${armv6t2-no}"
+    echo "ARM VFP enabled           ${armvfp-no}"
+    echo "IWMMXT enabled            ${iwmmxt-no}"
+    echo "NEON enabled              ${neon-no}"
+fi
+if enabled mips; then
+    echo "MMI enabled               ${mmi-no}"
+fi
+if enabled ppc; then
+    echo "AltiVec enabled           ${altivec-no}"
+    echo "PPC 4xx optimizations     ${ppc4xx-no}"
+    echo "dcbzl available           ${dcbzl-no}"
+    echo "performance report        ${powerpc_perf-no}"
+fi
+if enabled sparc; then
+    echo "VIS enabled               ${vis-no}"
+fi
+echo "gprof enabled             ${gprof-no}"
+echo "debug symbols             ${debug-no}"
+echo "strip symbols             ${stripping-no}"
+echo "optimizations             ${optimizations-no}"
+echo "static                    ${static-no}"
+echo "shared                    ${shared-no}"
+echo "postprocessing support    ${postproc-no}"
+echo "new filter support        ${avfilter-no}"
+echo "filters using lavformat   ${avfilter_lavf-no}"
+echo "network support           ${network-no}"
+echo "threading support         ${thread_type-no}"
+echo "SDL support               ${sdl-no}"
+echo "Sun medialib support      ${mlib-no}"
+echo "AVISynth enabled          ${avisynth-no}"
+echo "libdc1394 support         ${libdc1394-no}"
+echo "libdirac enabled          ${libdirac-no}"
+echo "libfaac enabled           ${libfaac-no}"
+echo "libfaad enabled           ${libfaad-no}"
+echo "libfaad dlopened          ${libfaadbin-no}"
+echo "libgsm enabled            ${libgsm-no}"
+echo "libmp3lame enabled        ${libmp3lame-no}"
+echo "libnut enabled            ${libnut-no}"
+echo "libopencore-amrnb support ${libopencore_amrnb-no}"
+echo "libopencore-amrwb support ${libopencore_amrwb-no}"
+echo "libopenjpeg enabled       ${libopenjpeg-no}"
+echo "libschroedinger enabled   ${libschroedinger-no}"
+echo "libspeex enabled          ${libspeex-no}"
+echo "libtheora enabled         ${libtheora-no}"
+echo "libvorbis enabled         ${libvorbis-no}"
+echo "libx264 enabled           ${libx264-no}"
+echo "libxvid enabled           ${libxvid-no}"
+echo "zlib enabled              ${zlib-no}"
+echo "bzlib enabled             ${bzlib-no}"
+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
+    for part in $list; do
+        enabled $part && echo ${part%_*}
+    done | sort | pr -3 -t
+    echo
+done
+
+license="LGPL version 2.1 or later"
+if enabled nonfree; then
+    license="nonfree and unredistributable"
+elif enabled gplv3; then
+    license="GPL version 3 or later"
+elif enabled lgplv3; then
+    license="LGPL version 3 or later"
+elif enabled gpl; then
+    license="GPL version 2 or later"
+fi
+
+echo "License: $license"
+
+echo "Creating config.mak and config.h..."
+
+# build tree in object directory if source path is different from current one
+if enabled source_path_used; then
+    DIRS="
+        doc
+        libavcodec
+        libavcodec/$arch
+        libavdevice
+        libavfilter
+        libavformat
+        libavutil
+        libavutil/$arch
+        libpostproc
+        libswscale
+        libswscale/$arch
+        tests
+        tools
+    "
+    FILES="
+        Makefile
+        common.mak
+        subdir.mak
+        doc/texi2pod.pl
+        libavcodec/Makefile
+        libavdevice/Makefile
+        libavfilter/Makefile
+        libavformat/Makefile
+        libavutil/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
+fi
+
+enabled stripping || strip="echo skipping strip"
+
+cat > config.mak <<EOF
+# Automatically generated by configure - do not modify!
+ifndef FFMPEG_CONFIG_MAK
+FFMPEG_CONFIG_MAK=1
+FFMPEG_CONFIGURATION=$FFMPEG_CONFIGURATION
+prefix=$prefix
+LIBDIR=\$(DESTDIR)$libdir
+SHLIBDIR=\$(DESTDIR)$shlibdir
+INCDIR=\$(DESTDIR)$incdir
+BINDIR=\$(DESTDIR)$bindir
+DATADIR=\$(DESTDIR)$datadir
+MANDIR=\$(DESTDIR)$mandir
+SRC_PATH="$source_path"
+SRC_PATH_BARE=$source_path
+BUILD_ROOT="$PWD"
+ARCH=$arch
+CC=$cc
+AS=$as
+LD=$ld
+DEPCC=$dep_cc
+YASM=$yasmexe
+AR=$ar
+RANLIB=$ranlib
+LN_S=$ln_s
+STRIP=$strip
+CPPFLAGS=$CPPFLAGS
+CFLAGS=$CFLAGS
+ASFLAGS=$ASFLAGS
+CC_O=$CC_O
+LDFLAGS=$LDFLAGS
+FFSERVERLDFLAGS=$FFSERVERLDFLAGS
+SHFLAGS=$SHFLAGS
+YASMFLAGS=$YASMFLAGS
+BUILDSUF=$build_suffix
+FULLNAME=$FULLNAME
+LIBPREF=$LIBPREF
+LIBSUF=$LIBSUF
+LIBNAME=$LIBNAME
+SLIBPREF=$SLIBPREF
+SLIBSUF=$SLIBSUF
+EXESUF=$EXESUF
+EXTRA_VERSION=$extra_version
+DEPFLAGS=$DEPFLAGS
+CCDEP=$CCDEP
+ASDEP=$ASDEP
+CC_DEPFLAGS=$CC_DEPFLAGS
+AS_DEPFLAGS=$AS_DEPFLAGS
+HOSTCC=$host_cc
+HOSTCFLAGS=$host_cflags
+HOSTEXESUF=$HOSTEXESUF
+HOSTLDFLAGS=$host_ldflags
+HOSTLIBS=$host_libs
+TARGET_EXEC=$target_exec
+TARGET_PATH=$target_path
+SDL_LIBS=$sdl_libs
+SDL_CFLAGS=$sdl_cflags
+LIB_INSTALL_EXTRA_CMD=$LIB_INSTALL_EXTRA_CMD
+EXTRALIBS=$extralibs
+EOF
+
+get_version(){
+    name=$1
+    file=$source_path/$2
+    eval $(grep "#define ${name}_VERSION_M" "$file" | awk '{ print $2"="$3 }')
+    eval ${name}_VERSION=\$${name}_VERSION_MAJOR.\$${name}_VERSION_MINOR.\$${name}_VERSION_MICRO
+    lcname=$(tolower $name)
+    eval echo "${lcname}_VERSION=\$${name}_VERSION" >> config.mak
+    eval echo "${lcname}_VERSION_MAJOR=\$${name}_VERSION_MAJOR" >> config.mak
+}
+
+get_version LIBSWSCALE  libswscale/swscale.h
+get_version LIBPOSTPROC libpostproc/postprocess.h
+get_version LIBAVCODEC  libavcodec/avcodec.h
+get_version LIBAVDEVICE libavdevice/avdevice.h
+get_version LIBAVFORMAT libavformat/avformat.h
+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
+/* Automatically generated by configure - do not modify! */
+#ifndef FFMPEG_CONFIG_H
+#define FFMPEG_CONFIG_H
+#define FFMPEG_CONFIGURATION "$(c_escape $FFMPEG_CONFIGURATION)"
+#define FFMPEG_LICENSE "$(c_escape $license)"
+#define FFMPEG_DATADIR "$(eval c_escape $datadir)"
+#define CC_TYPE "$cc_type"
+#define CC_VERSION $cc_version
+#define restrict $_restrict
+#define ASMALIGN(ZEROBITS) ".align $align_shift " #ZEROBITS "\\n\\t"
+#define EXTERN_PREFIX "${extern_prefix}"
+#define EXTERN_ASM ${extern_prefix}
+EOF
+
+test -n "$malloc_prefix" &&
+    echo "#define MALLOC_PREFIX $malloc_prefix" >>$TMPH
+
+if enabled small || disabled optimizations; then
+    echo "#define av_always_inline"  >> $TMPH
+fi
+
+print_config ARCH_   $TMPH config.mak $ARCH_LIST
+print_config HAVE_   $TMPH config.mak $HAVE_LIST
+print_config CONFIG_ $TMPH config.mak $CONFIG_LIST       \
+                                      $CONFIG_EXTRA      \
+                                      $DECODER_LIST      \
+                                      $ENCODER_LIST      \
+                                      $HWACCEL_LIST      \
+                                      $PARSER_LIST       \
+                                      $BSF_LIST          \
+                                      $DEMUXER_LIST      \
+                                      $MUXER_LIST        \
+                                      $FILTER_LIST       \
+                                      $PROTOCOL_LIST     \
+                                      $INDEV_LIST        \
+                                      $OUTDEV_LIST       \
+
+echo "#endif /* FFMPEG_CONFIG_H */" >> $TMPH
+echo "endif # FFMPEG_CONFIG_MAK" >> config.mak
+
+# Do not overwrite an unchanged config.h to avoid superfluous rebuilds.
+cp_if_changed $TMPH config.h
+
+cat > $TMPH <<EOF
+/* Generated by ffconf */
+#ifndef AVUTIL_AVCONFIG_H
+#define AVUTIL_AVCONFIG_H
+EOF
+
+print_config AV_HAVE_ $TMPH /dev/null $HAVE_LIST_PUB
+
+echo "#endif /* AVUTIL_AVCONFIG_H */" >> $TMPH
+
+cp_if_changed $TMPH libavutil/avconfig.h
+
+# build pkg-config files
+
+pkgconfig_generate(){
+name=$1
+shortname=${name#lib}${build_suffix}
+comment=$2
+version=$3
+libs=$4
+requires=$5
+cat <<EOF > $name/$name.pc
+prefix=$prefix
+exec_prefix=\${prefix}
+libdir=$libdir
+includedir=$incdir
+
+Name: $name
+Description: $comment
+Version: $version
+Requires: $(enabled shared || echo $requires)
+Requires.private: $(enabled shared && echo $requires)
+Conflicts:
+Libs: -L\${libdir} -l${shortname} $(enabled shared || echo $libs)
+Libs.private: $(enabled shared && echo $libs)
+Cflags: -I\${includedir}
+EOF
+cat <<EOF > $name/$name-uninstalled.pc
+prefix=
+exec_prefix=
+libdir=\${pcfiledir}
+includedir=${source_path}
+
+Name: $name
+Description: $comment
+Version: $version
+Requires: $requires
+Conflicts:
+Libs: \${libdir}/${LIBPREF}${shortname}${LIBSUF} $libs
+Cflags: -I\${includedir}
+EOF
+}
+
+pkgconfig_generate libavutil "FFmpeg utility library" "$LIBAVUTIL_VERSION"
+pkgconfig_generate libavcodec "FFmpeg codec library" "$LIBAVCODEC_VERSION" "$extralibs" "libavutil = $LIBAVUTIL_VERSION"
+pkgconfig_generate libavformat "FFmpeg container format library" "$LIBAVFORMAT_VERSION" "$extralibs" "libavcodec = $LIBAVCODEC_VERSION"
+pkgconfig_generate libavdevice "FFmpeg device handling library" "$LIBAVDEVICE_VERSION" "$extralibs" "libavformat = $LIBAVFORMAT_VERSION"
+enabled avfilter &&
+    pkgconfig_generate libavfilter "FFmpeg video filtering library" "$LIBAVFILTER_VERSION" "$extralibs" "libavutil = $LIBAVUTIL_VERSION"
+enabled postproc &&
+    pkgconfig_generate libpostproc "FFmpeg post processing library" "$LIBPOSTPROC_VERSION"
+pkgconfig_generate libswscale "FFmpeg image rescaling library" "$LIBSWSCALE_VERSION" "" "libavutil = $LIBAVUTIL_VERSION"
diff -r -u -N ffmpeg_git/configure.orig.fixed ffmpeg_airvideo/configure.orig.fixed
--- ffmpeg_git/configure.orig.fixed	1970-01-01 01:00:00.000000000 +0100
+++ ffmpeg_airvideo/configure.orig.fixed	2010-02-07 19:46:26.000000000 +0100
@@ -0,0 +1,3087 @@
+#!/bin/sh
+#
+# FFmpeg configure script
+#
+# Copyright (c) 2000-2002 Fabrice Bellard
+# Copyright (c) 2005-2008 Diego Biurrun
+# Copyright (c) 2005-2008 Mans Rullgard
+#
+
+# Prevent locale nonsense from breaking basic text processing.
+LC_ALL=C
+export LC_ALL
+
+# make sure we are running under a compatible shell
+# try to make this part work with most shells
+
+try_exec(){
+    echo "Trying shell $1"
+    type "$1" > /dev/null 2>&1 && exec "$@"
+}
+
+unset foo
+(: ${foo%%bar}) 2> /dev/null
+E1="$?"
+
+(: ${foo?}) 2> /dev/null
+E2="$?"
+
+if test "$E1" != 0 || test "$E2" = 0; then
+    echo "Broken shell detected.  Trying alternatives."
+    export FF_CONF_EXEC
+    if test "0$FF_CONF_EXEC" -lt 1; then
+        FF_CONF_EXEC=1
+        try_exec bash "$0" "$@"
+    fi
+    if test "0$FF_CONF_EXEC" -lt 2; then
+        FF_CONF_EXEC=2
+        try_exec ksh "$0" "$@"
+    fi
+    if test "0$FF_CONF_EXEC" -lt 3; then
+        FF_CONF_EXEC=3
+        try_exec /usr/xpg4/bin/sh "$0" "$@"
+    fi
+    echo "No compatible shell script interpreter found."
+    echo "This configure script requires a POSIX-compatible shell"
+    echo "such as bash or ksh."
+    echo "THIS IS NOT A BUG IN FFMPEG, DO NOT REPORT IT AS SUCH."
+    echo "Instead, install a working POSIX-compatible shell."
+    echo "Disabling this configure test will create a broken FFmpeg."
+    if test "$BASH_VERSION" = '2.04.0(1)-release'; then
+        echo "This bash version ($BASH_VERSION) is broken on your platform."
+        echo "Upgrade to a later version if available."
+    fi
+    exit 1
+fi
+
+show_help(){
+cat <<EOF
+Usage: configure [options]
+Options: [defaults in brackets after descriptions]
+
+Standard options:
+  --help                   print this message
+  --logfile=FILE           log tests and output to FILE [config.err]
+  --disable-logging        do not log configure debug information
+  --prefix=PREFIX          install in PREFIX [$prefix]
+  --bindir=DIR             install binaries in DIR [PREFIX/bin]
+  --datadir=DIR            install data files in DIR [PREFIX/share/ffmpeg]
+  --libdir=DIR             install libs in DIR [PREFIX/lib]
+  --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]
+
+Configuration options:
+  --disable-static         do not build static libraries [no]
+  --enable-shared          build shared libraries [no]
+  --enable-gpl             allow use of GPL code, the resulting libs
+                           and binaries will be under GPL [no]
+  --enable-version3        upgrade (L)GPL to version 3 [no]
+  --enable-nonfree         allow use of nonfree code, the resulting libs
+                           and binaries will be unredistributable [no]
+  --disable-doc            do not build documentation
+  --disable-ffmpeg         disable ffmpeg build
+  --disable-ffplay         disable ffplay build
+  --disable-ffserver       disable ffserver build
+  --disable-avdevice       disable libavdevice build
+  --disable-avcodec        disable libavcodec build
+  --disable-avformat       disable libavformat build
+  --disable-swscale        disable libswscale build
+  --enable-postproc        enable GPLed postprocessing support [no]
+  --enable-avfilter        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-pthreads        use pthreads [no]
+  --enable-w32threads      use Win32 threads [no]
+  --enable-x11grab         enable X11 grabbing [no]
+  --disable-network        disable network support [no]
+  --disable-mpegaudio-hp   faster (but less accurate) MPEG audio decoding [no]
+  --enable-gray            enable full grayscale support (slower color)
+  --disable-swscale-alpha  disable alpha channel support in swscale
+  --disable-fastdiv        disable table-based division
+  --enable-small           optimize for size instead of speed
+  --disable-aandct         disable AAN DCT code
+  --disable-dct            disable DCT code
+  --disable-fft            disable FFT code
+  --disable-golomb         disable Golomb code
+  --disable-lpc            disable LPC code
+  --disable-mdct           disable MDCT code
+  --disable-rdft           disable RDFT code
+  --disable-vaapi          disable VAAPI code
+  --disable-vdpau          disable VDPAU code
+  --disable-dxva2          disable DXVA2 code
+  --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-encoder=NAME   disable encoder NAME
+  --enable-encoder=NAME    enable encoder NAME
+  --disable-encoders       disable all encoders
+  --disable-decoder=NAME   disable decoder NAME
+  --enable-decoder=NAME    enable decoder NAME
+  --disable-decoders       disable all decoders
+  --disable-hwaccel=NAME   disable hwaccel NAME
+  --enable-hwaccel=NAME    enable hwaccel NAME
+  --disable-hwaccels       disable all hwaccels
+  --disable-muxer=NAME     disable muxer NAME
+  --enable-muxer=NAME      enable muxer NAME
+  --disable-muxers         disable all muxers
+  --disable-demuxer=NAME   disable demuxer NAME
+  --enable-demuxer=NAME    enable demuxer NAME
+  --disable-demuxers       disable all demuxers
+  --enable-parser=NAME     enable parser NAME
+  --disable-parser=NAME    disable parser NAME
+  --disable-parsers        disable all parsers
+  --enable-bsf=NAME        enable bitstream filter NAME
+  --disable-bsf=NAME       disable bitstream filter NAME
+  --disable-bsfs           disable all bitstream filters
+  --enable-protocol=NAME   enable protocol NAME
+  --disable-protocol=NAME  disable protocol NAME
+  --disable-protocols      disable all protocols
+  --disable-indev=NAME     disable input device NAME
+  --disable-outdev=NAME    disable output device NAME
+  --disable-indevs         disable input devices
+  --disable-outdevs        disable output devices
+  --disable-devices        disable all devices
+  --enable-filter=NAME     enable filter NAME
+  --disable-filter=NAME    disable filter NAME
+  --disable-filters        disable all filters
+  --list-decoders          show all available decoders
+  --list-encoders          show all available encoders
+  --list-hwaccels          show all available hardware accelerators
+  --list-muxers            show all available muxers
+  --list-demuxers          show all available demuxers
+  --list-parsers           show all available parsers
+  --list-protocols         show all available protocols
+  --list-bsfs              show all available bitstream filters
+  --list-indevs            show all available input devices
+  --list-outdevs           show all available output devices
+  --list-filters           show all available filters
+
+External library support:
+  --enable-avisynth        enable reading of AVISynth script files [no]
+  --enable-bzlib           enable bzlib [autodetect]
+  --enable-libopencore-amrnb enable AMR-NB de/encoding via libopencore-amrnb [no]
+  --enable-libopencore-amrwb enable AMR-WB decoding via libopencore-amrwb [no]
+  --enable-libdc1394       enable IIDC-1394 grabbing using libdc1394
+                           and libraw1394 [no]
+  --enable-libdirac        enable Dirac support via libdirac [no]
+  --enable-libfaac         enable FAAC support via libfaac [no]
+  --enable-libfaad         enable FAAD support via libfaad [no]
+  --enable-libfaadbin      open libfaad.so.0 at runtime [no]
+  --enable-libgsm          enable GSM support via libgsm [no]
+  --enable-libmp3lame      enable MP3 encoding via libmp3lame [no]
+  --enable-libnut          enable NUT (de)muxing via libnut,
+                           native (de)muxer exists [no]
+  --enable-libopenjpeg     enable JPEG 2000 decoding via OpenJPEG [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-libx264         enable H.264 encoding via x264 [no]
+  --enable-libxvid         enable Xvid encoding via xvidcore,
+                           native MPEG-4/Xvid encoder exists [no]
+  --enable-mlib            enable Sun medialib [no]
+  --enable-zlib            enable zlib [autodetect]
+
+Advanced options (experts only):
+  --source-path=PATH       path to source code [$source_path]
+  --cross-prefix=PREFIX    use PREFIX for compilation tools [$cross_prefix]
+  --enable-cross-compile   assume a cross-compiler is used
+  --sysroot=PATH           root of cross-build tree
+  --sysinclude=PATH        location of cross-build system headers
+  --target-os=OS           compiler targets OS [$target_os]
+  --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
+  --as=AS                  use assembler AS [$as_default]
+  --cc=CC                  use C compiler CC [$cc_default]
+  --ld=LD                  use linker LD
+  --host-cc=HOSTCC         use host C compiler HOSTCC
+  --host-cflags=HCFLAGS    use HCFLAGS when compiling for host
+  --host-ldflags=HLDFLAGS  use HLDFLAGS when linking for host
+  --host-libs=HLIBS        use libs HLIBS when linking for host
+  --extra-cflags=ECFLAGS   add ECFLAGS to CFLAGS [$CFLAGS]
+  --extra-ldflags=ELDFLAGS add ELDFLAGS to LDFLAGS [$LDFLAGS]
+  --extra-libs=ELIBS       add ELIBS [$ELIBS]
+  --extra-version=STRING   version string suffix []
+  --build-suffix=SUFFIX    library name suffix []
+  --arch=ARCH              select architecture [$arch]
+  --cpu=CPU                select the minimum required CPU (affects
+                           instruction selection, may crash on older CPUs)
+  --enable-powerpc-perf    enable performance report on PPC
+                           (requires enabling PMC)
+  --disable-asm            disable all assembler optimizations
+  --disable-altivec        disable AltiVec optimizations
+  --disable-amd3dnow       disable 3DNow! optimizations
+  --disable-amd3dnowext    disable 3DNow! extended optimizations
+  --disable-mmx            disable MMX optimizations
+  --disable-mmx2           disable MMX2 optimizations
+  --disable-sse            disable SSE optimizations
+  --disable-ssse3          disable SSSE3 optimizations
+  --disable-armv5te        disable armv5te optimizations
+  --disable-armv6          disable armv6 optimizations
+  --disable-armv6t2        disable armv6t2 optimizations
+  --disable-armvfp         disable ARM VFP optimizations
+  --disable-iwmmxt         disable iwmmxt optimizations
+  --disable-mmi            disable MMI optimizations
+  --disable-neon           disable neon optimizations
+  --disable-vis            disable VIS optimizations
+  --disable-yasm           disable use of yasm assembler
+  --enable-pic             build position-independent code
+  --malloc-prefix=PFX      prefix malloc and related names with PFX
+  --enable-sram            allow use of on-chip SRAM
+
+Developer options (useful when working on FFmpeg itself):
+  --disable-debug          disable debugging symbols
+  --enable-debug=LEVEL     set the debug level [$debuglevel]
+  --enable-gprof           enable profiling with gprof [$gprof]
+  --disable-optimizations  disable compiler optimizations
+  --enable-extra-warnings  enable more compiler warnings
+  --disable-stripping      disable stripping of executables and shared libraries
+
+NOTE: Object files are built at the place where configure is launched.
+EOF
+  exit 0
+}
+
+log(){
+    echo "$@" >> $logfile
+}
+
+log_file(){
+    log BEGIN $1
+    pr -n -t $1 >> $logfile
+    log END $1
+}
+
+echolog(){
+    log "$@"
+    echo "$@"
+}
+
+die(){
+    echolog "$@"
+    cat <<EOF
+
+If you think configure made a mistake, make sure you are using the latest
+version from SVN.  If the latest version fails, report the problem to the
+ffmpeg-user@mplayerhq.hu mailing list or IRC #ffmpeg on irc.freenode.net.
+EOF
+    if disabled logging; then
+        cat <<EOF
+Rerun configure with logging enabled (do not use --disable-logging), and
+include the log this produces with your report.
+EOF
+    else
+cat <<EOF
+Include the log file "$logfile" produced by configure as this will help
+solving the problem.
+EOF
+    fi
+    exit 1
+}
+
+# Avoid locale weirdness, besides we really just want to translate ASCII.
+toupper(){
+    echo "$@" | tr abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ
+}
+
+tolower(){
+    echo "$@" | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz
+}
+
+c_escape(){
+    echo "$*" | sed 's/["\\]/\\\0/g'
+}
+
+sh_quote(){
+    v=$(echo "$1" | sed "s/'/'\\\\''/g")
+    test "$v" = "${v#*[ |&;<>()$\`\\\"\'*?\[\]#~=%]}" || v="'$v'"
+    echo "$v"
+}
+
+filter(){
+    pat=$1
+    shift
+    for v; do
+        eval "case $v in $pat) echo $v ;; esac"
+    done
+}
+
+set_all(){
+    value=$1
+    shift
+    for var in $*; do
+        eval $var=$value
+    done
+}
+
+set_weak(){
+    value=$1
+    shift
+    for var; do
+        eval : \${$var:=$value}
+    done
+}
+
+pushvar(){
+    for var in $*; do
+        eval level=\${${var}_level:=0}
+        eval ${var}_${level}="\$$var"
+        eval ${var}_level=$(($level+1))
+    done
+}
+
+popvar(){
+    for var in $*; do
+        eval level=\${${var}_level:-0}
+        test $level = 0 && continue
+        eval level=$(($level-1))
+        eval $var="\${${var}_${level}}"
+        eval ${var}_level=$level
+        eval unset ${var}_${level}
+    done
+}
+
+enable(){
+    set_all yes $*
+}
+
+disable(){
+    set_all no $*
+}
+
+enable_weak(){
+    set_weak yes $*
+}
+
+disable_weak(){
+    set_weak no $*
+}
+
+enable_safe(){
+    for var; do
+        enable $(echo "$var" | sed 's/[^A-Za-z0-9_]/_/g')
+    done
+}
+
+disable_safe(){
+    for var; do
+        disable $(echo "$var" | sed 's/[^A-Za-z0-9_]/_/g')
+    done
+}
+
+do_enable_deep(){
+    for var; do
+        enabled $var && continue
+        eval sel="\$${var}_select"
+        eval sgs="\$${var}_suggest"
+        pushvar var sgs
+        enable_deep $sel
+        popvar sgs
+        enable_deep_weak $sgs
+        popvar var
+    done
+}
+
+enable_deep(){
+    do_enable_deep $*
+    enable $*
+}
+
+enable_deep_weak(){
+    do_enable_deep $*
+    enable_weak $*
+}
+
+enabled(){
+    test "${1#!}" = "$1" && op== || op=!=
+    eval test "x\$${1#!}" $op "xyes"
+}
+
+disabled(){
+    test "${1#!}" = "$1" && op== || op=!=
+    eval test "x\$${1#!}" $op "xno"
+}
+
+enabled_all(){
+    for opt; do
+        enabled $opt || return 1
+    done
+}
+
+disabled_all(){
+    for opt; do
+        disabled $opt || return 1
+    done
+}
+
+enabled_any(){
+    for opt; do
+        enabled $opt && return 0
+    done
+}
+
+disabled_any(){
+    for opt; do
+        disabled $opt && return 0
+    done
+    return 1
+}
+
+set_default(){
+    for opt; do
+        eval : \${$opt:=\$${opt}_default}
+    done
+}
+
+is_in(){
+    value=$1
+    shift
+    for var in $*; do
+        [ $var = $value ] && return 0
+    done
+    return 1
+}
+
+check_deps(){
+    for cfg; do
+        cfg="${cfg#!}"
+        enabled ${cfg}_checking && die "Circular dependency for $cfg."
+        disabled ${cfg}_checking && continue
+        enable ${cfg}_checking
+
+        eval dep_all="\$${cfg}_deps"
+        eval dep_any="\$${cfg}_deps_any"
+        eval dep_sel="\$${cfg}_select"
+        eval dep_sgs="\$${cfg}_suggest"
+        eval dep_ifa="\$${cfg}_if"
+        eval dep_ifn="\$${cfg}_if_any"
+
+        pushvar cfg dep_all dep_any dep_sel dep_sgs dep_ifa dep_ifn
+        check_deps $dep_all $dep_any $dep_sel $dep_sgs $dep_ifa $dep_ifn
+        popvar cfg dep_all dep_any dep_sel dep_sgs dep_ifa dep_ifn
+
+        [ -n "$dep_ifa" ] && { enabled_all $dep_ifa && enable_weak $cfg; }
+        [ -n "$dep_ifn" ] && { enabled_any $dep_ifn && enable_weak $cfg; }
+        enabled_all  $dep_all || disable $cfg
+        enabled_any  $dep_any || disable $cfg
+        disabled_any $dep_sel && disable $cfg
+
+        if enabled $cfg; then
+            eval dep_extralibs="\$${cfg}_extralibs"
+            test -n "$dep_extralibs" && add_extralibs $dep_extralibs
+            enable_deep $dep_sel
+            enable_deep_weak $dep_sgs
+        fi
+
+        disable ${cfg}_checking
+    done
+}
+
+print_config(){
+    pfx=$1
+    header=$2
+    makefile=$3
+    shift 3
+    for cfg; do
+        ucname="$(toupper $cfg)"
+        if enabled $cfg; then
+            echo "#define ${pfx}${ucname} 1" >> $header
+            echo "${pfx}${ucname}=yes" >> $makefile
+        else
+            echo "#define ${pfx}${ucname} 0" >> $header
+            echo "!${pfx}${ucname}=yes" >> $makefile
+        fi
+    done
+}
+
+flags_saved(){
+    (: ${SAVE_CFLAGS?}) 2> /dev/null
+}
+
+save_flags(){
+    flags_saved && return
+    SAVE_CFLAGS="$CFLAGS"
+    SAVE_LDFLAGS="$LDFLAGS"
+    SAVE_extralibs="$extralibs"
+}
+
+restore_flags(){
+    flags_saved || return
+    CFLAGS="$SAVE_CFLAGS"
+    LDFLAGS="$SAVE_LDFLAGS"
+    extralibs="$SAVE_extralibs"
+    unset SAVE_CFLAGS
+    unset SAVE_LDFLAGS
+    unset SAVE_extralibs
+}
+
+temp_cflags(){
+    save_flags
+    CFLAGS="$CFLAGS $*"
+}
+
+temp_ldflags(){
+    save_flags
+    LDFLAGS="$LDFLAGS $*"
+}
+
+temp_extralibs(){
+    save_flags
+    extralibs="$extralibs $*"
+}
+
+append(){
+    var=$1
+    shift
+    flags_saved && eval "SAVE_$var=\"\$SAVE_$var $*\""
+    eval "$var=\"\$$var $*\""
+}
+
+add_cppflags(){
+    append CPPFLAGS $($filter_cppflags "$@")
+}
+
+add_cflags(){
+    append CFLAGS $($filter_cflags "$@")
+}
+
+add_asflags(){
+    append ASFLAGS $($filter_asflags "$@")
+}
+
+add_ldflags(){
+    append LDFLAGS "$@"
+}
+
+add_extralibs(){
+    append extralibs "$@"
+}
+
+check_cmd(){
+    log "$@"
+    "$@" >> $logfile 2>&1
+}
+
+check_cc(){
+    log check_cc "$@"
+    cat > $TMPC
+    log_file $TMPC
+    check_cmd $cc $CPPFLAGS $CFLAGS "$@" -c -o $TMPO $TMPC
+}
+
+check_cpp(){
+    log check_cpp "$@"
+    cat > $TMPC
+    log_file $TMPC
+    check_cmd $cc $CPPFLAGS $CFLAGS "$@" -E -o $TMPO $TMPC
+}
+
+check_as(){
+    log check_as "$@"
+    cat > $TMPC
+    log_file $TMPC
+    check_cmd $as $CPPFLAGS $ASFLAGS "$@" -c -o $TMPO $TMPC
+}
+
+check_asm(){
+    log check_asm "$@"
+    name="$1"
+    code="$2"
+    shift 2
+    disable $name
+    check_as "$@" <<EOF && enable $name
+void foo(void){ __asm__ volatile($code); }
+EOF
+}
+
+check_yasm(){
+    log check_yasm "$@"
+    echo "$1" > $TMPS
+    log_file $TMPS
+    shift 1
+    check_cmd $yasmexe $YASMFLAGS "$@" -o $TMPO $TMPS
+}
+
+check_ld(){
+    log check_ld "$@"
+    flags=''
+    libs=''
+    for f; do
+        test "${f}" = "${f#-l}" && flags="$flags $f" || libs="$libs $f"
+    done
+    check_cc $($filter_cflags $flags) || return
+    check_cmd $ld $LDFLAGS $flags -o $TMPE $TMPO $extralibs $libs
+}
+
+check_cppflags(){
+    log check_cppflags "$@"
+    set -- $($filter_cppflags "$@")
+    check_cc "$@" <<EOF && append CPPFLAGS "$@"
+int x;
+EOF
+}
+
+check_cflags(){
+    log check_cflags "$@"
+    set -- $($filter_cflags "$@")
+    check_cc "$@" <<EOF && append CFLAGS "$@"
+int x;
+EOF
+}
+
+test_ldflags(){
+    log test_ldflags "$@"
+    check_ld "$@" <<EOF
+int main(void){ return 0; }
+EOF
+}
+
+check_ldflags(){
+    log check_ldflags "$@"
+    test_ldflags "$@" && add_ldflags "$@"
+}
+
+check_header(){
+    log check_header "$@"
+    header=$1
+    shift
+    disable_safe $header
+    check_cpp "$@" <<EOF && enable_safe $header
+#include <$header>
+int x;
+EOF
+}
+
+check_func(){
+    log check_func "$@"
+    func=$1
+    shift
+    disable $func
+    check_ld "$@" <<EOF && enable $func
+extern int $func();
+int main(void){ $func(); }
+EOF
+}
+
+check_func_headers(){
+    log check_func_headers "$@"
+    headers=$1
+    func=$2
+    shift 2
+    disable $func
+    incs=""
+    for hdr in $headers; do
+        incs="$incs
+#include <$hdr>"
+    done
+    check_ld "$@" <<EOF && enable $func && enable_safe $headers
+$incs
+int main(int argc, char **argv){
+    return (long) $func;
+}
+EOF
+}
+
+check_cpp_condition(){
+    log check_cpp_condition "$@"
+    header=$1
+    condition=$2
+    shift 2
+    check_cpp $($filter_cppflags "$@") <<EOF
+#include <$header>
+#if !($condition)
+#error "unsatisfied condition: $condition"
+#endif
+EOF
+}
+
+check_lib(){
+    log check_lib "$@"
+    header="$1"
+    func="$2"
+    shift 2
+    temp_extralibs "$@"
+    check_header $header && check_func $func && add_extralibs "$@"
+    err=$?
+    restore_flags
+    return $err
+}
+
+check_lib2(){
+    log check_lib2 "$@"
+    headers="$1"
+    func="$2"
+    shift 2
+    check_func_headers "$headers" $func "$@" && add_extralibs "$@"
+}
+
+check_exec(){
+    check_ld "$@" && { enabled cross_compile || $TMPE >> $logfile 2>&1; }
+}
+
+check_exec_crash(){
+    code=$(cat)
+
+    # exit() is not async signal safe.  _Exit (C99) and _exit (POSIX)
+    # are safe but may not be available everywhere.  Thus we use
+    # raise(SIGTERM) instead.  The check is run in a subshell so we
+    # can redirect the "Terminated" message from the shell.  SIGBUS
+    # is not defined by standard C so it is used conditionally.
+
+    (check_exec "$@") >> $logfile 2>&1 <<EOF
+#include <signal.h>
+static void sighandler(int sig){
+    raise(SIGTERM);
+}
+int main(void){
+    signal(SIGILL, sighandler);
+    signal(SIGFPE, sighandler);
+    signal(SIGSEGV, sighandler);
+#ifdef SIGBUS
+    signal(SIGBUS, sighandler);
+#endif
+    { $code }
+}
+EOF
+}
+
+check_type(){
+    log check_type "$@"
+    headers=$1
+    type=$2
+    shift 2
+    disable_safe "$type"
+    incs=""
+    for hdr in $headers; do
+        incs="$incs
+#include <$hdr>"
+    done
+    check_cc "$@" <<EOF && enable_safe "$type"
+$incs
+$type v;
+EOF
+}
+
+check_struct(){
+    log check_type "$@"
+    headers=$1
+    struct=$2
+    member=$3
+    shift 3
+    disable_safe "${struct}_${member}"
+    incs=""
+    for hdr in $headers; do
+        incs="$incs
+#include <$hdr>"
+    done
+    check_cc "$@" <<EOF && enable_safe "${struct}_${member}"
+$incs
+const void *p = &(($struct *)0)->$member;
+EOF
+}
+
+require(){
+    name="$1"
+    header="$2"
+    func="$3"
+    shift 3
+    check_lib $header $func "$@" || die "ERROR: $name not found"
+}
+
+require2(){
+    name="$1"
+    headers="$2"
+    func="$3"
+    shift 3
+    check_lib2 "$headers" $func "$@" || die "ERROR: $name not found"
+}
+
+check_foo_config(){
+    cfg=$1
+    pkg=$2
+    header=$3
+    func=$4
+    shift 4
+    disable $cfg
+    check_cmd ${pkg}-config --version
+    err=$?
+    if test "$err" = 0; then
+        temp_cflags $(${pkg}-config --cflags)
+        temp_extralibs $(${pkg}-config --libs)
+        check_lib "$@" $header $func && enable $cfg
+    fi
+    return $err
+}
+
+check_host_cc(){
+    log check_host_cc "$@"
+    cat > $TMPC
+    log_file $TMPC
+    check_cmd $host_cc $host_cflags "$@" -c -o $TMPO $TMPC
+}
+
+check_host_cflags(){
+    log check_host_cflags "$@"
+    check_host_cc "$@" <<EOF && append host_cflags "$@"
+int x;
+EOF
+}
+
+apply(){
+    file=$1
+    shift
+    "$@" < "$file" > "$file.tmp" && mv "$file.tmp" "$file" || rm "$file.tmp"
+}
+
+cp_if_changed(){
+    cmp -s "$1" "$2" &&
+        echo "$2 is unchanged" ||
+        cp -f "$1" "$2"
+}
+
+# CONFIG_LIST contains configurable options, while HAVE_LIST is for
+# system-dependent things.
+
+COMPONENT_LIST="
+    bsfs
+    decoders
+    demuxers
+    encoders
+    filters
+    hwaccels
+    indevs
+    muxers
+    outdevs
+    parsers
+    protocols
+"
+
+CONFIG_LIST="
+    $COMPONENT_LIST
+    aandct
+    avcodec
+    avdevice
+    avfilter
+    avfilter_lavf
+    avformat
+    avisynth
+    beos_netserver
+    bzlib
+    dct
+    doc
+    dxva2
+    fastdiv
+    ffmpeg
+    ffplay
+    ffserver
+    fft
+    golomb
+    gpl
+    gprof
+    gray
+    hardcoded_tables
+    libdc1394
+    libdirac
+    libfaac
+    libfaad
+    libfaadbin
+    libgsm
+    libmp3lame
+    libnut
+    libopencore_amrnb
+    libopencore_amrwb
+    libopenjpeg
+    libschroedinger
+    libspeex
+    libtheora
+    libvorbis
+    libx264
+    libxvid
+    lpc
+    mdct
+    memalign_hack
+    mlib
+    mpegaudio_hp
+    network
+    nonfree
+    pic
+    postproc
+    powerpc_perf
+    rdft
+    runtime_cpudetect
+    shared
+    small
+    sram
+    static
+    swscale
+    swscale_alpha
+    vaapi
+    vdpau
+    version3
+    x11grab
+    zlib
+"
+
+THREADS_LIST='
+    beosthreads
+    os2threads
+    pthreads
+    w32threads
+'
+
+ARCH_LIST='
+    alpha
+    arm
+    avr32
+    avr32_ap
+    avr32_uc
+    bfin
+    ia64
+    m68k
+    mips
+    mips64
+    parisc
+    ppc
+    ppc64
+    s390
+    sh4
+    sparc
+    sparc64
+    x86
+    x86_32
+    x86_64
+'
+
+ARCH_EXT_LIST='
+    altivec
+    amd3dnow
+    amd3dnowext
+    armv5te
+    armv6
+    armv6t2
+    armvfp
+    iwmmxt
+    mmi
+    mmx
+    mmx2
+    neon
+    ppc4xx
+    sse
+    ssse3
+    vis
+'
+
+HAVE_LIST_PUB='
+    bigendian
+'
+
+HAVE_LIST="
+    $ARCH_EXT_LIST
+    $HAVE_LIST_PUB
+    $THREADS_LIST
+    alsa_asoundlib_h
+    altivec_h
+    arpa_inet_h
+    attribute_may_alias
+    attribute_packed
+    bswap
+    closesocket
+    cmov
+    conio_h
+    dcbzl
+    dev_bktr_ioctl_bt848_h
+    dev_bktr_ioctl_meteor_h
+    dev_ic_bt8xx_h
+    dev_video_meteor_ioctl_meteor_h
+    dev_video_bktr_ioctl_bt848_h
+    dlfcn_h
+    dlopen
+    dos_paths
+    ebp_available
+    ebx_available
+    exp2
+    exp2f
+    fast_64bit
+    fast_clz
+    fast_cmov
+    fast_unaligned
+    fork
+    getaddrinfo
+    gethrtime
+    GetProcessTimes
+    getrusage
+    inet_aton
+    inline_asm
+    isatty
+    ldbrx
+    libdc1394_1
+    libdc1394_2
+    llrint
+    log2
+    log2f
+    loongson
+    lrint
+    lrintf
+    lzo1x_999_compress
+    machine_ioctl_bt848_h
+    machine_ioctl_meteor_h
+    malloc_h
+    memalign
+    mkstemp
+    pld
+    posix_memalign_disabled
+    round
+    roundf
+    sdl
+    sdl_video_size
+    setmode
+    socklen_t
+    soundcard_h
+    poll_h
+    struct_addrinfo
+    struct_ipv6_mreq
+    struct_sockaddr_in6
+    struct_sockaddr_sa_len
+    struct_sockaddr_storage
+    sys_mman_h
+    sys_resource_h
+    sys_select_h
+    sys_soundcard_h
+    sys_videoio_h
+    ten_operands
+    termios_h
+    threads
+    truncf
+    vfp_args
+    VirtualAlloc
+    winsock2_h
+    xform_asm
+    yasm
+"
+
+# options emitted with CONFIG_ prefix but not available on command line
+CONFIG_EXTRA="
+    avutil
+    gplv3
+    lgplv3
+"
+
+CMDLINE_SELECT="
+    $ARCH_EXT_LIST
+    $CONFIG_LIST
+    $THREADS_LIST
+    asm
+    cross_compile
+    debug
+    extra_warnings
+    logging
+    optimizations
+    stripping
+    yasm
+"
+
+PATHS_LIST='
+    bindir
+    datadir
+    incdir
+    libdir
+    mandir
+    prefix
+    shlibdir
+'
+
+CMDLINE_SET="
+    $PATHS_LIST
+    arch
+    as
+    build_suffix
+    cc
+    cpu
+    cross_prefix
+    dep_cc
+    extra_version
+    host_cc
+    host_cflags
+    host_ldflags
+    host_libs
+    host_os
+    ld
+    logfile
+    malloc_prefix
+    nm
+    source_path
+    sysinclude
+    sysroot
+    target_exec
+    target_os
+    target_path
+"
+
+CMDLINE_APPEND="
+    extra_cflags
+"
+
+# code dependency declarations
+
+# architecture extensions
+
+armv5te_deps="arm"
+armv6_deps="arm"
+armv6t2_deps="arm"
+armvfp_deps="arm"
+iwmmxt_deps="arm"
+neon_deps="arm"
+
+mmi_deps="mips"
+
+altivec_deps="ppc"
+ppc4xx_deps="ppc"
+
+vis_deps="sparc"
+
+x86_64_suggest="cmov fast_cmov"
+amd3dnow_deps="mmx"
+amd3dnowext_deps="amd3dnow"
+mmx_deps="x86"
+mmx2_deps="mmx"
+sse_deps="mmx"
+ssse3_deps="sse"
+
+fast_64bit_if_any="alpha ia64 mips64 parisc64 ppc64 sparc64 x86_64"
+fast_clz_if_any="alpha armv5te avr32 mips ppc x86"
+fast_unaligned_if_any="armv6 ppc x86"
+
+need_memalign="altivec neon sse"
+inline_asm_deps="!tms470"
+
+# decoders / encoders / hardware accelerators
+aac_decoder_select="fft mdct aac_parser"
+aac_encoder_select="fft mdct"
+ac3_decoder_select="fft mdct ac3_parser"
+alac_encoder_select="lpc"
+atrac3_decoder_select="fft mdct"
+binkaudio_dct_decoder_select="fft mdct rdft dct"
+binkaudio_rdft_decoder_select="fft mdct rdft"
+cavs_decoder_select="golomb"
+cook_decoder_select="fft mdct"
+cscd_decoder_suggest="zlib"
+dca_decoder_select="fft mdct"
+dnxhd_encoder_select="aandct"
+dxa_decoder_select="zlib"
+eac3_decoder_select="ac3_decoder"
+eamad_decoder_select="aandct"
+eatgq_decoder_select="aandct"
+eatqi_decoder_select="aandct"
+ffv1_decoder_select="golomb"
+flac_decoder_select="golomb"
+flac_encoder_select="golomb lpc"
+flashsv_decoder_select="zlib"
+flashsv_encoder_select="zlib"
+flv_decoder_select="h263_decoder"
+flv_encoder_select="h263_encoder"
+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_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"
+jpegls_encoder_select="golomb"
+ljpeg_encoder_select="aandct"
+loco_decoder_select="golomb"
+mjpeg_encoder_select="aandct"
+mlp_decoder_select="mlp_parser"
+mpeg1video_encoder_select="aandct"
+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"
+msmpeg4v1_decoder_select="h263_decoder"
+msmpeg4v1_encoder_select="h263_encoder"
+msmpeg4v2_decoder_select="h263_decoder"
+msmpeg4v2_encoder_select="h263_encoder"
+msmpeg4v3_decoder_select="h263_decoder"
+msmpeg4v3_encoder_select="h263_encoder"
+nellymoser_decoder_select="fft mdct"
+nellymoser_encoder_select="fft mdct"
+png_decoder_select="zlib"
+png_encoder_select="zlib"
+qdm2_decoder_select="fft mdct rdft"
+rv10_decoder_select="h263_decoder"
+rv10_encoder_select="h263_encoder"
+rv20_decoder_select="h263_decoder"
+rv20_encoder_select="h263_encoder"
+rv30_decoder_select="golomb"
+rv40_decoder_select="golomb"
+shorten_decoder_select="golomb"
+sonic_decoder_select="golomb"
+sonic_encoder_select="golomb"
+sonic_ls_encoder_select="golomb"
+svq3_decoder_select="golomb"
+svq3_decoder_suggest="zlib"
+theora_decoder_select="vp3_decoder"
+tiff_decoder_suggest="zlib"
+tiff_encoder_suggest="zlib"
+truehd_decoder_select="mlp_decoder"
+tscc_decoder_select="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="fft mdct"
+vorbis_encoder_select="fft mdct"
+vp6a_decoder_select="vp6_decoder"
+vp6f_decoder_select="vp6_decoder"
+wmav1_decoder_select="fft mdct"
+wmav1_encoder_select="fft mdct"
+wmav2_decoder_select="fft mdct"
+wmav2_encoder_select="fft mdct"
+wmv1_decoder_select="h263_decoder"
+wmv1_encoder_select="h263_encoder"
+wmv2_decoder_select="h263_decoder"
+wmv2_encoder_select="h263_encoder"
+wmv3_decoder_select="vc1_decoder"
+wmv3_dxva2_hwaccel_select="vc1_dxva2_hwaccel"
+wmv3_vaapi_hwaccel_select="vc1_vaapi_hwaccel"
+wmv3_vdpau_decoder_select="vc1_vdpau_decoder"
+zlib_decoder_select="zlib"
+zlib_encoder_select="zlib"
+zmbv_decoder_select="zlib"
+zmbv_encoder_select="zlib"
+
+# parsers
+h264_parser_select="golomb"
+
+# bitstream_filters
+aac_adtstoasc_bsf_select="aac_parser"
+
+# external libraries
+libdirac_decoder_deps="libdirac !libschroedinger"
+libdirac_encoder_deps="libdirac"
+libfaac_encoder_deps="libfaac"
+libfaad_decoder_deps="libfaad"
+libfaadbin_decoder_extralibs='$ldl'
+libgsm_decoder_deps="libgsm"
+libgsm_encoder_deps="libgsm"
+libgsm_ms_decoder_deps="libgsm"
+libgsm_ms_encoder_deps="libgsm"
+libmp3lame_encoder_deps="libmp3lame"
+libopencore_amrnb_decoder_deps="libopencore_amrnb"
+libopencore_amrnb_encoder_deps="libopencore_amrnb"
+libopencore_amrwb_decoder_deps="libopencore_amrwb"
+libopenjpeg_decoder_deps="libopenjpeg"
+libschroedinger_decoder_deps="libschroedinger"
+libschroedinger_encoder_deps="libschroedinger"
+libspeex_decoder_deps="libspeex"
+libtheora_encoder_deps="libtheora"
+libvorbis_encoder_deps="libvorbis"
+libx264_encoder_deps="libx264"
+libxvid_encoder_deps="libxvid"
+
+# demuxers / muxers
+ac3_demuxer_deps="ac3_parser"
+asf_stream_muxer_select="asf_muxer"
+avisynth_demuxer_deps="avisynth"
+dirac_demuxer_deps="dirac_parser"
+eac3_demuxer_select="ac3_parser"
+ipod_muxer_select="mov_muxer"
+libnut_demuxer_deps="libnut"
+libnut_muxer_deps="libnut"
+matroska_audio_muxer_select="matroska_muxer"
+matroska_demuxer_suggest="zlib bzlib"
+mov_demuxer_suggest="zlib"
+mp3_demuxer_deps="mpegaudio_parser"
+mp4_muxer_select="mov_muxer"
+mpegtsraw_demuxer_select="mpegts_demuxer"
+mxf_d10_muxer_select="mxf_muxer"
+ogg_demuxer_select="golomb"
+psp_muxer_select="mov_muxer"
+rtsp_demuxer_deps="sdp_demuxer"
+sdp_demuxer_deps="rtp_protocol mpegts_demuxer"
+spdif_muxer_select="aac_parser"
+tg2_muxer_select="mov_muxer"
+tgp_muxer_select="mov_muxer"
+w64_demuxer_deps="wav_demuxer"
+
+# indevs / outdevs
+alsa_indev_deps="alsa_asoundlib_h snd_pcm_htimestamp"
+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"
+jack_indev_extralibs="-ljack"
+libdc1394_indev_deps="libdc1394"
+oss_indev_deps_any="soundcard_h sys_soundcard_h"
+oss_outdev_deps_any="soundcard_h sys_soundcard_h"
+v4l_indev_deps="linux_videodev_h"
+v4l2_indev_deps_any="linux_videodev2_h sys_videoio_h"
+vfwcap_indev_deps="capCreateCaptureWindow"
+vfwcap_indev_extralibs="-lavicap32"
+x11_grab_device_indev_deps="x11grab XShmCreateImage"
+x11_grab_device_indev_extralibs="-lX11 -lXext -lXfixes"
+
+# protocols
+gopher_protocol_deps="network"
+http_protocol_deps="network"
+rtmp_protocol_deps="tcp_protocol"
+rtp_protocol_deps="udp_protocol"
+tcp_protocol_deps="network"
+udp_protocol_deps="network"
+
+# filters
+movie_filter_deps="avfilter_lavf"
+avfilter_lavf_deps="avformat"
+
+# libraries
+avdevice_deps="avcodec avformat"
+avformat_deps="avcodec"
+
+# programs
+ffmpeg_deps="avcodec avformat swscale"
+ffplay_deps="avcodec avformat swscale sdl"
+ffserver_deps="avformat ffm_muxer rtp_protocol rtsp_demuxer"
+ffserver_extralibs='$ldl'
+
+doc_deps="texi2html"
+
+# default parameters
+
+logfile="config.err"
+
+# installation paths
+prefix_default="/usr/local"
+bindir_default='${prefix}/bin'
+datadir_default='${prefix}/share/ffmpeg'
+incdir_default='${prefix}/include'
+libdir_default='${prefix}/lib'
+mandir_default='${prefix}/share/man'
+shlibdir_default="$libdir_default"
+
+# toolchain
+ar="ar"
+cc_default="gcc"
+cc_version=\"unknown\"
+host_cc_default="gcc"
+ln_s="ln -sf"
+nm_default="nm"
+objformat="elf"
+ranlib="ranlib"
+strip="strip"
+yasmexe="yasm"
+
+nm_opts='-g'
+
+# machine
+arch=$(uname -m)
+cpu="generic"
+
+# OS
+target_os=$(tolower $(uname -s))
+host_os=$target_os
+
+# configurable options
+enable avcodec
+enable avdevice
+enable avformat
+enable avutil
+enable asm
+enable debug
+enable doc
+enable fastdiv
+enable ffmpeg
+enable ffplay
+enable ffserver
+enable mpegaudio_hp
+enable network
+enable optimizations
+enable protocols
+enable static
+enable stripping
+enable swscale
+enable swscale_alpha
+
+# build settings
+SHFLAGS='-shared -Wl,-soname,$$(@F)'
+FFSERVERLDFLAGS=-Wl,-E
+LIBPREF="lib"
+LIBSUF=".a"
+FULLNAME='$(NAME)$(BUILDSUF)'
+LIBNAME='$(LIBPREF)$(FULLNAME)$(LIBSUF)'
+SLIBPREF="lib"
+SLIBSUF=".so"
+SLIBNAME='$(SLIBPREF)$(FULLNAME)$(SLIBSUF)'
+SLIBNAME_WITH_VERSION='$(SLIBNAME).$(LIBVERSION)'
+SLIBNAME_WITH_MAJOR='$(SLIBNAME).$(LIBMAJOR)'
+LIB_INSTALL_EXTRA_CMD='$(RANLIB) "$(LIBDIR)/$(LIBNAME)"'
+
+CC_O='-o $@'
+
+host_cflags='-D_ISOC99_SOURCE -D_POSIX_C_SOURCE=200112 -O3 -g -Wall'
+host_libs='-lm'
+
+target_path='$(CURDIR)'
+
+# gcc stupidly only outputs the basename of targets with -MM, but we need the
+# full relative path for objects in subdirectories for non-recursive Make.
+DEPEND_CMD='$(DEPCC) $(DEPFLAGS) $< | sed -e "/^\#.*/d" -e "s,^[[:space:]]*$(*F)\\.o,$(@D)/$(*F).o," > $(@:.o=.d)'
+DEPFLAGS='$(CPPFLAGS) $(CFLAGS) -MM'
+
+# find source path
+source_path="$(dirname "$0")"
+enable source_path_used
+if test -f configure; then
+    source_path="$(pwd)"
+    disable source_path_used
+else
+    source_path="$(cd "$source_path"; pwd)"
+    echo "$source_path" | grep -q '[[:blank:]]' &&
+        die "Out of tree builds are impossible with whitespace in source path."
+    test -e "$source_path/config.h" &&
+        die "Out of tree builds are impossible with config.h in source dir."
+fi
+
+for v in "$@"; do
+    r=${v#*=}
+    l=${v%"$r"}
+    r=$(sh_quote "$r")
+    FFMPEG_CONFIGURATION="${FFMPEG_CONFIGURATION# } ${l}${r}"
+done
+
+find_things(){
+    thing=$1
+    pattern=$2
+    file=$source_path/$3
+    sed -n "s/^[^#]*$pattern.*([^,]*, *\([^,]*\)\(,.*\)*).*/\1_$thing/p" "$file"
+}
+
+ENCODER_LIST=$(find_things  encoder  ENC      libavcodec/allcodecs.c)
+DECODER_LIST=$(find_things  decoder  DEC      libavcodec/allcodecs.c)
+HWACCEL_LIST=$(find_things  hwaccel  HWACCEL  libavcodec/allcodecs.c)
+PARSER_LIST=$(find_things   parser   PARSER   libavcodec/allcodecs.c)
+BSF_LIST=$(find_things      bsf      BSF      libavcodec/allcodecs.c)
+MUXER_LIST=$(find_things    muxer    _MUX     libavformat/allformats.c)
+DEMUXER_LIST=$(find_things  demuxer  DEMUX    libavformat/allformats.c)
+OUTDEV_LIST=$(find_things   outdev   OUTDEV   libavdevice/alldevices.c)
+INDEV_LIST=$(find_things    indev    _IN      libavdevice/alldevices.c)
+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 \
+
+die_unknown(){
+    echo "Unknown option \"$1\"."
+    echo "See $0 --help for available options."
+    exit 1
+}
+
+show_list() {
+    suffix=_$1
+    shift
+    echo $* | sed s/$suffix//g | tr ' ' '\n' | sort | pr -3 -t
+    exit 0
+}
+
+for opt do
+    optval="${opt#*=}"
+    case "$opt" in
+    --extra-ldflags=*) add_ldflags $optval
+    ;;
+    --extra-libs=*) add_extralibs $optval
+    ;;
+    --disable-devices) disable $INDEV_LIST $OUTDEV_LIST
+    ;;
+    --enable-debug=*) debuglevel="$optval"
+    ;;
+    --enable-*=*|--disable-*=*)
+    eval $(echo "${opt%%=*}" | sed 's/--/action=/;s/-/ thing=/')
+    is_in "${thing}s" $COMPONENT_LIST || die_unknown "$opt"
+    eval list=\$$(toupper $thing)_LIST
+    name=$(echo "${optval}" | sed "s/,/_${thing}|/g")_${thing}
+    $action $(filter "$name" $list)
+    ;;
+    --enable-?*|--disable-?*)
+    eval $(echo "$opt" | sed 's/--/action=/;s/-/ option=/;s/-/_/g')
+    if is_in $option $COMPONENT_LIST; then
+        test $action = disable && action=unset
+        eval $action \$$(toupper ${option%s})_LIST
+    elif is_in $option $CMDLINE_SELECT; then
+        $action $option
+    else
+        die_unknown $opt
+    fi
+    ;;
+    --list-*)
+        NAME="${opt#--list-}"
+        is_in $NAME $COMPONENT_LIST || die_unknown $opt
+        NAME=${NAME%s}
+        eval show_list $NAME \$$(toupper $NAME)_LIST
+    ;;
+    --help|-h) show_help
+    ;;
+    *)
+    optname="${opt%%=*}"
+    optname="${optname#--}"
+    optname=$(echo "$optname" | sed 's/-/_/g')
+    if is_in $optname $CMDLINE_SET; then
+        eval $optname='$optval'
+    elif is_in $optname $CMDLINE_APPEND; then
+        append $optname "$optval"
+    else
+         die_unknown $opt
+    fi
+    ;;
+    esac
+done
+
+disabled logging && logfile=/dev/null
+
+echo "# $0 $FFMPEG_CONFIGURATION" > $logfile
+set >> $logfile
+
+test -n "$cross_prefix" && enable cross_compile
+
+ar="${cross_prefix}${ar}"
+cc_default="${cross_prefix}${cc_default}"
+nm_default="${cross_prefix}${nm_default}"
+ranlib="${cross_prefix}${ranlib}"
+strip="${cross_prefix}${strip}"
+
+sysinclude_default="${sysroot}/usr/include"
+
+set_default cc nm sysinclude
+enabled cross_compile || host_cc_default=$cc
+set_default host_cc
+
+exesuf() {
+    case $1 in
+        mingw32*|cygwin*|*-dos|freedos|opendos|os/2*) echo .exe ;;
+    esac
+}
+
+EXESUF=$(exesuf $target_os)
+HOSTEXESUF=$(exesuf $host_os)
+
+# set temporary file name
+: ${TMPDIR:=$TEMPDIR}
+: ${TMPDIR:=$TMP}
+: ${TMPDIR:=/tmp}
+
+if ! check_cmd type mktemp; then
+    # simple replacement for missing mktemp
+    # NOT SAFE FOR GENERAL USE
+    mktemp(){
+        echo "${2%XXX*}.${HOSTNAME}.${UID}.$$"
+    }
+fi
+
+tmpfile(){
+    tmp=$(mktemp -u "${TMPDIR}/ffconf.XXXXXXXX")$2 &&
+        (set -C; exec > $tmp) 2>/dev/null ||
+        die "Unable to create temporary file in $TMPDIR."
+    append TMPFILES $tmp
+    eval $1=$tmp
+}
+
+trap 'rm -f -- $TMPFILES' EXIT
+trap exit HUP INT TERM
+
+tmpfile TMPC  .c
+tmpfile TMPE  $EXESUF
+tmpfile TMPH  .h
+tmpfile TMPO  .o
+tmpfile TMPS  .S
+tmpfile TMPV  .ver
+tmpfile TMPSH .sh
+
+unset -f mktemp
+
+# make sure we can execute files in $TMPDIR
+cat > $TMPSH 2>> $logfile <<EOF
+#! /bin/sh
+EOF
+chmod +x $TMPSH >> $logfile 2>&1
+if ! $TMPSH >> $logfile 2>&1; then
+    cat <<EOF
+Unable to create and execute files in $TMPDIR.  Set the TMPDIR environment
+variable to another directory and make sure that it is not mounted noexec.
+EOF
+    die "Sanity test failed."
+fi
+
+filter_cflags=echo
+filter_cppflags=echo
+filter_asflags=echo
+
+if   $cc -v 2>&1 | grep -qi ^gcc; then
+    cc_type=gcc
+    cc_version=__VERSION__
+    if ! $cc -dumpversion | grep -q '^2\.'; then
+        CC_DEPFLAGS='-MMD -MF $(@:.o=.d) -MT $@'
+        AS_DEPFLAGS='-MMD -MF $(@:.o=.d) -MT $@'
+    fi
+    speed_cflags='-O3'
+    size_cflags='-Os'
+elif $cc --version 2>/dev/null | grep -q Intel; then
+    cc_type=icc
+    cc_version="AV_STRINGIFY(__INTEL_COMPILER)"
+    CC_DEPFLAGS='-MMD'
+    AS_DEPFLAGS='-MMD'
+    speed_cflags='-O3'
+    size_cflags='-Os'
+elif $cc -v 2>&1 | grep -q xlc; then
+    cc_type=xlc
+    cc_version="AV_STRINGIFY(__IBMC__)"
+    speed_cflags='-O5'
+    size_cflags='-O5 -qcompact'
+elif $cc -V 2>/dev/null | grep -q Compaq; then
+    cc_type=ccc
+    cc_version="AV_STRINGIFY(__DECC_VER)"
+    DEPFLAGS='$(CPPFLAGS) $(CFLAGS) -M'
+    debuglevel=3
+    add_ldflags -Wl,-z,now # calls to libots crash without this
+    speed_cflags='-fast'
+    size_cflags='-O1'
+elif $cc --vsn 2>/dev/null | grep -q "ARM C/C++ Compiler"; then
+    test -d "$sysroot" || die "No valid sysroot specified."
+    cc_type=armcc
+    cc_version="AV_STRINGIFY(__ARMCC_VERSION)"
+    armcc_conf="$PWD/armcc.conf"
+    $cc --arm_linux_configure                 \
+        --arm_linux_config_file="$armcc_conf" \
+        --configure_sysroot="$sysroot"        \
+        --configure_cpp_headers="$sysinclude" >>$logfile 2>&1 ||
+        die "Error creating armcc configuration file."
+    cc="$cc --arm_linux_config_file=$armcc_conf --translate_gcc"
+    as_default="${cross_prefix}gcc"
+    CC_DEPFLAGS='-MMD'
+    AS_DEPFLAGS='-MMD'
+    speed_cflags='-O3'
+    size_cflags='-Os'
+elif $cc -version 2>/dev/null | grep -q TMS470; then
+    cc_type=tms470
+    cc_version="AV_STRINGIFY(__TI_COMPILER_VERSION__)"
+    cc="$cc --gcc --abi=eabi -eo=.o -mc -me"
+    CC_O='-fr=$(@D)'
+    as_default="${cross_prefix}gcc"
+    ld_default="${cross_prefix}gcc"
+    TMPO=$(basename $TMPC .c).o
+    append TMPFILES $TMPO
+    add_cflags -D__gnuc_va_list=va_list -D__USER_LABEL_PREFIX__=
+    CC_DEPFLAGS='-ppa -ppd=$(@:.o=.d)'
+    AS_DEPFLAGS='-MMD'
+    speed_cflags='-O3 -mf=5'
+    size_cflags='-O3 -mf=2'
+    filter_cflags=tms470_flags
+    tms470_flags(){
+        for flag; do
+            case $flag in
+                -march=*|-mcpu=*)
+                    case "${flag#*=}" in
+                        armv7-a|cortex-a*)      echo -mv=7a8 ;;
+                        armv7-r|cortex-r*)      echo -mv=7r4 ;;
+                        armv7-m|cortex-m*)      echo -mv=7m3 ;;
+                        armv6*|arm11*)          echo -mv=6   ;;
+                        armv5*e|arm[79]*e*|arm9[24]6*|arm96*|arm102[26])
+                                                echo -mv=5e  ;;
+                        armv4*|arm7*|arm9[24]*) echo -mv=4   ;;
+                    esac
+                    ;;
+                -mfpu=neon)     echo --float_support=vfpv3 --neon ;;
+                -mfpu=vfp)      echo --float_support=vfpv2        ;;
+                -mfpu=vfpv3)    echo --float_support=vfpv3        ;;
+                -msoft-float)   echo --float_support=vfplib       ;;
+                -O[0-3]|-mf=*)  echo $flag                        ;;
+                -g)             echo -g -mn                       ;;
+                -pds=*)         echo $flag                        ;;
+            esac
+        done
+    }
+elif $cc -v 2>&1 | grep -q clang; then
+    cc_type=clang
+    cc_version=__VERSION__
+    CC_DEPFLAGS='-MMD'
+    AS_DEPFLAGS='-MMD'
+    speed_cflags='-O3'
+    size_cflags='-Os'
+elif $cc -V 2>&1 | grep -q Sun; then
+    cc_type=suncc
+    cc_version="AV_STRINGIFY(__SUNPRO_C)"
+    DEPEND_CMD='$(DEPCC) $(DEPFLAGS) $< | sed -e "1s,^.*: ,$@: ," -e "\$$!s,\$$, \\\," -e "1!s,^.*: , ," > $(@:.o=.d)'
+    DEPFLAGS='$(CPPFLAGS) $(CFLAGS) -xM1'
+    speed_cflags='-O5'
+    size_cflags='-O5 -xspace'
+    filter_cflags=suncc_flags
+    suncc_flags(){
+        for flag; do
+            case $flag in
+                -march=*|-mcpu=*)
+                    case "${flag#*=}" in
+                        native)                   echo -xtarget=native       ;;
+                        v9)                       echo -xarch=sparc          ;;
+                        ultrasparc)               echo -xarch=sparcvis       ;;
+                        ultrasparc3|niagara*)     echo -xarch=sparcvis2      ;;
+                        i586|pentium)             echo -xchip=pentium        ;;
+                        i686|pentiumpro|pentium2) echo -xtarget=pentium_pro  ;;
+                        pentium3*|c3-2)           echo -xtarget=pentium3     ;;
+                        pentium-m)          echo -xarch=sse2 -xchip=pentium3 ;;
+                        pentium4*)          echo -xtarget=pentium4           ;;
+                        prescott|nocona)    echo -xarch=sse3 -xchip=pentium4 ;;
+                        *-sse3)             echo -xarch=sse3                 ;;
+                        core2)              echo -xarch=ssse3 -xchip=core2   ;;
+                        amdfam10|barcelona)       echo -xarch=sse4_1         ;;
+                        athlon-4|athlon-[mx]p)    echo -xarch=ssea           ;;
+                        k8|opteron|athlon64|athlon-fx)
+                                                  echo -xarch=sse2a          ;;
+                        athlon*)                  echo -xarch=pentium_proa   ;;
+                    esac
+                    ;;
+                -std=c99)             echo -xc99              ;;
+                -fomit-frame-pointer) echo -xregs=frameptr    ;;
+                -fPIC)                echo -KPIC -xcode=pic32 ;;
+                -W*,*)                echo $flag              ;;
+                -f*-*|-W*)                                    ;;
+                *)                    echo $flag              ;;
+            esac
+        done
+    }
+fi
+
+test -n "$cc_type" && enable $cc_type || echolog "Unknown C compiler $cc"
+
+: ${as_default:=$cc}
+: ${dep_cc_default:=$cc}
+: ${ld_default:=$cc}
+set_default as dep_cc ld
+
+test -n "$CC_DEPFLAGS" || CCDEP=$DEPEND_CMD
+test -n "$AS_DEPFLAGS" || ASDEP=$DEPEND_CMD
+
+add_cflags $extra_cflags
+add_asflags $extra_cflags
+
+if test -n "$sysroot"; then
+    case "$cc_type" in
+        gcc)
+            add_cppflags --sysroot="$sysroot"
+            add_ldflags --sysroot="$sysroot"
+        ;;
+        tms470)
+            add_cppflags -I"$sysinclude"
+            add_ldflags  --sysroot="$sysroot"
+        ;;
+        clang)
+            add_cppflags -isysroot="$sysroot"
+            add_ldflags -isysroot="$sysroot"
+        ;;
+    esac
+fi
+
+if test "$cpu" = host; then
+    enabled cross_compile && die "--cpu=host makes no sense when cross-compiling."
+
+    case "$cc_type" in
+        gcc)
+            check_native(){
+                $cc $1=native -v -c -o $TMPO $TMPC >$TMPE 2>&1 || return
+                sed -n "/$1=/{
+                            s/.*$1=\\([^ ]*\\).*/\\1/
+                            p
+                            q
+                        }" $TMPE
+            }
+            cpu=$(check_native -march || check_native -mcpu)
+        ;;
+    esac
+
+    test "${cpu:-host}" = host && die "--cpu=host not supported with compiler $cc"
+fi
+
+# Deal with common $arch aliases
+case "$arch" in
+    arm*)
+        arch="arm"
+    ;;
+    mips|mipsel|IP*)
+        arch="mips"
+    ;;
+    mips64)
+        arch="mips"
+        subarch="mips64"
+    ;;
+    parisc|hppa)
+        arch="parisc"
+    ;;
+    parisc64|hppa64)
+        arch="parisc"
+        subarch="parisc64"
+    ;;
+    "Power Macintosh"|ppc|powerpc)
+        arch="ppc"
+    ;;
+    ppc64)
+        arch="ppc"
+        subarch="ppc64"
+    ;;
+    s390|s390x)
+        arch="s390"
+    ;;
+    sh4|sh)
+        arch="sh4"
+    ;;
+    sun4u|sparc64)
+        arch="sparc"
+        subarch="sparc64"
+    ;;
+    i[3-6]86|i86pc|BePC|x86_64|amd64)
+        arch="x86"
+    ;;
+esac
+
+is_in $arch $ARCH_LIST || echo "WARNING: unknown arch $arch"
+enable $arch
+
+# Add processor-specific flags
+if test "$cpu" = generic; then
+    : do nothing
+elif enabled ppc; then
+
+    case $(tolower $cpu) in
+        601|ppc601|powerpc601)
+            cpuflags="-mcpu=601"
+            disable altivec
+        ;;
+        603*|ppc603*|powerpc603*)
+            cpuflags="-mcpu=603"
+            disable altivec
+        ;;
+        604*|ppc604*|powerpc604*)
+            cpuflags="-mcpu=604"
+            disable altivec
+        ;;
+        g3|75*|ppc75*|powerpc75*)
+            cpuflags="-mcpu=750 -mpowerpc-gfxopt"
+            disable altivec
+        ;;
+        g4|745*|ppc745*|powerpc745*)
+            cpuflags="-mcpu=7450 -mpowerpc-gfxopt"
+        ;;
+        74*|ppc74*|powerpc74*)
+            cpuflags="-mcpu=7400 -mpowerpc-gfxopt"
+        ;;
+        g5|970|ppc970|powerpc970|power4*)
+            cpuflags="-mcpu=970 -mpowerpc-gfxopt -mpowerpc64"
+        ;;
+        cell)
+            cpuflags="-mcpu=cell"
+            enable ldbrx
+        ;;
+        e500v2)
+            cpuflags="-mcpu=8548 -mhard-float -mfloat-gprs=double"
+            disable altivec
+        ;;
+        e500)
+            cpuflags="-mcpu=8540 -mhard-float"
+            disable altivec
+        ;;
+    esac
+
+elif enabled x86; then
+
+    case $cpu in
+        i[345]86|pentium)
+            cpuflags="-march=$cpu"
+            disable mmx
+        ;;
+        # targets that do NOT support conditional mov (cmov)
+        pentium-mmx|k6|k6-[23]|winchip-c6|winchip2|c3)
+            cpuflags="-march=$cpu"
+            disable cmov
+        ;;
+        # targets that do support conditional mov (cmov)
+        i686|pentiumpro|pentium[23]|pentium-m|athlon|athlon-tbird|athlon-4|athlon-[mx]p|athlon64|k8|opteron|athlon-fx|core2|amdfam10)
+            cpuflags="-march=$cpu"
+            enable cmov
+            enable fast_cmov
+        ;;
+        # targets that do support conditional mov but on which it's slow
+        pentium4|pentium4m|prescott|nocona)
+            cpuflags="-march=$cpu"
+            enable cmov
+            disable fast_cmov
+        ;;
+    esac
+
+elif enabled sparc; then
+
+    case $cpu in
+        sparc64)
+            cpuflags="-mcpu=v9"
+        ;;
+    esac
+
+elif enabled arm; then
+
+    case $cpu in
+        armv*)
+            cpuflags="-march=$cpu"
+        ;;
+        *)
+            cpuflags="-mcpu=$cpu"
+        ;;
+    esac
+
+elif enabled alpha; then
+
+    enabled ccc && cpuflags="-arch $cpu" || cpuflags="-mcpu=$cpu"
+
+elif enabled bfin; then
+
+    cpuflags="-mcpu=$cpu"
+
+elif enabled mips; then
+
+    cpuflags="-march=$cpu"
+
+elif enabled avr32; then
+
+    case $cpu in
+        ap7[02]0[0-2])
+            subarch="avr32_ap"
+            cpuflags="-mpart=$cpu"
+        ;;
+        ap)
+            subarch="avr32_ap"
+            cpuflags="-march=$cpu"
+        ;;
+        uc3[ab]*)
+            subarch="avr32_uc"
+            cpuflags="-mcpu=$cpu"
+        ;;
+        uc)
+            subarch="avr32_uc"
+            cpuflags="-march=$cpu"
+        ;;
+    esac
+
+fi
+
+add_cflags $cpuflags
+add_asflags $cpuflags
+
+# compiler sanity check
+check_exec <<EOF
+int main(void){ return 0; }
+EOF
+if test "$?" != 0; then
+    echo "$cc is unable to create an executable file."
+    if test -z "$cross_prefix" && ! enabled cross_compile ; then
+        echo "If $cc is a cross-compiler, use the --enable-cross-compile option."
+        echo "Only do this if you know what cross compiling means."
+    fi
+    die "C compiler test failed."
+fi
+
+add_cppflags -D_ISOC99_SOURCE -D_POSIX_C_SOURCE=200112
+check_cflags -std=c99
+check_cc -D_FILE_OFFSET_BITS=64 <<EOF && add_cppflags -D_FILE_OFFSET_BITS=64
+#include <stdlib.h>
+EOF
+check_cc -D_LARGEFILE_SOURCE <<EOF && add_cppflags -D_LARGEFILE_SOURCE
+#include <stdlib.h>
+EOF
+
+check_host_cflags -std=c99
+
+case "$arch" in
+    alpha|ia64|mips|parisc|sparc)
+        spic=$shared
+    ;;
+    x86)
+        subarch="x86_32"
+        check_cc <<EOF && subarch="x86_64"
+        int test[(int)sizeof(char*) - 7];
+EOF
+        if test "$subarch" = "x86_64"; then
+            spic=$shared
+        fi
+    ;;
+esac
+
+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 ;;
+    sunos)
+        FFSERVERLDFLAGS=""
+        SHFLAGS='-shared -Wl,-h,$$(@F)'
+        enabled x86 && SHFLAGS="-mimpure-text $SHFLAGS"
+        network_extralibs="-lsocket -lnsl"
+        add_cppflags -D__EXTENSIONS__
+        nm_opts='-P -g'
+        ;;
+    netbsd)
+        oss_indev_extralibs="-lossaudio"
+        oss_outdev_extralibs="-lossaudio"
+        ;;
+    openbsd)
+        enable malloc_aligned
+        # On OpenBSD 4.5. the compiler does not use PIC unless
+        # explicitly using -fPIC. FFmpeg builds fine without PIC,
+        # however the generated executable will not do anything
+        # (simply quits with exit-code 1, no crash, no output).
+        # Thus explicitly enable PIC here.
+        enable pic
+        SHFLAGS='-shared'
+        oss_indev_extralibs="-lossaudio"
+        oss_outdev_extralibs="-lossaudio"
+        ;;
+    freebsd|dragonfly)
+        enable malloc_aligned
+        ;;
+    bsd/os)
+        osextralibs="-lpoll -lgnugetopt"
+        strip="strip -d"
+        ;;
+    darwin)
+        enable malloc_aligned
+        SHFLAGS='-dynamiclib -Wl,-single_module -Wl,-install_name,$(SHLIBDIR)/$(SLIBNAME),-current_version,$(LIBVERSION),-compatibility_version,$(LIBMAJOR) -Wl,-read_only_relocs,suppress'
+        strip="strip -x"
+        FFLDFLAGS="-Wl,-dynamic,-search_paths_first"
+        SLIBSUF=".dylib"
+        SLIBNAME_WITH_VERSION='$(SLIBPREF)$(FULLNAME).$(LIBVERSION)$(SLIBSUF)'
+        SLIBNAME_WITH_MAJOR='$(SLIBPREF)$(FULLNAME).$(LIBMAJOR)$(SLIBSUF)'
+        FFSERVERLDFLAGS=-Wl,-bind_at_load
+        objformat="macho"
+        enabled x86_64 && objformat="macho64"
+        enabled_any pic shared ||
+            { check_cflags -mdynamic-no-pic && add_asflags -mdynamic-no-pic; }
+        ;;
+    mingw32*)
+        if test $target_os = "mingw32ce"; then
+            disable network
+        else
+            target_os=mingw32
+        fi
+        LIBTARGET=i386
+        if enabled x86_64; then
+            enable malloc_aligned
+            LIBTARGET=x64
+        elif enabled arm; then
+            LIBTARGET=arm
+        fi
+        shlibdir_default="$bindir_default"
+        disable ffserver
+        SLIBPREF=""
+        SLIBSUF=".dll"
+        SLIBNAME_WITH_VERSION='$(SLIBPREF)$(FULLNAME)-$(LIBVERSION)$(SLIBSUF)'
+        SLIBNAME_WITH_MAJOR='$(SLIBPREF)$(FULLNAME)-$(LIBMAJOR)$(SLIBSUF)'
+        SLIB_EXTRA_CMD='-lib.exe /machine:$(LIBTARGET) /def:$$(@:$(SLIBSUF)=.def) /out:$(SUBDIR)$(SLIBNAME_WITH_MAJOR:$(SLIBSUF)=.lib)'
+        SLIB_INSTALL_EXTRA_CMD='-install -m 644 $(SUBDIR)$(SLIBNAME_WITH_MAJOR:$(SLIBSUF)=.lib) "$(SHLIBDIR)/$(SLIBNAME:$(SLIBSUF)=.lib)"; \
+            install -m 644 $(SUBDIR)$(SLIBNAME_WITH_MAJOR:$(SLIBSUF)=.lib) "$(SHLIBDIR)/$(SLIBNAME_WITH_MAJOR:$(SLIBSUF)=.lib)"; \
+            install -d "$(LIBDIR)"; \
+            install -m 644 $(SUBDIR)lib$(SLIBNAME:$(SLIBSUF)=.dll.a) "$(LIBDIR)/lib$(SLIBNAME:$(SLIBSUF)=.dll.a)"'
+        SLIB_UNINSTALL_EXTRA_CMD='rm -f "$(SHLIBDIR)/$(SLIBNAME:$(SLIBSUF)=.lib)"'
+        SHFLAGS='-shared -Wl,--output-def,$$(@:$(SLIBSUF)=.def) -Wl,--out-implib,$(SUBDIR)lib$(SLIBNAME:$(SLIBSUF)=.dll.a) -Wl,--enable-runtime-pseudo-reloc -Wl,--enable-auto-image-base'
+        objformat="win32"
+        enable dos_paths
+        check_cflags -fno-common
+        if ! enabled x86_64; then
+            check_cpp_condition _mingw.h "(__MINGW32_MAJOR_VERSION > 3) || (__MINGW32_MAJOR_VERSION == 3 && __MINGW32_MINOR_VERSION >= 15)" ||
+                die "ERROR: MinGW runtime version must be >= 3.15."
+            enabled_any avisynth vfwcap_indev &&
+                { check_cpp_condition w32api.h "(__W32API_MAJOR_VERSION > 3) || (__W32API_MAJOR_VERSION == 3 && __W32API_MINOR_VERSION >= 13)" ||
+                  die "ERROR: avisynth and vfwcap_indev require w32api version 3.13 or later."; }
+        fi
+        ;;
+    cygwin*)
+        target_os=cygwin
+        shlibdir_default="$bindir_default"
+        SLIBPREF="cyg"
+        SLIBSUF=".dll"
+        SLIBNAME_WITH_VERSION='$(SLIBPREF)$(FULLNAME)-$(LIBVERSION)$(SLIBSUF)'
+        SLIBNAME_WITH_MAJOR='$(SLIBPREF)$(FULLNAME)-$(LIBMAJOR)$(SLIBSUF)'
+        SHFLAGS='-shared -Wl,--enable-auto-image-base'
+        objformat="win32"
+        enable dos_paths
+        check_cflags -fno-common
+        ;;
+    *-dos|freedos|opendos)
+        disable ffplay ffserver
+        disable $INDEV_LIST $OUTDEV_LIST
+        network_extralibs="-lsocket"
+        objformat="coff"
+        enable dos_paths
+        ;;
+    linux)
+        enable dv1394
+        ;;
+    irix*)
+        target_os=irix
+        ranlib="echo ignoring ranlib"
+        ;;
+    os/2*)
+        strip="lxlite"
+        ln_s="cp -f"
+        FFLDFLAGS="-Zomf -Zbin-files -Zargs-wild -Zmap"
+        SHFLAGS='$(SUBDIR)$(NAME).def -Zdll -Zomf'
+        FFSERVERLDFLAGS=""
+        LIBSUF="_s.a"
+        SLIBPREF=""
+        SLIBSUF=".dll"
+        SLIBNAME_WITH_VERSION='$(SLIBPREF)$(NAME)-$(LIBVERSION)$(SLIBSUF)'
+        SLIBNAME_WITH_MAJOR='$(SLIBPREF)$(shell echo $(NAME) | cut -c1-6)$(LIBMAJOR)$(SLIBSUF)'
+        SLIB_CREATE_DEF_CMD='echo LIBRARY $(SLIBNAME_WITH_MAJOR) INITINSTANCE TERMINSTANCE > $(SUBDIR)$(NAME).def; \
+          echo PROTMODE >> $(SUBDIR)$(NAME).def; \
+          echo CODE PRELOAD MOVEABLE DISCARDABLE >> $(SUBDIR)$(NAME).def; \
+          echo DATA PRELOAD MOVEABLE MULTIPLE NONSHARED >> $(SUBDIR)$(NAME).def; \
+          echo EXPORTS >> $(SUBDIR)$(NAME).def; \
+          emxexp -o $(OBJS) >> $(SUBDIR)$(NAME).def'
+        SLIB_EXTRA_CMD='emximp -o $(SUBDIR)$(LIBPREF)$(NAME)_dll.a $(SUBDIR)$(NAME).def; \
+          emximp -o $(SUBDIR)$(LIBPREF)$(NAME)_dll.lib $(SUBDIR)$(NAME).def;'
+        SLIB_INSTALL_EXTRA_CMD='install -m 644 $(SUBDIR)$(LIBPREF)$(NAME)_dll.a $(SUBDIR)$(LIBPREF)$(NAME)_dll.lib "$(LIBDIR)"'
+        SLIB_UNINSTALL_EXTRA_CMD='rm -f "$(LIBDIR)"/$(LIBPREF)$(NAME)_dll.a "$(LIBDIR)"/$(LIBPREF)$(NAME)_dll.lib'
+        enable dos_paths
+        ;;
+    gnu/kfreebsd)
+        ;;
+    gnu)
+        ;;
+
+    *)
+        die "Unknown OS '$target_os'."
+        ;;
+esac
+
+set_default $PATHS_LIST
+
+add_extralibs $osextralibs
+
+# Combine FFLDFLAGS and the LDFLAGS environment variable.
+LDFLAGS="$FFLDFLAGS $LDFLAGS"
+
+# we need to build at least one lib type
+if ! enabled_any static shared; then
+    cat <<EOF
+At least one library type must be built.
+Specify --enable-static to build the static libraries or --enable-shared to
+build the shared libraries as well. To only build the shared libraries specify
+--disable-static in addition to --enable-shared.
+EOF
+    exit 1;
+fi
+
+disabled static && LIBNAME=""
+
+if enabled_any libfaad libfaadbin ; then
+    if check_header faad.h; then
+        check_cc <<EOF
+#include <faad.h>
+#ifndef FAAD2_VERSION
+ok faad1
+#endif
+int main(void) { return 0; }
+EOF
+        test $? = 0 && enable libfaad2
+    else
+        die "FAAD test failed."
+    fi
+fi
+
+
+die_license_disabled() {
+    enabled $1 || { enabled $2 && die "$2 is $1 and --enable-$1 is not specified."; }
+}
+
+die_license_disabled gpl libfaad2
+die_license_disabled gpl libx264
+die_license_disabled gpl libxvid
+die_license_disabled gpl postproc
+die_license_disabled gpl x11grab
+
+die_license_disabled nonfree libfaac
+
+die_license_disabled version3 libopencore_amrnb
+die_license_disabled version3 libopencore_amrwb
+
+enabled version3 && { enabled gpl && enable gplv3 || enable lgplv3; }
+
+check_deps $ARCH_EXT_LIST
+
+disabled optimizations || check_cflags -fomit-frame-pointer
+
+enable_pic() {
+    enable pic
+    add_cppflags -DPIC
+    add_cflags   -fPIC
+    add_asflags  -fPIC
+}
+
+enabled pic && enable_pic
+
+check_cc <<EOF || die "Symbol mangling check failed."
+int ff_extern;
+EOF
+sym=$($nm $nm_opts $TMPO | awk '/ff_extern/{ print substr($0, match($0, /[^ \t]*ff_extern/)) }')
+extern_prefix=${sym%%ff_extern*}
+
+check_cc <<EOF && enable inline_asm
+void foo(void) { __asm__ volatile ("" ::); }
+EOF
+
+_restrict=
+for restrict_keyword in restrict __restrict__ __restrict; do
+    check_cc <<EOF && _restrict=$restrict_keyword && break
+void foo(char * $restrict_keyword p);
+EOF
+done
+
+check_cc <<EOF && enable attribute_packed
+struct { int x; } __attribute__((packed)) x;
+EOF
+
+check_cc <<EOF && enable attribute_may_alias
+union { int x; } __attribute__((may_alias)) x;
+EOF
+
+check_cc <<EOF || die "endian test failed"
+unsigned int endian = 'B' << 24 | 'I' << 16 | 'G' << 8 | 'E';
+EOF
+od -t x1 $TMPO | grep -q '42 *49 *47 *45' && enable bigendian
+
+if enabled alpha; then
+
+    check_cflags -mieee
+
+elif enabled arm; then
+
+    check_cflags -marm
+
+    check_ld <<EOF && enable vfp_args
+__asm__ (".eabi_attribute 28, 1");
+int main(void) { return 0; }
+EOF
+
+    # We have to check if pld is a nop and disable it.
+    check_asm pld '"pld [r0]"'
+
+    enabled armv5te && check_asm armv5te '"qadd r0, r0, r0"'
+    enabled armv6   && check_asm armv6   '"sadd16 r0, r0, r0"'
+    enabled armv6t2 && check_asm armv6t2 '"movt r0, #0"'
+    enabled armvfp  && check_asm armvfp  '"fadds s0, s0, s0"'
+    enabled iwmmxt  && check_asm iwmmxt  '"wunpckelub wr6, wr4"'
+    enabled neon    && check_asm neon    '"vadd.i16 q0, q0, q0"'
+
+    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"'
+    enabled mmi     && check_asm mmi     '"lq $2, 0($2)"'
+
+elif enabled ppc; then
+
+    check_asm dcbzl     '"dcbzl 0, 1"'
+    check_asm ppc4xx    '"maclhw r10, r11, r12"'
+    check_asm xform_asm '"lwzx %1, %y0" :: "Z"(*(int*)0), "r"(0)'
+
+    # AltiVec flags: The FSF version of GCC differs from the Apple version
+    if enabled altivec; then
+        check_cflags -maltivec -mabi=altivec &&
+        { check_header altivec.h && inc_altivec_h="#include <altivec.h>" ; } ||
+        check_cflags -faltivec
+
+        # check if our compiler supports Motorola AltiVec C API
+        check_cc <<EOF || disable altivec
+$inc_altivec_h
+int main(void) {
+    vector signed int v1, v2, v3;
+    v1 = vec_add(v2,v3);
+    return 0;
+}
+EOF
+
+        # check if our compiler supports braces for vector declarations
+        check_cc <<EOF || die "You need a compiler that supports {} in AltiVec vector declarations."
+$inc_altivec_h
+int main (void) { (vector int) {1}; return 0; }
+EOF
+    fi
+
+elif enabled sparc; then
+
+    enabled vis && check_asm vis '"pdist %f0, %f0, %f0"' -mcpu=ultrasparc &&
+        add_cflags -mcpu=ultrasparc -mtune=ultrasparc
+
+elif enabled x86; then
+
+    # check whether EBP is available on x86
+    # As 'i' is stored on the stack, this program will crash
+    # if the base pointer is used to access it because the
+    # base pointer is cleared in the inline assembly code.
+    check_exec_crash <<EOF && enable ebp_available
+    volatile int i=0;
+    __asm__ volatile (
+        "xorl %%ebp, %%ebp"
+    ::: "%ebp");
+    return i;
+EOF
+
+    # check whether EBX is available on x86
+    check_asm ebx_available '""::"b"(0)' &&
+        check_asm ebx_available '"":::"%ebx"'
+
+    # check whether more than 10 operands are supported
+    check_cc <<EOF && enable ten_operands
+int main(void) {
+    int x=0;
+    __asm__ volatile(
+        ""
+        :"+&rm"(x), "+&rm"(x), "+&rm"(x), "+&rm"(x), "+&rm"(x), "+&rm"(x)
+    );
+    return 0;
+}
+EOF
+
+    # check whether binutils is new enough to compile SSSE3/MMX2
+    enabled ssse3 && check_asm ssse3 '"pabsw %xmm0, %xmm0"'
+    enabled mmx2  && check_asm mmx2  '"pmaxub %mm0, %mm1"'
+
+    check_asm bswap '"bswap %%eax" ::: "%eax"'
+
+    YASMFLAGS="-f $objformat -DARCH_$(toupper $subarch)"
+    enabled     x86_64        && append YASMFLAGS "-m amd64"
+    enabled     pic           && append YASMFLAGS "-DPIC"
+    test -n "$extern_prefix"  && append YASMFLAGS "-DPREFIX"
+    case "$objformat" in
+        elf) enabled debug && append YASMFLAGS "-g dwarf2" ;;
+    esac
+    disabled yasm || { check_yasm "pabsw xmm0, xmm0" && enable yasm; }
+
+    case "$cpu" in
+        athlon*|opteron*|k8*|pentium|pentium-mmx|prescott|nocona|atom|geode)
+            disable fast_clz
+        ;;
+    esac
+
+fi
+
+if check_func dlopen; then
+    ldl=
+elif check_func dlopen -ldl; then
+    ldl=-ldl
+fi
+
+# Solaris has nanosleep in -lrt, OpenSolaris no longer needs that
+check_func nanosleep || { check_func nanosleep -lrt && add_extralibs -lrt; }
+
+check_func  fork
+check_func  getaddrinfo $network_extralibs
+check_func  gethrtime
+check_func  getrusage
+check_func  inet_aton $network_extralibs
+check_func  isatty
+check_func  ${malloc_prefix}memalign            && enable memalign
+check_func  mkstemp
+check_func  ${malloc_prefix}posix_memalign_disabled      && enable posix_memalign
+check_func_headers io.h setmode
+check_func_headers lzo/lzo1x.h lzo1x_999_compress
+check_func_headers windows.h GetProcessTimes
+check_func_headers windows.h VirtualAlloc
+
+check_header conio.h
+check_header dlfcn.h
+check_header dxva2api.h
+check_header malloc.h
+check_header poll.h
+check_header sys/mman.h
+check_header sys/resource.h
+check_header sys/select.h
+check_header termios.h
+check_header vdpau/vdpau.h
+check_header vdpau/vdpau_x11.h
+check_header X11/extensions/XvMClib.h
+
+check_struct dxva2api.h DXVA_PictureParameters wDecodedPictureIndex
+
+if ! enabled_any memalign memalign_hack posix_memalign_disabled malloc_aligned &&
+     enabled_any $need_memalign ; then
+    die "Error, no aligned memory allocator but SSE enabled, disable it or use --enable-memalign-hack."
+fi
+
+disabled  zlib || check_lib   zlib.h      zlibVersion -lz   || disable  zlib
+disabled bzlib || check_lib2 bzlib.h BZ2_bzlibVersion -lbz2 || disable bzlib
+
+# check for some common methods of building with pthread support
+# do this before the optional library checks as some of them require pthreads
+if enabled pthreads; then
+    if check_func pthread_create; then
+        :
+    elif check_func pthread_create -pthread; then
+        add_cflags -pthread
+        add_extralibs -pthread
+    elif check_func pthread_create -pthreads; then
+        add_cflags -pthreads
+        add_extralibs -pthreads
+    elif check_func pthread_create -lpthreadGC2; then
+        add_extralibs -lpthreadGC2
+    elif ! check_lib pthread.h pthread_create -lpthread; then
+        die "ERROR: can't find pthreads library"
+    fi
+fi
+
+for thread in $THREADS_LIST; do
+    if enabled $thread; then
+        test -n "$thread_type" &&
+            die "ERROR: Only one thread type must be selected." ||
+            thread_type="$thread"
+    fi
+done
+
+check_lib math.h sin -lm
+check_lib va/va.h vaInitialize -lva
+
+check_func exp2
+check_func exp2f
+check_func llrint
+check_func log2
+check_func log2f
+check_func lrint
+check_func lrintf
+check_func round
+check_func roundf
+check_func truncf
+
+# these are off by default, so fail if requested and not available
+enabled avisynth   && require2 vfw32 "windows.h vfw.h" AVIFileInit -lavifil32
+enabled libdirac   && add_cflags $(pkg-config --cflags dirac) &&
+                      require  libdirac libdirac_decoder/dirac_parser.h dirac_decoder_init $(pkg-config --libs dirac) &&
+                      require  libdirac libdirac_encoder/dirac_encoder.h dirac_encoder_init $(pkg-config --libs dirac)
+enabled libfaac    && require2 libfaac "stdint.h faac.h" faacEncGetVersion -lfaac
+enabled libfaad    && require2 libfaad faad.h faacDecOpen -lfaad
+enabled libgsm     && require  libgsm gsm/gsm.h gsm_create -lgsm
+enabled libmp3lame && require  libmp3lame lame/lame.h lame_init -lmp3lame -lm
+enabled libnut     && require  libnut libnut.h nut_demuxer_init -lnut
+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 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 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."; }
+enabled libxvid    && require  libxvid xvid.h xvid_global -lxvidcore
+enabled mlib       && require  mediaLib mlib_types.h mlib_VectorSub_S16_U8_Mod -lmlib
+
+# libdc1394 check
+if enabled libdc1394; then
+    { check_lib dc1394/dc1394.h dc1394_new -ldc1394 -lraw1394 &&
+        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
+
+SDL_CONFIG="${cross_prefix}sdl-config"
+if "${SDL_CONFIG}" --version > /dev/null 2>&1; then
+    sdl_cflags=$("${SDL_CONFIG}" --cflags)
+    sdl_libs=$("${SDL_CONFIG}" --libs)
+    check_func_headers SDL.h SDL_Init $sdl_cflags $sdl_libs &&
+    check_cpp_condition SDL.h "(SDL_MAJOR_VERSION<<16 | SDL_MINOR_VERSION<<8 | SDL_PATCHLEVEL) >= 0x010201" $sdl_cflags &&
+    enable sdl &&
+    check_struct SDL.h SDL_VideoInfo current_w $sdl_cflags && enable sdl_video_size
+fi
+
+texi2html -version > /dev/null 2>&1 && enable texi2html || disable texi2html
+
+if enabled network; then
+    check_type "sys/types.h sys/socket.h" socklen_t
+    check_type netdb.h "struct addrinfo"
+    check_type netinet/in.h "struct ipv6_mreq"
+    check_type netinet/in.h "struct sockaddr_in6"
+    check_type "sys/types.h sys/socket.h" "struct sockaddr_storage"
+    check_struct "sys/types.h sys/socket.h" "struct sockaddr" sa_len
+    # Prefer arpa/inet.h over winsock2
+    if check_header arpa/inet.h ; then
+        check_func closesocket
+    elif check_header winsock2.h ; then
+        check_func_headers winsock2.h closesocket -lws2 && \
+            network_extralibs="-lws2" || \
+        { check_func_headers winsock2.h closesocket -lws2_32 && \
+            network_extralibs="-lws2_32"; }
+        check_type ws2tcpip.h socklen_t
+        check_type ws2tcpip.h "struct addrinfo"
+        check_type ws2tcpip.h "struct ipv6_mreq"
+        check_type ws2tcpip.h "struct sockaddr_in6"
+        check_type ws2tcpip.h "struct sockaddr_storage"
+        check_struct winsock2.h "struct sockaddr" sa_len
+    else
+        disable network
+    fi
+fi
+
+check_header linux/videodev.h
+check_header linux/videodev2.h
+check_header sys/videoio.h
+
+check_func_headers "windows.h vfw.h" capCreateCaptureWindow "$vfwcap_indev_extralibs"
+
+# check for ioctl_meteor.h, ioctl_bt848.h and alternatives
+{ check_header dev/bktr/ioctl_meteor.h &&
+  check_header dev/bktr/ioctl_bt848.h; } ||
+{ check_header machine/ioctl_meteor.h &&
+  check_header machine/ioctl_bt848.h; } ||
+{ check_header dev/video/meteor/ioctl_meteor.h &&
+  check_header dev/video/bktr/ioctl_bt848.h; } ||
+check_header dev/ic/bt8xx.h
+
+check_header sys/soundcard.h
+check_header soundcard.h
+
+enabled_any alsa_indev alsa_outdev && check_lib2 alsa/asoundlib.h snd_pcm_htimestamp -lasound
+
+enabled jack_indev && check_lib2 jack/jack.h jack_client_open -ljack
+
+enabled x11grab                         &&
+check_header X11/Xlib.h                 &&
+check_header X11/extensions/XShm.h      &&
+check_header X11/extensions/Xfixes.h    &&
+check_func XOpenDisplay -lX11           &&
+check_func XShmCreateImage -lX11 -lXext &&
+check_func XFixesGetCursorImage -lX11 -lXext -lXfixes
+
+if ! disabled vdpau && enabled vdpau_vdpau_h; then
+check_cpp_condition \
+    vdpau/vdpau.h "defined VDP_DECODER_PROFILE_MPEG4_PART2_ASP" ||
+    { echolog "Please upgrade to libvdpau >= 0.2 if you would like vdpau support." &&
+      disable vdpau; }
+fi
+
+enabled debug && add_cflags -g"$debuglevel" && add_asflags -g"$debuglevel"
+
+# add some useful compiler flags if supported
+check_cflags -Wdeclaration-after-statement
+check_cflags -Wall
+check_cflags -Wno-switch
+check_cflags -Wdisabled-optimization
+check_cflags -Wpointer-arith
+check_cflags -Wredundant-decls
+check_cflags -Wno-pointer-sign
+check_cflags -Wcast-qual
+check_cflags -Wwrite-strings
+check_cflags -Wtype-limits
+check_cflags -Wundef
+enabled extra_warnings && check_cflags -Winline
+
+# add some linker flags
+check_ldflags -Wl,--warn-common
+check_ldflags -Wl,--as-needed
+check_ldflags '-Wl,-rpath-link,\$(BUILD_ROOT)/libpostproc -Wl,-rpath-link,\$(BUILD_ROOT)/libswscale -Wl,-rpath-link,\$(BUILD_ROOT)/libavfilter -Wl,-rpath-link,\$(BUILD_ROOT)/libavdevice -Wl,-rpath-link,\$(BUILD_ROOT)/libavformat -Wl,-rpath-link,\$(BUILD_ROOT)/libavcodec -Wl,-rpath-link,\$(BUILD_ROOT)/libavutil'
+check_ldflags -Wl,-Bsymbolic
+
+echo "X{};" > $TMPV
+test_ldflags -Wl,--version-script,$TMPV &&
+    append SHFLAGS '-Wl,--version-script,\$(SUBDIR)lib\$(NAME).ver'
+
+if enabled small; then
+    add_cflags $size_cflags
+    optimizations="small"
+elif enabled optimizations; then
+    add_cflags $speed_cflags
+fi
+check_cflags -fno-math-errno
+check_cflags -fno-signed-zeros
+
+if enabled icc; then
+    # Just warnings, no remarks
+    check_cflags -w1
+    # -wd: Disable following warnings
+    # 144, 167, 556: -Wno-pointer-sign
+    # 10006: ignoring unknown option -fno-signed-zeros
+    # 10156: ignoring option '-W'; no argument required
+    check_cflags -wd144,167,556,10006,10156
+    # 11030: Warning unknown option --as-needed
+    # 10156: ignoring option '-export'; no argument required
+    check_ldflags -wd10156,11030
+    # Allow to compile with optimizations
+    check_ldflags -march=$cpu
+    # icc 11.0 and 11.1 work with ebp_available, but don't pass the test
+    enable ebp_available
+elif enabled ccc; then
+    # disable some annoying warnings
+    add_cflags -msg_disable cvtu32to64
+    add_cflags -msg_disable embedcomment
+    add_cflags -msg_disable needconstext
+    add_cflags -msg_disable nomainieee
+    add_cflags -msg_disable ptrmismatch1
+    add_cflags -msg_disable unreachcode
+elif enabled gcc; then
+    check_cflags -fno-tree-vectorize
+elif enabled clang; then
+    check_cflags -Qunused-arguments
+elif enabled armcc; then
+    # 2523: use of inline assembler is deprecated
+    add_cflags -Wrvct,--diag_suppress=2523
+elif enabled tms470; then
+    add_cflags -pds=824 -pds=837
+fi
+
+if enabled gprof; then
+    add_cflags  -p
+    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       \
+           $CONFIG_EXTRA      \
+           $HAVE_LIST         \
+           $DECODER_LIST      \
+           $ENCODER_LIST      \
+           $HWACCEL_LIST      \
+           $PARSER_LIST       \
+           $BSF_LIST          \
+           $DEMUXER_LIST      \
+           $MUXER_LIST        \
+           $FILTER_LIST       \
+           $INDEV_LIST        \
+           $OUTDEV_LIST       \
+           $PROTOCOL_LIST     \
+
+enabled asm || 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"
+fi
+if test "$extra_version" != ""; then
+    echo "version string suffix     $extra_version"
+fi
+echo "big-endian                ${bigendian-no}"
+echo "runtime cpu detection     ${runtime_cpudetect-no}"
+if enabled x86; then
+    echo "yasm                      ${yasm-no}"
+    echo "MMX enabled               ${mmx-no}"
+    echo "MMX2 enabled              ${mmx2-no}"
+    echo "3DNow! enabled            ${amd3dnow-no}"
+    echo "3DNow! extended enabled   ${amd3dnowext-no}"
+    echo "SSE enabled               ${sse-no}"
+    echo "SSSE3 enabled             ${ssse3-no}"
+    echo "CMOV enabled              ${cmov-no}"
+    echo "CMOV is fast              ${fast_cmov-no}"
+    echo "EBX available             ${ebx_available-no}"
+    echo "EBP available             ${ebp_available-no}"
+    echo "10 operands supported     ${ten_operands-no}"
+fi
+if enabled arm; then
+    echo "ARMv5TE enabled           ${armv5te-no}"
+    echo "ARMv6 enabled             ${armv6-no}"
+    echo "ARMv6T2 enabled           ${armv6t2-no}"
+    echo "ARM VFP enabled           ${armvfp-no}"
+    echo "IWMMXT enabled            ${iwmmxt-no}"
+    echo "NEON enabled              ${neon-no}"
+fi
+if enabled mips; then
+    echo "MMI enabled               ${mmi-no}"
+fi
+if enabled ppc; then
+    echo "AltiVec enabled           ${altivec-no}"
+    echo "PPC 4xx optimizations     ${ppc4xx-no}"
+    echo "dcbzl available           ${dcbzl-no}"
+    echo "performance report        ${powerpc_perf-no}"
+fi
+if enabled sparc; then
+    echo "VIS enabled               ${vis-no}"
+fi
+echo "gprof enabled             ${gprof-no}"
+echo "debug symbols             ${debug-no}"
+echo "strip symbols             ${stripping-no}"
+echo "optimizations             ${optimizations-no}"
+echo "static                    ${static-no}"
+echo "shared                    ${shared-no}"
+echo "postprocessing support    ${postproc-no}"
+echo "new filter support        ${avfilter-no}"
+echo "filters using lavformat   ${avfilter_lavf-no}"
+echo "network support           ${network-no}"
+echo "threading support         ${thread_type-no}"
+echo "SDL support               ${sdl-no}"
+echo "Sun medialib support      ${mlib-no}"
+echo "AVISynth enabled          ${avisynth-no}"
+echo "libdc1394 support         ${libdc1394-no}"
+echo "libdirac enabled          ${libdirac-no}"
+echo "libfaac enabled           ${libfaac-no}"
+echo "libfaad enabled           ${libfaad-no}"
+echo "libfaad dlopened          ${libfaadbin-no}"
+echo "libgsm enabled            ${libgsm-no}"
+echo "libmp3lame enabled        ${libmp3lame-no}"
+echo "libnut enabled            ${libnut-no}"
+echo "libopencore-amrnb support ${libopencore_amrnb-no}"
+echo "libopencore-amrwb support ${libopencore_amrwb-no}"
+echo "libopenjpeg enabled       ${libopenjpeg-no}"
+echo "libschroedinger enabled   ${libschroedinger-no}"
+echo "libspeex enabled          ${libspeex-no}"
+echo "libtheora enabled         ${libtheora-no}"
+echo "libvorbis enabled         ${libvorbis-no}"
+echo "libx264 enabled           ${libx264-no}"
+echo "libxvid enabled           ${libxvid-no}"
+echo "zlib enabled              ${zlib-no}"
+echo "bzlib enabled             ${bzlib-no}"
+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
+    for part in $list; do
+        enabled $part && echo ${part%_*}
+    done | sort | pr -3 -t
+    echo
+done
+
+license="LGPL version 2.1 or later"
+if enabled nonfree; then
+    license="nonfree and unredistributable"
+elif enabled gplv3; then
+    license="GPL version 3 or later"
+elif enabled lgplv3; then
+    license="LGPL version 3 or later"
+elif enabled gpl; then
+    license="GPL version 2 or later"
+fi
+
+echo "License: $license"
+
+echo "Creating config.mak and config.h..."
+
+# build tree in object directory if source path is different from current one
+if enabled source_path_used; then
+    DIRS="
+        doc
+        libavcodec
+        libavcodec/$arch
+        libavdevice
+        libavfilter
+        libavformat
+        libavutil
+        libavutil/$arch
+        libpostproc
+        libswscale
+        libswscale/$arch
+        tests
+        tools
+    "
+    FILES="
+        Makefile
+        common.mak
+        subdir.mak
+        doc/texi2pod.pl
+        libavcodec/Makefile
+        libavdevice/Makefile
+        libavfilter/Makefile
+        libavformat/Makefile
+        libavutil/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
+fi
+
+enabled stripping || strip="echo skipping strip"
+
+cat > config.mak <<EOF
+# Automatically generated by configure - do not modify!
+ifndef FFMPEG_CONFIG_MAK
+FFMPEG_CONFIG_MAK=1
+FFMPEG_CONFIGURATION=$FFMPEG_CONFIGURATION
+prefix=$prefix
+LIBDIR=\$(DESTDIR)$libdir
+SHLIBDIR=\$(DESTDIR)$shlibdir
+INCDIR=\$(DESTDIR)$incdir
+BINDIR=\$(DESTDIR)$bindir
+DATADIR=\$(DESTDIR)$datadir
+MANDIR=\$(DESTDIR)$mandir
+SRC_PATH="$source_path"
+SRC_PATH_BARE=$source_path
+BUILD_ROOT="$PWD"
+ARCH=$arch
+CC=$cc
+AS=$as
+LD=$ld
+DEPCC=$dep_cc
+YASM=$yasmexe
+AR=$ar
+RANLIB=$ranlib
+LN_S=$ln_s
+STRIP=$strip
+CPPFLAGS=$CPPFLAGS
+CFLAGS=$CFLAGS
+ASFLAGS=$ASFLAGS
+CC_O=$CC_O
+LDFLAGS=$LDFLAGS
+FFSERVERLDFLAGS=$FFSERVERLDFLAGS
+SHFLAGS=$SHFLAGS
+YASMFLAGS=$YASMFLAGS
+BUILDSUF=$build_suffix
+FULLNAME=$FULLNAME
+LIBPREF=$LIBPREF
+LIBSUF=$LIBSUF
+LIBNAME=$LIBNAME
+SLIBPREF=$SLIBPREF
+SLIBSUF=$SLIBSUF
+EXESUF=$EXESUF
+EXTRA_VERSION=$extra_version
+DEPFLAGS=$DEPFLAGS
+CCDEP=$CCDEP
+ASDEP=$ASDEP
+CC_DEPFLAGS=$CC_DEPFLAGS
+AS_DEPFLAGS=$AS_DEPFLAGS
+HOSTCC=$host_cc
+HOSTCFLAGS=$host_cflags
+HOSTEXESUF=$HOSTEXESUF
+HOSTLDFLAGS=$host_ldflags
+HOSTLIBS=$host_libs
+TARGET_EXEC=$target_exec
+TARGET_PATH=$target_path
+SDL_LIBS=$sdl_libs
+SDL_CFLAGS=$sdl_cflags
+LIB_INSTALL_EXTRA_CMD=$LIB_INSTALL_EXTRA_CMD
+EXTRALIBS=$extralibs
+EOF
+
+get_version(){
+    name=$1
+    file=$source_path/$2
+    eval $(grep "#define ${name}_VERSION_M" "$file" | awk '{ print $2"="$3 }')
+    eval ${name}_VERSION=\$${name}_VERSION_MAJOR.\$${name}_VERSION_MINOR.\$${name}_VERSION_MICRO
+    lcname=$(tolower $name)
+    eval echo "${lcname}_VERSION=\$${name}_VERSION" >> config.mak
+    eval echo "${lcname}_VERSION_MAJOR=\$${name}_VERSION_MAJOR" >> config.mak
+}
+
+get_version LIBSWSCALE  libswscale/swscale.h
+get_version LIBPOSTPROC libpostproc/postprocess.h
+get_version LIBAVCODEC  libavcodec/avcodec.h
+get_version LIBAVDEVICE libavdevice/avdevice.h
+get_version LIBAVFORMAT libavformat/avformat.h
+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
+/* Automatically generated by configure - do not modify! */
+#ifndef FFMPEG_CONFIG_H
+#define FFMPEG_CONFIG_H
+#define FFMPEG_CONFIGURATION "$(c_escape $FFMPEG_CONFIGURATION)"
+#define FFMPEG_LICENSE "$(c_escape $license)"
+#define FFMPEG_DATADIR "$(eval c_escape $datadir)"
+#define CC_TYPE "$cc_type"
+#define CC_VERSION $cc_version
+#define restrict $_restrict
+#define ASMALIGN(ZEROBITS) ".align $align_shift " #ZEROBITS "\\n\\t"
+#define EXTERN_PREFIX "${extern_prefix}"
+#define EXTERN_ASM ${extern_prefix}
+EOF
+
+test -n "$malloc_prefix" &&
+    echo "#define MALLOC_PREFIX $malloc_prefix" >>$TMPH
+
+if enabled small || disabled optimizations; then
+    echo "#define av_always_inline"  >> $TMPH
+fi
+
+print_config ARCH_   $TMPH config.mak $ARCH_LIST
+print_config HAVE_   $TMPH config.mak $HAVE_LIST
+print_config CONFIG_ $TMPH config.mak $CONFIG_LIST       \
+                                      $CONFIG_EXTRA      \
+                                      $DECODER_LIST      \
+                                      $ENCODER_LIST      \
+                                      $HWACCEL_LIST      \
+                                      $PARSER_LIST       \
+                                      $BSF_LIST          \
+                                      $DEMUXER_LIST      \
+                                      $MUXER_LIST        \
+                                      $FILTER_LIST       \
+                                      $PROTOCOL_LIST     \
+                                      $INDEV_LIST        \
+                                      $OUTDEV_LIST       \
+
+echo "#endif /* FFMPEG_CONFIG_H */" >> $TMPH
+echo "endif # FFMPEG_CONFIG_MAK" >> config.mak
+
+# Do not overwrite an unchanged config.h to avoid superfluous rebuilds.
+cp_if_changed $TMPH config.h
+
+cat > $TMPH <<EOF
+/* Generated by ffconf */
+#ifndef AVUTIL_AVCONFIG_H
+#define AVUTIL_AVCONFIG_H
+EOF
+
+print_config AV_HAVE_ $TMPH /dev/null $HAVE_LIST_PUB
+
+echo "#endif /* AVUTIL_AVCONFIG_H */" >> $TMPH
+
+cp_if_changed $TMPH libavutil/avconfig.h
+
+# build pkg-config files
+
+pkgconfig_generate(){
+name=$1
+shortname=${name#lib}${build_suffix}
+comment=$2
+version=$3
+libs=$4
+requires=$5
+cat <<EOF > $name/$name.pc
+prefix=$prefix
+exec_prefix=\${prefix}
+libdir=$libdir
+includedir=$incdir
+
+Name: $name
+Description: $comment
+Version: $version
+Requires: $(enabled shared || echo $requires)
+Requires.private: $(enabled shared && echo $requires)
+Conflicts:
+Libs: -L\${libdir} -l${shortname} $(enabled shared || echo $libs)
+Libs.private: $(enabled shared && echo $libs)
+Cflags: -I\${includedir}
+EOF
+cat <<EOF > $name/$name-uninstalled.pc
+prefix=
+exec_prefix=
+libdir=\${pcfiledir}
+includedir=${source_path}
+
+Name: $name
+Description: $comment
+Version: $version
+Requires: $requires
+Conflicts:
+Libs: \${libdir}/${LIBPREF}${shortname}${LIBSUF} $libs
+Cflags: -I\${includedir}
+EOF
+}
+
+pkgconfig_generate libavutil "FFmpeg utility library" "$LIBAVUTIL_VERSION"
+pkgconfig_generate libavcodec "FFmpeg codec library" "$LIBAVCODEC_VERSION" "$extralibs" "libavutil = $LIBAVUTIL_VERSION"
+pkgconfig_generate libavformat "FFmpeg container format library" "$LIBAVFORMAT_VERSION" "$extralibs" "libavcodec = $LIBAVCODEC_VERSION"
+pkgconfig_generate libavdevice "FFmpeg device handling library" "$LIBAVDEVICE_VERSION" "$extralibs" "libavformat = $LIBAVFORMAT_VERSION"
+enabled avfilter &&
+    pkgconfig_generate libavfilter "FFmpeg video filtering library" "$LIBAVFILTER_VERSION" "$extralibs" "libavutil = $LIBAVUTIL_VERSION"
+enabled postproc &&
+    pkgconfig_generate libpostproc "FFmpeg post processing library" "$LIBPOSTPROC_VERSION"
+pkgconfig_generate libswscale "FFmpeg image rescaling library" "$LIBSWSCALE_VERSION" "" "libavutil = $LIBAVUTIL_VERSION"
diff -r -u -N ffmpeg_git/configure.rej ffmpeg_airvideo/configure.rej
--- ffmpeg_git/configure.rej	1970-01-01 01:00:00.000000000 +0100
+++ ffmpeg_airvideo/configure.rej	2010-02-07 19:46:26.000000000 +0100
@@ -0,0 +1,17 @@
+***************
+*** 2619,2625 ****
+  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 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."; }
+  enabled libxvid    && require  libxvid xvid.h xvid_global -lxvidcore
+--- 2621,2627 ----
+  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 libx264    && require  libx264 x264.h x264_encoder_encode $(pkg-config --libs x264) &&
+                       { check_cpp_condition x264.h "X264_BUILD >= 83" ||
+                         die "ERROR: libx264 version must be >= 0.83."; }
+  enabled libxvid    && require  libxvid xvid.h xvid_global -lxvidcore
diff -r -u -N ffmpeg_git/ffmpeg.c ffmpeg_airvideo/ffmpeg.c
--- ffmpeg_git/ffmpeg.c	2010-02-06 17:52:38.000000000 +0100
+++ ffmpeg_airvideo/ffmpeg.c	2010-11-16 00:01:07.714329986 +0100
@@ -71,6 +71,8 @@
 
 #undef exit
 
+#include "_overlay.c"
+
 const char program_name[] = "FFmpeg";
 const int program_birth_year = 2000;
 
@@ -1023,6 +1025,8 @@
               0, ost->resample_height, resampling_dst->data, resampling_dst->linesize);
     }
 
+    blend_subtitle();
+
     if (ost->video_pad) {
         av_picture_pad((AVPicture*)final_picture, (AVPicture *)padding_src,
                 enc->height, enc->width, enc->pix_fmt,
@@ -1939,6 +1943,9 @@
                                 (frame_topBand  + frame_bottomBand) +
                                 (frame_padtop + frame_padbottom)) ||
                         (codec->pix_fmt != icodec->pix_fmt));
+                        
+		fix_resample();
+                        
                 if (ost->video_crop) {
                     ost->topBand    = ost->original_topBand    = frame_topBand;
                     ost->bottomBand = ost->original_bottomBand = frame_bottomBand;
diff -r -u -N ffmpeg_git/ffmpeg-mingw32.diff ffmpeg_airvideo/ffmpeg-mingw32.diff
--- ffmpeg_git/ffmpeg-mingw32.diff	1970-01-01 01:00:00.000000000 +0100
+++ ffmpeg_airvideo/ffmpeg-mingw32.diff	2010-02-07 19:46:26.000000000 +0100
@@ -0,0 +1,22 @@
+Index: configure
+===================================================================
+--- configure	(revision 20308)
++++ configure	(working copy)
+@@ -2258,6 +2258,8 @@
+         add_extralibs -pthreads
+     elif check_func pthread_create -lpthreadGC2; then
+         add_extralibs -lpthreadGC2
++    elif check_func pthread_create -lpthreadGC2 -lwsock32; then
++        add_extralibs -lpthreadGC2 -lwsock32
+     elif ! check_lib pthread.h pthread_create -lpthread; then
+         die "ERROR: can't find pthreads library"
+     fi
+@@ -2377,7 +2379,7 @@
+ enabled libspeex   && require  libspeex speex/speex.h speex_decoder_init -lspeex
+ enabled libtheora  && require  libtheora theora/theora.h theora_info_init -ltheora -logg
+ enabled libvorbis  && require  libvorbis vorbis/vorbisenc.h vorbis_info_init -lvorbisenc -lvorbis -logg
+-enabled libx264    && require  libx264 x264.h x264_encoder_encode -lx264 -lm &&
++enabled libx264    && require  libx264 x264.h x264_encoder_encode $(pkg-config --libs x264) &&
+                       { check_cpp_condition x264.h "X264_BUILD >= 83" ||
+                         die "ERROR: libx264 version must be >= 0.83."; }
+ enabled libxvid    && require  libxvid xvid.h xvid_global -lxvidcore
diff -r -u -N ffmpeg_git/libavcodec/resample.c ffmpeg_airvideo/libavcodec/resample.c
--- ffmpeg_git/libavcodec/resample.c	2010-02-06 17:52:38.000000000 +0100
+++ ffmpeg_airvideo/libavcodec/resample.c	2010-02-07 19:46:28.000000000 +0100
@@ -27,6 +27,7 @@
 #include "avcodec.h"
 #include "audioconvert.h"
 #include "opt.h"
+#include "../_resample.c"
 
 struct AVResampleContext;
 
@@ -150,7 +151,7 @@
 {
     ReSampleContext *s;
 
-    if ( input_channels > 2)
+    if ( input_channels > 2 && input_channels != 6)
       {
         av_log(NULL, AV_LOG_ERROR, "Resampling with input channels greater than 2 unsupported.\n");
         return NULL;
@@ -312,7 +313,7 @@
     } else if (s->output_channels >= 2) {
         buftmp3[0] = bufout[0];
         buftmp3[1] = bufout[1];
-        stereo_split(buftmp2[0], buftmp2[1], input, nb_samples);
+        stereo_split2(buftmp2[0], buftmp2[1], input, nb_samples);
     } else {
         buftmp3[0] = output;
         memcpy(buftmp2[0], input, nb_samples*sizeof(short));
diff -r -u -N ffmpeg_git/libavformat/mpegtsenc.c ffmpeg_airvideo/libavformat/mpegtsenc.c
--- ffmpeg_git/libavformat/mpegtsenc.c	2010-02-06 17:52:38.000000000 +0100
+++ ffmpeg_airvideo/libavformat/mpegtsenc.c	2010-02-07 19:46:28.000000000 +0100
@@ -630,6 +630,7 @@
             }
         }
 
+#if 0
         if (dts != AV_NOPTS_VALUE && (dts - (int64_t)ts->cur_pcr) > delay) {
             /* pcr insert gets priority over null packet insert */
             if (write_pcr)
@@ -638,6 +639,7 @@
                 mpegts_insert_null_packet(s);
             continue; /* recalculate write_pcr and possibly retransmit si_info */
         }
+#endif
 
         /* prepare packet header */
         q = buf;
@@ -796,6 +798,7 @@
     if (pkt->dts != AV_NOPTS_VALUE)
         dts = pkt->dts + delay;
 
+
     if (ts_st->first_pts_check && pts == AV_NOPTS_VALUE) {
         av_log(s, AV_LOG_ERROR, "first pts value must set\n");
         return -1;
diff -r -u -N ffmpeg_git/libavformat/os_support.c ffmpeg_airvideo/libavformat/os_support.c
--- ffmpeg_git/libavformat/os_support.c	2010-02-06 17:52:38.000000000 +0100
+++ ffmpeg_airvideo/libavformat/os_support.c	2010-02-07 19:46:28.000000000 +0100
@@ -45,6 +45,8 @@
 #include <stdlib.h>
 #include <strings.h>
 
+#include "../_unicode.c"
+
 int inet_aton (const char * str, struct in_addr * add)
 {
     unsigned int add1 = 0, add2 = 0, add3 = 0, add4 = 0;
diff -r -u -N ffmpeg_git/libavformat/os_support.h ffmpeg_airvideo/libavformat/os_support.h
--- ffmpeg_git/libavformat/os_support.h	2010-02-06 17:52:38.000000000 +0100
+++ ffmpeg_airvideo/libavformat/os_support.h	2010-02-07 19:46:28.000000000 +0100
@@ -100,4 +100,6 @@
 #endif /* CONFIG_FFSERVER */
 #endif /* CONFIG_NETWORK */
 
+#include "../_unicode.h"
+
 #endif /* AVFORMAT_OS_SUPPORT_H */
diff -r -u -N ffmpeg_git/libavutil/avconfig.h ffmpeg_airvideo/libavutil/avconfig.h
--- ffmpeg_git/libavutil/avconfig.h	1970-01-01 01:00:00.000000000 +0100
+++ ffmpeg_airvideo/libavutil/avconfig.h	2010-02-07 19:46:28.000000000 +0100
@@ -0,0 +1,5 @@
+/* Generated by ffconf */
+#ifndef AVUTIL_AVCONFIG_H
+#define AVUTIL_AVCONFIG_H
+#define AV_HAVE_BIGENDIAN 0
+#endif /* AVUTIL_AVCONFIG_H */
diff -r -u -N ffmpeg_git/_make ffmpeg_airvideo/_make
--- ffmpeg_git/_make	1970-01-01 01:00:00.000000000 +0100
+++ ffmpeg_airvideo/_make	2009-11-09 04:21:26.000000000 +0100
@@ -0,0 +1,3 @@
+#!/bin/sh
+export MACOSX_DEPLOYMENT_TARGET="10.5"
+make
\ No newline at end of file
diff -r -u -N ffmpeg_git/_overlay.c ffmpeg_airvideo/_overlay.c
--- ffmpeg_git/_overlay.c	1970-01-01 01:00:00.000000000 +0100
+++ ffmpeg_airvideo/_overlay.c	2010-02-07 21:02:52.000000000 +0100
@@ -0,0 +1,477 @@
+#include <string.h>
+#include <stdio.h>
+#include <ctype.h>
+#include "libavcodec/avcodec.h"
+#include "libavcodec/colorspace.h"
+#if HAVE_WINSOCK2_H == 1
+#include <errno.h>
+#include <winsock2.h>
+#include <ws2tcpip.h>
+#include <io.h>
+#define EWOULDBLOCK WSAEWOULDBLOCK
+#define ECONNREFUSED WSAECONNREFUSED
+#else
+#include <errno.h>
+#include <unistd.h>
+#include <fcntl.h>
+#include <sys/types.h>
+#include <sys/socket.h>
+#include <netinet/in.h>
+#include <netdb.h>
+#define closesocket close
+#endif   
+#include <string.h>
+#include <unistd.h>
+#include <errno.h>
+
+#include "_segmenter.c"
+
+static inline int socket_error()
+{
+#if HAVE_WINSOCK2_H == 1
+	return WSAGetLastError();
+#else
+	return errno;
+#endif
+}
+
+static void init_sockets()
+{
+#if HAVE_WINSOCK2_H == 1
+    WORD wVersionRequested;
+    WSADATA wsaData;
+    int err;
+
+    wVersionRequested = MAKEWORD(2, 2);
+
+    err = WSAStartup(wVersionRequested, &wsaData);
+    if (err != 0) 
+    {
+        fprintf(stderr, "WSAStartup failed with error: %d\n", err);    
+    }
+
+#endif
+}
+
+typedef struct
+{
+	const char *conversion_id;
+	int width;
+	int height;
+	int timestamp;
+}
+OverlayRequest;
+
+typedef struct
+{
+	int left;
+	int top;
+	int width;
+	int height;
+	uint8_t *data;
+}
+Overlay;
+
+typedef struct
+{
+	Overlay **overlays;
+	int overlay_count;
+	int valid_until_timestamp;
+}
+OverlayResponse;
+
+static OverlayResponse *overlay_response_init()
+{
+	OverlayResponse *resp = av_mallocz(sizeof(OverlayResponse));
+	return resp;
+}
+
+static void overlay_response_free(OverlayResponse *resp)
+{
+	if (resp != NULL)
+	{
+		if (resp->overlays != NULL)
+		{
+			for (int i = 0; i < resp->overlay_count; ++i)
+			{
+				if (resp->overlays[i] != NULL)
+				{
+					if (resp->overlays[i]->data != NULL)
+					{
+						av_free(resp->overlays[i]->data);
+					}
+					
+					av_free(resp->overlays[i]);
+				}				
+			}
+			resp->overlays = NULL;
+		}
+		
+		av_free(resp);
+	}
+}
+
+static int recv_fully(int socket, void *buf, int size)
+{
+	uint8_t *byte_buffer = buf;
+	int remaining = size;
+	
+	while (remaining > 0)
+	{
+		int numread = recv(socket, byte_buffer, remaining, 0);
+		if (numread <= 0)
+		{
+			return numread;
+		}
+		byte_buffer += numread;
+		remaining -= numread;
+	}
+	return size;
+}
+
+static int send_fully(int socket, const void *buf, int size)
+{
+	const uint8_t *byte_buffer = buf;
+	int remaining = size;
+	
+	while (remaining > 0)
+	{
+		int numsent = send(socket, byte_buffer, remaining, 0);
+		if (numsent <= 0)
+		{
+			return numsent;
+		}
+		byte_buffer += numsent;
+		remaining -= numsent;
+	}
+	return size;
+}
+
+static inline int send_int(int socket, int value)
+{
+	value = htonl(value);
+	return send_fully(socket, &value, sizeof(int));
+}
+
+#define __BAIL(condition) if ((condition) < 0) return -1;
+
+static int send_overlay_request(int socket, OverlayRequest *req)
+{
+	if (req->conversion_id == NULL)
+	{
+		__BAIL(send_int(socket, 0));		
+	}
+	else 
+	{
+		int len = strlen(req->conversion_id);
+		__BAIL(send_int(socket, len));
+		if (len > 0)
+		{
+			__BAIL(send_fully(socket, req->conversion_id, len));
+		}
+	}
+	__BAIL(send_int(socket, req->width));
+	__BAIL(send_int(socket, req->height));
+	__BAIL(send_int(socket, req->timestamp));
+	return 0;
+}
+
+static inline int read_int(int socket, int *value)
+{
+	int i;
+	int res = recv_fully(socket, &i, sizeof(int));
+	*value = ntohl(i);
+	return res;
+}
+
+static int read_overlay_response(int socket, OverlayResponse *resp)
+{
+	__BAIL(read_int(socket, &resp->valid_until_timestamp));
+	__BAIL(read_int(socket, &resp->overlay_count));
+	
+	if (resp->overlay_count == 0)
+	{
+		resp->overlays = NULL;
+	}
+	else 
+	{
+		int size;
+		resp->overlays = av_mallocz(resp->overlay_count * sizeof(Overlay));
+		
+		for (int i = 0; i < resp->overlay_count; ++i)
+		{
+			Overlay *overlay = av_mallocz(sizeof(Overlay));
+			resp->overlays[i] = overlay;
+			__BAIL(read_int(socket, &overlay->left));
+			__BAIL(read_int(socket, &overlay->top));
+			__BAIL(read_int(socket, &overlay->width));
+			__BAIL(read_int(socket, &overlay->height));
+			
+			size = overlay->width * overlay->height * 4;			
+			
+			if (size == 0)
+			{
+				overlay->data = NULL;
+			}
+			else 
+			{
+				overlay->data = av_mallocz(size);
+				__BAIL(recv_fully(socket, overlay->data, size));
+			}
+		}
+		
+	}
+
+	return 0;
+}
+
+static int overlay_port_number = -1;
+static int overlay_sock = -1;
+static const char *overlay_conversion_id;
+
+static int get_socket()
+{
+	if (overlay_sock != -1)
+	{
+		return overlay_sock;
+	}
+	else if (overlay_port_number != -1)
+	{
+		struct hostent *host;
+		struct sockaddr_in server_addr;  
+		
+		host = gethostbyname("127.0.0.1");
+		
+		if ((overlay_sock = socket(AF_INET, SOCK_STREAM, 0)) == -1) 
+		{
+			fprintf(stderr, "Error creating socket: %i\n", socket_error());
+			overlay_port_number = -1;
+			return -1;
+		}
+		
+		server_addr.sin_family = AF_INET;     
+		server_addr.sin_port = htons(overlay_port_number);   
+		server_addr.sin_addr = *((struct in_addr *)host->h_addr_list[0]);
+		memset(&(server_addr.sin_zero), 0, 8); 
+		
+		if (connect(overlay_sock, (struct sockaddr *)&server_addr,
+					sizeof(struct sockaddr)) == -1) 
+		{
+			fprintf(stderr, "Error connecting to server: %i\n", socket_error());
+			overlay_port_number = -1;
+			return -1;
+		}
+		
+		return overlay_sock;
+	}
+	else 
+	{
+		return -1;
+	}
+}
+
+static void close_socket()
+{
+	closesocket(overlay_sock);
+	overlay_sock = -1;
+}
+
+static OverlayResponse *last_response;
+
+static OverlayResponse *get_overlay(OverlayRequest *request)
+{
+	int sock;
+	
+	if (last_response != NULL && last_response->valid_until_timestamp >= request->timestamp)
+	{
+		return last_response;
+	}
+	overlay_response_free(last_response);
+	last_response = NULL;
+	
+	sock = get_socket();
+	
+	if (sock != -1)
+	{
+		if (send_overlay_request(sock, request) == -1)
+		{
+			fprintf(stderr, "Error sending overlay request: %i\n", socket_error());
+			overlay_port_number = -1;
+			close_socket();
+		}
+		else 
+		{
+			last_response = overlay_response_init();
+			if (read_overlay_response(sock, last_response) == -1)
+			{
+				fprintf(stderr, "Error reading overlay request: %i\n", socket_error());
+				overlay_response_free(last_response);
+				last_response = NULL;
+				overlay_port_number = -1;
+				close_socket();
+			}
+		}
+	}
+
+	
+	return last_response;
+}
+
+
+static inline unsigned char blend(unsigned char v1, unsigned char v2, unsigned alpha)
+{
+	if (alpha == 0)
+	{
+		return v1;
+	}
+	else if (alpha == 255)
+	{
+		return v2;
+	}
+	else if (alpha == 127)
+	{
+		return (v1 >> 1) + (v2 >> 1);		
+	}
+	else 
+	{
+		return (v1 * (255 - alpha) + v2 * alpha) >> 8;
+	}
+	
+}
+
+#define MIN(a,b) ((a) < (b) ? (a) : (b))
+
+static void blend_overlay(AVPicture *pic, enum PixelFormat pf, int width, int height, Overlay *overlay)
+{
+    int channel;
+	int stride;
+    unsigned char *row[4];
+	int max_x = MIN(overlay->width, width - overlay->left);
+	int max_y = MIN(overlay->height, height - overlay->top);
+
+	int vsub, hsub;
+	
+	avcodec_get_chroma_sub_sample(pf, &hsub, &vsub);
+	
+	stride = overlay->width * 4;
+	
+	for (int y = 0; y < max_y; ++y)
+	{
+		int dest_y = y + overlay->top;
+		row[0] = pic->data[0] + dest_y  * pic->linesize[0];
+
+		for (channel = 1; channel < 3; ++channel)
+		{
+			row[channel] = pic->data[channel] +
+			pic->linesize[channel] * (dest_y >> vsub);
+		}
+
+		for (int x = 0; x < max_x; ++x)
+		{
+			uint8_t *rgba_color = overlay->data +  y * stride + x * 4;			
+			uint8_t alpha = rgba_color[0];
+
+			if (alpha > 0)
+			{			
+				uint8_t _y  = RGB_TO_Y(rgba_color[1], rgba_color[2], rgba_color[3]);
+				uint8_t _cb = RGB_TO_U(rgba_color[1], rgba_color[2], rgba_color[3], 0);
+				uint8_t _cr = RGB_TO_V(rgba_color[1], rgba_color[2], rgba_color[3], 0);
+
+				int dest_x = x + overlay->left;
+
+				int hx = 1 << hsub;
+				int hy = 1 << vsub;
+
+				row[0][dest_x] = blend(row[0][dest_x], _y, alpha);
+
+				if (dest_y % hy == 0 && dest_x % hx == 0)
+				{
+					row[1][dest_x >> hsub] = blend(row[1][dest_x >> hsub], _cb, alpha);
+					row[2][dest_x >> hsub] = blend(row[2][dest_x >> hsub], _cr, alpha);
+				}
+			}
+		}
+	}
+}
+
+static void process_frame(AVPicture *pic, enum PixelFormat pf, int width, int height, uint64_t timestamp)
+{
+	OverlayRequest req;
+	OverlayResponse *resp;
+	
+	req.conversion_id = overlay_conversion_id;
+	req.width = width;
+	req.height = height;
+	req.timestamp = timestamp;
+
+	resp = get_overlay(&req);
+
+	if (resp != NULL && resp->overlay_count > 0)
+	{
+		for (int i = 0; i < resp->overlay_count; ++i)
+		{
+			blend_overlay(pic, pf, width, height, resp->overlays[i]);
+		}
+	}
+}
+
+int64_t seeked_to = 0;
+
+int av_seek_frame2(AVFormatContext *s, int stream_index, int64_t timestamp, int flags)
+{
+	seeked_to = timestamp;
+	return av_seek_frame(s, stream_index, timestamp, flags);
+}
+
+#define av_seek_frame av_seek_frame2
+
+#define fix_resample() ost->video_resample = 1;
+
+#define blend_subtitle() process_frame((AVPicture*)final_picture, enc->pix_fmt, enc->width, enc->height, (ist->pts + seeked_to) * 1000 / AV_TIME_BASE);
+
+int ffmpeg_main(int argc, char **argv);
+
+void preprocess_arguments(int *argc, char ***argv)
+{
+	char **res = av_malloc(*argc * sizeof(char*));
+	int index = 0;
+	
+	for (int i = 0; i < *argc; ++i)
+	{
+		if (strcmp((*argv)[i], "--conversion-id") == 0)
+		{
+			overlay_conversion_id = (*argv)[i+1];
+			i += 1;
+			continue;
+		} 
+		else if (strcmp((*argv)[i], "--port-number") == 0)
+		{
+			sscanf((*argv)[i+1], "%i", &overlay_port_number);
+			i += 1;
+			continue;
+		}
+		
+		res[index++] = (*argv)[i];
+		
+	}	
+	*argv = res;
+	*argc = index;
+}
+
+int main(int argc, char **argv)
+{
+	int res;
+	if (argc > 1 && strcmp(argv[1], "segmenter") == 0)
+	{
+	    return segmenter_main(argc, argv);
+	}
+	
+	init_sockets();
+	preprocess_arguments(&argc, &argv);
+	res = ffmpeg_main(argc, argv);
+	close_socket();
+	return res;
+}
+
+#define main ffmpeg_main
+
diff -r -u -N ffmpeg_git/_resample.c ffmpeg_airvideo/_resample.c
--- ffmpeg_git/_resample.c	1970-01-01 01:00:00.000000000 +0100
+++ ffmpeg_airvideo/_resample.c	2010-02-07 21:03:00.000000000 +0100
@@ -0,0 +1,40 @@
+#define stereo_split2(output1, output2, input, samples) \
+    do {\
+	stereo_split(output1, output2, input, samples); /* prevent "unused" warning */ \
+	stereo_split2_a(output1, output2, input, samples, s->input_channels);\
+    } while(0);
+
+static void stereo_split2_a(short *output1, short *output2, short *input, int samples, int channels)
+{
+    int i;
+    short l = 0;
+    short r = 0;
+    
+    if (channels == 2) {
+        for(i=0;i<samples;i++) {
+            /* stereo to stereo */
+            l = input[0];
+            r = input[1];
+        } 
+    } else if (channels == 5 || channels == 6) {
+        int fl_index = 0;
+        int fr_index = 1;            
+        int c_index = 2;
+        int bl_index = 3;
+        int br_index = 4;
+        
+        for(i=0;i<samples;i++) {
+            int fl = fl_index != -1 ? input[fl_index] : 0;
+            int fr = fr_index != -1 ? input[fr_index] : 0;
+            int c = c_index != -1 ? input[c_index] : 0;
+            int bl = bl_index != -1 ? input[bl_index] : 0;
+            int br = br_index != -1 ? input[br_index] : 0;
+            
+            l = av_clip_int16(fl + (0.707 * bl) + (0.707 * c));
+            r = av_clip_int16(fr + (0.707 * br) + (0.707 * c));
+            *output1++ = l;
+            *output2++ = r;
+            input += channels;
+        }         
+    }    
+}
\ No newline at end of file
diff -r -u -N ffmpeg_git/_segmenter.c ffmpeg_airvideo/_segmenter.c
--- ffmpeg_git/_segmenter.c	1970-01-01 01:00:00.000000000 +0100
+++ ffmpeg_airvideo/_segmenter.c	2010-02-06 23:53:59.000000000 +0100
@@ -0,0 +1,393 @@
+/*
+ * Copyright (c) 2009 Chase Douglas
+ *
+ * Modifications (c) 2009 Matej Knopp, InMethod s.r.o.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License version 2
+ * as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
+ */
+
+#if 0
+#include <stdio.h>
+#include <libavformat/avformat.h>
+#include <libavcodec/opt.h>
+#endif 
+
+#ifdef WIN32
+#include <io.h>
+#include <fcntl.h>
+#include <stdio.h>
+#endif
+
+static AVStream *segmenter_add_output_stream(AVFormatContext *output_format_context, AVStream *input_stream) 
+{
+    AVCodecContext *input_codec_context;
+    AVCodecContext *output_codec_context;
+    AVStream *output_stream;
+
+    output_stream = av_new_stream(output_format_context, 0);
+    if (!output_stream) 
+    {
+        fprintf(stderr, "Could not allocate stream\n");
+        exit(1);
+    }
+
+    input_codec_context = input_stream->codec;
+    output_codec_context = output_stream->codec;
+
+    output_codec_context->codec_id = input_codec_context->codec_id;
+    output_codec_context->codec_type = input_codec_context->codec_type;
+    output_codec_context->codec_tag = input_codec_context->codec_tag;
+    output_codec_context->bit_rate = input_codec_context->bit_rate;
+    output_codec_context->extradata = input_codec_context->extradata;
+    output_codec_context->extradata_size = input_codec_context->extradata_size;
+
+    if (av_q2d(input_codec_context->time_base) * input_codec_context->ticks_per_frame > av_q2d(input_stream->time_base) && 
+        av_q2d(input_stream->time_base) < 1.0/1000) 
+    {
+        output_codec_context->time_base = input_codec_context->time_base;
+        output_codec_context->time_base.num *= input_codec_context->ticks_per_frame;
+    }
+    else 
+    {
+        output_codec_context->time_base = input_stream->time_base;
+    }
+
+    switch (input_codec_context->codec_type) 
+    {
+        case CODEC_TYPE_AUDIO:
+            output_codec_context->channel_layout = input_codec_context->channel_layout;
+            output_codec_context->sample_rate = input_codec_context->sample_rate;
+            output_codec_context->channels = input_codec_context->channels;
+
+            output_codec_context->frame_size = input_codec_context->frame_size;
+
+            if ((input_codec_context->block_align == 1 && input_codec_context->codec_id == CODEC_ID_MP3) || input_codec_context->codec_id == CODEC_ID_AC3) 
+            {
+                output_codec_context->block_align = 0;
+            }
+            else 
+            {
+                output_codec_context->block_align = input_codec_context->block_align;
+            }
+            break;
+        case CODEC_TYPE_VIDEO:
+            output_codec_context->pix_fmt = input_codec_context->pix_fmt;
+            output_codec_context->width = input_codec_context->width;
+            output_codec_context->height = input_codec_context->height;
+            output_codec_context->has_b_frames = input_codec_context->has_b_frames;
+
+            if (output_format_context->oformat->flags & AVFMT_GLOBALHEADER) 
+            {
+                output_codec_context->flags |= CODEC_FLAG_GLOBAL_HEADER;
+            }
+            break;
+        default:
+            break;
+    }
+
+    return output_stream;
+}
+
+static void segmenter_close_io(ByteIOContext *context, uint8_t finished)
+{
+    uint8_t *result_buffer;
+
+    uint32_t len = url_close_dyn_buf(context, &result_buffer);
+
+    if (len > 0 || finished)
+    {
+        uint32_t network = htonl(finished);
+        fwrite(&network, 4, 1, stdout);
+
+        network = htonl(len);
+        fwrite(&network, 4, 1, stdout);
+
+        fwrite(result_buffer, len, 1, stdout);
+        fflush(stdout);
+    }
+    av_free(result_buffer);
+}
+
+static int segmenter_main(int argc, char **argv)
+{
+    const char *input;
+    unsigned int segment_duration;
+    char *segment_duration_check;
+    double prev_segment_time = 0;
+    unsigned int output_index = 0;
+    unsigned int segment_offset = 0;
+    AVInputFormat *ifmt;
+    AVOutputFormat *ofmt;
+    AVFormatContext *ic = NULL;
+    AVFormatContext *oc;
+    AVStream *video_st = NULL;
+    AVStream *audio_st = NULL;
+    AVCodec *codec;
+    int video_index;
+    int audio_index;
+    int decode_done;
+    int ret;
+    int i;
+
+    int err;
+    int shift = 1;
+    double ts_offset = 0;
+
+    av_log_set_level(AV_LOG_VERBOSE);
+
+    if (argc != 4) 
+    {
+        fprintf(stderr, "Usage: %s segmenter <segment duration in seconds> <first-segment-index>\n", argv[shift + 0]);
+        exit(1);
+    }
+
+#ifdef WIN32
+	setmode(STDOUT_FILENO, O_BINARY);
+#endif
+    
+    av_register_all();
+
+    input = "pipe:";
+
+    segment_duration = strtoll(argv[shift + 1], &segment_duration_check, 10);
+    if (segment_duration_check == argv[shift + 1]) 
+    {
+        fprintf(stderr, "Segment duration time (%s) invalid\n", argv[shift + 1]);
+        exit(1);
+    }
+
+    output_index = strtoll(argv[shift + 2], &segment_duration_check, 10);
+    segment_offset = output_index;
+    if (segment_duration_check == argv[shift + 2]) 
+    {
+        fprintf(stderr, "First segment index (%s) invalid\n", argv[shift + 2]);
+        exit(1);
+    }
+
+    ifmt = av_find_input_format("mpegts");
+    if (!ifmt) 
+    {
+        fprintf(stderr, "Could not find MPEG-TS demuxer\n");
+        exit(1);
+    }
+
+    ret = av_open_input_file(&ic, input, ifmt, 0, NULL);
+    if (ret != 0) 
+    {
+        fprintf(stderr, "Could not open input file, make sure it is an mpegts file: %d\n", ret);
+        exit(1);
+    }
+
+//    av_set_int(ic, "analyzeduration", 10000000);
+
+    if (av_find_stream_info(ic) < 0) 
+    {
+        fprintf(stderr, "Could not read stream information\n");
+        exit(1);
+    }
+
+    ofmt = guess_format("mpegts", NULL, NULL);
+    if (!ofmt) 
+    {
+        fprintf(stderr, "Could not find MPEG-TS muxer\n");
+        exit(1);
+    }
+    
+    oc = avformat_alloc_context();
+    if (!oc) 
+    {
+        fprintf(stderr, "Could not allocated output context");
+        exit(1);
+    }
+    oc->oformat = ofmt;
+
+    ofmt->flags |= AVFMT_NOTIMESTAMPS;
+//    ofmt->flags |= AVFMT_TS_DISCONT;
+
+    video_index = -1;
+    audio_index = -1;
+
+    for (i = 0; i < ic->nb_streams && (video_index < 0 || audio_index < 0); i++) 
+    {
+        switch (ic->streams[i]->codec->codec_type) 
+        {
+            case CODEC_TYPE_VIDEO:
+                video_index = i;
+                ic->streams[i]->discard = AVDISCARD_NONE;
+                video_st = segmenter_add_output_stream(oc, ic->streams[i]);
+                break;
+            case CODEC_TYPE_AUDIO:
+                audio_index = i;
+                ic->streams[i]->discard = AVDISCARD_NONE;
+                audio_st = segmenter_add_output_stream(oc, ic->streams[i]);
+                break;
+            default:
+                ic->streams[i]->discard = AVDISCARD_ALL;
+                break;
+        }
+    }
+
+    if (av_set_parameters(oc, NULL) < 0)
+    {
+        fprintf(stderr, "Invalid output format parameters\n");
+        exit(1);
+    }
+
+    dump_format(oc, 0, "", 1);
+
+    if (video_st)
+    {
+        codec = avcodec_find_decoder(video_st->codec->codec_id);
+        if (!codec) 
+        {
+            fprintf(stderr, "Could not find video decoder, key frames will not be honored\n");
+        }
+
+        if (avcodec_open(video_st->codec, codec) < 0) 
+        {
+            fprintf(stderr, "Could not open video decoder, key frames will not be honored\n");
+        }
+    }
+
+    ++output_index;
+
+    if (url_open_dyn_buf(&oc->pb) < 0) 
+    {
+        fprintf(stderr, "Could not open dynamic buffer\n");
+        exit(1);
+    }
+
+    if ((err = av_write_header(oc)) != 0) 
+    {
+        fprintf(stderr, "Could not write mpegts header to first output file: %i\n", err);
+        exit(1);
+    }
+
+    // fprintf(stderr, "Input context has timestamp:%lld, start_time:%lld\n", ic->timestamp, ic->start_time);
+
+    if (video_index != -1)
+    {
+        ts_offset = (double)(segment_offset * segment_duration) * video_st->time_base.den / video_st->time_base.num;
+    }
+    else if (audio_index != -1)
+    {
+        ts_offset = (double)(segment_offset * segment_duration) * audio_st->time_base.den / audio_st->time_base.num;
+    }
+
+    fprintf(stderr, "Offsetting timestamps by:%f\n", ts_offset);
+    prev_segment_time += segment_offset * segment_duration;
+
+    do 
+    {
+        double segment_time;
+        AVPacket packet;
+
+        decode_done = av_read_frame(ic, &packet);
+        if (decode_done < 0) 
+        {
+            break;
+        }
+
+        if (av_dup_packet(&packet) < 0) 
+        {
+            fprintf(stderr, "Could not duplicate packet");
+            av_free_packet(&packet);
+            break;
+        }
+
+        packet.pts += ts_offset;
+        packet.dts += ts_offset;
+        // fprintf(stderr, "Packet pts: %f\n", (double)packet.pts * audio_st->time_base.num / audio_st->time_base.den);
+
+        if (video_st && packet.stream_index == video_index && (packet.flags & PKT_FLAG_KEY)) 
+        {
+            segment_time = (double)video_st->pts.val * video_st->time_base.num / video_st->time_base.den;
+        }
+        else if (video_index == -1) 
+        {
+            segment_time = (double)audio_st->pts.val * audio_st->time_base.num / audio_st->time_base.den;
+        }
+        else 
+        {
+            segment_time = prev_segment_time;
+        }
+
+        if (segment_time - prev_segment_time >= segment_duration) 
+        {
+            put_flush_packet(oc->pb);
+
+            if ((output_index -1) % 5 == 0)
+            {
+                fprintf(stderr, "Wrote segment %d\n", output_index - 1);
+                fflush(stderr);
+            }
+
+            ++output_index;
+
+            prev_segment_time += segment_duration;
+            
+            segmenter_close_io(oc->pb, 1);
+        }
+        else
+        {
+            segmenter_close_io(oc->pb, 0);
+        }
+
+
+        if (url_open_dyn_buf(&oc->pb) < 0) 
+        {
+            fprintf(stderr, "Could not open dynamic buffer\n");
+            break;
+	}   
+
+        ret = av_interleaved_write_frame(oc, &packet);
+        if (ret < 0) 
+        {
+            fprintf(stderr, "Could not write frame of stream\n");
+            av_free_packet(&packet);
+            break;
+        }
+        else if (ret > 0) 
+        {
+            fprintf(stderr, "End of stream requested\n");
+            av_free_packet(&packet);
+            break;
+        }
+
+        av_free_packet(&packet);
+    } 
+    while (!decode_done);
+
+    av_write_trailer(oc);
+
+    if (video_st)
+    {
+        avcodec_close(video_st->codec);
+    }
+
+    for(i = 0; i < oc->nb_streams; i++) 
+    {
+        av_freep(&oc->streams[i]->codec);
+        av_freep(&oc->streams[i]);
+    }
+
+    segmenter_close_io(oc->pb, 1);
+    av_free(oc);
+
+    fprintf(stderr, "Wrote segment %d -- final\n", output_index - 1);
+    fflush(stderr);
+
+    return 0;
+}
+
diff -r -u -N ffmpeg_git/_snapshot ffmpeg_airvideo/_snapshot
--- ffmpeg_git/_snapshot	1970-01-01 01:00:00.000000000 +0100
+++ ffmpeg_airvideo/_snapshot	2010-02-07 19:46:15.000000000 +0100
@@ -0,0 +1,12 @@
+#!/bin/sh
+mkdir ../ffmpeg.tmp
+mkdir ../ffmpeg.tmp/ffmpeg
+cp -R * ../ffmpeg.tmp/ffmpeg
+cd ../ffmpeg.tmp/ffmpeg
+rm -Rf .git
+rm -rf `find . -type d -name .svn`
+make distclean
+cd ..
+tar -c -L ffmpeg > ../ffmpeg.tar
+cd ..
+rm -Rf ffmpeg.tmp
\ No newline at end of file
diff -r -u -N ffmpeg_git/_unicode.c ffmpeg_airvideo/_unicode.c
--- ffmpeg_git/_unicode.c	1970-01-01 01:00:00.000000000 +0100
+++ ffmpeg_airvideo/_unicode.c	2010-02-07 21:03:10.000000000 +0100
@@ -0,0 +1,36 @@
+
+#if HAVE_WINSOCK2_H == 1 
+
+wchar_t * __s2ws(char *s)
+{	
+	int len = strlen(s);
+	wchar_t *res = av_malloc((len + 1) * sizeof(wchar_t));
+	int i = 0;
+	while (*s != 0)
+	{
+		if (s[0] == '\\' && s[1] == 'u')
+		{
+			char number [5];			
+			int value;
+			strncpy(number, s + 2, 4);
+			sscanf(number, "%x", &value);
+			res[i] = value;
+			s+=5;
+		}
+		else if (s[0] == '\\' && s[1] == '\\')
+		{
+			res[i] = s[0];
+			s += 1;
+		}
+		else
+		{
+			res[i] = s[0];	
+		}
+		++i;
+		++s;
+	}
+	res[i] = 0;
+	return res;
+}
+
+#endif
\ No newline at end of file
diff -r -u -N ffmpeg_git/_unicode.h ffmpeg_airvideo/_unicode.h
--- ffmpeg_git/_unicode.h	1970-01-01 01:00:00.000000000 +0100
+++ ffmpeg_airvideo/_unicode.h	2010-02-07 21:03:13.000000000 +0100
@@ -0,0 +1,13 @@
+
+#ifndef __unicode_h__
+#define __unicode_h__
+
+#if HAVE_WINSOCK2_H == 1 
+
+extern wchar_t * __s2ws(char *s);
+
+#define open(name, flags, mode) _wopen(__s2ws(name), flags, mode);
+
+#endif
+
+#endif 
\ No newline at end of file
