Merge remote-tracking branch 'newdev/master'
authorMichael Niedermayer <michaelni@gmx.at>
Thu, 24 Mar 2011 01:12:17 +0000 (02:12 +0100)
committerMichael Niedermayer <michaelni@gmx.at>
Thu, 24 Mar 2011 01:16:11 +0000 (02:16 +0100)
* newdev/master:
  avio: make udp_set_remote_url/get_local_port internal.
  asfdec: also subtract preroll when reading simple index object
  matroskaenc: remove a variable that's unused after bc17bd9.
  avio: cosmetics - nicer vertical alignment.
  Remove unnecessary icc version checks
  Disable 'attribute "foo" ignored' warnings from icc
  rtsp: Don't use a locale dependent format string
  Add xd55 codec tag for XDCAM HD422 720p25 CBR files.
  configure: get libavcodec version from new version.h header
  lavc: move the version macros to a new installed header.
  matroskaenc: simplify get_aac_sample_rates by using ff_mpeg4audio_get_config
  Do not use format string "%0.3f" for RTSP Range field.
  Add apply_window_int16() to DSPContext with x86-optimized versions and use it in the ac3_fixed encoder.
  Document usage of import libraries created by dlltool
  configure: Set the correct lib target for arm/wince dlltool
  fate: simplify regression-funcs.sh
  fate: add support for multithread testing

Conflicts:
libavformat/rtspdec.c
libavutil/attributes.h
libavutil/internal.h
libavutil/mem.h

Merged-by: Michael Niedermayer <michaelni@gmx.at>
25 files changed:
1  2 
Makefile
configure
doc/general.texi
doc/protocols.texi
libavcodec/Makefile
libavcodec/ac3enc.c
libavcodec/ac3enc_fixed.c
libavcodec/ac3enc_float.c
libavcodec/ac3tab.c
libavcodec/avcodec.h
libavcodec/dsputil.c
libavcodec/dsputil.h
libavcodec/x86/dsputil_mmx.c
libavcodec/x86/dsputil_yasm.asm
libavformat/asfdec.c
libavformat/avio.h
libavformat/avio_internal.h
libavformat/matroskaenc.c
libavformat/rtpproto.c
libavformat/rtspdec.c
libavformat/rtspenc.c
libavformat/udp.c
libavutil/attributes.h
libavutil/internal.h
libavutil/mem.h

diff --combined Makefile
+++ b/Makefile
@@@ -176,7 -176,7 +176,7 @@@ distclean:
        $(RM) version.h config.* libavutil/avconfig.h
  
  config:
 -      $(SRC_PATH)/configure $(value LIBAV_CONFIGURATION)
 +      $(SRC_PATH)/configure $(value FFMPEG_CONFIGURATION)
  
  # regression tests
  
@@@ -290,7 -290,7 +290,7 @@@ fate: $(FATE
  
  $(FATE): ffmpeg$(EXESUF) $(FATE_UTILS:%=tests/%$(HOSTEXESUF))
        @echo "TEST    $(@:fate-%=%)"
-       $(Q)$(SRC_PATH)/tests/fate-run.sh $@ "$(SAMPLES)" "$(TARGET_EXEC)" "$(TARGET_PATH)" '$(CMD)' '$(CMP)' '$(REF)' '$(FUZZ)'
+       $(Q)$(SRC_PATH)/tests/fate-run.sh $@ "$(SAMPLES)" "$(TARGET_EXEC)" "$(TARGET_PATH)" '$(CMD)' '$(CMP)' '$(REF)' '$(FUZZ)' '$(THREADS)'
  
  fate-list:
        @printf '%s\n' $(sort $(FATE))
diff --combined configure
+++ b/configure
@@@ -1,6 -1,6 +1,6 @@@
  #!/bin/sh
  #
 -# Libav configure script
 +# FFmpeg configure script
  #
  # Copyright (c) 2000-2002 Fabrice Bellard
  # Copyright (c) 2005-2008 Diego Biurrun
@@@ -44,9 -44,9 +44,9 @@@ if test "$E1" != 0 || test "$E2" = 0; t
      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 LIBAV, DO NOT REPORT IT AS SUCH."
 +    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 Libav."
 +    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."
@@@ -169,7 -169,6 +169,7 @@@ External library support
                             and libraw1394 [no]
    --enable-libdirac        enable Dirac support via libdirac [no]
    --enable-libfaac         enable FAAC support via libfaac [no]
 +  --enable-libfreetype     enable libfreetype [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,
@@@ -238,7 -237,7 +238,7 @@@ Advanced options (experts only)
    --enable-sram            allow use of on-chip SRAM
    --disable-symver         disable symbol versioning
  
 -Developer options (useful when working on Libav itself):
 +Developer options (useful when working on FFmpeg itself):
    --disable-debug          disable debugging symbols
    --enable-debug=LEVEL     set the debug level [$debuglevel]
    --disable-optimizations  disable compiler optimizations
@@@ -280,7 -279,7 +280,7 @@@ die()
  
  If you think configure made a mistake, make sure you are using the latest
  version from Git.  If the latest version fails, report the problem to the
 -libav-user@libav.org mailing list or IRC #libav on irc.freenode.net.
 +ffmpeg-user@mplayerhq.hu mailing list or IRC #ffmpeg on irc.freenode.net.
  EOF
      if disabled logging; then
          cat <<EOF
@@@ -907,7 -906,6 +907,7 @@@ CONFIG_LIST=
      avformat
      avisynth
      bzlib
 +    crystalhd
      dct
      doc
      dwt
      libdc1394
      libdirac
      libfaac
 +    libfreetype
      libgsm
      libmp3lame
      libnut
@@@ -1077,7 -1074,6 +1077,7 @@@ HAVE_LIST=
      llrintf
      local_aligned_16
      local_aligned_8
 +    localtime_r
      log2
      log2f
      loongson
@@@ -1276,7 -1272,6 +1276,7 @@@ h263_vaapi_hwaccel_select="vaapi h263_d
  h263i_decoder_select="h263_decoder"
  h263p_encoder_select="h263_encoder"
  h264_decoder_select="golomb h264dsp h264pred"
 +h264_crystalhd_decoder_select="crystalhd h264_mp4toannexb_bsf"
  h264_dxva2_hwaccel_deps="dxva2api_h"
  h264_dxva2_hwaccel_select="dxva2 h264_decoder"
  h264_vaapi_hwaccel_select="vaapi"
@@@ -1299,16 -1294,13 +1299,16 @@@ mpeg4_decoder_select="h263_decoder mpeg
  mpeg4_encoder_select="h263_encoder"
  mpeg_vdpau_decoder_select="vdpau mpegvideo_decoder"
  mpeg1_vdpau_decoder_select="vdpau mpeg1video_decoder"
 +mpeg2_crystalhd_decoder_select="crystalhd"
  mpeg2_dxva2_hwaccel_deps="dxva2api_h"
  mpeg2_dxva2_hwaccel_select="dxva2 mpeg2video_decoder"
  mpeg2_vaapi_hwaccel_select="vaapi mpeg2video_decoder"
 +mpeg4_crystalhd_decoder_select="crystalhd"
  mpeg4_vaapi_hwaccel_select="vaapi mpeg4_decoder"
  mpeg4_vdpau_decoder_select="vdpau mpeg4_decoder"
  mpeg_xvmc_decoder_deps="X11_extensions_XvMClib_h"
  mpeg_xvmc_decoder_select="mpegvideo_decoder"
 +msmpeg4_crystalhd_decoder_select="crystalhd"
  msmpeg4v1_decoder_select="h263_decoder"
  msmpeg4v1_encoder_select="h263_encoder"
  msmpeg4v2_decoder_select="h263_decoder"
@@@ -1332,9 -1324,6 +1332,9 @@@ shorten_decoder_select="golomb
  sipr_decoder_select="lsp"
  snow_decoder_select="dwt"
  snow_encoder_select="aandct dwt"
 +sonic_decoder_select="golomb"
 +sonic_encoder_select="golomb"
 +sonic_ls_encoder_select="golomb"
  svq1_encoder_select="aandct"
  svq3_decoder_select="golomb h264dsp h264pred"
  svq3_decoder_suggest="zlib"
@@@ -1345,7 -1334,6 +1345,7 @@@ truehd_decoder_select="mlp_decoder
  tscc_decoder_select="zlib"
  twinvq_decoder_select="mdct lsp sinewin"
  vc1_decoder_select="h263_decoder"
 +vc1_crystalhd_decoder_select="crystalhd"
  vc1_dxva2_hwaccel_deps="dxva2api_h DXVA_PictureParameters_wDecodedPictureIndex"
  vc1_dxva2_hwaccel_select="dxva2 vc1_decoder"
  vc1_vaapi_hwaccel_select="vaapi vc1_decoder"
@@@ -1367,7 -1355,6 +1367,7 @@@ wmv1_encoder_select="h263_encoder
  wmv2_decoder_select="h263_decoder"
  wmv2_encoder_select="h263_encoder"
  wmv3_decoder_select="vc1_decoder"
 +wmv3_crystalhd_decoder_select="crystalhd"
  wmv3_dxva2_hwaccel_select="vc1_dxva2_hwaccel"
  wmv3_vaapi_hwaccel_select="vc1_vaapi_hwaccel"
  wmv3_vdpau_decoder_select="vc1_vdpau_decoder"
@@@ -1376,7 -1363,6 +1376,7 @@@ zlib_encoder_select="zlib
  zmbv_decoder_select="zlib"
  zmbv_encoder_select="zlib"
  
 +crystalhd_deps="libcrystalhd_libcrystalhd_if_h"
  vaapi_deps="va_va_h"
  vdpau_deps="vdpau_vdpau_h vdpau_vdpau_x11_h"
  
@@@ -1443,7 -1429,6 +1443,7 @@@ alsa_indev_deps="alsa_asoundlib_h snd_p
  alsa_outdev_deps="alsa_asoundlib_h"
  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"
 +fbdev_indev_deps="linux_fb_h"
  jack_indev_deps="jack_jack_h"
  libdc1394_indev_deps="libdc1394"
  oss_indev_deps_any="soundcard_h sys_soundcard_h"
@@@ -1469,11 -1454,9 +1469,11 @@@ udp_protocol_deps="network
  # filters
  blackframe_filter_deps="gpl"
  cropdetect_filter_deps="gpl"
 +drawtext_filter_deps="libfreetype"
  frei0r_filter_deps="frei0r dlopen strtok_r"
  frei0r_src_filter_deps="frei0r dlopen strtok_r"
  hqdn3d_filter_deps="gpl"
 +mp_filter_deps="gpl"
  scale_filter_deps="swscale"
  ocv_filter_deps="libopencv"
  yadif_filter_deps="gpl"
@@@ -1702,7 -1685,7 +1702,7 @@@ for v in "$@"; d
      r=${v#*=}
      l=${v%"$r"}
      r=$(sh_quote "$r")
 -    LIBAV_CONFIGURATION="${LIBAV_CONFIGURATION# } ${l}${r}"
 +    FFMPEG_CONFIGURATION="${FFMPEG_CONFIGURATION# } ${l}${r}"
  done
  
  find_things(){
@@@ -1814,7 -1797,7 +1814,7 @@@ don
  
  disabled logging && logfile=/dev/null
  
 -echo "# $0 $LIBAV_CONFIGURATION" > $logfile
 +echo "# $0 $FFMPEG_CONFIGURATION" > $logfile
  set >> $logfile
  
  test -n "$cross_prefix" && enable cross_compile
@@@ -2375,7 -2358,7 +2375,7 @@@ case $target_os i
      openbsd)
          enable malloc_aligned
          # On OpenBSD 4.5. the compiler does not use PIC unless
 -        # explicitly using -fPIC. Libav builds fine without PIC,
 +        # 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 malloc_aligned
              LIBTARGET="i386:x86-64"
          elif enabled arm; then
-             LIBTARGET=arm
+             LIBTARGET=arm-wince
          fi
          shlibdir_default="$bindir_default"
          disable ffserver
          ;;
  esac
  
 -echo "config:$arch:$subarch:$cpu:$target_os:$cc_ident:$LIBAV_CONFIGURATION" >config.fate
 +echo "config:$arch:$subarch:$cpu:$target_os:$cc_ident:$FFMPEG_CONFIGURATION" >config.fate
  
  check_cpp_condition stdlib.h "defined(__PIC__) || defined(__pic__) || defined(PIC)" && enable pic
  
@@@ -2785,7 -2768,6 +2785,7 @@@ check_func  getrusag
  check_struct "sys/time.h sys/resource.h" "struct rusage" ru_maxrss
  check_func  inet_aton $network_extralibs
  check_func  isatty
 +check_func  localtime_r
  check_func  ${malloc_prefix}memalign            && enable memalign
  check_func  mkstemp
  check_func  mmap
@@@ -2803,7 -2785,6 +2803,7 @@@ check_func_headers windows.h VirtualAll
  
  check_header dlfcn.h
  check_header dxva2api.h
 +check_header libcrystalhd/libcrystalhd_if.h
  check_header malloc.h
  check_header poll.h
  check_header sys/mman.h
@@@ -2851,7 -2832,6 +2851,7 @@@ for thread in $THREADS_LIST; d
  done
  
  check_lib math.h sin -lm
 +disabled crystalhd || check_lib libcrystalhd/libcrystalhd_if.h DtsGetVersion -lcrystalhd
  disabled vaapi || check_lib va/va.h vaInitialize -lva
  
  check_mathfunc exp2
@@@ -2873,7 -2853,6 +2873,7 @@@ enabled libdirac   && require_pkg_confi
      "libdirac_decoder/dirac_parser.h libdirac_encoder/dirac_encoder.h"  \
      "dirac_decoder_init dirac_encoder_init"
  enabled libfaac    && require2 libfaac "stdint.h faac.h" faacEncGetVersion -lfaac
 +enabled libfreetype && add_cflags $(pkg-config --cflags freetype2) && require libfreetype ft2build.h FT_Init_FreeType -lfreetype
  enabled libgsm     && require  libgsm gsm/gsm.h gsm_create -lgsm
  enabled libmp3lame && require  "libmp3lame >= 3.98.3" lame/lame.h lame_set_VBR_quality -lmp3lame
  enabled libnut     && require  libnut libnut.h nut_demuxer_init -lnut
  
  texi2html -version > /dev/null 2>&1 && enable texi2html || disable texi2html
  
 +check_header linux/fb.h
  check_header linux/videodev.h
  check_header linux/videodev2.h
  check_header sys/videoio.h
@@@ -3009,10 -2987,11 +3009,11 @@@ if enabled icc; the
      check_cflags -w1
      # -wd: Disable following warnings
      # 144, 167, 556: -Wno-pointer-sign
+     # 1292: attribute "foo" ignored
      # 10006: ignoring unknown option -fno-signed-zeros
      # 10148: ignoring unknown option -Wno-parentheses
      # 10156: ignoring option '-W'; no argument required
-     check_cflags -wd144,167,556,10006,10148,10156
+     check_cflags -wd144,167,556,1292,10006,10148,10156
      # 11030: Warning unknown option --as-needed
      # 10156: ignoring option '-export'; no argument required
      check_ldflags -wd10156,11030
@@@ -3190,8 -3169,6 +3191,8 @@@ if enabled source_path_used; the
          libavdevice
          libavfilter
          libavfilter/$arch
 +        libavfilter/libmpcodecs
 +        libavfilter/libmpcodecs/libvo
          libavformat
          libavutil
          libavutil/$arch
@@@ -3226,9 -3203,9 +3227,9 @@@ config_files="$TMPH config.mak
  
  cat > config.mak <<EOF
  # Automatically generated by configure - do not modify!
 -ifndef LIBAV_CONFIG_MAK
 -LIBAV_CONFIG_MAK=1
 -LIBAV_CONFIGURATION=$LIBAV_CONFIGURATION
 +ifndef FFMPEG_CONFIG_MAK
 +FFMPEG_CONFIG_MAK=1
 +FFMPEG_CONFIGURATION=$FFMPEG_CONFIGURATION
  prefix=$prefix
  LIBDIR=\$(DESTDIR)$libdir
  SHLIBDIR=\$(DESTDIR)$shlibdir
@@@ -3310,7 -3287,7 +3311,7 @@@ get_version()
  
  get_version LIBSWSCALE  libswscale/swscale.h
  get_version LIBPOSTPROC libpostproc/postprocess.h
- get_version LIBAVCODEC  libavcodec/avcodec.h
+ get_version LIBAVCODEC  libavcodec/version.h
  get_version LIBAVDEVICE libavdevice/avdevice.h
  get_version LIBAVFORMAT libavformat/version.h
  get_version LIBAVUTIL   libavutil/avutil.h
@@@ -3318,10 -3295,10 +3319,10 @@@ get_version LIBAVFILTER libavfilter/avf
  
  cat > $TMPH <<EOF
  /* Automatically generated by configure - do not modify! */
 -#ifndef LIBAV_CONFIG_H
 -#define LIBAV_CONFIG_H
 -#define LIBAV_CONFIGURATION "$(c_escape $LIBAV_CONFIGURATION)"
 -#define LIBAV_LICENSE "$(c_escape $license)"
 +#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
@@@ -3372,8 -3349,8 +3373,8 @@@ LAVFI_TESTS=$(print_enabled  -n _test $
  SEEK_TESTS=$(print_enabled   -n _test $SEEK_TESTS)
  EOF
  
 -echo "#endif /* LIBAV_CONFIG_H */" >> $TMPH
 -echo "endif # LIBAV_CONFIG_MAK" >> config.mak
 +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
@@@ -3437,10 -3414,10 +3438,10 @@@ Cflags: -I\${includedir
  EOF
  }
  
 -pkgconfig_generate libavutil "Libav utility library" "$LIBAVUTIL_VERSION"
 -pkgconfig_generate libavcodec "Libav codec library" "$LIBAVCODEC_VERSION" "$extralibs"
 -pkgconfig_generate libavformat "Libav container format library" "$LIBAVFORMAT_VERSION" "$extralibs" "libavcodec = $LIBAVCODEC_VERSION"
 -pkgconfig_generate libavdevice "Libav device handling library" "$LIBAVDEVICE_VERSION" "$extralibs" "libavformat = $LIBAVFORMAT_VERSION"
 -pkgconfig_generate libavfilter "Libav video filtering library" "$LIBAVFILTER_VERSION" "$extralibs"
 -pkgconfig_generate libpostproc "Libav post processing library" "$LIBPOSTPROC_VERSION"
 -pkgconfig_generate libswscale "Libav image rescaling library" "$LIBSWSCALE_VERSION" "" "libavutil = $LIBAVUTIL_VERSION"
 +pkgconfig_generate libavutil "FFmpeg utility library" "$LIBAVUTIL_VERSION"
 +pkgconfig_generate libavcodec "FFmpeg codec library" "$LIBAVCODEC_VERSION" "$extralibs"
 +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"
 +pkgconfig_generate libavfilter "FFmpeg video filtering library" "$LIBAVFILTER_VERSION" "$extralibs"
 +pkgconfig_generate libpostproc "FFmpeg post processing library" "$LIBPOSTPROC_VERSION"
 +pkgconfig_generate libswscale "FFmpeg image rescaling library" "$LIBSWSCALE_VERSION" "" "libavutil = $LIBAVUTIL_VERSION"
diff --combined doc/general.texi
  
  @chapter external libraries
  
 -Libav can be hooked up with a number of external libraries to add support
 +FFmpeg can be hooked up with a number of external libraries to add support
  for more formats. None of them are used by default, their use has to be
  explicitly requested by passing the appropriate flags to @file{./configure}.
  
  @section OpenCORE AMR
  
 -Libav can make use of the OpenCORE libraries for AMR-NB
 +FFmpeg can make use of the OpenCORE libraries for AMR-NB
  decoding/encoding and AMR-WB decoding.
  
  Go to @url{http://sourceforge.net/projects/opencore-amr/} and follow the instructions for
@@@ -27,7 -27,7 +27,7 @@@ installing the libraries. Then pass @co
  Note that OpenCORE is under the Apache License 2.0 (see
  @url{http://www.apache.org/licenses/LICENSE-2.0} for details), which is
  incompatible with the LGPL version 2.1 and GPL version 2. You have to
 -upgrade Libav's license to LGPL version 3 (or if you have enabled
 +upgrade FFmpeg's license to LGPL version 3 (or if you have enabled
  GPL components, GPL version 3) to use it.
  
  
@@@ -37,7 -37,7 +37,7 @@@ You can use the @code{-formats} and @co
  
  @section File Formats
  
 -Libav supports the following file formats through the @code{libavformat}
 +FFmpeg supports the following file formats through the @code{libavformat}
  library:
  
  @multitable @columnfractions .4 .1 .1 .4
@@@ -665,10 -665,6 +665,10 @@@ following image formats are supported
  @item Sierra VMD audio       @tab     @tab  X
      @tab Used in Sierra VMD files.
  @item Smacker audio          @tab     @tab  X
 +@item Sonic                  @tab  X  @tab  X
 +    @tab experimental codec
 +@item Sonic lossless         @tab  X  @tab  X
 +    @tab experimental codec
  @item Speex                  @tab     @tab  E
      @tab supported through external library libspeex
  @item True Audio (TTA)       @tab     @tab  X
@@@ -751,18 -747,18 +751,18 @@@ Using a cross-compiler is preferred fo
  
  @subsection DJGPP
  
 -Libav cannot be compiled because of broken system headers, add
 +FFmpeg cannot be compiled because of broken system headers, add
  @code{--extra-cflags=-U__STRICT_ANSI__} to the configure options as a
  workaround.
  
  @section OS/2
  
 -For information about compiling Libav on OS/2 see
 +For information about compiling FFmpeg on OS/2 see
  @url{http://www.edm2.com/index.php/FFmpeg}.
  
  @section Unix-like
  
 -Some parts of Libav cannot be built with version 2.15 of the GNU
 +Some parts of FFmpeg cannot be built with version 2.15 of the GNU
  assembler which is still provided by a few AMD64 distributions. To
  make sure your compiler really uses the required version of gas
  after a binutils upgrade, run:
@@@ -777,7 -773,7 +777,7 @@@ to configure
  
  @subsection BSD
  
 -BSD make will not build Libav, you need to install and use GNU Make
 +BSD make will not build FFmpeg, you need to install and use GNU Make
  (@file{gmake}).
  
  @subsubsection FreeBSD
@@@ -790,7 -786,7 +790,7 @@@ getting the system headers fixed
  
  @subsection (Open)Solaris
  
 -GNU Make is required to build Libav, so you have to invoke (@file{gmake}),
 +GNU Make is required to build FFmpeg, so you have to invoke (@file{gmake}),
  standard Solaris Make will not work. When building with a non-c99 front-end
  (gcc, generic suncc) add either @code{--extra-libs=/usr/lib/values-xpg6.o}
  or @code{--extra-libs=/usr/lib/64/values-xpg6.o} to the configure options
@@@ -808,22 -804,22 +808,22 @@@ bash ./configur
  MacOS X on PowerPC or ARM (iPhone) requires a preprocessor from
  @url{http://github.com/yuvi/gas-preprocessor} to build the optimized
  assembler functions. Just download the Perl script and put it somewhere
 -in your PATH, Libav's configure will pick it up automatically.
 +in your PATH, FFmpeg's configure will pick it up automatically.
  
  @section Windows
  
 -To get help and instructions for building Libav under Windows, check out
 +To get help and instructions for building FFmpeg under Windows, check out
  the FFmpeg Windows Help Forum at
  @url{http://ffmpeg.arrozcru.org/}.
  
  @subsection Native Windows compilation
  
 -Libav can be built to run natively on Windows using the MinGW tools. Install
 +FFmpeg can be built to run natively on Windows using the MinGW tools. Install
  the latest versions of MSYS and MinGW from @url{http://www.mingw.org/}.
  You can find detailed installation
  instructions in the download section and the FAQ.
  
 -Libav does not build out-of-the-box with the packages the automated MinGW
 +FFmpeg does not build out-of-the-box with the packages the automated MinGW
  installer provides. It also requires coreutils to be installed and many other
  packages updated to the latest version. The minimum version for some packages
  are listed below:
  @item mingw-runtime 3.15
  @end itemize
  
 -Libav automatically passes @code{-fno-common} to the compiler to work around
 +FFmpeg automatically passes @code{-fno-common} to the compiler to work around
  a GCC bug (see @url{http://gcc.gnu.org/bugzilla/show_bug.cgi?id=37216}).
  
  Within the MSYS shell, configure and make with:
@@@ -866,14 -862,14 +866,14 @@@ Edit the @file{bin/sdl-config} script s
  where SDL was installed. Verify that @file{sdl-config} can be launched from
  the MSYS command line.
  
 -@item By using @code{./configure --enable-shared} when configuring Libav,
 +@item By using @code{./configure --enable-shared} when configuring FFmpeg,
  you can build libavutil, libavcodec and libavformat as DLLs.
  
  @end itemize
  
  @subsection Microsoft Visual C++ compatibility
  
 -As stated in the FAQ, Libav will not compile under MSVC++. However, if you
 +As stated in the FAQ, FFmpeg will not compile under MSVC++. However, if you
  want to use the libav* libraries in your own applications, you can still
  compile those applications using MSVC++. But the libav* libraries you link
  to @emph{must} be built with MinGW. However, you will not be able to debug
@@@ -881,13 -877,13 +881,13 @@@ inside the libav* libraries, since MSVC
  symbols generated by GCC.
  We strongly recommend you to move over from MSVC++ to MinGW tools.
  
 -This description of how to use the Libav libraries with MSVC++ is based on
 +This description of how to use the FFmpeg libraries with MSVC++ is based on
  Microsoft Visual C++ 2005 Express Edition. If you have a different version,
  you might have to modify the procedures slightly.
  
  @subsubsection Using static libraries
  
 -Assuming you have just built and installed Libav in @file{/usr/local}.
 +Assuming you have just built and installed FFmpeg in @file{/usr/local}.
  
  @enumerate
  
@@@ -898,13 -894,13 +898,13 @@@ Application Wizard, uncheck the "Precom
  @item Write the source code for your application, or, for testing, just
  copy the code from an existing sample application into the source file
  that MSVC++ has already created for you. For example, you can copy
 -@file{libavformat/output-example.c} from the Libav distribution.
 +@file{libavformat/output-example.c} from the FFmpeg distribution.
  
  @item Open the "Project / Properties" dialog box. In the "Configuration"
  combo box, select "All Configurations" so that the changes you make will
  affect both debug and release builds. In the tree view on the left hand
  side, select "C/C++ / General", then edit the "Additional Include
 -Directories" setting to contain the path where the Libav includes were
 +Directories" setting to contain the path where the FFmpeg includes were
  installed (i.e. @file{c:\msys\1.0\local\include}).
  Do not add MinGW's include directory here, or the include files will
  conflict with MSVC's.
  @item Still in the "Project / Properties" dialog box, select
  "Linker / General" from the tree view and edit the
  "Additional Library Directories" setting to contain the @file{lib}
 -directory where Libav was installed (i.e. @file{c:\msys\1.0\local\lib}),
 +directory where FFmpeg was installed (i.e. @file{c:\msys\1.0\local\lib}),
  the directory where MinGW libs are installed (i.e. @file{c:\mingw\lib}),
  and the directory where MinGW's GCC libs are installed
  (i.e. @file{C:\mingw\lib\gcc\mingw32\4.2.1-sjlj}). Then select
@@@ -929,13 -925,13 +929,13 @@@ set to "Multi-threaded DLL"
  
  @item Click "OK" to close the "Project / Properties" dialog box.
  
 -@item MSVC++ lacks some C99 header files that are fundamental for Libav.
 +@item MSVC++ lacks some C99 header files that are fundamental for FFmpeg.
  Get msinttypes from @url{http://code.google.com/p/msinttypes/downloads/list}
  and install it in MSVC++'s include directory
  (i.e. @file{C:\Program Files\Microsoft Visual Studio 8\VC\include}).
  
  @item MSVC++ also does not understand the @code{inline} keyword used by
 -Libav, so you must add this line before @code{#include}ing libav*:
 +FFmpeg, so you must add this line before @code{#include}ing libav*:
  @example
  #define inline _inline
  @end example
@@@ -968,10 -964,10 +968,10 @@@ and run @file{c:\msys\1.0\msys.bat} fro
  @item Within the MSYS shell, run @code{lib.exe}. If you get a help message
  from @file{Microsoft (R) Library Manager}, this means your environment
  variables are set up correctly, the @file{Microsoft (R) Library Manager}
 -is on the path and will be used by Libav to create
 +is on the path and will be used by FFmpeg to create
  MSVC++-compatible import libraries.
  
 -@item Build Libav with
 +@item Build FFmpeg with
  
  @example
  ./configure --enable-shared --enable-memalign-hack
@@@ -1000,7 -996,7 +1000,7 @@@ of DLL files, but the ones that are act
  are the ones with a major version number in their filenames
  (i.e. @file{avcodec-51.dll}).
  
 -Libav headers do not declare global data for Windows DLLs through the usual
 +FFmpeg headers do not declare global data for Windows DLLs through the usual
  dllexport/dllimport interface. Such data will be exported properly while
  building, but to use them in your MSVC++ code you will have to edit the
  appropriate headers and mark the data as dllimport. For example, in
@@@ -1009,19 -1005,25 +1009,25 @@@ libavutil/pixdesc.h you should have
  extern __declspec(dllimport) const AVPixFmtDescriptor av_pix_fmt_descriptors[];
  @end example
  
+ Note that using import libraries created by dlltool requires
+ the linker optimization option to be set to
+ "References: Keep Unreferenced Data (/OPT:NOREF)", otherwise
+ the resulting binaries will fail during runtime. This isn't
+ required when using import libraries generated by lib.exe.
  @subsection Cross compilation for Windows with Linux
  
  You must use the MinGW cross compilation tools available at
  @url{http://www.mingw.org/}.
  
 -Then configure Libav with the following options:
 +Then configure FFmpeg with the following options:
  @example
  ./configure --target-os=mingw32 --cross-prefix=i386-mingw32msvc-
  @end example
  (you can change the cross-prefix according to the prefix chosen for the
  MinGW tools).
  
 -Then you can easily test Libav with Wine
 +Then you can easily test FFmpeg with Wine
  (@url{http://www.winehq.com/}).
  
  @subsection Compilation under Cygwin
@@@ -1055,7 -1057,7 +1061,7 @@@ shared libraries
  ./configure --enable-shared --disable-static --extra-cflags=-fno-reorder-functions
  @end example
  
 -If you want to build Libav with additional libraries, download Cygwin
 +If you want to build FFmpeg with additional libraries, download Cygwin
  "Devel" packages for Ogg and Vorbis from any Cygwin packages repository:
  @example
  libogg-devel, libvorbis-devel
diff --combined doc/protocols.texi
@@@ -1,10 -1,10 +1,10 @@@
  @chapter Protocols
  @c man begin PROTOCOLS
  
 -Protocols are configured elements in Libav which allow to access
 +Protocols are configured elements in FFmpeg which allow to access
  resources which require the use of a particular protocol.
  
 -When you configure your Libav build, all the supported protocols are
 +When you configure your FFmpeg build, all the supported protocols are
  enabled by default. You can list all available ones using the
  configure option "--list-protocols".
  
@@@ -433,9 -433,9 +433,9 @@@ set the time to live value (for multica
  
  @item connect=@var{1|0}
  Initialize the UDP socket with @code{connect()}. In this case, the
- destination address can't be changed with udp_set_remote_url later.
+ destination address can't be changed with ff_udp_set_remote_url later.
  If the destination address isn't known at the start, this option can
- be specified in udp_set_remote_url, too.
+ be specified in ff_udp_set_remote_url, too.
  This allows finding out the source address for the packets with getsockname,
  and makes writes return with AVERROR(ECONNREFUSED) if "destination
  unreachable" is received.
diff --combined libavcodec/Makefile
@@@ -3,7 -3,7 +3,7 @@@ include $(SUBDIR)../config.ma
  NAME = avcodec
  FFLIBS = avutil
  
- HEADERS = avcodec.h avfft.h dxva2.h opt.h vaapi.h vdpau.h xvmc.h
+ HEADERS = avcodec.h avfft.h dxva2.h opt.h vaapi.h vdpau.h version.h xvmc.h
  
  OBJS = allcodecs.o                                                      \
         audioconvert.o                                                   \
@@@ -27,7 -27,6 +27,7 @@@
  # parts needed for many different codecs
  OBJS-$(CONFIG_AANDCT)                  += aandcttab.o
  OBJS-$(CONFIG_AC3DSP)                  += ac3dsp.o
 +OBJS-$(CONFIG_CRYSTALHD)               += crystalhd.o
  OBJS-$(CONFIG_ENCODERS)                += faandct.o jfdctfst.o jfdctint.o
  OBJS-$(CONFIG_DCT)                     += dct.o
  OBJS-$(CONFIG_DWT)                     += dwt.o
@@@ -339,9 -338,6 +339,9 @@@ OBJS-$(CONFIG_SNOW_ENCODER)            
                                            ituh263enc.o mpegvideo_enc.o     \
                                            mpeg12data.o
  OBJS-$(CONFIG_SOL_DPCM_DECODER)        += dpcm.o
 +OBJS-$(CONFIG_SONIC_DECODER)           += sonic.o
 +OBJS-$(CONFIG_SONIC_ENCODER)           += sonic.o
 +OBJS-$(CONFIG_SONIC_LS_ENCODER)        += sonic.o
  OBJS-$(CONFIG_SP5X_DECODER)            += sp5xdec.o mjpegdec.o mjpeg.o
  OBJS-$(CONFIG_SRT_DECODER)             += srtdec.o ass.o
  OBJS-$(CONFIG_SUNRAST_DECODER)         += sunrast.o
diff --combined libavcodec/ac3enc.c
@@@ -4,20 -4,20 +4,20 @@@
   * Copyright (c) 2006-2010 Justin Ruggles <justin.ruggles@gmail.com>
   * Copyright (c) 2006-2010 Prakash Punnoor <prakash@punnoor.de>
   *
 - * This file is part of Libav.
 + * This file is part of FFmpeg.
   *
 - * Libav is free software; you can redistribute it and/or
 + * FFmpeg is free software; you can redistribute it and/or
   * modify it under the terms of the GNU Lesser General Public
   * License as published by the Free Software Foundation; either
   * version 2.1 of the License, or (at your option) any later version.
   *
 - * Libav is distributed in the hope that it will be useful,
 + * FFmpeg 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
   * Lesser General Public License for more details.
   *
   * You should have received a copy of the GNU Lesser General Public
 - * License along with Libav; if not, write to the Free Software
 + * License along with FFmpeg; if not, write to the Free Software
   * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
   */
  
@@@ -167,7 -167,7 +167,7 @@@ static av_cold int mdct_init(AVCodecCon
  static void mdct512(AC3MDCTContext *mdct, CoefType *out, SampleType *in);
  
  static void apply_window(DSPContext *dsp, SampleType *output, const SampleType *input,
-                          const SampleType *window, int n);
+                          const SampleType *window, unsigned int len);
  
  static int normalize_samples(AC3EncodeContext *s);
  
@@@ -226,7 -226,7 +226,7 @@@ static void adjust_frame_size(AC3Encode
  
  /**
   * Deinterleave input samples.
 - * Channels are reordered from Libav's default order to AC-3 order.
 + * Channels are reordered from FFmpeg's default order to AC-3 order.
   */
  static void deinterleave_input_samples(AC3EncodeContext *s,
                                         const SampleType *samples)
@@@ -4,20 -4,20 +4,20 @@@
   * Copyright (c) 2006-2010 Justin Ruggles <justin.ruggles@gmail.com>
   * Copyright (c) 2006-2010 Prakash Punnoor <prakash@punnoor.de>
   *
 - * This file is part of Libav.
 + * This file is part of FFmpeg.
   *
 - * Libav is free software; you can redistribute it and/or
 + * FFmpeg is free software; you can redistribute it and/or
   * modify it under the terms of the GNU Lesser General Public
   * License as published by the Free Software Foundation; either
   * version 2.1 of the License, or (at your option) any later version.
   *
 - * Libav is distributed in the hope that it will be useful,
 + * FFmpeg 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
   * Lesser General Public License for more details.
   *
   * You should have received a copy of the GNU Lesser General Public
 - * License along with Libav; if not, write to the Free Software
 + * License along with FFmpeg; if not, write to the Free Software
   * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
   */
  
@@@ -252,15 -252,9 +252,9 @@@ static void mdct512(AC3MDCTContext *mdc
   * Apply KBD window to input samples prior to MDCT.
   */
  static void apply_window(DSPContext *dsp, int16_t *output, const int16_t *input,
-                          const int16_t *window, int n)
+                          const int16_t *window, unsigned int len)
  {
-     int i;
-     int n2 = n >> 1;
-     for (i = 0; i < n2; i++) {
-         output[i]     = MUL16(input[i],     window[i]) >> 15;
-         output[n-i-1] = MUL16(input[n-i-1], window[i]) >> 15;
-     }
+     dsp->apply_window_int16(output, input, window, len);
  }
  
  
@@@ -4,20 -4,20 +4,20 @@@
   * Copyright (c) 2006-2010 Justin Ruggles <justin.ruggles@gmail.com>
   * Copyright (c) 2006-2010 Prakash Punnoor <prakash@punnoor.de>
   *
 - * This file is part of Libav.
 + * This file is part of FFmpeg.
   *
 - * Libav is free software; you can redistribute it and/or
 + * FFmpeg is free software; you can redistribute it and/or
   * modify it under the terms of the GNU Lesser General Public
   * License as published by the Free Software Foundation; either
   * version 2.1 of the License, or (at your option) any later version.
   *
 - * Libav is distributed in the hope that it will be useful,
 + * FFmpeg 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
   * Lesser General Public License for more details.
   *
   * You should have received a copy of the GNU Lesser General Public
 - * License along with Libav; if not, write to the Free Software
 + * License along with FFmpeg; if not, write to the Free Software
   * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
   */
  
@@@ -83,9 -83,9 +83,9 @@@ static void mdct512(AC3MDCTContext *mdc
   * Apply KBD window to input samples prior to MDCT.
   */
  static void apply_window(DSPContext *dsp, float *output, const float *input,
-                          const float *window, int n)
+                          const float *window, unsigned int len)
  {
-     dsp->vector_fmul(output, input, window, n);
+     dsp->vector_fmul(output, input, window, len);
  }
  
  
diff --combined libavcodec/ac3tab.c
@@@ -2,20 -2,20 +2,20 @@@
   * AC-3 tables
   * copyright (c) 2001 Fabrice Bellard
   *
 - * This file is part of Libav.
 + * This file is part of FFmpeg.
   *
 - * Libav is free software; you can redistribute it and/or
 + * FFmpeg is free software; you can redistribute it and/or
   * modify it under the terms of the GNU Lesser General Public
   * License as published by the Free Software Foundation; either
   * version 2.1 of the License, or (at your option) any later version.
   *
 - * Libav is distributed in the hope that it will be useful,
 + * FFmpeg 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
   * Lesser General Public License for more details.
   *
   * You should have received a copy of the GNU Lesser General Public
 - * License along with Libav; if not, write to the Free Software
 + * License along with FFmpeg; if not, write to the Free Software
   * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
   */
  
@@@ -141,7 -141,7 +141,7 @@@ const uint8_t ff_ac3_rematrix_band_tab[
  /* AC-3 MDCT window */
  
  /* MDCT window */
const int16_t ff_ac3_window[AC3_WINDOW_SIZE/2] = {
DECLARE_ALIGNED(16, const int16_t, ff_ac3_window)[AC3_WINDOW_SIZE/2] = {
      4,    7,   12,   16,   21,   28,   34,   42,
     51,   61,   72,   84,   97,  111,  127,  145,
    164,  184,  207,  231,  257,  285,  315,  347,
diff --combined libavcodec/avcodec.h
@@@ -1,20 -1,20 +1,20 @@@
  /*
   * copyright (c) 2001 Fabrice Bellard
   *
 - * This file is part of Libav.
 + * This file is part of FFmpeg.
   *
 - * Libav is free software; you can redistribute it and/or
 + * FFmpeg is free software; you can redistribute it and/or
   * modify it under the terms of the GNU Lesser General Public
   * License as published by the Free Software Foundation; either
   * version 2.1 of the License, or (at your option) any later version.
   *
 - * Libav is distributed in the hope that it will be useful,
 + * FFmpeg 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
   * Lesser General Public License for more details.
   *
   * You should have received a copy of the GNU Lesser General Public
 - * License along with Libav; if not, write to the Free Software
 + * License along with FFmpeg; if not, write to the Free Software
   * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
   */
  
  #include "libavutil/avutil.h"
  #include "libavutil/cpu.h"
  
- #define LIBAVCODEC_VERSION_MAJOR 52
- #define LIBAVCODEC_VERSION_MINOR 114
- #define LIBAVCODEC_VERSION_MICRO  0
- #define LIBAVCODEC_VERSION_INT  AV_VERSION_INT(LIBAVCODEC_VERSION_MAJOR, \
-                                                LIBAVCODEC_VERSION_MINOR, \
-                                                LIBAVCODEC_VERSION_MICRO)
- #define LIBAVCODEC_VERSION      AV_VERSION(LIBAVCODEC_VERSION_MAJOR,    \
-                                            LIBAVCODEC_VERSION_MINOR,    \
-                                            LIBAVCODEC_VERSION_MICRO)
- #define LIBAVCODEC_BUILD        LIBAVCODEC_VERSION_INT
- #define LIBAVCODEC_IDENT        "Lavc" AV_STRINGIFY(LIBAVCODEC_VERSION)
- /**
-  * Those FF_API_* defines are not part of public API.
-  * They may change, break or disappear at any time.
-  */
- #ifndef FF_API_PALETTE_CONTROL
- #define FF_API_PALETTE_CONTROL  (LIBAVCODEC_VERSION_MAJOR < 54)
- #endif
- #ifndef FF_API_MM_FLAGS
- #define FF_API_MM_FLAGS         (LIBAVCODEC_VERSION_MAJOR < 53)
- #endif
- #ifndef FF_API_OPT_SHOW
- #define FF_API_OPT_SHOW         (LIBAVCODEC_VERSION_MAJOR < 53)
- #endif
- #ifndef FF_API_AUDIO_OLD
- #define FF_API_AUDIO_OLD        (LIBAVCODEC_VERSION_MAJOR < 53)
- #endif
- #ifndef FF_API_VIDEO_OLD
- #define FF_API_VIDEO_OLD        (LIBAVCODEC_VERSION_MAJOR < 53)
- #endif
- #ifndef FF_API_SUBTITLE_OLD
- #define FF_API_SUBTITLE_OLD     (LIBAVCODEC_VERSION_MAJOR < 53)
- #endif
- #ifndef FF_API_USE_LPC
- #define FF_API_USE_LPC          (LIBAVCODEC_VERSION_MAJOR < 53)
- #endif
- #ifndef FF_API_SET_STRING_OLD
- #define FF_API_SET_STRING_OLD   (LIBAVCODEC_VERSION_MAJOR < 53)
- #endif
- #ifndef FF_API_INOFFICIAL
- #define FF_API_INOFFICIAL       (LIBAVCODEC_VERSION_MAJOR < 53)
- #endif
- #ifndef FF_API_OLD_SAMPLE_FMT
- #define FF_API_OLD_SAMPLE_FMT   (LIBAVCODEC_VERSION_MAJOR < 53)
- #endif
- #ifndef FF_API_OLD_AUDIOCONVERT
- #define FF_API_OLD_AUDIOCONVERT (LIBAVCODEC_VERSION_MAJOR < 53)
- #endif
+ #include "libavcodec/version.h"
  
  #if LIBAVCODEC_VERSION_MAJOR < 53
  #   define FF_INTERNALC_MEM_TYPE unsigned int
@@@ -725,12 -675,10 +675,12 @@@ typedef struct RcOverride
   * Codec should fill in channel configuration and samplerate instead of container
   */
  #define CODEC_CAP_CHANNEL_CONF     0x0400
 +
  /**
   * Codec is able to deal with negative linesizes
   */
  #define CODEC_CAP_NEG_LINESIZES    0x0800
 +
  /**
   * Codec supports frame-level multithreading.
   */
@@@ -1048,14 -996,6 +998,14 @@@ typedef struct AVPanScan
       * - decoding: Set by libavcodec.\
       */\
      void *thread_opaque;\
 +\
 +    /**\
 +     * frame timestamp estimated using various heuristics, in stream time base\
 +     * - encoding: unused\
 +     * - decoding: set by libavcodec, read by user.\
 +     */\
 +    int64_t best_effort_timestamp;\
 +
  
  #define FF_QSCALE_TYPE_MPEG1 0
  #define FF_QSCALE_TYPE_MPEG2 1
@@@ -2924,17 -2864,6 +2874,17 @@@ typedef struct AVCodecContext 
       * - decoding: unused.
       */
      uint64_t vbv_delay;
 +
 +    /**
 +     * Current statistics for PTS correction.
 +     * - decoding: maintained and used by libavcodec, not intended to be used by user apps
 +     * - encoding: unused
 +     */
 +    int64_t pts_correction_num_faulty_pts; /// Number of incorrect PTS values so far
 +    int64_t pts_correction_num_faulty_dts; /// Number of incorrect DTS values so far
 +    int64_t pts_correction_last_pts;       /// PTS of the last frame
 +    int64_t pts_correction_last_dts;       /// DTS of the last frame
 +
  } AVCodecContext;
  
  /**
@@@ -2985,9 -2914,7 +2935,9 @@@ typedef struct AVCodec 
      const enum AVSampleFormat *sample_fmts; ///< array of supported sample formats, or NULL if unknown, array is terminated by -1
      const int64_t *channel_layouts;         ///< array of support channel layouts, or NULL if unknown. array is terminated by 0
      uint8_t max_lowres;                     ///< maximum value for lowres supported by the decoder
 +
      AVClass *priv_class;                    ///< AVClass for the private context
 +
      const AVProfile *profiles;              ///< array of recognized profiles, or NULL if unknown, array is terminated by {FF_PROFILE_UNKNOWN}
  
      /**
@@@ -4287,7 -4214,7 +4237,7 @@@ attribute_deprecated int av_parse_video
  
  /**
   * Logs a generic warning message about a missing feature. This function is
 - * intended to be used internally by Libav (libavcodec, libavformat, etc.)
 + * intended to be used internally by FFmpeg (libavcodec, libavformat, etc.)
   * only, and would normally not be used by applications.
   * @param[in] avc a pointer to an arbitrary struct of which the first field is
   * a pointer to an AVClass struct
@@@ -4301,7 -4228,7 +4251,7 @@@ void av_log_missing_feature(void *avc, 
  
  /**
   * Log a generic warning message asking for a sample. This function is
 - * intended to be used internally by Libav (libavcodec, libavformat, etc.)
 + * intended to be used internally by FFmpeg (libavcodec, libavformat, etc.)
   * only, and would normally not be used by applications.
   * @param[in] avc a pointer to an arbitrary struct of which the first field is
   * a pointer to an AVClass struct
@@@ -4338,7 -4265,7 +4288,7 @@@ enum AVLockOp 
   * lockmgr should store/get a pointer to a user allocated mutex. It's
   * NULL upon AV_LOCK_CREATE and != NULL for all other ops.
   *
 - * @param cb User defined callback. Note: Libav may invoke calls to this
 + * @param cb User defined callback. Note: FFmpeg may invoke calls to this
   *           callback during the call to av_lockmgr_register().
   *           Thus, the application must be prepared to handle that.
   *           If cb is set to NULL the lockmgr will be unregistered.
diff --combined libavcodec/dsputil.c
@@@ -5,20 -5,20 +5,20 @@@
   *
   * gmc & q-pel & 32/64 bit based MC by Michael Niedermayer <michaelni@gmx.at>
   *
 - * This file is part of Libav.
 + * This file is part of FFmpeg.
   *
 - * Libav is free software; you can redistribute it and/or
 + * FFmpeg is free software; you can redistribute it and/or
   * modify it under the terms of the GNU Lesser General Public
   * License as published by the Free Software Foundation; either
   * version 2.1 of the License, or (at your option) any later version.
   *
 - * Libav is distributed in the hope that it will be useful,
 + * FFmpeg 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
   * Lesser General Public License for more details.
   *
   * You should have received a copy of the GNU Lesser General Public
 - * License along with Libav; if not, write to the Free Software
 + * License along with FFmpeg; if not, write to the Free Software
   * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
   */
  
@@@ -298,7 -298,7 +298,7 @@@ static int sse16_c(void *v, uint8_t *pi
  
  /* draw the edges of width 'w' of an image of size width, height */
  //FIXME check that this is ok for mpeg4 interlaced
 -static void draw_edges_c(uint8_t *buf, int wrap, int width, int height, int w)
 +static void draw_edges_c(uint8_t *buf, int wrap, int width, int height, int w, int sides)
  {
      uint8_t *ptr, *last_line;
      int i;
      last_line = buf + (height - 1) * wrap;
      for(i=0;i<w;i++) {
          /* top and bottom */
 -        memcpy(buf - (i + 1) * wrap, buf, width);
 -        memcpy(last_line + (i + 1) * wrap, last_line, width);
 +        if (sides&EDGE_TOP)    memcpy(buf - (i + 1) * wrap, buf, width);
 +        if (sides&EDGE_BOTTOM) memcpy(last_line + (i + 1) * wrap, last_line, width);
      }
      /* left and right */
      ptr = buf;
      }
      /* corners */
      for(i=0;i<w;i++) {
 -        memset(buf - (i + 1) * wrap - w, buf[0], w); /* top left */
 -        memset(buf - (i + 1) * wrap + width, buf[width-1], w); /* top right */
 -        memset(last_line + (i + 1) * wrap - w, last_line[0], w); /* top left */
 -        memset(last_line + (i + 1) * wrap + width, last_line[width-1], w); /* top right */
 +        if (sides&EDGE_TOP) {
 +            memset(buf - (i + 1) * wrap - w, buf[0], w); /* top left */
 +            memset(buf - (i + 1) * wrap + width, buf[width-1], w); /* top right */
 +        }
 +
 +        if (sides&EDGE_BOTTOM) {
 +            memset(last_line + (i + 1) * wrap - w, last_line[0], w); /* top left */
 +            memset(last_line + (i + 1) * wrap + width, last_line[width-1], w); /* top right */
 +        }
      }
  }
  
@@@ -3895,6 -3890,19 +3895,19 @@@ static int32_t scalarproduct_and_madd_i
      return res;
  }
  
+ static void apply_window_int16_c(int16_t *output, const int16_t *input,
+                                  const int16_t *window, unsigned int len)
+ {
+     int i;
+     int len2 = len >> 1;
+     for (i = 0; i < len2; i++) {
+         int16_t w       = window[i];
+         output[i]       = (MUL16(input[i],       w) + (1 << 14)) >> 15;
+         output[len-i-1] = (MUL16(input[len-i-1], w) + (1 << 14)) >> 15;
+     }
+ }
  #define W0 2048
  #define W1 2841 /* 2048*sqrt (2)*cos (1*pi/16) */
  #define W2 2676 /* 2048*sqrt (2)*cos (2*pi/16) */
@@@ -4369,6 -4377,7 +4382,7 @@@ av_cold void dsputil_init(DSPContext* c
      c->vector_clipf = vector_clipf_c;
      c->scalarproduct_int16 = scalarproduct_int16_c;
      c->scalarproduct_and_madd_int16 = scalarproduct_and_madd_int16_c;
+     c->apply_window_int16 = apply_window_int16_c;
      c->scalarproduct_float = scalarproduct_float_c;
      c->butterflies_float = butterflies_float_c;
      c->vector_fmul_scalar = vector_fmul_scalar_c;
diff --combined libavcodec/dsputil.h
@@@ -3,20 -3,20 +3,20 @@@
   * Copyright (c) 2000, 2001, 2002 Fabrice Bellard
   * Copyright (c) 2002-2004 Michael Niedermayer <michaelni@gmx.at>
   *
 - * This file is part of Libav.
 + * This file is part of FFmpeg.
   *
 - * Libav is free software; you can redistribute it and/or
 + * FFmpeg is free software; you can redistribute it and/or
   * modify it under the terms of the GNU Lesser General Public
   * License as published by the Free Software Foundation; either
   * version 2.1 of the License, or (at your option) any later version.
   *
 - * Libav is distributed in the hope that it will be useful,
 + * FFmpeg 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
   * Lesser General Public License for more details.
   *
   * You should have received a copy of the GNU Lesser General Public
 - * License along with Libav; if not, write to the Free Software
 + * License along with FFmpeg; if not, write to the Free Software
   * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
   */
  
@@@ -122,7 -122,7 +122,7 @@@ void ff_gmc_c(uint8_t *dst, uint8_t *sr
  /* minimum alignment rules ;)
  If you notice errors in the align stuff, need more alignment for some ASM code
  for some CPU or need to use a function with less aligned data then send a mail
 -to the libav-devel mailing list, ...
 +to the ffmpeg-devel mailing list, ...
  
  !warning These alignments might not match reality, (missing attribute((align))
  stuff somewhere possible).
@@@ -492,10 -492,8 +492,10 @@@ typedef struct DSPContext 
  #define BASIS_SHIFT 16
  #define RECON_SHIFT 6
  
 -    void (*draw_edges)(uint8_t *buf, int wrap, int width, int height, int w);
 +    void (*draw_edges)(uint8_t *buf, int wrap, int width, int height, int w, int sides);
  #define EDGE_WIDTH 16
 +#define EDGE_TOP    1
 +#define EDGE_BOTTOM 2
  
      void (*prefetch)(void *mem, int stride, int h);
  
       */
      int32_t (*scalarproduct_and_madd_int16)(int16_t *v1/*align 16*/, const int16_t *v2, const int16_t *v3, int len, int mul);
  
+     /**
+      * Apply symmetric window in 16-bit fixed-point.
+      * @param output destination array
+      *               constraints: 16-byte aligned
+      * @param input  source array
+      *               constraints: 16-byte aligned
+      * @param window window array
+      *               constraints: 16-byte aligned, at least len/2 elements
+      * @param len    full window length
+      *               constraints: multiple of ? greater than zero
+      */
+     void (*apply_window_int16)(int16_t *output, const int16_t *input,
+                                const int16_t *window, unsigned int len);
      /* rv30 functions */
      qpel_mc_func put_rv30_tpel_pixels_tab[4][16];
      qpel_mc_func avg_rv30_tpel_pixels_tab[4][16];
@@@ -3,20 -3,20 +3,20 @@@
   * Copyright (c) 2000, 2001 Fabrice Bellard
   * Copyright (c) 2002-2004 Michael Niedermayer <michaelni@gmx.at>
   *
 - * This file is part of Libav.
 + * This file is part of FFmpeg.
   *
 - * Libav is free software; you can redistribute it and/or
 + * FFmpeg is free software; you can redistribute it and/or
   * modify it under the terms of the GNU Lesser General Public
   * License as published by the Free Software Foundation; either
   * version 2.1 of the License, or (at your option) any later version.
   *
 - * Libav is distributed in the hope that it will be useful,
 + * FFmpeg 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
   * Lesser General Public License for more details.
   *
   * You should have received a copy of the GNU Lesser General Public
 - * License along with Libav; if not, write to the Free Software
 + * License along with FFmpeg; if not, write to the Free Software
   * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
   *
   * MMX optimization by Nick Kurshev <nickols_k@mail.ru>
@@@ -783,7 -783,7 +783,7 @@@ static void h263_h_loop_filter_mmx(uint
  
  /* draw the edges of width 'w' of an image of size width, height
     this mmx version can only handle w==8 || w==16 */
 -static void draw_edges_mmx(uint8_t *buf, int wrap, int width, int height, int w)
 +static void draw_edges_mmx(uint8_t *buf, int wrap, int width, int height, int w, int sides)
  {
      uint8_t *ptr, *last_line;
      int i;
  
      for(i=0;i<w;i+=4) {
          /* top and bottom (and hopefully also the corners) */
 -        ptr= buf - (i + 1) * wrap - w;
 -        __asm__ volatile(
 -                "1:                             \n\t"
 -                "movq (%1, %0), %%mm0           \n\t"
 -                "movq %%mm0, (%0)               \n\t"
 -                "movq %%mm0, (%0, %2)           \n\t"
 -                "movq %%mm0, (%0, %2, 2)        \n\t"
 -                "movq %%mm0, (%0, %3)           \n\t"
 -                "add $8, %0                     \n\t"
 -                "cmp %4, %0                     \n\t"
 -                " jb 1b                         \n\t"
 -                : "+r" (ptr)
 -                : "r" ((x86_reg)buf - (x86_reg)ptr - w), "r" ((x86_reg)-wrap), "r" ((x86_reg)-wrap*3), "r" (ptr+width+2*w)
 -        );
 -        ptr= last_line + (i + 1) * wrap - w;
 -        __asm__ volatile(
 -                "1:                             \n\t"
 -                "movq (%1, %0), %%mm0           \n\t"
 -                "movq %%mm0, (%0)               \n\t"
 -                "movq %%mm0, (%0, %2)           \n\t"
 -                "movq %%mm0, (%0, %2, 2)        \n\t"
 -                "movq %%mm0, (%0, %3)           \n\t"
 -                "add $8, %0                     \n\t"
 -                "cmp %4, %0                     \n\t"
 -                " jb 1b                         \n\t"
 -                : "+r" (ptr)
 -                : "r" ((x86_reg)last_line - (x86_reg)ptr - w), "r" ((x86_reg)wrap), "r" ((x86_reg)wrap*3), "r" (ptr+width+2*w)
 -        );
 +        if (sides&EDGE_TOP) {
 +            ptr= buf - (i + 1) * wrap - w;
 +            __asm__ volatile(
 +                    "1:                             \n\t"
 +                    "movq (%1, %0), %%mm0           \n\t"
 +                    "movq %%mm0, (%0)               \n\t"
 +                    "movq %%mm0, (%0, %2)           \n\t"
 +                    "movq %%mm0, (%0, %2, 2)        \n\t"
 +                    "movq %%mm0, (%0, %3)           \n\t"
 +                    "add $8, %0                     \n\t"
 +                    "cmp %4, %0                     \n\t"
 +                    " jb 1b                         \n\t"
 +                    : "+r" (ptr)
 +                    : "r" ((x86_reg)buf - (x86_reg)ptr - w), "r" ((x86_reg)-wrap), "r" ((x86_reg)-wrap*3), "r" (ptr+width+2*w)
 +            );
 +        }
 +
 +        if (sides&EDGE_BOTTOM) {
 +            ptr= last_line + (i + 1) * wrap - w;
 +            __asm__ volatile(
 +                    "1:                             \n\t"
 +                    "movq (%1, %0), %%mm0           \n\t"
 +                    "movq %%mm0, (%0)               \n\t"
 +                    "movq %%mm0, (%0, %2)           \n\t"
 +                    "movq %%mm0, (%0, %2, 2)        \n\t"
 +                    "movq %%mm0, (%0, %3)           \n\t"
 +                    "add $8, %0                     \n\t"
 +                    "cmp %4, %0                     \n\t"
 +                    " jb 1b                         \n\t"
 +                    : "+r" (ptr)
 +                    : "r" ((x86_reg)last_line - (x86_reg)ptr - w), "r" ((x86_reg)wrap), "r" ((x86_reg)wrap*3), "r" (ptr+width+2*w)
 +            );
 +        }
      }
  }
  
@@@ -2393,6 -2388,20 +2393,20 @@@ int32_t ff_scalarproduct_int16_sse2(con
  int32_t ff_scalarproduct_and_madd_int16_mmx2(int16_t *v1, const int16_t *v2, const int16_t *v3, int order, int mul);
  int32_t ff_scalarproduct_and_madd_int16_sse2(int16_t *v1, const int16_t *v2, const int16_t *v3, int order, int mul);
  int32_t ff_scalarproduct_and_madd_int16_ssse3(int16_t *v1, const int16_t *v2, const int16_t *v3, int order, int mul);
+ void ff_apply_window_int16_mmxext    (int16_t *output, const int16_t *input,
+                                       const int16_t *window, unsigned int len);
+ void ff_apply_window_int16_mmxext_ba (int16_t *output, const int16_t *input,
+                                       const int16_t *window, unsigned int len);
+ void ff_apply_window_int16_sse2      (int16_t *output, const int16_t *input,
+                                       const int16_t *window, unsigned int len);
+ void ff_apply_window_int16_sse2_ba   (int16_t *output, const int16_t *input,
+                                       const int16_t *window, unsigned int len);
+ void ff_apply_window_int16_ssse3     (int16_t *output, const int16_t *input,
+                                       const int16_t *window, unsigned int len);
+ void ff_apply_window_int16_ssse3_atom(int16_t *output, const int16_t *input,
+                                       const int16_t *window, unsigned int len);
  void ff_add_hfyu_median_prediction_mmx2(uint8_t *dst, const uint8_t *top, const uint8_t *diff, int w, int *left, int *left_top);
  int  ff_add_hfyu_left_prediction_ssse3(uint8_t *dst, const uint8_t *src, int w, int left);
  int  ff_add_hfyu_left_prediction_sse4(uint8_t *dst, const uint8_t *src, int w, int left);
@@@ -2754,6 -2763,11 +2768,11 @@@ void dsputil_init_mmx(DSPContext* c, AV
  #if HAVE_YASM
              c->scalarproduct_int16 = ff_scalarproduct_int16_mmx2;
              c->scalarproduct_and_madd_int16 = ff_scalarproduct_and_madd_int16_mmx2;
+             if (avctx->flags & CODEC_FLAG_BITEXACT) {
+                 c->apply_window_int16 = ff_apply_window_int16_mmxext_ba;
+             } else {
+                 c->apply_window_int16 = ff_apply_window_int16_mmxext;
+             }
  #endif
          }
          if(mm_flags & AV_CPU_FLAG_SSE){
  #if HAVE_YASM
              c->scalarproduct_int16 = ff_scalarproduct_int16_sse2;
              c->scalarproduct_and_madd_int16 = ff_scalarproduct_and_madd_int16_sse2;
+             if (avctx->flags & CODEC_FLAG_BITEXACT) {
+                 c->apply_window_int16 = ff_apply_window_int16_sse2_ba;
+             } else {
+                 if (!(mm_flags & AV_CPU_FLAG_SSE2SLOW)) {
+                     c->apply_window_int16 = ff_apply_window_int16_sse2;
+                 }
+             }
  
              c->emulated_edge_mc = emulated_edge_mc_sse;
              c->gmc= gmc_sse;
  #endif
          }
-         if((mm_flags & AV_CPU_FLAG_SSSE3) && !(mm_flags & (AV_CPU_FLAG_SSE42|AV_CPU_FLAG_3DNOW)) && HAVE_YASM) // cachesplit
-             c->scalarproduct_and_madd_int16 = ff_scalarproduct_and_madd_int16_ssse3;
+         if (mm_flags & AV_CPU_FLAG_SSSE3) {
+ #if HAVE_YASM
+             if (mm_flags & AV_CPU_FLAG_ATOM) {
+                 c->apply_window_int16 = ff_apply_window_int16_ssse3_atom;
+             } else {
+                 c->apply_window_int16 = ff_apply_window_int16_ssse3;
+             }
+             if (!(mm_flags & (AV_CPU_FLAG_SSE42|AV_CPU_FLAG_3DNOW))) { // cachesplit
+                 c->scalarproduct_and_madd_int16 = ff_scalarproduct_and_madd_int16_ssse3;
+             }
+ #endif
+         }
      }
  
      if (CONFIG_ENCODERS)
@@@ -2,20 -2,20 +2,20 @@@
  ;* MMX optimized DSP utils
  ;* Copyright (c) 2008 Loren Merritt
  ;*
 -;* This file is part of Libav.
 +;* This file is part of FFmpeg.
  ;*
 -;* Libav is free software; you can redistribute it and/or
 +;* FFmpeg is free software; you can redistribute it and/or
  ;* modify it under the terms of the GNU Lesser General Public
  ;* License as published by the Free Software Foundation; either
  ;* version 2.1 of the License, or (at your option) any later version.
  ;*
 -;* Libav is distributed in the hope that it will be useful,
 +;* FFmpeg 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
  ;* Lesser General Public License for more details.
  ;*
  ;* You should have received a copy of the GNU Lesser General Public
 -;* License along with Libav; if not, write to the Free Software
 +;* License along with FFmpeg; if not, write to the Free Software
  ;* 51, Inc., Foundation Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
  ;******************************************************************************
  
@@@ -27,6 -27,8 +27,8 @@@ pb_zzzzzzzz77777777: times 8 db -
  pb_7: times 8 db 7
  pb_zzzz3333zzzzbbbb: db -1,-1,-1,-1,3,3,3,3,-1,-1,-1,-1,11,11,11,11
  pb_zz11zz55zz99zzdd: db -1,-1,1,1,-1,-1,5,5,-1,-1,9,9,-1,-1,13,13
+ pb_revwords: db 14, 15, 12, 13, 10, 11, 8, 9, 6, 7, 4, 5, 2, 3, 0, 1
+ pd_16384: times 4 dd 16384
  
  section .text align=16
  
@@@ -202,6 -204,130 +204,130 @@@ SCALARPRODUCT_LOOP 
      RET
  
  
+ ;-----------------------------------------------------------------------------
+ ; void ff_apply_window_int16(int16_t *output, const int16_t *input,
+ ;                            const int16_t *window, unsigned int len)
+ ;-----------------------------------------------------------------------------
+ %macro REVERSE_WORDS_MMXEXT 1-2
+     pshufw   %1, %1, 0x1B
+ %endmacro
+ %macro REVERSE_WORDS_SSE2 1-2
+     pshuflw  %1, %1, 0x1B
+     pshufhw  %1, %1, 0x1B
+     pshufd   %1, %1, 0x4E
+ %endmacro
+ %macro REVERSE_WORDS_SSSE3 2
+     pshufb  %1, %2
+ %endmacro
+ ; dst = (dst * src) >> 15
+ ; pmulhw cuts off the bottom bit, so we have to lshift by 1 and add it back
+ ; in from the pmullw result.
+ %macro MUL16FIXED_MMXEXT 3 ; dst, src, temp
+     mova    %3, %1
+     pmulhw  %1, %2
+     pmullw  %3, %2
+     psrlw   %3, 15
+     psllw   %1, 1
+     por     %1, %3
+ %endmacro
+ ; dst = ((dst * src) + (1<<14)) >> 15
+ %macro MUL16FIXED_SSSE3 3 ; dst, src, unused
+     pmulhrsw   %1, %2
+ %endmacro
+ %macro APPLY_WINDOW_INT16 3 ; %1=instruction set, %2=mmxext/sse2 bit exact version, %3=has_ssse3
+ cglobal apply_window_int16_%1, 4,5,6, output, input, window, offset, offset2
+     lea     offset2q, [offsetq-mmsize]
+ %if %2
+     mova          m5, [pd_16384]
+ %elifidn %1, ssse3
+     mova          m5, [pb_revwords]
+     ALIGN 16
+ %endif
+ .loop:
+ %if %2
+     ; This version expands 16-bit to 32-bit, multiplies by the window,
+     ; adds 16384 for rounding, right shifts 15, then repacks back to words to
+     ; save to the output. The window is reversed for the second half.
+     mova          m3, [windowq+offset2q]
+     mova          m4, [ inputq+offset2q]
+     pxor          m0, m0
+     punpcklwd     m0, m3
+     punpcklwd     m1, m4
+     pmaddwd       m0, m1
+     paddd         m0, m5
+     psrad         m0, 15
+     pxor          m2, m2
+     punpckhwd     m2, m3
+     punpckhwd     m1, m4
+     pmaddwd       m2, m1
+     paddd         m2, m5
+     psrad         m2, 15
+     packssdw      m0, m2
+     mova  [outputq+offset2q], m0
+     REVERSE_WORDS m3
+     mova          m4, [ inputq+offsetq]
+     pxor          m0, m0
+     punpcklwd     m0, m3
+     punpcklwd     m1, m4
+     pmaddwd       m0, m1
+     paddd         m0, m5
+     psrad         m0, 15
+     pxor          m2, m2
+     punpckhwd     m2, m3
+     punpckhwd     m1, m4
+     pmaddwd       m2, m1
+     paddd         m2, m5
+     psrad         m2, 15
+     packssdw      m0, m2
+     mova  [outputq+offsetq], m0
+ %elif %3
+     ; This version does the 16x16->16 multiplication in-place without expanding
+     ; to 32-bit. The ssse3 version is bit-identical.
+     mova          m0, [windowq+offset2q]
+     mova          m1, [ inputq+offset2q]
+     pmulhrsw      m1, m0
+     REVERSE_WORDS m0, m5
+     pmulhrsw      m0, [ inputq+offsetq ]
+     mova  [outputq+offset2q], m1
+     mova  [outputq+offsetq ], m0
+ %else
+     ; This version does the 16x16->16 multiplication in-place without expanding
+     ; to 32-bit. The mmxext and sse2 versions do not use rounding, and
+     ; therefore are not bit-identical to the C version.
+     mova          m0, [windowq+offset2q]
+     mova          m1, [ inputq+offset2q]
+     mova          m2, [ inputq+offsetq ]
+     MUL16FIXED    m1, m0, m3
+     REVERSE_WORDS m0
+     MUL16FIXED    m2, m0, m3
+     mova  [outputq+offset2q], m1
+     mova  [outputq+offsetq ], m2
+ %endif
+     add      offsetd, mmsize
+     sub     offset2d, mmsize
+     jae .loop
+     REP_RET
+ %endmacro
+ INIT_MMX
+ %define REVERSE_WORDS REVERSE_WORDS_MMXEXT
+ %define MUL16FIXED MUL16FIXED_MMXEXT
+ APPLY_WINDOW_INT16 mmxext,     0, 0
+ APPLY_WINDOW_INT16 mmxext_ba,  1, 0
+ INIT_XMM
+ %define REVERSE_WORDS REVERSE_WORDS_SSE2
+ APPLY_WINDOW_INT16 sse2,       0, 0
+ APPLY_WINDOW_INT16 sse2_ba,    1, 0
+ APPLY_WINDOW_INT16 ssse3_atom, 0, 1
+ %define REVERSE_WORDS REVERSE_WORDS_SSSE3
+ APPLY_WINDOW_INT16 ssse3,      0, 1
  
  ; void add_hfyu_median_prediction_mmx2(uint8_t *dst, const uint8_t *top, const uint8_t *diff, int w, int *left, int *left_top)
  cglobal add_hfyu_median_prediction_mmx2, 6,6,0, dst, top, diff, w, left, left_top
diff --combined libavformat/asfdec.c
@@@ -2,20 -2,20 +2,20 @@@
   * ASF compatible demuxer
   * Copyright (c) 2000, 2001 Fabrice Bellard
   *
 - * This file is part of Libav.
 + * This file is part of FFmpeg.
   *
 - * Libav is free software; you can redistribute it and/or
 + * FFmpeg is free software; you can redistribute it and/or
   * modify it under the terms of the GNU Lesser General Public
   * License as published by the Free Software Foundation; either
   * version 2.1 of the License, or (at your option) any later version.
   *
 - * Libav is distributed in the hope that it will be useful,
 + * FFmpeg 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
   * Lesser General Public License for more details.
   *
   * You should have received a copy of the GNU Lesser General Public
 - * License along with Libav; if not, write to the Free Software
 + * License along with FFmpeg; if not, write to the Free Software
   * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
   */
  
@@@ -179,7 -179,8 +179,7 @@@ static void get_tag(AVFormatContext *s
          av_log(s, AV_LOG_DEBUG, "Unsupported value type %d in tag %s.\n", type, key);
          goto finish;
      }
 -    if (*value)
 -        av_metadata_set2(&s->metadata, key, value, 0);
 +    av_metadata_set2(&s->metadata, key, value, 0);
  finish:
      av_freep(&value);
      avio_seek(s->pb, off + len, SEEK_SET);
@@@ -236,6 -237,7 +236,6 @@@ static int asf_read_stream_properties(A
      if (!asf_st)
          return AVERROR(ENOMEM);
      st->priv_data = asf_st;
 -    st->start_time = 0;
      start_time = asf->hdr.preroll;
  
      asf_st->stream_language_index = 128; // invalid stream index means no language info
@@@ -639,7 -641,7 +639,7 @@@ static int asf_read_header(AVFormatCont
              continue;
          } else if (!ff_guidcmp(&g, &ff_asf_marker_header)) {
              asf_read_marker(s, gsize);
 -        } else if (pb->eof_reached) {
 +        } else if (url_feof(pb)) {
              return -1;
          } else {
              if (!s->keylen) {
      avio_rl64(pb);
      avio_r8(pb);
      avio_r8(pb);
 -    if (pb->eof_reached)
 +    if (url_feof(pb))
          return -1;
      asf->data_offset = avio_tell(pb);
      asf->packet_size_left = 0;
@@@ -745,12 -747,12 +745,12 @@@ static int ff_asf_get_packet(AVFormatCo
           */
          if (pb->error == AVERROR(EAGAIN))
              return AVERROR(EAGAIN);
 -        if (!pb->eof_reached)
 +        if (!url_feof(pb))
              av_log(s, AV_LOG_ERROR, "ff asf bad header %x  at:%"PRId64"\n", c, avio_tell(pb));
      }
      if ((c & 0x8f) == 0x82) {
          if (d || e) {
 -            if (!pb->eof_reached)
 +            if (!url_feof(pb))
                  av_log(s, AV_LOG_ERROR, "ff asf bad non zero\n");
              return -1;
          }
@@@ -886,7 -888,7 +886,7 @@@ static int ff_asf_parse_packet(AVFormat
      ASFStream *asf_st = 0;
      for (;;) {
          int ret;
 -        if(pb->eof_reached)
 +        if(url_feof(pb))
              return AVERROR_EOF;
          if (asf->packet_size_left < FRAME_HEADER_SIZE
              || asf->packet_segments < 1) {
@@@ -1195,7 -1197,7 +1195,7 @@@ static void asf_build_simple_index(AVFo
         skip them until the simple index object is reached */
      while (ff_guidcmp(&g, &index_guid)) {
          int64_t gsize= avio_rl64(s->pb);
 -        if (gsize < 24 || s->pb->eof_reached) {
 +        if (gsize < 24 || url_feof(s->pb)) {
              avio_seek(s->pb, current_pos, SEEK_SET);
              return;
          }
              int pktnum=avio_rl32(s->pb);
              int pktct =avio_rl16(s->pb);
              int64_t pos      = s->data_offset + s->packet_size*(int64_t)pktnum;
-             int64_t index_pts= av_rescale(itime, i, 10000);
+             int64_t index_pts= FFMAX(av_rescale(itime, i, 10000) - asf->hdr.preroll, 0);
  
              if(pos != last_pos){
-             av_log(s, AV_LOG_DEBUG, "pktnum:%d, pktct:%d\n", pktnum, pktct);
+             av_log(s, AV_LOG_DEBUG, "pktnum:%d, pktct:%d  pts: %"PRId64"\n", pktnum, pktct, index_pts);
              av_add_index_entry(s->streams[stream_index], pos, index_pts, s->packet_size, 0, AVINDEX_KEYFRAME);
              last_pos=pos;
              }
diff --combined libavformat/avio.h
@@@ -1,20 -1,20 +1,20 @@@
  /*
   * copyright (c) 2001 Fabrice Bellard
   *
 - * This file is part of Libav.
 + * This file is part of FFmpeg.
   *
 - * Libav is free software; you can redistribute it and/or
 + * FFmpeg is free software; you can redistribute it and/or
   * modify it under the terms of the GNU Lesser General Public
   * License as published by the Free Software Foundation; either
   * version 2.1 of the License, or (at your option) any later version.
   *
 - * Libav is distributed in the hope that it will be useful,
 + * FFmpeg 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
   * Lesser General Public License for more details.
   *
   * You should have received a copy of the GNU Lesser General Public
 - * License along with Libav; if not, write to the Free Software
 + * License along with FFmpeg; if not, write to the Free Software
   * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
   */
  #ifndef AVFORMAT_AVIO_H
@@@ -416,7 -416,7 +416,7 @@@ attribute_deprecated void         put_t
   */
  
  attribute_deprecated int     av_url_read_fpause(AVIOContext *h,    int pause);
- attribute_deprecated int64_t av_url_read_fseekAVIOContext *h,    int stream_index,
+ attribute_deprecated int64_t av_url_read_fseek (AVIOContext *h,    int stream_index,
                                                  int64_t timestamp, int flags);
  
  /**
@@@ -443,7 -443,14 +443,10 @@@ attribute_deprecated void put_flush_pac
   * @}
   */
  
 -/**
 - * @deprecated use AVIOContext.eof_reached
 - */
 -attribute_deprecated int url_feof(AVIOContext *s);
  attribute_deprecated int url_ferror(AVIOContext *s);
+ attribute_deprecated int udp_set_remote_url(URLContext *h, const char *uri);
+ attribute_deprecated int udp_get_local_port(URLContext *h);
  #endif
  
  AVIOContext *avio_alloc_context(
@@@ -492,7 -499,10 +495,7 @@@ int64_t avio_seek(AVIOContext *s, int64
   * Skip given number of bytes forward
   * @return new position or AVERROR.
   */
 -static av_always_inline int64_t avio_skip(AVIOContext *s, int64_t offset)
 -{
 -    return avio_seek(s, offset, SEEK_CUR);
 -}
 +int64_t avio_skip(AVIOContext *s, int64_t offset);
  
  /**
   * ftell() equivalent for AVIOContext.
@@@ -509,12 -519,6 +512,12 @@@ static av_always_inline int64_t avio_te
   */
  int64_t avio_size(AVIOContext *s);
  
 +/**
 + * feof() equivalent for AVIOContext.
 + * @return non zero if and only if end of file
 + */
 +int url_feof(AVIOContext *s);
 +
  /** @warning currently size is limited */
  #ifdef __GNUC__
  int avio_printf(AVIOContext *s, const char *fmt, ...) __attribute__ ((__format__ (__printf__, 2, 3)));
@@@ -674,9 -678,6 +677,6 @@@ void init_checksum(AVIOContext *s
                     unsigned long (*update_checksum)(unsigned long c, const uint8_t *p, unsigned int len),
                     unsigned long checksum);
  
- /* udp.c */
- int udp_set_remote_url(URLContext *h, const char *uri);
- int udp_get_local_port(URLContext *h);
  #if FF_API_UDP_GET_FILE
  int udp_get_file_handle(URLContext *h);
  #endif
@@@ -1,19 -1,19 +1,19 @@@
  /*
   *
 - * This file is part of Libav.
 + * This file is part of FFmpeg.
   *
 - * Libav is free software; you can redistribute it and/or
 + * FFmpeg is free software; you can redistribute it and/or
   * modify it under the terms of the GNU Lesser General Public
   * License as published by the Free Software Foundation; either
   * version 2.1 of the License, or (at your option) any later version.
   *
 - * Libav is distributed in the hope that it will be useful,
 + * FFmpeg 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
   * Lesser General Public License for more details.
   *
   * You should have received a copy of the GNU Lesser General Public
 - * License along with Libav; if not, write to the Free Software
 + * License along with FFmpeg; if not, write to the Free Software
   * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
   */
  
@@@ -67,8 -67,12 +67,12 @@@ uint64_t ffio_read_varlen(AVIOContext *
  int ffio_set_buf_size(AVIOContext *s, int buf_size);
  
  int     ffio_read_pause(AVIOContext *h,    int pause);
- int64_t ffio_read_seekAVIOContext *h,    int stream_index,
+ int64_t ffio_read_seek (AVIOContext *h,    int stream_index,
                          int64_t timestamp, int flags);
  
+ /* udp.c */
+ int ff_udp_set_remote_url(URLContext *h, const char *uri);
+ int ff_udp_get_local_port(URLContext *h);
  
  #endif // AVFORMAT_AVIO_INTERNAL_H
@@@ -2,20 -2,20 +2,20 @@@
   * Matroska muxer
   * Copyright (c) 2007 David Conrad
   *
 - * This file is part of Libav.
 + * This file is part of FFmpeg.
   *
 - * Libav is free software; you can redistribute it and/or
 + * FFmpeg is free software; you can redistribute it and/or
   * modify it under the terms of the GNU Lesser General Public
   * License as published by the Free Software Foundation; either
   * version 2.1 of the License, or (at your option) any later version.
   *
 - * Libav is distributed in the hope that it will be useful,
 + * FFmpeg 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
   * Lesser General Public License for more details.
   *
   * You should have received a copy of the GNU Lesser General Public
 - * License along with Libav; if not, write to the Free Software
 + * License along with FFmpeg; if not, write to the Free Software
   * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
   */
  
@@@ -438,29 -438,15 +438,15 @@@ static int put_xiph_codecpriv(AVFormatC
  
  static void get_aac_sample_rates(AVFormatContext *s, AVCodecContext *codec, int *sample_rate, int *output_sample_rate)
  {
-     int sri;
+     MPEG4AudioConfig mp4ac;
  
-     if (codec->extradata_size < 2) {
-         av_log(s, AV_LOG_WARNING, "No AAC extradata, unable to determine samplerate.\n");
+     if (ff_mpeg4audio_get_config(&mp4ac, codec->extradata, codec->extradata_size) < 0) {
+         av_log(s, AV_LOG_WARNING, "Error parsing AAC extradata, unable to determine samplerate.\n");
          return;
      }
  
-     sri = ((codec->extradata[0] << 1) & 0xE) | (codec->extradata[1] >> 7);
-     if (sri > 12) {
-         av_log(s, AV_LOG_WARNING, "AAC samplerate index out of bounds\n");
-         return;
-     }
-     *sample_rate = ff_mpeg4audio_sample_rates[sri];
-     // if sbr, get output sample rate as well
-     if (codec->extradata_size == 5) {
-         sri = (codec->extradata[4] >> 3) & 0xF;
-         if (sri > 12) {
-             av_log(s, AV_LOG_WARNING, "AAC output samplerate index out of bounds\n");
-             return;
-         }
-         *output_sample_rate = ff_mpeg4audio_sample_rates[sri];
-     }
+     *sample_rate        = mp4ac.sample_rate;
+     *output_sample_rate = mp4ac.ext_sample_rate;
  }
  
  static int mkv_write_codecprivate(AVFormatContext *s, AVIOContext *pb, AVCodecContext *codec, int native_id, int qt_id)
@@@ -630,13 -616,9 +616,13 @@@ static int mkv_write_tracks(AVFormatCon
  
              case AVMEDIA_TYPE_SUBTITLE:
                  put_ebml_uint(pb, MATROSKA_ID_TRACKTYPE, MATROSKA_TRACK_TYPE_SUBTITLE);
 +                if (!native_id) {
 +                    av_log(s, AV_LOG_ERROR, "Subtitle codec %d is not supported.\n", codec->codec_id);
 +                    return AVERROR_NOTSUPP;
 +                }
                  break;
              default:
 -                av_log(s, AV_LOG_ERROR, "Only audio, video, and subtitles are supported for Matroska.");
 +                av_log(s, AV_LOG_ERROR, "Only audio, video, and subtitles are supported for Matroska.\n");
                  break;
          }
          ret = mkv_write_codecprivate(s, pb, codec, native_id, qt_id);
diff --combined libavformat/rtpproto.c
@@@ -2,20 -2,20 +2,20 @@@
   * RTP network protocol
   * Copyright (c) 2002 Fabrice Bellard
   *
 - * This file is part of Libav.
 + * This file is part of FFmpeg.
   *
 - * Libav is free software; you can redistribute it and/or
 + * FFmpeg is free software; you can redistribute it and/or
   * modify it under the terms of the GNU Lesser General Public
   * License as published by the Free Software Foundation; either
   * version 2.1 of the License, or (at your option) any later version.
   *
 - * Libav is distributed in the hope that it will be useful,
 + * FFmpeg 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
   * Lesser General Public License for more details.
   *
   * You should have received a copy of the GNU Lesser General Public
 - * License along with Libav; if not, write to the Free Software
 + * License along with FFmpeg; if not, write to the Free Software
   * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
   */
  
@@@ -27,6 -27,7 +27,7 @@@
  #include "libavutil/parseutils.h"
  #include "libavutil/avstring.h"
  #include "avformat.h"
+ #include "avio_internal.h"
  #include "rtpdec.h"
  
  #include <unistd.h>
@@@ -71,10 -72,10 +72,10 @@@ int rtp_set_remote_url(URLContext *h, c
                   path, sizeof(path), uri);
  
      ff_url_join(buf, sizeof(buf), "udp", NULL, hostname, port, "%s", path);
-     udp_set_remote_url(s->rtp_hd, buf);
+     ff_udp_set_remote_url(s->rtp_hd, buf);
  
      ff_url_join(buf, sizeof(buf), "udp", NULL, hostname, port + 1, "%s", path);
-     udp_set_remote_url(s->rtcp_hd, buf);
+     ff_udp_set_remote_url(s->rtcp_hd, buf);
      return 0;
  }
  
@@@ -191,7 -192,7 +192,7 @@@ static int rtp_open(URLContext *h, cons
      if (url_open(&s->rtp_hd, buf, flags) < 0)
          goto fail;
      if (local_rtp_port>=0 && local_rtcp_port<0)
-         local_rtcp_port = udp_get_local_port(s->rtp_hd) + 1;
+         local_rtcp_port = ff_udp_get_local_port(s->rtp_hd) + 1;
  
      build_udp_url(buf, sizeof(buf),
                    hostname, rtcp_port, local_rtcp_port, ttl, max_packet_size,
@@@ -326,7 -327,7 +327,7 @@@ static int rtp_close(URLContext *h
  int rtp_get_local_rtp_port(URLContext *h)
  {
      RTPContext *s = h->priv_data;
-     return udp_get_local_port(s->rtp_hd);
+     return ff_udp_get_local_port(s->rtp_hd);
  }
  
  /**
  int rtp_get_local_rtcp_port(URLContext *h)
  {
      RTPContext *s = h->priv_data;
-     return udp_get_local_port(s->rtcp_hd);
+     return ff_udp_get_local_port(s->rtcp_hd);
  }
  
  static int rtp_get_file_handle(URLContext *h)
diff --combined libavformat/rtspdec.c
@@@ -2,20 -2,20 +2,20 @@@
   * RTSP demuxer
   * Copyright (c) 2002 Fabrice Bellard
   *
 - * This file is part of Libav.
 + * This file is part of FFmpeg.
   *
 - * Libav is free software; you can redistribute it and/or
 + * FFmpeg is free software; you can redistribute it and/or
   * modify it under the terms of the GNU Lesser General Public
   * License as published by the Free Software Foundation; either
   * version 2.1 of the License, or (at your option) any later version.
   *
 - * Libav is distributed in the hope that it will be useful,
 + * FFmpeg 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
   * Lesser General Public License for more details.
   *
   * You should have received a copy of the GNU Lesser General Public
 - * License along with Libav; if not, write to the Free Software
 + * License along with FFmpeg; if not, write to the Free Software
   * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
   */
  
@@@ -59,14 -59,10 +59,10 @@@ static int rtsp_read_play(AVFormatConte
          if (rt->state == RTSP_STATE_PAUSED) {
              cmd[0] = 0;
          } else {
-             if (!rt->seek_timestamp) {
-                 snprintf(cmd, sizeof(cmd), "Range: npt=0.000-\r\n");
-             } else {
-                 snprintf(cmd, sizeof(cmd),
-                          "Range: npt=%"PRId64".%03"PRId64"-\r\n",
-                          rt->seek_timestamp / AV_TIME_BASE,
-                          rt->seek_timestamp / (AV_TIME_BASE / 1000) % 1000);
-             }
+             snprintf(cmd, sizeof(cmd),
+                      "Range: npt=%"PRId64".%03"PRId64"-\r\n",
+                      rt->seek_timestamp / AV_TIME_BASE,
+                      rt->seek_timestamp / (AV_TIME_BASE / 1000) % 1000);
          }
          ff_rtsp_send_cmd(s, "PLAY", rt->control_uri, cmd, reply, NULL);
          if (reply->status_code != RTSP_STATUS_OK) {
diff --combined libavformat/rtspenc.c
@@@ -2,20 -2,20 +2,20 @@@
   * RTSP muxer
   * Copyright (c) 2010 Martin Storsjo
   *
 - * This file is part of Libav.
 + * This file is part of FFmpeg.
   *
 - * Libav is free software; you can redistribute it and/or
 + * FFmpeg is free software; you can redistribute it and/or
   * modify it under the terms of the GNU Lesser General Public
   * License as published by the Free Software Foundation; either
   * version 2.1 of the License, or (at your option) any later version.
   *
 - * Libav is distributed in the hope that it will be useful,
 + * FFmpeg 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
   * Lesser General Public License for more details.
   *
   * You should have received a copy of the GNU Lesser General Public
 - * License along with Libav; if not, write to the Free Software
 + * License along with FFmpeg; if not, write to the Free Software
   * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
   */
  
@@@ -103,8 -103,7 +103,7 @@@ static int rtsp_write_record(AVFormatCo
      char cmd[1024];
  
      snprintf(cmd, sizeof(cmd),
-              "Range: npt=%0.3f-\r\n",
-              (double) 0);
+              "Range: npt=0.000-\r\n");
      ff_rtsp_send_cmd(s, "RECORD", rt->control_uri, cmd, reply, NULL);
      if (reply->status_code != RTSP_STATUS_OK)
          return -1;
diff --combined libavformat/udp.c
@@@ -2,20 -2,20 +2,20 @@@
   * UDP prototype streaming system
   * Copyright (c) 2000, 2001, 2002 Fabrice Bellard
   *
 - * This file is part of Libav.
 + * This file is part of FFmpeg.
   *
 - * Libav is free software; you can redistribute it and/or
 + * FFmpeg is free software; you can redistribute it and/or
   * modify it under the terms of the GNU Lesser General Public
   * License as published by the Free Software Foundation; either
   * version 2.1 of the License, or (at your option) any later version.
   *
 - * Libav is distributed in the hope that it will be useful,
 + * FFmpeg 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
   * Lesser General Public License for more details.
   *
   * You should have received a copy of the GNU Lesser General Public
 - * License along with Libav; if not, write to the Free Software
 + * License along with FFmpeg; if not, write to the Free Software
   * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
   */
  
@@@ -27,6 -27,7 +27,7 @@@
  #define _BSD_SOURCE     /* Needed for using struct ip_mreq with recent glibc */
  #define _DARWIN_C_SOURCE /* Needed for using IP_MULTICAST_TTL on OS X */
  #include "avformat.h"
+ #include "avio_internal.h"
  #include "libavutil/parseutils.h"
  #include <unistd.h>
  #include "internal.h"
@@@ -243,7 -244,7 +244,7 @@@ static int udp_port(struct sockaddr_sto
   * @param uri of the remote server
   * @return zero if no error.
   */
- int udp_set_remote_url(URLContext *h, const char *uri)
+ int ff_udp_set_remote_url(URLContext *h, const char *uri)
  {
      UDPContext *s = h->priv_data;
      char hostname[256], buf[10];
   * @param h media file context
   * @return the local port number
   */
- int udp_get_local_port(URLContext *h)
+ int ff_udp_get_local_port(URLContext *h)
  {
      UDPContext *s = h->priv_data;
      return s->local_port;
@@@ -365,7 -366,7 +366,7 @@@ static int udp_open(URLContext *h, cons
          if (flags & URL_WRONLY)
              goto fail;
      } else {
-         if (udp_set_remote_url(h, uri) < 0)
+         if (ff_udp_set_remote_url(h, uri) < 0)
              goto fail;
      }
  
diff --combined libavutil/attributes.h
@@@ -1,20 -1,20 +1,20 @@@
  /*
   * copyright (c) 2006 Michael Niedermayer <michaelni@gmx.at>
   *
 - * This file is part of Libav.
 + * This file is part of FFmpeg.
   *
 - * Libav is free software; you can redistribute it and/or
 + * FFmpeg is free software; you can redistribute it and/or
   * modify it under the terms of the GNU Lesser General Public
   * License as published by the Free Software Foundation; either
   * version 2.1 of the License, or (at your option) any later version.
   *
 - * Libav is distributed in the hope that it will be useful,
 + * FFmpeg 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
   * Lesser General Public License for more details.
   *
   * You should have received a copy of the GNU Lesser General Public
 - * License along with Libav; if not, write to the Free Software
 + * License along with FFmpeg; if not, write to the Free Software
   * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
   */
  
@@@ -65,7 -65,7 +65,7 @@@
  #endif
  
  #ifndef av_cold
- #if (!defined(__INTEL_COMPILER) || __INTEL_COMPILER > 1110) && AV_GCC_VERSION_AT_LEAST(4,3)
+ #if AV_GCC_VERSION_AT_LEAST(4,3)
  #    define av_cold __attribute__((cold))
  #else
  #    define av_cold
@@@ -73,7 -73,7 +73,7 @@@
  #endif
  
  #ifndef av_flatten
- #if (!defined(__INTEL_COMPILER) || __INTEL_COMPILER > 1110) && AV_GCC_VERSION_AT_LEAST(4,1)
+ #if AV_GCC_VERSION_AT_LEAST(4,1)
  #    define av_flatten __attribute__((flatten))
  #else
  #    define av_flatten
  #endif
  
  #ifndef av_alias
- #if (!defined(__INTEL_COMPILER) || __INTEL_COMPILER > 1200) && AV_GCC_VERSION_AT_LEAST(3,3)
+ #if AV_GCC_VERSION_AT_LEAST(3,3)
  #   define av_alias __attribute__((may_alias))
  #else
  #   define av_alias
  #endif
  
  #ifndef av_uninit
 -#if defined(__GNUC__) && !defined(__ICC)
 +#if defined(__GNUC__) && !defined(__INTEL_COMPILER)
  #    define av_uninit(x) x=x
  #else
  #    define av_uninit(x) x
diff --combined libavutil/internal.h
@@@ -1,20 -1,20 +1,20 @@@
  /*
   * copyright (c) 2006 Michael Niedermayer <michaelni@gmx.at>
   *
 - * This file is part of Libav.
 + * This file is part of FFmpeg.
   *
 - * Libav is free software; you can redistribute it and/or
 + * FFmpeg is free software; you can redistribute it and/or
   * modify it under the terms of the GNU Lesser General Public
   * License as published by the Free Software Foundation; either
   * version 2.1 of the License, or (at your option) any later version.
   *
 - * Libav is distributed in the hope that it will be useful,
 + * FFmpeg 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
   * Lesser General Public License for more details.
   *
   * You should have received a copy of the GNU Lesser General Public
 - * License along with Libav; if not, write to the Free Software
 + * License along with FFmpeg; if not, write to the Free Software
   * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
   */
  
@@@ -39,7 -39,7 +39,7 @@@
  #include "timer.h"
  
  #ifndef attribute_align_arg
- #if ARCH_X86_32 && (!defined(__INTEL_COMPILER) || __INTEL_COMPILER > 1200) && AV_GCC_VERSION_AT_LEAST(4,2)
+ #if ARCH_X86_32 && AV_GCC_VERSION_AT_LEAST(4,2)
  #    define attribute_align_arg __attribute__((force_align_arg_pointer))
  #else
  #    define attribute_align_arg
  #   define NULL_IF_CONFIG_SMALL(x) x
  #endif
  
 -
  /**
   * Define a function with only the non-default version specified.
   *
   * On systems with ELF shared libraries, all symbols exported from
 - * Libav libraries are tagged with the name and major version of the
 + * FFmpeg libraries are tagged with the name and major version of the
   * library to which they belong.  If a function is moved from one
   * library to another, a wrapper must be retained in the original
   * location to preserve binary compatibility.
diff --combined libavutil/mem.h
@@@ -1,20 -1,20 +1,20 @@@
  /*
   * copyright (c) 2006 Michael Niedermayer <michaelni@gmx.at>
   *
 - * This file is part of Libav.
 + * This file is part of FFmpeg.
   *
 - * Libav is free software; you can redistribute it and/or
 + * FFmpeg is free software; you can redistribute it and/or
   * modify it under the terms of the GNU Lesser General Public
   * License as published by the Free Software Foundation; either
   * version 2.1 of the License, or (at your option) any later version.
   *
 - * Libav is distributed in the hope that it will be useful,
 + * FFmpeg 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
   * Lesser General Public License for more details.
   *
   * You should have received a copy of the GNU Lesser General Public
 - * License along with Libav; if not, write to the Free Software
 + * License along with FFmpeg; if not, write to the Free Software
   * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
   */
  
@@@ -29,7 -29,7 +29,7 @@@
  #include "attributes.h"
  #include "avutil.h"
  
 -#if defined(__ICC) && _ICC < 1200 || defined(__SUNPRO_C)
 +#if defined(__INTEL_COMPILER) && __INTEL_COMPILER < 1110 || defined(__SUNPRO_C)
      #define DECLARE_ALIGNED(n,t,v)      t __attribute__ ((aligned (n))) v
      #define DECLARE_ASM_CONST(n,t,v)    const t __attribute__ ((aligned (n))) v
  #elif defined(__TI_COMPILER_VERSION__)
@@@ -56,7 -56,7 +56,7 @@@
      #define av_malloc_attrib
  #endif
  
- #if (!defined(__INTEL_COMPILER) || __INTEL_COMPILER > 1200) && AV_GCC_VERSION_AT_LEAST(4,3)
+ #if AV_GCC_VERSION_AT_LEAST(4,3)
      #define av_alloc_size(n) __attribute__((alloc_size(n)))
  #else
      #define av_alloc_size(n)