
              ┌─────────────────────────────────────────────┐
              │ RELEASE NOTES for FFmpeg 2.6 "Grothendieck" │
              └─────────────────────────────────────────────┘

   The FFmpeg Project proudly presents FFmpeg 2.6 "Grothendieck", about 3
   months after the release of FFmpeg 2.5.

   A lot of important work got in this time, so let's start talking about what
   we like to brag the most about: features.

   A lot of people will probably be happy to hear that we now have support for
   NVENC — the Nvidia Video Encoder interface for H.264 encoding — thanks to
   Timo Rothenpieler, with some little help from NVIDIA and Philip Langdale.

   People in the broadcasting industry might also be interested in the first
   steps of closed captions support with the introduction of a decoder by
   Anshul Maheswhwari.

   Regarding filters love, we improved and added many. We could talk about the
   10-bit support in spp, but maybe it's more important to mention the addition
   of colorlevels (yet another color handling filter), tblend (allowing you
   to for example run a diff between successive frames of a video stream), or
   the dcshift audio filter.

   There are also two other important filters landing in libavfilter: palettegen
   and paletteuse. Both submitted by the Stupeflix company. These filters will
   be very useful in case you are looking for creating high quality GIFs, a
   format that still bravely fights annihilation in 2015.

   There are many other new features, but let's follow-up on one big cleanup
   achievement: the libmpcodecs (MPlayer filters) wrapper is finally dead. The
   last remaining filters (softpulldown/repeatfields, eq*, and various
   postprocessing filters) were ported by Arwa Arif (OPW student) and Paul B
   Mahol.

   Concerning API changes, there are not many things to mention. Though, the
   introduction of device inputs and outputs listing by Lukasz Marek is a
   notable addition (try ffmpeg -sources or ffmpeg -sinks for an example of
   the usage). As usual, see doc/APIchanges for more information.

   Now let's talk about optimizations. Ronald S. Bultje made the VP9 decoder
   usable on x86 32-bit systems and pre-ssse3 CPUs like Phenom (even dual core
   Athlons can play 1080p 30fps VP9 content now), so we now secretly hope for
   Google and Mozilla to use ffvp9 instead of libvpx. But VP9 is not the
   center of attention anymore, and HEVC/H.265 is also getting many
   improvements, which include C and x86 ASM optimizations, mainly from James
   Almer, Christophe Gisquet and Pierre-Edouard Lepere.

   Even though we had many x86 contributions, it is not the only architecture
   getting some love, with Seppo Tomperi adding ARM NEON optimizations to the
   HEVC stack, and James Cowgill adding MIPS64 assembly for all kind of audio
   processing code in libavcodec.

   And finally, Michael Niedermayer is still fixing many bugs, dealing with
   most of the boring work such as making releases, applying tons of
   contributors patches, and daily merging the changes from the Libav project.

   A more complete Changelog is available at the root of the project, and the
   complete Git history on http://source.ffmpeg.org.

   We hope you will like this release as much as we enjoyed working on it, and
   as usual, if you have any questions about it, or any FFmpeg related topic,
   feel free to join us on the #ffmpeg IRC channel (on irc.freenode.net) or ask
   on the mailing-lists.
