Add release notes for 12.
[ffmpeg.git] / doc / RELEASE_NOTES
1 Release Notes
2 =============
3
4 * 12 "Not Enough Trocadero"
5
6 General notes
7 -------------
8
9 This release once again bumps the major versions of all the libraries, removing
10 some long-deprecated APIs. This means that it is neither API nor ABI-compatible
11 with the previous release. The users who still did not update their code are
12 advised to look at the next section of these release notes, the doc/APIchanges
13 file and the API migration guide on our wiki.  If those are not sufficient, do
14 not hesitate to contact us on IRC or through the user mailing list.
15
16 Among the main highlights of this release are several additions related to
17 hardware acceleration. There is a new API for managing hardware devices and
18 frame pools, which allows to add new features such as zero-copy
19 hardware-accelerated filtering with libavfilter and should reduce the
20 boilerplate code required for existing hardware-accelerated decoders. We have
21 added QuickSync decoding and encoding, NVENC encoding and CUDA image scaling,
22 VAAPI encoding and image scaling, OpenMAX encoding, MMAL decoding and Direct3D11
23 decoding.
24
25 Other significant additions not related to hardware acceleration include
26 decoders for Canopus HQ/HQA and HQX, Go2Meeting, AAC ELD, TDSC, Hap, DXV, SPV1,
27 and a new ASF demuxer written according to the specification. There were also
28 countless smaller changes and bug fixes.
29
30 See the Changelog file for a more extensive list of significant changes.
31
32 API changes
33 -----------
34
35 A number of additional APIs have been introduced and some existing functions
36 have been deprecated and are scheduled for removal in the next release.
37 Significant API changes include:
38
39 [libavcodec]
40 +  Added an object for storing codec parameters (AVCodecParameters) and its
41    related API. It will now replace AVCodecContext everywhere except the actual
42    encoders/decoders.
43 +- Added a new API for handling refcounted AVPackets, mirroring the AVFrame API.
44    Deprecated certain old ill-defined AVPacket functions.
45 +- Added a new API for audio/video encoding and decoding, with decoupled input
46    and output. This will e.g. allow a decoder to produce multiple output frames
47    for a single input packet, which was not possible with the previous API. All
48    users are strongly encouraged to switch to this new API as soon as possible,
49    since certain decoders and encoders might start requiring the new API to be
50    used.
51 +- Added a new API for bitstream filtering, which works with refcounted
52    AVPackets and is more clearly defined and documented. The old bitstream
53    filtering API is now deprecated.
54
55 [libavformat]
56 +  Added new IO callbacks to AVFormatContext, allowing the caller to provide
57    custom IO for certain special muxers and demuxers.
58 +- Replaced AVStream.codec (AVCodecContext) with AVStream.codecpar
59    (AVCodecParameters) as the means of signalling codec parameters between the
60    muxers/demuxers and the caller.
61
62 [libavutil]
63 +  Added a new API (hwcontext.h) for handling hardware acceleration devices and
64    hardware frame pools.
65
66 [libavfilter]
67 +  Added a new struct, AVBufferSrcParameters, for passing the stream parameters
68    to the buffer source. It is now the recommended way of configuring the buffer
69    source.
70 +  Added AVFilterContext.hw_device_ctx and AVFilterLink.hw_frames_ctx that allow
71    hardware frames to be used in filter graphs.
72
73 Please see the file doc/APIchanges for details along with similar
74 programmer-centric information.