Release Notes ============= * 12 "Not Enough Trocadero" General notes ------------- 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. 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. 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. API changes ----------- A number of additional APIs have been introduced and some existing functions have been deprecated and are scheduled for removal in the next release. Significant API changes include: [libavcodec] + 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 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. [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.