From 65dc7ca4c8e7e56362626a5d31e563e80108f104 Mon Sep 17 00:00:00 2001 From: Anton Khirnov Date: Mon, 16 May 2016 15:52:37 +0200 Subject: Add release notes for 12. --- doc/RELEASE_NOTES | 97 +++++++++++++++++++++++++++---------------------------- 1 file changed, 48 insertions(+), 49 deletions(-) diff --git a/doc/RELEASE_NOTES b/doc/RELEASE_NOTES index bda4789aff..a440a3a43c 100644 --- a/doc/RELEASE_NOTES +++ b/doc/RELEASE_NOTES @@ -1,48 +1,31 @@ Release Notes ============= -* 11 "One Louder" +* 12 "Not Enough Trocadero" General notes ------------- -With this release we are trying to answer the numerous calls from our users for -shorter development cycles. From now on we will aim for approximately two major -releases per year. +This release once again bumps the major versions of all the libraries, removing +some long-deprecated APIs. This means that it is neither API nor ABI-compatible +with the previous release. The users who still did not update their code are +advised to look at the next section of these release notes, the doc/APIchanges +file and the API migration guide on our wiki. If those are not sufficient, do +not hesitate to contact us on IRC or through the user mailing list. -Libav 11 is API-, but not ABI-compatible with the previous major release. This -means that the code using our libraries needs to be rebuilt, but no source -changes should be required. Note however, that a number of old APIs remain -deprecated and will be dropped in the near future. All users are strongly -encouraged to update their code as soon as possible. The doc/APIchanges file in -the Libav source tree and the migration guide on the wiki should help with -migration to the new APIs. If those are not sufficient, do not hesitate to -contact us on IRC or through the user mailing list. +Among the main highlights of this release are several additions related to +hardware acceleration. There is a new API for managing hardware devices and +frame pools, which allows to add new features such as zero-copy +hardware-accelerated filtering with libavfilter and should reduce the +boilerplate code required for existing hardware-accelerated decoders. We have +added QuickSync decoding and encoding, NVENC encoding and CUDA image scaling, +VAAPI encoding and image scaling, OpenMAX encoding, MMAL decoding and Direct3D11 +decoding. -One specific API issue in libavformat deserves mentioning here. When using -libavcodec for decoding or encoding and libavformat for demuxing or muxing, -the standard practice was to use the stream codec context (AVStream.codec) for -actual decoding or encoding. There are multiple problems with this pattern -(the main one is that the decoder/demuxer or encoder/muxer are not necessarily -synchronized and may overwrite each other's state), so it is now strongly -discouraged and will likely be deprecated in the future. Users should instead -allocate a separate decoding or encoding context and populate it from the -demuxing codec context (or the reverse for encoding) with the -avcodec_copy_context() function. - -The main highlights of this release include native Opus, VP7, OpenEXR, and On2 -AVC decoders, HEVC encoding through libx265, new APIs for exporting ReplayGain -and display transformation metadata and countless bug fixes. A large effort was -also expended on internal cleanups which are not very visible to our users, -but should make the codebase cleaner, safer and easier to maintain and extend. -One point worth mentioning is refactoring the large monolithic framework for -architecture-specific codec optimizations into small blocks, which reduces the -size of configurations that selectively enable or disable certain codecs. - -The avserver streaming tool, which has not been maintained for many years and -was mostly broken, was removed from the tree. It was decided that it is a -significant maintenance burden and that we do our users no service by pretending -to support it, while we in fact do not. +Other significant additions not related to hardware acceleration include +decoders for Canopus HQ/HQA and HQX, Go2Meeting, AAC ELD, TDSC, Hap, DXV, SPV1, +and a new ASF demuxer written according to the specification. There were also +countless smaller changes and bug fixes. See the Changelog file for a more extensive list of significant changes. @@ -54,22 +37,38 @@ have been deprecated and are scheduled for removal in the next release. Significant API changes include: [libavcodec] -+ Added the avcodec_copy_context() function that must from now on be used for - freeing codec contexts. -+- Added a new VDA hardware acceleration API, since the old one was broken and - not fixable in a compatible way. Deprecated the old VDA API. ++ Added an object for storing codec parameters (AVCodecParameters) and its + related API. It will now replace AVCodecContext everywhere except the actual + encoders/decoders. ++- Added a new API for handling refcounted AVPackets, mirroring the AVFrame API. + Deprecated certain old ill-defined AVPacket functions. ++- Added a new API for audio/video encoding and decoding, with decoupled input + and output. This will e.g. allow a decoder to produce multiple output frames + for a single input packet, which was not possible with the previous API. All + users are strongly encouraged to switch to this new API as soon as possible, + since certain decoders and encoders might start requiring the new API to be + used. ++- Added a new API for bitstream filtering, which works with refcounted + AVPackets and is more clearly defined and documented. The old bitstream + filtering API is now deprecated. [libavformat] -+ Added support for exporting stream-global (as opposed to per-packet) side - data. This feature is now used by some demuxers to export ReplayGain or - display transformation matrix (aka rotation) or stereoscopic 3D mode. -+ Added an API for live metadata updates through event flags. -+- Changed the way to provide a hint about the desired timebase to muxers. - Previously it was done by setting AVStream.codec.time_base. Now callers - should set AVStream.time_base. ++ Added new IO callbacks to AVFormatContext, allowing the caller to provide + custom IO for certain special muxers and demuxers. ++- Replaced AVStream.codec (AVCodecContext) with AVStream.codecpar + (AVCodecParameters) as the means of signalling codec parameters between the + muxers/demuxers and the caller. + +[libavutil] ++ Added a new API (hwcontext.h) for handling hardware acceleration devices and + hardware frame pools. -[libavresample] -+ Added an API for working with AVFrames. +[libavfilter] ++ Added a new struct, AVBufferSrcParameters, for passing the stream parameters + to the buffer source. It is now the recommended way of configuring the buffer + source. ++ Added AVFilterContext.hw_device_ctx and AVFilterLink.hw_frames_ctx that allow + hardware frames to be used in filter graphs. Please see the file doc/APIchanges for details along with similar programmer-centric information. -- cgit v1.2.3