Merge remote-tracking branch 'qatar/master'
authorMichael Niedermayer <michaelni@gmx.at>
Sat, 23 Jul 2011 14:47:10 +0000 (16:47 +0200)
committerMichael Niedermayer <michaelni@gmx.at>
Sat, 23 Jul 2011 14:47:10 +0000 (16:47 +0200)
* qatar/master:
  dnxhddec: avoid a branch in 10-bit decode_dct_block()
  H.264: Add optimizations to predict x86 assembly.
  riff: Add mpgv MPEG-2 fourcc
  add Flash Screen Video 2 decoder

Conflicts:
configure
doc/general.texi
libavcodec/Makefile
libavcodec/allcodecs.c
libavcodec/version.h

Merged-by: Michael Niedermayer <michaelni@gmx.at>
1  2 
Changelog
configure
doc/general.texi
libavcodec/Makefile
libavcodec/allcodecs.c
libavcodec/dnxhddec.c
libavcodec/flashsv.c
libavcodec/version.h
libavcodec/x86/h264_intrapred.asm
libavcodec/x86/h264_intrapred_init.c
libavformat/riff.c

diff --combined Changelog
+++ b/Changelog
@@@ -1,17 -1,38 +1,18 @@@
  Entries are sorted chronologically from oldest to youngest within each release,
  releases are sorted from youngest to oldest.
  
 +version next:
  
 -version <next>:
 +- openal input device added
 +- boxblur filter added
  - BWF muxer
+ - Flash Screen Video 2 decoder
  
  
 -version 0.7:
 -
 -- E-AC-3 audio encoder
 -- ac3enc: add channel coupling support
 -- floating-point sample format support for (E-)AC-3, DCA, AAC, Vorbis decoders
 -- H.264/MPEG frame-level multithreading
 -- av_metadata_* functions renamed to av_dict_* and moved to libavutil
 -- 4:4:4 H.264 decoding support
 -- 10-bit H.264 optimizations for x86
 -- bump libswscale for recently reported ABI break
 +version 0.8:
  
  
 -version 0.7_beta2:
 -
 -- VP8 frame-level multithreading
 -- NEON optimizations for VP8
 -- removed a lot of deprecated API cruft
 -- FFT and IMDCT optimizations for AVX (Sandy Bridge) processors
 -- DPX image encoder
 -- SMPTE 302M AES3 audio decoder
 -- ffmpeg no longer quits after the 'q' key is pressed; use 'ctrl+c' instead
 -- 9bit and 10bit per sample support in the H.264 decoder
 -
 -
 -version 0.7_beta1:
 -
 +- many many things we forgot because we rather write code than changelogs
  - WebM support in Matroska de/muxer
  - low overhead Ogg muxing
  - MMS-TCP support
@@@ -30,7 -51,6 +31,7 @@@
  - RTP depacketization of QDM2
  - ANSI/ASCII art playback system
  - Lego Mindstorms RSO de/muxer
 +- libavcore added (and subsequently removed)
  - SubRip subtitle file muxer and demuxer
  - Chinese AVS encoding via libxavs
  - ffprobe -show_packets option added
@@@ -77,7 -97,7 +78,7 @@@
  - replace the ocv_smooth filter with a more generic ocv filter
  - Windows Televison (WTV) demuxer
  - FFmpeg metadata format muxer and demuxer
 -- SubRip (srt) subtitle decoder
 +- SubRip (srt) subtitle encoder and decoder
  - floating-point AC-3 encoder added
  - Lagarith decoder
  - ffmpeg -copytb option added
  - sndio support for playback and record
  - Linux framebuffer input device added
  - Chronomaster DFA decoder
 -- Mobotix MxPEG decoder
 +- DPX image encoder
 +- MicroDVD subtitle file muxer and demuxer
 +- Playstation Portable PMP format demuxer
 +- fieldorder video filter added
  - AAC encoding via libvo-aacenc
  - AMR-WB encoding via libvo-amrwbenc
  - xWMA demuxer
 -- fieldorder video filter added
 +- Mobotix MxPEG decoder
 +- VP8 frame-multithreading
 +- NEON optimizations for VP8
 +- Lots of deprecated API cruft removed
 +- fft and imdct optimizations for AVX (Sandy Bridge) processors
 +- showinfo filter added
 +- SMPTE 302M AES3 audio decoder
 +- Apple Core Audio Format muxer
 +- 9bit and 10bit per sample support in the H.264 decoder
 +- 9bit and 10bit FFV1 encoding / decoding
 +- split filter added
 +- select filter added
 +- sdl output device added
 +- libmpcodecs video filter support (3 times as many filters than before)
 +- mpeg2 aspect ratio dection fixed
 +- libxvid aspect pickiness fixed
 +- Frame multithreaded decoding
 +- E-AC-3 audio encoder
 +- ac3enc: add channel coupling support
 +- floating-point sample format support to the ac3, eac3, dca, aac, and vorbis decoders.
 +- H264/MPEG frame-level multi-threading
 +- All av_metadata_* functions renamed to av_dict_* and moved to libavutil
 +- 4:4:4 H.264 decoding support
 +- 10-bit H.264 optimizations for x86
 +- lut, lutrgb, and lutyuv filters added
 +- buffersink libavfilter sink added
 +- Bump libswscale for recently reported ABI break
 +
 +
 +version 0.7:
 +
 +- all the changes for 0.8, but keeping API/ABI compatibility with the 0.6 release
  
  
  version 0.6:
@@@ -369,7 -355,6 +370,7 @@@ version 0.5
  - Gopher client support
  - MXF D-10 muxer
  - generic metadata API
 +- flash ScreenVideo2 encoder
  
  
  version 0.4.9-pre1:
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."
@@@ -106,8 -106,8 +106,8 @@@ Configuration options
    --disable-lpc            disable LPC code
    --disable-mdct           disable MDCT code
    --disable-rdft           disable RDFT code
 -  --enable-vaapi           enable VAAPI code
 -  --enable-vdpau           enable VDPAU code
 +  --enable-vaapi           enable VAAPI code [autodetect]
 +  --enable-vdpau           enable VDPAU code [autodetect]
    --disable-dxva2          disable DXVA2 code
    --enable-runtime-cpudetect detect cpu capabilities at runtime (bigger binary)
    --enable-hardcoded-tables use hardcoded tables instead of runtime generation
  External library support:
    --enable-avisynth        enable reading of AVISynth script files [no]
    --enable-bzlib           enable bzlib [autodetect]
 +  --enable-libcelt         enable CELT/Opus decoding via libcelt [no]
    --enable-frei0r          enable frei0r video filtering
    --enable-libopencore-amrnb enable AMR-NB de/encoding via libopencore-amrnb [no]
    --enable-libopencore-amrwb enable AMR-WB decoding via libopencore-amrwb [no]
    --enable-libxavs         enable AVS encoding via xavs [no]
    --enable-libxvid         enable Xvid encoding via xvidcore,
                             native MPEG-4/Xvid encoder exists [no]
 +  --enable-openal          enable OpenAL 1.1 capture support [no]
    --enable-mlib            enable Sun medialib [no]
    --enable-zlib            enable zlib [autodetect]
  
@@@ -241,12 -239,11 +241,12 @@@ Advanced options (experts only)
    --disable-symver         disable symbol versioning
    --optflags               override optimization-related compiler flags
  
 -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
    --enable-extra-warnings  enable more compiler warnings
 +  --disable-stripping      disable stripping of executables and shared libraries
    --samples=PATH           location of test samples for FATE, if not set use
                             \$FATE_SAMPLES at make invocation time.
  
@@@ -283,7 -280,7 +283,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@ffmpeg.org mailing list or IRC #ffmpeg on irc.freenode.net.
  EOF
      if disabled logging; then
          cat <<EOF
@@@ -761,7 -758,7 +761,7 @@@ check_pkg_config()
      headers="$2"
      funcs="$3"
      shift 3
 -    $pkg_config --exists $pkg || return
 +    $pkg_config --exists $pkg 2>/dev/null || return
      pkg_cflags=$($pkg_config --cflags $pkg)
      pkg_libs=$($pkg_config --libs $pkg)
      check_func_headers "$headers" "$funcs" $pkg_cflags $pkg_libs "$@" &&
@@@ -910,7 -907,6 +910,7 @@@ CONFIG_LIST=
      avformat
      avisynth
      bzlib
 +    crystalhd
      dct
      doc
      dwt
      h264pred
      hardcoded_tables
      huffman
 +    libcelt
      libdc1394
      libdirac
      libfaac
      mpegaudiodsp
      network
      nonfree
 +    openal
      pic
      postproc
      rdft
@@@ -1078,8 -1072,9 +1078,8 @@@ HAVE_LIST=
      inet_aton
      inline_asm
      isatty
 +    kbhit
      ldbrx
 -    libdc1394_1
 -    libdc1394_2
      llrint
      llrintf
      local_aligned_16
      sys_select_h
      sys_soundcard_h
      sys_videoio_h
 +    termios_h
      threads
      trunc
      truncf
@@@ -1154,7 -1148,6 +1154,7 @@@ CMDLINE_SELECT=
      extra_warnings
      logging
      optimizations
 +    stripping
      symver
      yasm
  "
@@@ -1185,7 -1178,6 +1185,7 @@@ CMDLINE_SET=
      host_ldflags
      host_libs
      host_os
 +    install
      ld
      logfile
      malloc_prefix
      optflags
      pkg_config
      samples
 +    strip
      sysinclude
      sysroot
      target_exec
@@@ -1279,7 -1270,7 +1279,8 @@@ flac_decoder_select="golomb
  flac_encoder_select="golomb lpc"
  flashsv_decoder_select="zlib"
  flashsv_encoder_select="zlib"
 +flashsv2_encoder_select="zlib"
+ flashsv2_decoder_select="zlib"
  flv_decoder_select="h263_decoder"
  flv_encoder_select="h263_encoder"
  fraps_decoder_select="huffman"
@@@ -1290,7 -1281,6 +1291,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_parser"
  h264_dxva2_hwaccel_deps="dxva2api_h"
  h264_dxva2_hwaccel_select="dxva2 h264_decoder"
  h264_vaapi_hwaccel_select="vaapi"
@@@ -1318,18 -1308,13 +1319,18 @@@ 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"
 +mpeg1_vdpau_hwaccel_select="vdpau mpeg1video_decoder"
 +mpeg2_crystalhd_decoder_select="crystalhd"
  mpeg2_dxva2_hwaccel_deps="dxva2api_h"
  mpeg2_dxva2_hwaccel_select="dxva2 mpeg2video_decoder"
 +mpeg2_vdpau_hwaccel_select="vdpau 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"
@@@ -1353,9 -1338,6 +1354,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"
@@@ -1366,7 -1348,6 +1367,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"
@@@ -1388,7 -1369,6 +1389,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"
@@@ -1397,7 -1377,6 +1398,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"
  
  h264_parser_select="golomb h264dsp h264pred"
  
  # external libraries
 +libcelt_decoder_deps="libcelt"
  libdirac_decoder_deps="libdirac !libschroedinger"
  libdirac_encoder_deps="libdirac"
  libfaac_encoder_deps="libfaac"
@@@ -1466,16 -1444,12 +1467,16 @@@ w64_demuxer_deps="wav_demuxer
  alsa_indev_deps="alsa_asoundlib_h snd_pcm_htimestamp"
  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"
 +dshow_indev_deps="IBaseFilter"
 +dshow_indev_extralibs="-lpsapi -lole32 -lstrmiids -luuid"
  dv1394_indev_deps="dv1394 dv_demuxer"
  fbdev_indev_deps="linux_fb_h"
 -jack_indev_deps="jack_jack_h"
 +jack_indev_deps="jack_jack_h sem_timedwait"
  libdc1394_indev_deps="libdc1394"
 +openal_indev_deps="openal"
  oss_indev_deps_any="soundcard_h sys_soundcard_h"
  oss_outdev_deps_any="soundcard_h sys_soundcard_h"
 +sdl_outdev_deps="sdl"
  sndio_indev_deps="sndio_h"
  sndio_outdev_deps="sndio_h"
  v4l_indev_deps="linux_videodev_h"
@@@ -1498,15 -1472,11 +1499,15 @@@ udp_protocol_deps="network
  
  # filters
  blackframe_filter_deps="gpl"
 +boxblur_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"
 +movie_filter_deps="avcodec avformat"
 +mp_filter_deps="gpl avcodec"
 +negate_filter_deps="lut_filter"
  ocv_filter_deps="libopencv"
  scale_filter_deps="swscale"
  yadif_filter_deps="gpl"
@@@ -1518,9 -1488,9 +1519,9 @@@ postproc_deps="gpl
  
  # programs
  ffmpeg_deps="avcodec avformat swscale"
 -ffmpeg_select="buffer_filter"
 +ffmpeg_select="buffer_filter buffersink_filter"
  ffplay_deps="avcodec avformat swscale sdl"
 -ffplay_select="rdft"
 +ffplay_select="buffersink_filter rdft"
  ffprobe_deps="avcodec avformat"
  ffserver_deps="avformat ffm_muxer fork rtp_protocol rtsp_demuxer"
  ffserver_extralibs='$ldl'
@@@ -1636,13 -1606,11 +1637,13 @@@ ar_default="ar
  cc_default="gcc"
  cc_version=\"unknown\"
  host_cc_default="gcc"
 +install="install"
  ln_s="ln -sf"
  nm_default="nm"
  objformat="elf"
  pkg_config_default=pkg-config
  ranlib="ranlib"
 +strip_default="strip"
  yasmexe="yasm"
  nogas=":"
  
@@@ -1675,7 -1643,6 +1676,7 @@@ enable optimization
  enable postproc
  enable protocols
  enable static
 +enable stripping
  enable swscale
  enable swscale_alpha
  
@@@ -1723,7 -1690,7 +1724,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(){
@@@ -1835,7 -1802,7 +1836,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
@@@ -1852,11 -1819,10 +1853,11 @@@ cc_default="${cross_prefix}${cc_default
  nm_default="${cross_prefix}${nm_default}"
  pkg_config_default="${cross_prefix}${pkg_config_default}"
  ranlib="${cross_prefix}${ranlib}"
 +strip_default="${cross_prefix}${strip_default}"
  
  sysinclude_default="${sysroot}/usr/include"
  
 -set_default cc nm pkg_config sysinclude
 +set_default cc nm pkg_config strip sysinclude
  enabled cross_compile || host_cc_default=$cc
  set_default host_cc
  
@@@ -2404,7 -2370,7 +2405,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.
          ;;
      bsd/os)
          add_extralibs -lpoll -lgnugetopt
 +        strip="strip -d"
          ;;
      darwin)
          enable malloc_aligned
          enabled ppc && add_asflags -force_cpusubtype_ALL
          SHFLAGS='-dynamiclib -Wl,-single_module -Wl,-install_name,$(SHLIBDIR)/$(SLIBNAME),-current_version,$(LIBVERSION),-compatibility_version,$(LIBMAJOR)'
          enabled x86_32 && append SHFLAGS -Wl,-read_only_relocs,suppress
 +        strip="${strip} -x"
          add_ldflags -Wl,-dynamic,-search_paths_first
          SLIBSUF=".dylib"
          SLIBNAME_WITH_VERSION='$(SLIBPREF)$(FULLNAME).$(LIBVERSION)$(SLIBSUF)'
          LIBTARGET=i386
          if enabled x86_64; then
              enable malloc_aligned
 -            LIBTARGET="i386:x86-64"
 +            LIBTARGET=x64
          elif enabled arm; then
              LIBTARGET=arm-wince
          fi
          SLIBSUF=".dll"
          SLIBNAME_WITH_VERSION='$(SLIBPREF)$(FULLNAME)-$(LIBVERSION)$(SLIBSUF)'
          SLIBNAME_WITH_MAJOR='$(SLIBPREF)$(FULLNAME)-$(LIBMAJOR)$(SLIBSUF)'
 -        SLIB_EXTRA_CMD=-'$(DLLTOOL) -m $(LIBTARGET) -d $$(@:$(SLIBSUF)=.def) -l $(SUBDIR)$(SLIBNAME:$(SLIBSUF)=.lib) -D $(SLIBNAME_WITH_MAJOR)'
 +        SLIB_EXTRA_CMD='-lib.exe /machine:$(LIBTARGET) /def:$$(@:$(SLIBSUF)=.def) /out:$(SUBDIR)$(SLIBNAME:$(SLIBSUF)=.lib)'
          SLIB_INSTALL_NAME='$(SLIBNAME_WITH_MAJOR)'
          SLIB_INSTALL_LINKS=
          SLIB_INSTALL_EXTRA_SHLIB='$(SLIBNAME:$(SLIBSUF)=.lib)'
          SLIB_INSTALL_EXTRA_LIB='lib$(SLIBNAME:$(SLIBSUF)=.dll.a) $(SLIBNAME_WITH_MAJOR:$(SLIBSUF)=.def)'
          SHFLAGS='-shared -Wl,--output-def,$$(@:$(SLIBSUF)=.def) -Wl,--out-implib,$(SUBDIR)lib$(SLIBNAME:$(SLIBSUF)=.dll.a) -Wl,--enable-runtime-pseudo-reloc -Wl,--enable-auto-image-base'
          objformat="win32"
 -        dlltool="${cross_prefix}dlltool"
          enable dos_paths
          check_cflags -fno-common
          check_cpp_condition _mingw.h "defined (__MINGW64_VERSION_MAJOR) || (__MINGW32_MAJOR_VERSION > 3) \
          ranlib="echo ignoring ranlib"
          ;;
      os/2*)
 +        strip="lxlite -CS"
          ln_s="cp -f"
          objformat="aout"
          add_cppflags -D_GNU_SOURCE
          ;;
  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
  
@@@ -2823,7 -2787,6 +2824,7 @@@ check_func  setrlimi
  check_func  strerror_r
  check_func  strptime
  check_func  strtok_r
 +check_func_headers conio.h kbhit
  check_func_headers io.h setmode
  check_func_headers lzo/lzo1x.h lzo1x_999_compress
  check_lib2 "windows.h psapi.h" GetProcessMemoryInfo -lpsapi
@@@ -2833,13 -2796,11 +2834,13 @@@ 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
  check_header sys/resource.h
  check_header sys/select.h
 +check_header termios.h
  check_header vdpau/vdpau.h
  check_header vdpau/vdpau_x11.h
  check_header X11/extensions/XvMClib.h
@@@ -2877,7 -2838,6 +2878,7 @@@ for thread in $THREADS_LIST; d
  done
  
  check_lib math.h sin -lm && LIBM="-lm"
 +disabled crystalhd || check_lib libcrystalhd/libcrystalhd_if.h DtsCrystalHDVersion -lcrystalhd || disable crystalhd
  enabled vaapi && require vaapi va/va.h vaInitialize -lva
  
  check_mathfunc exp2
@@@ -2895,9 -2855,7 +2896,9 @@@ check_mathfunc trunc
  
  # these are off by default, so fail if requested and not available
  enabled avisynth   && require2 vfw32 "windows.h vfw.h" AVIFileInit -lavifil32
 +enabled libcelt    && require libcelt celt/celt.h celt_decode -lcelt0
  enabled frei0r     && { check_header frei0r.h || die "ERROR: frei0r.h header not found"; }
 +enabled libdc1394  && require_pkg_config libdc1394-2 dc1394/dc1394.h dc1394_new
  enabled libdirac   && require_pkg_config dirac                          \
      "libdirac_decoder/dirac_parser.h libdirac_encoder/dirac_encoder.h"  \
      "dirac_decoder_init dirac_encoder_init"
@@@ -2908,7 -2866,7 +2909,7 @@@ enabled libmp3lame && require  "libmp3l
  enabled libnut     && require  libnut libnut.h nut_demuxer_init -lnut
  enabled libopencore_amrnb  && require libopencore_amrnb opencore-amrnb/interf_dec.h Decoder_Interface_init -lopencore-amrnb
  enabled libopencore_amrwb  && require libopencore_amrwb opencore-amrwb/dec_if.h D_IF_init -lopencore-amrwb
 -enabled libopencv  && require_pkg_config opencv opencv/cv.h cvCreateImageHeader
 +enabled libopencv  && require_pkg_config opencv opencv/cxcore.h cvCreateImageHeader
  enabled libopenjpeg && require libopenjpeg openjpeg.h opj_version -lopenjpeg
  enabled librtmp    && require_pkg_config librtmp librtmp/rtmp.h RTMP_Socket
  enabled libschroedinger && require_pkg_config schroedinger-1.0 schroedinger/schro.h schro_init
@@@ -2920,36 -2878,29 +2921,36 @@@ enabled libvorbis  && require  libvorbi
  enabled libvpx     && {
      enabled libvpx_decoder && { check_lib2 "vpx/vpx_decoder.h vpx/vp8dx.h" vpx_codec_dec_init_ver -lvpx ||
                                  die "ERROR: libvpx decoder version must be >=0.9.1"; }
 -    enabled libvpx_encoder && { check_lib2 "vpx/vpx_encoder.h vpx/vp8cx.h" vpx_codec_enc_init_ver -lvpx ||
 -                                die "ERROR: libvpx encoder version must be >=0.9.1"; } }
 +    enabled libvpx_encoder && { check_lib2 "vpx/vpx_encoder.h vpx/vp8cx.h" "vpx_codec_enc_init_ver VPX_CQ" -lvpx ||
 +                                die "ERROR: libvpx encoder version must be >=0.9.6"; } }
  enabled libx264    && require  libx264 x264.h x264_encoder_encode -lx264 &&
                        { check_cpp_condition x264.h "X264_BUILD >= 115" ||
                          die "ERROR: libx264 version must be >= 0.115."; }
  enabled libxavs    && require  libxavs xavs.h xavs_encoder_encode -lxavs
  enabled libxvid    && require  libxvid xvid.h xvid_global -lxvidcore
 +enabled openal     && { { for al_libs in "${OPENAL_LIBS}" "-lopenal" "-lOpenAL32"; do
 +                        check_lib 'AL/al.h' alGetError "${al_libs}" && break; done } ||
 +                        die "ERROR: openal not found"; } &&
 +                      { check_cpp_condition "AL/al.h" "defined(AL_VERSION_1_1)" ||
 +                        die "ERROR: openal version must be 1.1 or compatible"; }
  enabled mlib       && require  mediaLib mlib_types.h mlib_VectorSub_S16_U8_Mod -lmlib
  
 -# libdc1394 check
 -if enabled libdc1394; then
 -    { check_lib dc1394/dc1394.h dc1394_new -ldc1394 -lraw1394 &&
 -        enable libdc1394_2; } ||
 -    { check_lib libdc1394/dc1394_control.h dc1394_create_handle -ldc1394_control -lraw1394 &&
 -        enable libdc1394_1; } ||
 -    die "ERROR: No version of libdc1394 found "
 -fi
 -
 +SDL_CONFIG="${cross_prefix}sdl-config"
  if check_pkg_config sdl SDL_version.h SDL_Linked_Version; then
      check_cpp_condition SDL.h "(SDL_MAJOR_VERSION<<16 | SDL_MINOR_VERSION<<8 | SDL_PATCHLEVEL) >= 0x010201" $sdl_cflags &&
      enable sdl &&
      check_struct SDL.h SDL_VideoInfo current_w $sdl_cflags && enable sdl_video_size
 +else
 +  if "${SDL_CONFIG}" --version > /dev/null 2>&1; then
 +    sdl_cflags=$("${SDL_CONFIG}" --cflags)
 +    sdl_libs=$("${SDL_CONFIG}" --libs)
 +    check_func_headers SDL_version.h SDL_Linked_Version $sdl_cflags $sdl_libs &&
 +    check_cpp_condition SDL.h "(SDL_MAJOR_VERSION<<16 | SDL_MINOR_VERSION<<8 | SDL_PATCHLEVEL) >= 0x010201" $sdl_cflags &&
 +    enable sdl &&
 +    check_struct SDL.h SDL_VideoInfo current_w $sdl_cflags && enable sdl_video_size
 +  fi
  fi
 +enabled sdl && add_cflags $sdl_cflags && add_extralibs $sdl_libs
  
  texi2html -version > /dev/null 2>&1 && enable texi2html || disable texi2html
  
@@@ -2963,8 -2914,6 +2964,8 @@@ check_func_headers "windows.h vfw.h" ca
  # w32api 3.12 had it defined wrong
  check_cpp_condition vfw.h "WM_CAP_DRIVER_CONNECT > WM_USER" && enable vfwcap_defines
  
 +check_type "dshow.h" IBaseFilter
 +
  # check for ioctl_meteor.h, ioctl_bt848.h and alternatives
  { check_header dev/bktr/ioctl_meteor.h &&
    check_header dev/bktr/ioctl_bt848.h; } ||
  check_header dev/ic/bt8xx.h
  
  check_header sndio.h
 -check_header sys/soundcard.h
 +if check_struct sys/soundcard.h audio_buf_info bytes; then
 +    enable_safe sys/soundcard.h
 +else
 +    check_cc -D__BSD_VISIBLE -D__XSI_VISIBLE <<EOF && add_cppflags -D__BSD_VISIBLE -D__XSI_VISIBLE && enable_safe sys/soundcard.h
 +    #include <sys/soundcard.h>
 +    audio_buf_info abc;
 +EOF
 +fi
  check_header soundcard.h
  
  enabled_any alsa_indev alsa_outdev && check_lib2 alsa/asoundlib.h snd_pcm_htimestamp -lasound
  
 -enabled jack_indev && check_lib2 jack/jack.h jack_client_open -ljack
 +enabled jack_indev && check_lib2 jack/jack.h jack_client_open -ljack && check_func sem_timedwait
  
  enabled_any sndio_indev sndio_outdev && check_lib2 sndio.h sio_open -lsndio
  
@@@ -2999,13 -2941,6 +3000,13 @@@ check_func XOpenDisplay -lX1
  check_func XShmCreateImage -lX11 -lXext &&
  check_func XFixesGetCursorImage -lX11 -lXext -lXfixes
  
 +if ! disabled vaapi; then
 +    check_lib va/va.h vaInitialize -lva && {
 +        check_cpp_condition va/va_version.h "VA_CHECK_VERSION(0,32,0)" ||
 +        warn "Please upgrade to VA-API >= 0.32 if you would like full VA-API support.";
 +    } || disable vaapi
 +fi
 +
  if ! disabled vdpau && enabled vdpau_vdpau_h; then
  check_cpp_condition \
      vdpau/vdpau.h "defined VDP_DECODER_PROFILE_MPEG4_PART2_ASP" ||
@@@ -3030,7 -2965,6 +3031,7 @@@ check_cflags -Wwrite-string
  check_cflags -Wtype-limits
  check_cflags -Wundef
  check_cflags -Wmissing-prototypes
 +check_cflags -Wno-pointer-to-int-cast
  enabled extra_warnings && check_cflags -Winline
  
  # add some linker flags
@@@ -3140,11 -3074,6 +3141,11 @@@ check_deps $CONFIG_LIST       
  
  enabled asm || { arch=c; disable $ARCH_LIST $ARCH_EXT_LIST; }
  
 +if test $target_os == "haiku"; then
 +    disable memalign
 +    disable posix_memalign
 +fi
 +
  ! enabled_any memalign posix_memalign malloc_aligned &&
      enabled_any $need_memalign && enable memalign_hack
  
@@@ -3194,7 -3123,6 +3195,7 @@@ if enabled sparc; the
      echo "VIS enabled               ${vis-no}"
  fi
  echo "debug symbols             ${debug-no}"
 +echo "strip symbols             ${stripping-no}"
  echo "optimize for size         ${small-no}"
  echo "optimizations             ${optimizations-no}"
  echo "static                    ${static-no}"
@@@ -3209,7 -3137,6 +3210,7 @@@ echo "libdxva2 enabled          ${dxva2
  echo "libva enabled             ${vaapi-no}"
  echo "libvdpau enabled          ${vdpau-no}"
  echo "AVISynth enabled          ${avisynth-no}"
 +echo "libcelt enabled           ${libcelt-no}"
  echo "frei0r enabled            ${frei0r-no}"
  echo "libdc1394 support         ${libdc1394-no}"
  echo "libdirac enabled          ${libdirac-no}"
@@@ -3232,7 -3159,6 +3233,7 @@@ echo "libvpx enabled            ${libvp
  echo "libx264 enabled           ${libx264-no}"
  echo "libxavs enabled           ${libxavs-no}"
  echo "libxvid enabled           ${libxvid-no}"
 +echo "openal enabled            ${openal-no}"
  echo "zlib enabled              ${zlib-no}"
  echo "bzlib enabled             ${bzlib-no}"
  echo
@@@ -3261,15 -3187,11 +3262,15 @@@ echo "Creating config.mak and config.h.
  
  test -e Makefile || $ln_s "$source_path/Makefile" .
  
 +enabled stripping || strip="echo skipping strip"
 +
  config_files="$TMPH config.mak"
  
  cat > config.mak <<EOF
  # Automatically generated by configure - do not modify!
 -LIBAV_CONFIGURATION=$LIBAV_CONFIGURATION
 +ifndef FFMPEG_CONFIG_MAK
 +FFMPEG_CONFIG_MAK=1
 +FFMPEG_CONFIGURATION=$FFMPEG_CONFIGURATION
  prefix=$prefix
  LIBDIR=\$(DESTDIR)$libdir
  SHLIBDIR=\$(DESTDIR)$shlibdir
@@@ -3278,9 -3200,6 +3279,9 @@@ BINDIR=\$(DESTDIR)$bindi
  DATADIR=\$(DESTDIR)$datadir
  MANDIR=\$(DESTDIR)$mandir
  SRC_PATH=$source_path
 +ifndef MAIN_MAKEFILE
 +SRC_PATH:=\$(SRC_PATH:.%=..%)
 +endif
  CC_IDENT=$cc_ident
  ARCH=$arch
  CC=$cc
@@@ -3291,14 -3210,13 +3292,14 @@@ YASM=$yasmex
  YASMDEP=$yasmexe
  AR=$ar
  RANLIB=$ranlib
 +CP=cp -p
  LN_S=$ln_s
 +STRIP=$strip
  CPPFLAGS=$CPPFLAGS
  CFLAGS=$CFLAGS
  ASFLAGS=$ASFLAGS
  AS_O=$CC_O
  CC_O=$CC_O
 -DLLTOOL=$dlltool
  LDFLAGS=$LDFLAGS
  FFSERVERLDFLAGS=$FFSERVERLDFLAGS
  SHFLAGS=$SHFLAGS
@@@ -3328,7 -3246,7 +3329,7 @@@ SDL_LIBS=$sdl_lib
  SDL_CFLAGS=$sdl_cflags
  LIB_INSTALL_EXTRA_CMD=$LIB_INSTALL_EXTRA_CMD
  EXTRALIBS=$extralibs
 -INSTALL=install
 +INSTALL=$install
  LIBTARGET=${LIBTARGET}
  SLIBNAME=${SLIBNAME}
  SLIBNAME_WITH_VERSION=${SLIBNAME_WITH_VERSION}
@@@ -3362,10 -3280,10 +3363,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
@@@ -3416,8 -3334,7 +3417,8 @@@ LAVFI_TESTS=$(print_enabled  -n _test $
  SEEK_TESTS=$(print_enabled   -n _test $SEEK_TESTS)
  EOF
  
 -echo "#endif /* LIBAV_CONFIG_H */" >> $TMPH
 +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
@@@ -3482,10 -3399,10 +3483,10 @@@ Cflags: -I\${includedir
  EOF
  }
  
 -pkgconfig_generate libavutil "Libav utility library" "$LIBAVUTIL_VERSION" "$LIBM"
 -pkgconfig_generate libavcodec "Libav codec library" "$LIBAVCODEC_VERSION" "$extralibs" "libavutil = $LIBAVUTIL_VERSION"
 -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" "" "libavutil = $LIBAVUTIL_VERSION"
 -pkgconfig_generate libswscale "Libav image rescaling library" "$LIBSWSCALE_VERSION" "$LIBM" "libavutil = $LIBAVUTIL_VERSION"
 +pkgconfig_generate libavutil "FFmpeg utility library" "$LIBAVUTIL_VERSION" "$LIBM"
 +pkgconfig_generate libavcodec "FFmpeg codec library" "$LIBAVCODEC_VERSION" "$extralibs" "libavutil = $LIBAVUTIL_VERSION"
 +pkgconfig_generate libavformat "FFmpeg container format library" "$LIBAVFORMAT_VERSION" "$extralibs" "libavcodec = $LIBAVCODEC_VERSION"
 +pkgconfig_generate libavdevice "FFmpeg device handling library" "$LIBAVDEVICE_VERSION" "$extralibs" "libavformat = $LIBAVFORMAT_VERSION"
 +pkgconfig_generate libavfilter "FFmpeg video filtering library" "$LIBAVFILTER_VERSION" "$extralibs"
 +pkgconfig_generate libpostproc "FFmpeg post processing library" "$LIBPOSTPROC_VERSION" "" "libavutil = $LIBAVUTIL_VERSION"
 +pkgconfig_generate libswscale "FFmpeg image rescaling library" "$LIBSWSCALE_VERSION" "$LIBM" "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
@@@ -73,7 -73,7 +73,7 @@@
      @tab Multimedia format used by Delphine Software games.
  @item CD+G                      @tab   @tab X
      @tab Video format used by CD+G karaoke disks
 -@item Core Audio Format         @tab   @tab X
 +@item Core Audio Format         @tab X @tab X
      @tab Apple Core Audio Format
  @item CRC testing format        @tab X @tab
  @item Creative Voice            @tab X @tab X
  @item NUT                       @tab X @tab X
      @tab NUT Open Container Format
  @item Ogg                       @tab X @tab X
 +@item Playstation Portable PMP  @tab   @tab X
  @item TechnoTrend PVA           @tab   @tab X
      @tab Used by TechnoTrend DVB PCI boards.
  @item QCP                       @tab   @tab X
  
  @section Image Formats
  
 -Libav can read and write images for each frame of a video sequence. The
 +FFmpeg can read and write images for each frame of a video sequence. The
  following image formats are supported:
  
  @multitable @columnfractions .4 .1 .1 .4
      @tab Digital Picture Exchange
  @item JPEG         @tab X @tab X
      @tab Progressive JPEG is not supported.
 -@item JPEG 2000    @tab   @tab E
 -    @tab decoding supported through external library libopenjpeg
 +@item JPEG 2000    @tab X @tab X
  @item JPEG-LS      @tab X @tab X
  @item LJPEG        @tab X @tab
      @tab Lossless JPEG
      @tab experimental lossless codec (fourcc: FFV1)
  @item Flash Screen Video v1  @tab  X  @tab  X
      @tab fourcc: FSV1
- @item Flash Screen Video v2  @tab  X
 -@item Flash Screen Video v2  @tab     @tab  X
++@item Flash Screen Video v2  @tab  X  @tab  X
  @item Flash Video (FLV)      @tab  X  @tab  X
      @tab Sorenson H.263 used in Flash
  @item Fraps                  @tab     @tab  X
  @item Atrac 3                @tab     @tab  X
  @item Bink Audio             @tab     @tab  X
      @tab Used in Bink and Smacker files in many games.
 +@item CELT (Opus)            @tab     @tab  E
 +    @tab decoding supported through external library libcelt
  @item Delphine Software International CIN audio  @tab     @tab  X
      @tab Codec used in Delphine Software International games.
  @item COOK                   @tab     @tab  X
      @tab All versions except 5.1 are supported.
 -@item DCA (DTS Coherent Acoustics)  @tab     @tab  X
 +@item DCA (DTS Coherent Acoustics)  @tab  X  @tab  X
  @item DPCM id RoQ            @tab  X  @tab  X
      @tab Used in Quake III, Jedi Knight 2, other computer games.
  @item DPCM Interplay         @tab     @tab  X
      @tab Used in Sierra VMD files.
  @item Smacker audio          @tab     @tab  X
  @item SMPTE 302M AES3 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
@@@ -712,9 -706,8 +712,9 @@@ performance on systems without hardwar
  @item SSA/ASS      @tab X @tab X @tab X @tab X
  @item DVB          @tab X @tab X @tab X @tab X
  @item DVD          @tab X @tab X @tab X @tab X
 +@item MicroDVD     @tab X @tab X @tab   @tab
  @item PGS          @tab   @tab   @tab   @tab X
 -@item SubRip (SRT) @tab X @tab X @tab   @tab X
 +@item SubRip (SRT) @tab X @tab X @tab X @tab X
  @item XSUB         @tab   @tab   @tab X @tab X
  @end multitable
  
@@@ -765,12 -758,12 +765,12 @@@ Using a cross-compiler is preferred fo
  
  @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:
@@@ -785,12 -778,12 +785,12 @@@ 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}).
  
  @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 -801,18 +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 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.
 +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}).
  
  Notes:
@@@ -854,15 -843,14 +854,15 @@@ 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,
 -you can build libavutil, libavcodec and libavformat as DLLs.
 +@item By using @code{./configure --enable-shared} when configuring FFmpeg,
 +you can build the FFmpeg libraries (e.g. libavutil, libavcodec,
 +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
@@@ -870,13 -858,13 +870,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
  
@@@ -887,13 -875,13 +887,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
@@@ -918,13 -906,13 +918,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
  
  This is how to create DLL and LIB files that are compatible with MSVC++:
  
 -Within the MSYS shell, build Libav with
 +@enumerate
 +
 +@item Add a call to @file{vcvars32.bat} (which sets up the environment
 +variables for the Visual C++ tools) as the first line of @file{msys.bat}.
 +The standard location for @file{vcvars32.bat} is
 +@file{C:\Program Files\Microsoft Visual Studio 8\VC\bin\vcvars32.bat},
 +and the standard location for @file{msys.bat} is @file{C:\msys\1.0\msys.bat}.
 +If this corresponds to your setup, add the following line as the first line
 +of @file{msys.bat}:
 +
 +@example
 +call "C:\Program Files\Microsoft Visual Studio 8\VC\bin\vcvars32.bat"
 +@end example
 +
 +Alternatively, you may start the @file{Visual Studio 2005 Command Prompt},
 +and run @file{c:\msys\1.0\msys.bat} from there.
 +
 +@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 FFmpeg to create
 +MSVC++-compatible import libraries.
 +
 +@item Build FFmpeg with
  
  @example
  ./configure --enable-shared
@@@ -987,7 -952,7 +987,7 @@@ reference errors. There should be no ne
  @file{libgcc.a}, and @file{wsock32.lib}, nor any other external library
  statically linked into the DLLs.
  
 -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
@@@ -1038,14 -1003,14 +1038,14 @@@ lib /machine:i386 /def:..\lib\swscale-2
  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 @uref{http://www.winehq.com/, Wine}.
 +Then you can easily test FFmpeg with @uref{http://www.winehq.com/, Wine}.
  
  @subsection Compilation under Cygwin
  
@@@ -1078,7 -1043,7 +1078,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 libavcodec/Makefile
@@@ -1,5 -1,3 +1,5 @@@
 +include $(SUBDIR)../config.mak
 +
  NAME = avcodec
  FFLIBS = avutil
  
@@@ -18,7 -16,6 +18,7 @@@ OBJS = allcodecs.
         options.o                                                        \
         parser.o                                                         \
         raw.o                                                            \
 +       rawdec.o                                                         \
         resample.o                                                       \
         resample2.o                                                      \
         simple_idct.o                                                    \
@@@ -27,7 -24,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 dct32_fixed.o dct32_float.o
  OBJS-$(CONFIG_DWT)                     += dwt.o
@@@ -62,9 -58,9 +62,9 @@@ OBJS-$(CONFIG_AAC_ENCODER)             
                                            mpeg4audio.o kbdwin.o
  OBJS-$(CONFIG_AASC_DECODER)            += aasc.o msrledec.o
  OBJS-$(CONFIG_AC3_DECODER)             += ac3dec.o ac3dec_data.o ac3.o kbdwin.o
 -OBJS-$(CONFIG_AC3_ENCODER)             += ac3enc_float.o ac3enc.o ac3tab.o \
 -                                          ac3.o kbdwin.o
 -OBJS-$(CONFIG_AC3_FIXED_ENCODER)       += ac3enc_fixed.o ac3enc.o ac3tab.o ac3.o
 +OBJS-$(CONFIG_AC3_ENCODER)             += ac3enc_combined.o ac3enc_fixed.o ac3enc_float.o ac3tab.o ac3.o kbdwin.o ac3enc.o
 +OBJS-$(CONFIG_AC3_FLOAT_ENCODER)       += ac3enc_float.o ac3tab.o ac3tab.o ac3.o kbdwin.o
 +OBJS-$(CONFIG_AC3_FIXED_ENCODER)       += ac3enc_fixed.o ac3tab.o ac3tab.o ac3.o ac3enc.o
  OBJS-$(CONFIG_ALAC_DECODER)            += alac.o
  OBJS-$(CONFIG_ALAC_ENCODER)            += alacenc.o
  OBJS-$(CONFIG_ALS_DECODER)             += alsdec.o bgmc.o mpeg4audio.o
@@@ -80,7 -76,7 +80,7 @@@ OBJS-$(CONFIG_AMV_DECODER)             
  OBJS-$(CONFIG_ANM_DECODER)             += anm.o
  OBJS-$(CONFIG_ANSI_DECODER)            += ansi.o cga_data.o
  OBJS-$(CONFIG_APE_DECODER)             += apedec.o
 -OBJS-$(CONFIG_ASS_DECODER)             += assdec.o ass.o
 +OBJS-$(CONFIG_ASS_DECODER)             += assdec.o ass.o ass_split.o
  OBJS-$(CONFIG_ASS_ENCODER)             += assenc.o ass.o
  OBJS-$(CONFIG_ASV1_DECODER)            += asv1.o mpeg12data.o
  OBJS-$(CONFIG_ASV1_ENCODER)            += asv1.o mpeg12data.o
@@@ -109,7 -105,6 +109,7 @@@ OBJS-$(CONFIG_COOK_DECODER)            
  OBJS-$(CONFIG_CSCD_DECODER)            += cscd.o
  OBJS-$(CONFIG_CYUV_DECODER)            += cyuv.o
  OBJS-$(CONFIG_DCA_DECODER)             += dca.o synth_filter.o dcadsp.o
 +OBJS-$(CONFIG_DCA_ENCODER)             += dcaenc.o
  OBJS-$(CONFIG_DFA_DECODER)             += dfa.o
  OBJS-$(CONFIG_DNXHD_DECODER)           += dnxhddec.o dnxhddata.o
  OBJS-$(CONFIG_DNXHD_ENCODER)           += dnxhdenc.o dnxhddata.o       \
@@@ -142,17 -137,16 +142,18 @@@ OBJS-$(CONFIG_EATQI_DECODER)           
  OBJS-$(CONFIG_EIGHTBPS_DECODER)        += 8bps.o
  OBJS-$(CONFIG_EIGHTSVX_EXP_DECODER)    += 8svx.o
  OBJS-$(CONFIG_EIGHTSVX_FIB_DECODER)    += 8svx.o
 +OBJS-$(CONFIG_EIGHTSVX_RAW_DECODER)    += 8svx.o
  OBJS-$(CONFIG_ESCAPE124_DECODER)       += escape124.o
  OBJS-$(CONFIG_FFV1_DECODER)            += ffv1.o rangecoder.o
  OBJS-$(CONFIG_FFV1_ENCODER)            += ffv1.o rangecoder.o
  OBJS-$(CONFIG_FFVHUFF_DECODER)         += huffyuv.o
  OBJS-$(CONFIG_FFVHUFF_ENCODER)         += huffyuv.o
 -OBJS-$(CONFIG_FLAC_DECODER)            += flacdec.o flacdata.o flac.o
 -OBJS-$(CONFIG_FLAC_ENCODER)            += flacenc.o flacdata.o flac.o
 +OBJS-$(CONFIG_FLAC_DECODER)            += flacdec.o flacdata.o flac.o vorbis_data.o
 +OBJS-$(CONFIG_FLAC_ENCODER)            += flacenc.o flacdata.o flac.o vorbis_data.o
  OBJS-$(CONFIG_FLASHSV_DECODER)         += flashsv.o
  OBJS-$(CONFIG_FLASHSV_ENCODER)         += flashsvenc.o
 +OBJS-$(CONFIG_FLASHSV2_ENCODER)        += flashsv2enc.o
+ OBJS-$(CONFIG_FLASHSV2_DECODER)        += flashsv.o
  OBJS-$(CONFIG_FLIC_DECODER)            += flicvideo.o
  OBJS-$(CONFIG_FOURXM_DECODER)          += 4xm.o
  OBJS-$(CONFIG_FRAPS_DECODER)           += fraps.o
@@@ -195,8 -189,6 +196,8 @@@ OBJS-$(CONFIG_INDEO3_DECODER)          
  OBJS-$(CONFIG_INDEO5_DECODER)          += indeo5.o ivi_common.o ivi_dsp.o
  OBJS-$(CONFIG_INTERPLAY_DPCM_DECODER)  += dpcm.o
  OBJS-$(CONFIG_INTERPLAY_VIDEO_DECODER) += interplayvideo.o
 +OBJS-$(CONFIG_JPEG2000_DECODER)        += j2kdec.o mqcdec.o mqc.o j2k.o j2k_dwt.o
 +#OBJS-$(CONFIG_JPEG2000_ENCODER)        += j2kenc.o mqcenc.o mqc.o j2k.o j2k_dwt.o
  OBJS-$(CONFIG_JPEGLS_DECODER)          += jpeglsdec.o jpegls.o \
                                            mjpegdec.o mjpeg.o
  OBJS-$(CONFIG_JPEGLS_ENCODER)          += jpeglsenc.o jpegls.o
@@@ -282,7 -274,6 +283,7 @@@ OBJS-$(CONFIG_MSMPEG4V3_ENCODER)       
                                            h263.o ituh263dec.o mpeg4videodec.o
  OBJS-$(CONFIG_MSRLE_DECODER)           += msrle.o msrledec.o
  OBJS-$(CONFIG_MSVIDEO1_DECODER)        += msvideo1.o
 +OBJS-$(CONFIG_MSVIDEO1_ENCODER)        += msvideo1enc.o elbg.o
  OBJS-$(CONFIG_MSZH_DECODER)            += lcldec.o
  OBJS-$(CONFIG_MXPEG_DECODER)           += mxpegdec.o mjpegdec.o mjpeg.o
  OBJS-$(CONFIG_NELLYMOSER_DECODER)      += nellymoserdec.o nellymoser.o
@@@ -354,12 -345,8 +355,12 @@@ 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_SRT_ENCODER)             += srtenc.o ass_split.o
  OBJS-$(CONFIG_SUNRAST_DECODER)         += sunrast.o
  OBJS-$(CONFIG_SVQ1_DECODER)            += svq1dec.o svq1.o h263.o \
                                            mpegvideo.o error_resilience.o
@@@ -539,17 -526,17 +540,17 @@@ OBJS-$(CONFIG_ADTS_MUXER)              
  OBJS-$(CONFIG_CAF_DEMUXER)             += mpeg4audio.o mpegaudiodata.o
  OBJS-$(CONFIG_DV_DEMUXER)              += dvdata.o
  OBJS-$(CONFIG_DV_MUXER)                += dvdata.o
 -OBJS-$(CONFIG_FLAC_DEMUXER)            += flacdec.o flacdata.o flac.o
 -OBJS-$(CONFIG_FLAC_MUXER)              += flacdec.o flacdata.o flac.o
 +OBJS-$(CONFIG_FLAC_DEMUXER)            += flacdec.o flacdata.o flac.o vorbis_data.o
 +OBJS-$(CONFIG_FLAC_MUXER)              += flacdec.o flacdata.o flac.o vorbis_data.o
  OBJS-$(CONFIG_FLV_DEMUXER)             += mpeg4audio.o
  OBJS-$(CONFIG_GXF_DEMUXER)             += mpeg12data.o
  OBJS-$(CONFIG_IFF_DEMUXER)             += iff.o
 -OBJS-$(CONFIG_MATROSKA_AUDIO_MUXER)    += xiph.o mpeg4audio.o \
 +OBJS-$(CONFIG_MATROSKA_AUDIO_MUXER)    += xiph.o mpeg4audio.o vorbis_data.o \
                                            flacdec.o flacdata.o flac.o
  OBJS-$(CONFIG_MATROSKA_DEMUXER)        += mpeg4audio.o mpegaudiodata.o
  OBJS-$(CONFIG_MATROSKA_MUXER)          += xiph.o mpeg4audio.o \
                                            flacdec.o flacdata.o flac.o \
 -                                          mpegaudiodata.o
 +                                          mpegaudiodata.o vorbis_data.o
  OBJS-$(CONFIG_MP3_MUXER)               += mpegaudiodata.o mpegaudiodecheader.o
  OBJS-$(CONFIG_MOV_DEMUXER)             += mpeg4audio.o mpegaudiodata.o
  OBJS-$(CONFIG_MOV_MUXER)               += mpeg4audio.o mpegaudiodata.o
@@@ -557,18 -544,16 +558,18 @@@ OBJS-$(CONFIG_MPEGTS_MUXER)            
  OBJS-$(CONFIG_MPEGTS_DEMUXER)          += mpeg4audio.o mpegaudiodata.o
  OBJS-$(CONFIG_NUT_MUXER)               += mpegaudiodata.o
  OBJS-$(CONFIG_OGG_DEMUXER)             += flacdec.o flacdata.o flac.o \
 -                                          dirac.o mpeg12data.o
 -OBJS-$(CONFIG_OGG_MUXER)               += xiph.o flacdec.o flacdata.o flac.o
 +                                          dirac.o mpeg12data.o vorbis_data.o
 +OBJS-$(CONFIG_OGG_MUXER)               += xiph.o flacdec.o flacdata.o flac.o \
 +                                          vorbis_data.o
  OBJS-$(CONFIG_RTP_MUXER)               += mpeg4audio.o mpegvideo.o xiph.o
  OBJS-$(CONFIG_SPDIF_DEMUXER)           += aacadtsdec.o mpeg4audio.o
  OBJS-$(CONFIG_WEBM_MUXER)              += xiph.o mpeg4audio.o \
                                            flacdec.o flacdata.o flac.o \
 -                                          mpegaudiodata.o
 +                                          mpegaudiodata.o vorbis_data.o
  OBJS-$(CONFIG_WTV_DEMUXER)             += mpeg4audio.o mpegaudiodata.o
  
  # external codec libraries
 +OBJS-$(CONFIG_LIBCELT_DECODER)            += libcelt_dec.o
  OBJS-$(CONFIG_LIBDIRAC_DECODER)           += libdiracdec.o
  OBJS-$(CONFIG_LIBDIRAC_ENCODER)           += libdiracenc.o libdirac_libschro.o
  OBJS-$(CONFIG_LIBFAAC_ENCODER)            += libfaac.o
@@@ -609,8 -594,7 +610,8 @@@ OBJS-$(CONFIG_DIRAC_PARSER)            
  OBJS-$(CONFIG_DNXHD_PARSER)            += dnxhd_parser.o
  OBJS-$(CONFIG_DVBSUB_PARSER)           += dvbsub_parser.o
  OBJS-$(CONFIG_DVDSUB_PARSER)           += dvdsub_parser.o
 -OBJS-$(CONFIG_FLAC_PARSER)             += flac_parser.o flacdata.o flac.o
 +OBJS-$(CONFIG_FLAC_PARSER)             += flac_parser.o flacdata.o flac.o \
 +                                          vorbis_data.o
  OBJS-$(CONFIG_H261_PARSER)             += h261_parser.o
  OBJS-$(CONFIG_H263_PARSER)             += h263_parser.o
  OBJS-$(CONFIG_H264_PARSER)             += h264_parser.o h264.o            \
@@@ -682,7 -666,9 +683,7 @@@ SKIPHEADERS-$(CONFIG_VAAPI)            
  SKIPHEADERS-$(CONFIG_VDPAU)            += vdpau.h
  SKIPHEADERS-$(CONFIG_XVMC)             += xvmc.h
  
 -EXAMPLES = api
 -
 -TESTPROGS = cabac dct fft fft-fixed h264 iirfilter rangecoder
 +TESTPROGS = cabac dct fft fft-fixed h264 iirfilter rangecoder snow
  TESTPROGS-$(HAVE_MMX) += motion
  TESTOBJS = dctref.o
  
diff --combined libavcodec/allcodecs.c
@@@ -2,20 -2,20 +2,20 @@@
   * Provide registration of all codecs, parsers and bitstream filters for libavcodec.
   * 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
   */
  
@@@ -57,10 -57,8 +57,10 @@@ void avcodec_register_all(void
      REGISTER_HWACCEL (H263_VAAPI, h263_vaapi);
      REGISTER_HWACCEL (H264_DXVA2, h264_dxva2);
      REGISTER_HWACCEL (H264_VAAPI, h264_vaapi);
 +    REGISTER_HWACCEL (MPEG1_VDPAU, mpeg1_vdpau);
      REGISTER_HWACCEL (MPEG2_DXVA2, mpeg2_dxva2);
      REGISTER_HWACCEL (MPEG2_VAAPI, mpeg2_vaapi);
 +    REGISTER_HWACCEL (MPEG2_VDPAU, mpeg2_vdpau);
      REGISTER_HWACCEL (MPEG4_VAAPI, mpeg4_vaapi);
      REGISTER_HWACCEL (VC1_DXVA2, vc1_dxva2);
      REGISTER_HWACCEL (VC1_VAAPI, vc1_vaapi);
      REGISTER_DECODER (EIGHTBPS, eightbps);
      REGISTER_DECODER (EIGHTSVX_EXP, eightsvx_exp);
      REGISTER_DECODER (EIGHTSVX_FIB, eightsvx_fib);
 +    REGISTER_DECODER (EIGHTSVX_RAW, eightsvx_raw);
      REGISTER_DECODER (ESCAPE124, escape124);
      REGISTER_ENCDEC  (FFV1, ffv1);
      REGISTER_ENCDEC  (FFVHUFF, ffvhuff);
      REGISTER_ENCDEC  (FLASHSV, flashsv);
-     REGISTER_ENCODER (FLASHSV2, flashsv2);
 -    REGISTER_DECODER (FLASHSV2, flashsv2);
++    REGISTER_ENCDEC (FLASHSV2, flashsv2);
      REGISTER_DECODER (FLIC, flic);
      REGISTER_ENCDEC  (FLV, flv);
      REGISTER_DECODER (FOURXM, fourxm);
      REGISTER_DECODER (H263I, h263i);
      REGISTER_ENCODER (H263P, h263p);
      REGISTER_DECODER (H264, h264);
 +    REGISTER_DECODER (H264_CRYSTALHD, h264_crystalhd);
      REGISTER_DECODER (H264_VDPAU, h264_vdpau);
      REGISTER_ENCDEC  (HUFFYUV, huffyuv);
      REGISTER_DECODER (IDCIN, idcin);
      REGISTER_DECODER (INDEO3, indeo3);
      REGISTER_DECODER (INDEO5, indeo5);
      REGISTER_DECODER (INTERPLAY_VIDEO, interplay_video);
 +    REGISTER_DECODER (JPEG2000, jpeg2000);
      REGISTER_ENCDEC  (JPEGLS, jpegls);
      REGISTER_DECODER (JV, jv);
      REGISTER_DECODER (KGV1, kgv1);
      REGISTER_ENCDEC  (MPEG1VIDEO, mpeg1video);
      REGISTER_ENCDEC  (MPEG2VIDEO, mpeg2video);
      REGISTER_ENCDEC  (MPEG4, mpeg4);
 +    REGISTER_DECODER (MPEG4_CRYSTALHD, mpeg4_crystalhd);
      REGISTER_DECODER (MPEG4_VDPAU, mpeg4_vdpau);
      REGISTER_DECODER (MPEGVIDEO, mpegvideo);
      REGISTER_DECODER (MPEG_VDPAU, mpeg_vdpau);
      REGISTER_DECODER (MPEG1_VDPAU, mpeg1_vdpau);
 +    REGISTER_DECODER (MPEG2_CRYSTALHD, mpeg2_crystalhd);
 +    REGISTER_DECODER (MSMPEG4_CRYSTALHD, msmpeg4_crystalhd);
      REGISTER_DECODER (MSMPEG4V1, msmpeg4v1);
      REGISTER_ENCDEC  (MSMPEG4V2, msmpeg4v2);
      REGISTER_ENCDEC  (MSMPEG4V3, msmpeg4v3);
      REGISTER_DECODER (MSRLE, msrle);
 -    REGISTER_DECODER (MSVIDEO1, msvideo1);
 +    REGISTER_ENCDEC  (MSVIDEO1, msvideo1);
      REGISTER_DECODER (MSZH, mszh);
      REGISTER_DECODER (MXPEG, mxpeg);
      REGISTER_DECODER (NUV, nuv);
      REGISTER_DECODER (V210X, v210x);
      REGISTER_DECODER (VB, vb);
      REGISTER_DECODER (VC1, vc1);
 +    REGISTER_DECODER (VC1_CRYSTALHD, vc1_crystalhd);
      REGISTER_DECODER (VC1_VDPAU, vc1_vdpau);
      REGISTER_DECODER (VCR1, vcr1);
      REGISTER_DECODER (VMDVIDEO, vmdvideo);
      REGISTER_ENCDEC  (WMV1, wmv1);
      REGISTER_ENCDEC  (WMV2, wmv2);
      REGISTER_DECODER (WMV3, wmv3);
 +    REGISTER_DECODER (WMV3_CRYSTALHD, wmv3_crystalhd);
      REGISTER_DECODER (WMV3_VDPAU, wmv3_vdpau);
      REGISTER_DECODER (WNV1, wnv1);
      REGISTER_DECODER (XAN_WC3, xan_wc3);
      REGISTER_ENCDEC  (AAC, aac);
      REGISTER_DECODER (AAC_LATM, aac_latm);
      REGISTER_ENCDEC  (AC3, ac3);
 -    REGISTER_ENCODER (AC3_FIXED, ac3_fixed);
 +    REGISTER_ENCODER (AC3_FIXED, ac3_fixed); //deprecated, just for libav compatibility
 +//    REGISTER_ENCODER (AC3_FLOAT, ac3_float); dont remove dont outcomment, for configure
      REGISTER_ENCDEC  (ALAC, alac);
      REGISTER_DECODER (ALS, als);
      REGISTER_DECODER (AMRNB, amrnb);
      REGISTER_DECODER (BINKAUDIO_DCT, binkaudio_dct);
      REGISTER_DECODER (BINKAUDIO_RDFT, binkaudio_rdft);
      REGISTER_DECODER (COOK, cook);
 -    REGISTER_DECODER (DCA, dca);
 +    REGISTER_ENCDEC  (DCA, dca);
      REGISTER_DECODER (DSICINAUDIO, dsicinaudio);
      REGISTER_ENCDEC  (EAC3, eac3);
      REGISTER_ENCDEC  (FLAC, flac);
      REGISTER_DECODER (SHORTEN, shorten);
      REGISTER_DECODER (SIPR, sipr);
      REGISTER_DECODER (SMACKAUD, smackaud);
 +    REGISTER_ENCDEC  (SONIC, sonic);
 +    REGISTER_ENCODER (SONIC_LS, sonic_ls);
      REGISTER_DECODER (TRUEHD, truehd);
      REGISTER_DECODER (TRUESPEECH, truespeech);
      REGISTER_DECODER (TTA, tta);
      REGISTER_ENCDEC  (DVBSUB, dvbsub);
      REGISTER_ENCDEC  (DVDSUB, dvdsub);
      REGISTER_DECODER (PGSSUB, pgssub);
 -    REGISTER_DECODER (SRT, srt);
 +    REGISTER_ENCDEC  (SRT, srt);
      REGISTER_ENCDEC  (XSUB, xsub);
  
      /* external libraries */
 +    REGISTER_DECODER (LIBCELT, libcelt);
      REGISTER_ENCDEC  (LIBDIRAC, libdirac);
      REGISTER_ENCODER (LIBFAAC, libfaac);
      REGISTER_ENCDEC  (LIBGSM, libgsm);
diff --combined libavcodec/dnxhddec.c
@@@ -5,20 -5,20 +5,20 @@@
   *
   * 10 bit support added by MirriAd Ltd, Joseph Artsimovich <joseph@mirriad.com>
   *
 - * 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
   */
  
@@@ -63,7 -63,6 +63,7 @@@ static av_cold int dnxhd_decode_init(AV
  
      ctx->avctx = avctx;
      avctx->coded_frame = &ctx->picture;
 +    avcodec_get_frame_defaults(&ctx->picture);
      ctx->picture.type = AV_PICTURE_TYPE_I;
      ctx->picture.key_frame = 1;
      return 0;
@@@ -71,7 -70,7 +71,7 @@@
  
  static int dnxhd_init_vlc(DNXHDContext *ctx, int cid)
  {
 -    if (!ctx->cid_table) {
 +    if (cid != ctx->cid) {
          int index;
  
          if ((index = ff_dnxhd_get_cid_table(cid)) < 0) {
              return -1;
          }
          ctx->cid_table = &ff_dnxhd_cid_table[index];
 +
 +        free_vlc(&ctx->ac_vlc);
 +        free_vlc(&ctx->dc_vlc);
 +        free_vlc(&ctx->run_vlc);
 +
          init_vlc(&ctx->ac_vlc, DNXHD_VLC_BITS, 257,
                   ctx->cid_table->ac_bits, 1, 1,
                   ctx->cid_table->ac_codes, 2, 2, 0);
@@@ -95,7 -89,6 +95,7 @@@
                   ctx->cid_table->run_codes, 2, 2, 0);
  
          ff_init_scantable(ctx->dsp.idct_permutation, &ctx->scantable, ff_zigzag_direct);
 +        ctx->cid = cid;
      }
      return 0;
  }
  static int dnxhd_decode_header(DNXHDContext *ctx, const uint8_t *buf, int buf_size, int first_field)
  {
      static const uint8_t header_prefix[] = { 0x00, 0x00, 0x02, 0x80, 0x01 };
 -    int i;
 +    int i, cid;
  
      if (buf_size < 0x280)
          return -1;
          }
      }
  
 -    ctx->cid = AV_RB32(buf + 0x28);
 -    av_dlog(ctx->avctx, "compression id %d\n", ctx->cid);
 +    cid = AV_RB32(buf + 0x28);
 +    av_dlog(ctx->avctx, "compression id %d\n", cid);
  
 -    if (dnxhd_init_vlc(ctx, ctx->cid) < 0)
 +    if (dnxhd_init_vlc(ctx, cid) < 0)
          return -1;
  
      if (buf_size < ctx->cid_table->coding_unit_size) {
@@@ -246,7 -239,7 +246,7 @@@ static av_always_inline void dnxhd_deco
          //av_log(ctx->avctx, AV_LOG_DEBUG, "j %d\n", j);
          //av_log(ctx->avctx, AV_LOG_DEBUG, "level %d, weight %d\n", level, weight_matrix[i]);
          level = (2*level+1) * qscale * weight_matrix[i];
-         if (weight_matrix[i] != level_bias)
+         if (level_bias < 32 || weight_matrix[i] != level_bias)
              level += level_bias;
          level >>= level_shift;
  
diff --combined libavcodec/flashsv.c
@@@ -3,20 -3,20 +3,20 @@@
   * Copyright (C) 2004 Alex Beregszaszi
   * Copyright (C) 2006 Benjamin Larsson
   *
 - * 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
   */
  
@@@ -25,6 -25,8 +25,8 @@@
   * Flash Screen Video decoder
   * @author Alex Beregszaszi
   * @author Benjamin Larsson
+  * @author Daniel Verkamp
+  * @author Konstantin Shishkov
   *
   * A description of the bitstream format for Flash Screen Video version 1/2
   * is part of the SWF File Format Specification (version 10), which can be
  #include <stdlib.h>
  #include <zlib.h>
  
+ #include "libavutil/intreadwrite.h"
  #include "avcodec.h"
+ #include "bytestream.h"
  #include "get_bits.h"
  
+ typedef struct BlockInfo {
+     uint8_t *pos;
+     int      size;
+     int      unp_size;
+ } BlockInfo;
  typedef struct FlashSVContext {
      AVCodecContext *avctx;
      AVFrame         frame;
      uint8_t        *tmpblock;
      int             block_size;
      z_stream        zstream;
+     int             ver;
+     const uint32_t *pal;
+     int             is_keyframe;
+     uint8_t        *keyframedata;
+     uint8_t        *keyframe;
+     BlockInfo      *blocks;
+     uint8_t        *deflate_block;
+     int             deflate_block_size;
+     int             color_depth;
+     int             zlibprime_curr, zlibprime_prev;
+     int             diff_start, diff_height;
  } FlashSVContext;
  
  
+ static int decode_hybrid(const uint8_t *sptr, uint8_t *dptr, int dx, int dy,
+                          int h, int w, int stride, const uint32_t *pal)
+ {
+     int x, y;
+     const uint8_t *orig_src = sptr;
+     for (y = dx+h; y > dx; y--) {
+         uint8_t *dst = dptr + (y * stride) + dy * 3;
+         for (x = 0; x < w; x++) {
+             if (*sptr & 0x80) {
+                 /* 15-bit color */
+                 unsigned c = AV_RB16(sptr) & ~0x8000;
+                 unsigned b =  c        & 0x1F;
+                 unsigned g = (c >>  5) & 0x1F;
+                 unsigned r =  c >> 10;
+                 /* 000aaabb -> aaabbaaa  */
+                 *dst++ = (b << 3) | (b >> 2);
+                 *dst++ = (g << 3) | (g >> 2);
+                 *dst++ = (r << 3) | (r >> 2);
+                 sptr += 2;
+             } else {
+                 /* palette index */
+                 uint32_t c = pal[*sptr++];
+                 bytestream_put_le24(&dst, c);
+             }
+         }
+     }
+     return sptr - orig_src;
+ }
  static av_cold int flashsv_decode_init(AVCodecContext *avctx)
  {
      FlashSVContext *s = avctx->priv_data;
          return 1;
      }
      avctx->pix_fmt = PIX_FMT_BGR24;
 +    avcodec_get_frame_defaults(&s->frame);
      s->frame.data[0] = NULL;
  
      return 0;
  }
  
  
+ static void flashsv2_prime(FlashSVContext *s, uint8_t *src,
+                            int size, int unp_size)
+ {
+     z_stream zs;
+     zs.zalloc = NULL;
+     zs.zfree  = NULL;
+     zs.opaque = NULL;
+     s->zstream.next_in   = src;
+     s->zstream.avail_in  = size;
+     s->zstream.next_out  = s->tmpblock;
+     s->zstream.avail_out = s->block_size * 3;
+     inflate(&s->zstream, Z_SYNC_FLUSH);
+     deflateInit(&zs, 0);
+     zs.next_in   = s->tmpblock;
+     zs.avail_in  = s->block_size * 3 - s->zstream.avail_out;
+     zs.next_out  = s->deflate_block;
+     zs.avail_out = s->deflate_block_size;
+     deflate(&zs, Z_SYNC_FLUSH);
+     deflateEnd(&zs);
+     inflateReset(&s->zstream);
+     s->zstream.next_in   = s->deflate_block;
+     s->zstream.avail_in  = s->deflate_block_size - zs.avail_out;
+     s->zstream.next_out  = s->tmpblock;
+     s->zstream.avail_out = s->block_size * 3;
+     inflate(&s->zstream, Z_SYNC_FLUSH);
+ }
  static int flashsv_decode_block(AVCodecContext *avctx, AVPacket *avpkt,
                                  GetBitContext *gb, int block_size,
-                                 int width, int height, int x_pos, int y_pos)
+                                 int width, int height, int x_pos, int y_pos,
+                                 int blk_idx)
  {
      struct FlashSVContext *s = avctx->priv_data;
      uint8_t *line = s->tmpblock;
      if (ret != Z_OK) {
          //return -1;
      }
+     if (s->zlibprime_curr || s->zlibprime_prev) {
+         flashsv2_prime(s, s->blocks[blk_idx].pos, s->blocks[blk_idx].size,
+                        s->blocks[blk_idx].unp_size);
+     }
      s->zstream.next_in   = avpkt->data + get_bits_count(gb) / 8;
      s->zstream.avail_in  = block_size;
      s->zstream.next_out  = s->tmpblock;
      if (ret != Z_OK && ret != Z_STREAM_END) {
          //return -1;
      }
-     /* Flash Screen Video stores the image upside down, so copy
-      * lines to destination in reverse order. */
-     for (k = 1; k <= height; k++) {
-         memcpy(s->frame.data[0] + x_pos * 3 +
-                (s->image_height - y_pos - k) * s->frame.linesize[0],
-                line, width * 3);
-         /* advance source pointer to next line */
-         line += width * 3;
+     if (s->is_keyframe) {
+         s->blocks[blk_idx].pos      = s->keyframedata + (get_bits_count(gb) / 8);
+         s->blocks[blk_idx].size     = block_size;
+         s->blocks[blk_idx].unp_size = s->block_size * 3 - s->zstream.avail_out;
+     }
+     if (!s->color_depth) {
+         /* Flash Screen Video stores the image upside down, so copy
+          * lines to destination in reverse order. */
+         for (k = 1; k <= s->diff_height; k++) {
+             memcpy(s->frame.data[0] + x_pos * 3 +
+                    (s->image_height - y_pos - s->diff_start - k) * s->frame.linesize[0],
+                    line, width * 3);
+             /* advance source pointer to next line */
+             line += width * 3;
+         }
+     } else {
+         /* hybrid 15-bit/palette mode */
+         decode_hybrid(s->tmpblock, s->frame.data[0],
+                       s->image_height - (y_pos + 1 + s->diff_start + s->diff_height),
+                       x_pos, s->diff_height, width,
+                       s->frame.linesize[0], s->pal);
      }
      skip_bits_long(gb, 8 * block_size); /* skip the consumed bits */
      return 0;
  }
  
+ static int calc_deflate_block_size(int tmpblock_size)
+ {
+     z_stream zstream;
+     int size;
+     zstream.zalloc = Z_NULL;
+     zstream.zfree  = Z_NULL;
+     zstream.opaque = Z_NULL;
+     if (deflateInit(&zstream, 0) != Z_OK)
+         return -1;
+     size = deflateBound(&zstream, tmpblock_size);
+     deflateEnd(&zstream);
+     return size;
+ }
  
  static int flashsv_decode_frame(AVCodecContext *avctx, void *data,
                                  int *data_size, AVPacket *avpkt)
      s->block_height = 16 * (get_bits(&gb,  4) + 1);
      s->image_height =       get_bits(&gb, 12);
  
+     if (s->ver == 2) {
+         skip_bits(&gb, 6);
+         if (get_bits1(&gb)) {
+             av_log_missing_feature(avctx, "iframe", 1);
+             return AVERROR_PATCHWELCOME;
+         }
+         if (get_bits1(&gb)) {
+             av_log_missing_feature(avctx, "custom palette", 1);
+             return AVERROR_PATCHWELCOME;
+         }
+     }
      /* calculate number of blocks and size of border (partial) blocks */
      h_blocks = s->image_width  / s->block_width;
      h_part   = s->image_width  % s->block_width;
      /* the block size could change between frames, make sure the buffer
       * is large enough, if not, get a larger one */
      if (s->block_size < s->block_width * s->block_height) {
-         av_free(s->tmpblock);
-         if ((s->tmpblock = av_malloc(3 * s->block_width * s->block_height)) == NULL) {
+         int tmpblock_size = 3 * s->block_width * s->block_height;
+         s->tmpblock = av_realloc(s->tmpblock, tmpblock_size);
+         if (!s->tmpblock) {
              av_log(avctx, AV_LOG_ERROR, "Can't allocate decompression buffer.\n");
              return AVERROR(ENOMEM);
          }
+         if (s->ver == 2) {
+             s->deflate_block_size = calc_deflate_block_size(tmpblock_size);
+             if (s->deflate_block_size <= 0) {
+                 av_log(avctx, AV_LOG_ERROR, "Can't determine deflate buffer size.\n");
+                 return -1;
+             }
+             s->deflate_block = av_realloc(s->deflate_block, s->deflate_block_size);
+             if (!s->deflate_block) {
+                 av_log(avctx, AV_LOG_ERROR, "Can't allocate deflate buffer.\n");
+                 return AVERROR(ENOMEM);
+             }
+         }
      }
      s->block_size = s->block_width * s->block_height;
  
          return AVERROR_INVALIDDATA;
      }
  
+     /* we care for keyframes only in Screen Video v2 */
+     s->is_keyframe = (avpkt->flags & AV_PKT_FLAG_KEY) && (s->ver == 2);
+     if (s->is_keyframe) {
+         s->keyframedata = av_realloc(s->keyframedata, avpkt->size);
+         memcpy(s->keyframedata, avpkt->data, avpkt->size);
+         s->blocks = av_realloc(s->blocks,
+                                (v_blocks + !!v_part) * (h_blocks + !!h_part)
+                                * sizeof(s->blocks[0]));
+     }
      av_dlog(avctx, "image: %dx%d block: %dx%d num: %dx%d part: %dx%d\n",
              s->image_width, s->image_height, s->block_width, s->block_height,
              h_blocks, v_blocks, h_part, v_part);
          for (i = 0; i < h_blocks + (h_part ? 1 : 0); i++) {
              int x_pos = i * s->block_width; // horizontal position in frame
              int cur_blk_width = (i < h_blocks) ? s->block_width : h_part;
+             int has_diff = 0;
  
              /* get the size of the compressed zlib chunk */
              int size = get_bits(&gb, 16);
+             s->color_depth    = 0;
+             s->zlibprime_curr = 0;
+             s->zlibprime_prev = 0;
+             s->diff_start     = 0;
+             s->diff_height    = cur_blk_height;
              if (8 * size > get_bits_left(&gb)) {
                  avctx->release_buffer(avctx, &s->frame);
                  s->frame.data[0] = NULL;
                  return AVERROR_INVALIDDATA;
              }
  
+             if (s->ver == 2 && size) {
+                 skip_bits(&gb, 3);
+                 s->color_depth    = get_bits(&gb, 2);
+                 has_diff          = get_bits1(&gb);
+                 s->zlibprime_curr = get_bits1(&gb);
+                 s->zlibprime_prev = get_bits1(&gb);
+                 if (s->color_depth != 0 && s->color_depth != 2) {
+                     av_log(avctx, AV_LOG_ERROR,
+                            "%dx%d invalid color depth %d\n", i, j, s->color_depth);
+                     return -1;
+                 }
+                 if (has_diff) {
+                     s->diff_start  = get_bits(&gb, 8);
+                     s->diff_height = get_bits(&gb, 8);
+                     av_log(avctx, AV_LOG_DEBUG,
+                            "%dx%d diff start %d height %d\n",
+                            i, j, s->diff_start, s->diff_height);
+                     size -= 2;
+                 }
+                 if (s->zlibprime_prev)
+                     av_log(avctx, AV_LOG_DEBUG, "%dx%d zlibprime_prev\n", i, j);
+                 if (s->zlibprime_curr) {
+                     int col = get_bits(&gb, 8);
+                     int row = get_bits(&gb, 8);
+                     av_log(avctx, AV_LOG_DEBUG, "%dx%d zlibprime_curr %dx%d\n", i, j, col, row);
+                     size -= 2;
+                     av_log_missing_feature(avctx, "zlibprime_curr", 1);
+                     return AVERROR_PATCHWELCOME;
+                 }
+                 size--; // account for flags byte
+             }
+             if (has_diff) {
+                 int k;
+                 int off = (s->image_height - y_pos - 1) * s->frame.linesize[0];
+                 for (k = 0; k < cur_blk_height; k++)
+                     memcpy(s->frame.data[0] + off - k*s->frame.linesize[0] + x_pos*3,
+                            s->keyframe + off - k*s->frame.linesize[0] + x_pos*3,
+                            cur_blk_width * 3);
+             }
              /* skip unchanged blocks, which have size 0 */
              if (size) {
                  if (flashsv_decode_block(avctx, avpkt, &gb, size,
                                           cur_blk_width, cur_blk_height,
-                                          x_pos, y_pos))
+                                          x_pos, y_pos,
+                                          i + j * (h_blocks + !!h_part)))
                      av_log(avctx, AV_LOG_ERROR,
                             "error in decompression of block %dx%d\n", i, j);
              }
          }
      }
+     if (s->is_keyframe && s->ver == 2) {
+         if (!s->keyframe) {
+             s->keyframe = av_malloc(s->frame.linesize[0] * avctx->height);
+             if (!s->keyframe) {
+                 av_log(avctx, AV_LOG_ERROR, "Cannot allocate image data\n");
+                 return AVERROR(ENOMEM);
+             }
+         }
+         memcpy(s->keyframe, s->frame.data[0], s->frame.linesize[0] * avctx->height);
+     }
  
      *data_size = sizeof(AVFrame);
      *(AVFrame*)data = s->frame;
@@@ -234,6 -451,7 +452,7 @@@ static av_cold int flashsv_decode_end(A
  }
  
  
+ #if CONFIG_FLASHSV_DECODER
  AVCodec ff_flashsv_decoder = {
      .name           = "flashsv",
      .type           = AVMEDIA_TYPE_VIDEO,
      .pix_fmts       = (const enum PixelFormat[]){PIX_FMT_BGR24, PIX_FMT_NONE},
      .long_name      = NULL_IF_CONFIG_SMALL("Flash Screen Video v1"),
  };
+ #endif /* CONFIG_FLASHSV_DECODER */
+ #if CONFIG_FLASHSV2_DECODER
+ static const uint32_t ff_flashsv2_default_palette[128] = {
+     0x000000, 0x333333, 0x666666, 0x999999, 0xCCCCCC, 0xFFFFFF,
+     0x330000, 0x660000, 0x990000, 0xCC0000, 0xFF0000, 0x003300,
+     0x006600, 0x009900, 0x00CC00, 0x00FF00, 0x000033, 0x000066,
+     0x000099, 0x0000CC, 0x0000FF, 0x333300, 0x666600, 0x999900,
+     0xCCCC00, 0xFFFF00, 0x003333, 0x006666, 0x009999, 0x00CCCC,
+     0x00FFFF, 0x330033, 0x660066, 0x990099, 0xCC00CC, 0xFF00FF,
+     0xFFFF33, 0xFFFF66, 0xFFFF99, 0xFFFFCC, 0xFF33FF, 0xFF66FF,
+     0xFF99FF, 0xFFCCFF, 0x33FFFF, 0x66FFFF, 0x99FFFF, 0xCCFFFF,
+     0xCCCC33, 0xCCCC66, 0xCCCC99, 0xCCCCFF, 0xCC33CC, 0xCC66CC,
+     0xCC99CC, 0xCCFFCC, 0x33CCCC, 0x66CCCC, 0x99CCCC, 0xFFCCCC,
+     0x999933, 0x999966, 0x9999CC, 0x9999FF, 0x993399, 0x996699,
+     0x99CC99, 0x99FF99, 0x339999, 0x669999, 0xCC9999, 0xFF9999,
+     0x666633, 0x666699, 0x6666CC, 0x6666FF, 0x663366, 0x669966,
+     0x66CC66, 0x66FF66, 0x336666, 0x996666, 0xCC6666, 0xFF6666,
+     0x333366, 0x333399, 0x3333CC, 0x3333FF, 0x336633, 0x339933,
+     0x33CC33, 0x33FF33, 0x663333, 0x993333, 0xCC3333, 0xFF3333,
+     0x003366, 0x336600, 0x660033, 0x006633, 0x330066, 0x663300,
+     0x336699, 0x669933, 0x993366, 0x339966, 0x663399, 0x996633,
+     0x6699CC, 0x99CC66, 0xCC6699, 0x66CC99, 0x9966CC, 0xCC9966,
+     0x99CCFF, 0xCCFF99, 0xFF99CC, 0x99FFCC, 0xCC99FF, 0xFFCC99,
+     0x111111, 0x222222, 0x444444, 0x555555, 0xAAAAAA, 0xBBBBBB,
+     0xDDDDDD, 0xEEEEEE
+ };
+ static av_cold int flashsv2_decode_init(AVCodecContext *avctx)
+ {
+     FlashSVContext *s = avctx->priv_data;
+     flashsv_decode_init(avctx);
+     s->pal = ff_flashsv2_default_palette;
+     s->ver = 2;
+     return 0;
+ }
+ static av_cold int flashsv2_decode_end(AVCodecContext *avctx)
+ {
+     FlashSVContext *s = avctx->priv_data;
+     av_freep(&s->keyframedata);
+     av_freep(&s->blocks);
+     av_freep(&s->keyframe);
+     av_freep(&s->deflate_block);
+     flashsv_decode_end(avctx);
+     return 0;
+ }
+ AVCodec ff_flashsv2_decoder = {
+     .name           = "flashsv2",
+     .type           = AVMEDIA_TYPE_VIDEO,
+     .id             = CODEC_ID_FLASHSV2,
+     .priv_data_size = sizeof(FlashSVContext),
+     .init           = flashsv2_decode_init,
+     .close          = flashsv2_decode_end,
+     .decode         = flashsv_decode_frame,
+     .capabilities   = CODEC_CAP_DR1,
+     .pix_fmts       = (const enum PixelFormat[]){PIX_FMT_BGR24, PIX_FMT_NONE},
+     .long_name      = NULL_IF_CONFIG_SMALL("Flash Screen Video v2"),
+ };
+ #endif /* CONFIG_FLASHSV2_DECODER */
diff --combined libavcodec/version.h
@@@ -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
   */
  
@@@ -21,7 -21,7 +21,7 @@@
  #define AVCODEC_VERSION_H
  
  #define LIBAVCODEC_VERSION_MAJOR 53
- #define LIBAVCODEC_VERSION_MINOR  8
 -#define LIBAVCODEC_VERSION_MINOR  7
++#define LIBAVCODEC_VERSION_MINOR  9
  #define LIBAVCODEC_VERSION_MICRO  0
  
  #define LIBAVCODEC_VERSION_INT  AV_VERSION_INT(LIBAVCODEC_VERSION_MAJOR, \
@@@ -5,20 -5,20 +5,20 @@@
  ;* Copyright (c) 2010 Loren Merritt
  ;* Copyright (c) 2010 Ronald S. Bultje
  ;*
 -;* 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
  ;******************************************************************************
  
@@@ -2611,12 -2611,11 +2611,11 @@@ cglobal pred4x4_down_left_mmxext, 3,
      punpckldq m1, [r1]
      movq      m2, m1
      movq      m3, m1
-     movq      m4, m1
      psllq     m1, 8
      pxor      m2, m1
      psrlq     m2, 8
-     pxor      m3, m2
-     PRED4x4_LOWPASS m0, m1, m3, m4, m5
+     pxor      m2, m3
+     PRED4x4_LOWPASS m0, m1, m2, m3, m4
      lea       r1, [r0+r2*2]
      psrlq     m0, 8
      movd      [r0+r2*1], m0
@@@ -1,20 -1,20 +1,20 @@@
  /*
   * Copyright (c) 2010 Jason Garrett-Glaser
   *
 - * 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
   */
  
@@@ -45,7 -45,6 +45,6 @@@ void ff_pred8x8_ ## TYPE ## _ ## DEPTH 
  
  PRED8x8(dc, 10, mmxext)
  PRED8x8(dc, 10, sse2)
- PRED8x8(top_dc, 10, mmxext)
  PRED8x8(top_dc, 10, sse2)
  PRED8x8(plane, 10, sse2)
  PRED8x8(vertical, 10, sse2)
@@@ -55,23 -54,28 +54,28 @@@ PRED8x8(horizontal, 10, sse2
  void ff_pred8x8l_ ## TYPE ## _ ## DEPTH ## _ ## OPT (uint8_t *src, int has_topleft, int has_topright, int stride);
  
  PRED8x8L(dc, 10, sse2)
- PRED8x8L(dc, 10, ssse3)
+ PRED8x8L(dc, 10, avx)
  PRED8x8L(128_dc, 10, mmxext)
  PRED8x8L(128_dc, 10, sse2)
  PRED8x8L(top_dc, 10, sse2)
- PRED8x8L(top_dc, 10, ssse3)
+ PRED8x8L(top_dc, 10, avx)
  PRED8x8L(vertical, 10, sse2)
- PRED8x8L(vertical, 10, ssse3)
+ PRED8x8L(vertical, 10, avx)
  PRED8x8L(horizontal, 10, sse2)
  PRED8x8L(horizontal, 10, ssse3)
+ PRED8x8L(horizontal, 10, avx)
  PRED8x8L(down_left, 10, sse2)
  PRED8x8L(down_left, 10, ssse3)
+ PRED8x8L(down_left, 10, avx)
  PRED8x8L(down_right, 10, sse2)
  PRED8x8L(down_right, 10, ssse3)
+ PRED8x8L(down_right, 10, avx)
  PRED8x8L(vertical_right, 10, sse2)
  PRED8x8L(vertical_right, 10, ssse3)
+ PRED8x8L(vertical_right, 10, avx)
  PRED8x8L(horizontal_up, 10, sse2)
  PRED8x8L(horizontal_up, 10, ssse3)
+ PRED8x8L(horizontal_up, 10, avx)
  
  #define PRED16x16(TYPE, DEPTH, OPT)\
  void ff_pred16x16_ ## TYPE ## _ ## DEPTH ## _ ## OPT (uint8_t *src, int stride);
@@@ -298,7 -302,6 +302,6 @@@ void ff_h264_pred_init_x86(H264PredCont
              h->pred4x4[HOR_UP_PRED         ] = ff_pred4x4_horizontal_up_10_mmxext;
  
              h->pred8x8[DC_PRED8x8          ] = ff_pred8x8_dc_10_mmxext;
-             h->pred8x8[TOP_DC_PRED8x8      ] = ff_pred8x8_top_dc_10_mmxext;
  
              h->pred8x8l[DC_128_PRED        ] = ff_pred8x8l_128_dc_10_mmxext;
  
              h->pred4x4[VERT_RIGHT_PRED     ] = ff_pred4x4_vertical_right_10_ssse3;
              h->pred4x4[HOR_DOWN_PRED       ] = ff_pred4x4_horizontal_down_10_ssse3;
  
-             h->pred8x8l[VERT_PRED           ] = ff_pred8x8l_vertical_10_ssse3;
              h->pred8x8l[HOR_PRED            ] = ff_pred8x8l_horizontal_10_ssse3;
-             h->pred8x8l[DC_PRED             ] = ff_pred8x8l_dc_10_ssse3;
-             h->pred8x8l[TOP_DC_PRED         ] = ff_pred8x8l_top_dc_10_ssse3;
              h->pred8x8l[DIAG_DOWN_LEFT_PRED ] = ff_pred8x8l_down_left_10_ssse3;
+             h->pred8x8l[DIAG_DOWN_RIGHT_PRED] = ff_pred8x8l_down_right_10_ssse3;
+             h->pred8x8l[VERT_RIGHT_PRED     ] = ff_pred8x8l_vertical_right_10_ssse3;
+             h->pred8x8l[HOR_UP_PRED         ] = ff_pred8x8l_horizontal_up_10_ssse3;
          }
  #if HAVE_AVX
          if (mm_flags & AV_CPU_FLAG_AVX) {
              h->pred4x4[DIAG_DOWN_LEFT_PRED ] = ff_pred4x4_down_left_10_avx;
              h->pred4x4[DIAG_DOWN_RIGHT_PRED] = ff_pred4x4_down_right_10_avx;
+             h->pred4x4[VERT_LEFT_PRED      ] = ff_pred4x4_vertical_left_10_avx;
              h->pred4x4[VERT_RIGHT_PRED     ] = ff_pred4x4_vertical_right_10_avx;
              h->pred4x4[HOR_DOWN_PRED       ] = ff_pred4x4_horizontal_down_10_avx;
+             h->pred8x8l[VERT_PRED           ] = ff_pred8x8l_vertical_10_avx;
+             h->pred8x8l[HOR_PRED            ] = ff_pred8x8l_horizontal_10_avx;
+             h->pred8x8l[DC_PRED             ] = ff_pred8x8l_dc_10_avx;
+             h->pred8x8l[TOP_DC_PRED         ] = ff_pred8x8l_top_dc_10_avx;
+             h->pred8x8l[DIAG_DOWN_RIGHT_PRED] = ff_pred8x8l_down_right_10_avx;
+             h->pred8x8l[DIAG_DOWN_LEFT_PRED ] = ff_pred8x8l_down_left_10_avx;
+             h->pred8x8l[VERT_RIGHT_PRED     ] = ff_pred8x8l_vertical_right_10_avx;
+             h->pred8x8l[HOR_UP_PRED         ] = ff_pred8x8l_horizontal_up_10_avx;
          }
  #endif /* HAVE_AVX */
      }
diff --combined libavformat/riff.c
@@@ -2,20 -2,20 +2,20 @@@
   * RIFF codec tags
   * Copyright (c) 2000 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
   */
  
@@@ -131,6 -131,7 +131,7 @@@ const AVCodecTag ff_codec_bmp_tags[] = 
      { CODEC_ID_MPEG2VIDEO,   MKTAG('s', 'l', 'i', 'f') },
      { CODEC_ID_MPEG2VIDEO,   MKTAG('E', 'M', '2', 'V') },
      { CODEC_ID_MPEG2VIDEO,   MKTAG('M', '7', '0', '1') }, /* Matrox MPEG2 intra-only */
+     { CODEC_ID_MPEG2VIDEO,   MKTAG('m', 'p', 'g', 'v') },
      { CODEC_ID_MJPEG,        MKTAG('M', 'J', 'P', 'G') },
      { CODEC_ID_MJPEG,        MKTAG('L', 'J', 'P', 'G') },
      { CODEC_ID_MJPEG,        MKTAG('d', 'm', 'b', '1') },
      { CODEC_ID_RAWVIDEO,     MKTAG('y', 'u', 'v', 's') },
      { CODEC_ID_RAWVIDEO,     MKTAG('P', '4', '2', '2') },
      { CODEC_ID_RAWVIDEO,     MKTAG('Y', 'V', '1', '2') },
 +    { CODEC_ID_RAWVIDEO,     MKTAG('Y', 'V', '1', '6') },
 +    { CODEC_ID_RAWVIDEO,     MKTAG('Y', 'V', '2', '4') },
      { CODEC_ID_RAWVIDEO,     MKTAG('U', 'Y', 'V', 'Y') },
      { CODEC_ID_RAWVIDEO,     MKTAG('V', 'Y', 'U', 'Y') },
      { CODEC_ID_RAWVIDEO,     MKTAG('I', 'Y', 'U', 'V') },
 +    { CODEC_ID_RAWVIDEO,     MKTAG('Y', '8', ' ', ' ') },
      { CODEC_ID_RAWVIDEO,     MKTAG('Y', '8', '0', '0') },
      { CODEC_ID_RAWVIDEO,     MKTAG('H', 'D', 'Y', 'C') },
      { CODEC_ID_RAWVIDEO,     MKTAG('Y', 'V', 'U', '9') },
@@@ -332,14 -330,6 +333,14 @@@ const AVCodecTag ff_codec_wav_tags[] = 
      { CODEC_ID_NONE,      0 },
  };
  
 +const AVCodecGuid ff_codec_wav_guids[] = {
 +    {CODEC_ID_AC3,        {0x2C,0x80,0x6D,0xE0,0x46,0xDB,0xCF,0x11,0xB4,0xD1,0x00,0x80,0x5F,0x6C,0xBB,0xEA}},
 +    {CODEC_ID_ATRAC3P,    {0xBF,0xAA,0x23,0xE9,0x58,0xCB,0x71,0x44,0xA1,0x19,0xFF,0xFA,0x01,0xE4,0xCE,0x62}},
 +    {CODEC_ID_EAC3,       {0xAF,0x87,0xFB,0xA7,0x02,0x2D,0xFB,0x42,0xA4,0xD4,0x05,0xCD,0x93,0x84,0x3B,0xDD}},
 +    {CODEC_ID_MP2,        {0x2B,0x80,0x6D,0xE0,0x46,0xDB,0xCF,0x11,0xB4,0xD1,0x00,0x80,0x5F,0x6C,0xBB,0xEA}},
 +    {CODEC_ID_NONE}
 +};
 +
  #if CONFIG_MUXERS
  int64_t ff_start_tag(AVIOContext *pb, const char *tag)
  {
@@@ -448,7 -438,7 +449,7 @@@ int ff_put_wav_header(AVIOContext *pb, 
      if(waveformatextensible) {                                    /* write WAVEFORMATEXTENSIBLE extensions */
          hdrsize += 22;
          avio_wl16(pb, riff_extradata - riff_extradata_start + 22); /* 22 is WAVEFORMATEXTENSIBLE size */
 -        avio_wl16(pb, enc->bits_per_coded_sample);                 /* ValidBitsPerSample || SamplesPerBlock || Reserved */
 +        avio_wl16(pb, bps);                                        /* ValidBitsPerSample || SamplesPerBlock || Reserved */
          avio_wl32(pb, enc->channel_layout);                        /* dwChannelMask */
          avio_wl32(pb, enc->codec_tag);                             /* GUID + next 3 */
          avio_wl32(pb, 0x00100000);
@@@ -505,6 -495,7 +506,6 @@@ int ff_get_wav_header(AVIOContext *pb, 
  
      id = avio_rl16(pb);
      codec->codec_type = AVMEDIA_TYPE_AUDIO;
 -    codec->codec_tag = id;
      codec->channels = avio_rl16(pb);
      codec->sample_rate = avio_rl32(pb);
      codec->bit_rate = avio_rl32(pb) * 8;
          codec->bits_per_coded_sample = 8;
      }else
          codec->bits_per_coded_sample = avio_rl16(pb);
 +    if (id == 0xFFFE) {
 +        codec->codec_tag = 0;
 +    } else {
 +        codec->codec_tag = id;
 +        codec->codec_id = ff_wav_codec_get_id(id, codec->bits_per_coded_sample);
 +    }
      if (size >= 18) {  /* We're obviously dealing with WAVEFORMATEX */
          int cbSize = avio_rl16(pb); /* cbSize */
          size -= 18;
          cbSize = FFMIN(size, cbSize);
          if (cbSize >= 22 && id == 0xfffe) { /* WAVEFORMATEXTENSIBLE */
 +            ff_asf_guid subformat;
              codec->bits_per_coded_sample = avio_rl16(pb);
              codec->channel_layout = avio_rl32(pb); /* dwChannelMask */
 -            id = avio_rl32(pb); /* 4 first bytes of GUID */
 -            avio_skip(pb, 12); /* skip end of GUID */
 +            ff_get_guid(pb, &subformat);
 +            if (!memcmp(subformat + 4, (const uint8_t[]){FF_MEDIASUBTYPE_BASE_GUID}, 12)) {
 +                codec->codec_tag = AV_RL32(subformat);
 +                codec->codec_id = ff_wav_codec_get_id(codec->codec_tag, codec->bits_per_coded_sample);
 +            } else {
 +                codec->codec_id = ff_codec_guid_get_id(ff_codec_wav_guids, subformat);
 +                if (!codec->codec_id)
 +                    av_log(codec, AV_LOG_WARNING, "unknown subformat:"FF_PRI_GUID"\n", FF_ARG_GUID(subformat));
 +            }
              cbSize -= 22;
              size -= 22;
          }
          if (size > 0)
              avio_skip(pb, size);
      }
 -    codec->codec_id = ff_wav_codec_get_id(id, codec->bits_per_coded_sample);
      if (codec->codec_id == CODEC_ID_AAC_LATM) {
          /* channels and sample_rate values are those prior to applying SBR and/or PS */
          codec->channels    = 0;
@@@ -622,19 -600,3 +623,19 @@@ void ff_parse_specific_params(AVCodecCo
      *au_scale /= gcd;
      *au_rate /= gcd;
  }
 +
 +void ff_get_guid(AVIOContext *s, ff_asf_guid *g)
 +{
 +    assert(sizeof(*g) == 16);
 +    avio_read(s, *g, sizeof(*g));
 +}
 +
 +enum CodecID ff_codec_guid_get_id(const AVCodecGuid *guids, ff_asf_guid guid)
 +{
 +    int i;
 +    for (i = 0; guids[i].id != CODEC_ID_NONE; i++) {
 +        if (!ff_guidcmp(guids[i].guid, guid))
 +            return guids[i].id;
 +    }
 +    return CODEC_ID_NONE;
 +}