|
|
|
@ -1,51 +1,50 @@ |
|
|
|
|
Release Notes |
|
|
|
|
============= |
|
|
|
|
|
|
|
|
|
* 10 "Eks" |
|
|
|
|
* 11 "One Louder" |
|
|
|
|
|
|
|
|
|
General notes |
|
|
|
|
------------- |
|
|
|
|
|
|
|
|
|
One of the main features of this release is the addition of reference-counted |
|
|
|
|
data buffers to Libav and their use in various structures. Specifically, the |
|
|
|
|
data buffers used by AVPacket and AVFrame can now be reference counted, which |
|
|
|
|
should allow to significantly simplify many use cases. In addition, |
|
|
|
|
reference-counted AVFrames can now be used in libavfilter, avoiding the need |
|
|
|
|
for a separate libavfilter-specific frame structure. Frames can now be passed |
|
|
|
|
straight from the decoders into filters or from filters to encoders. |
|
|
|
|
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. |
|
|
|
|
|
|
|
|
|
These additions made it necessary to bump the major versions of libavcodec, |
|
|
|
|
libavformat, libavdevice, libavfilter, and libavutil, which was accompanied by |
|
|
|
|
dropping some old deprecated APIs. These libraries are thus not ABI- or API- |
|
|
|
|
compatible with the previous release. All the other libraries (libavresample |
|
|
|
|
and libswscale) should be both ABI- and API-compatible. |
|
|
|
|
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. |
|
|
|
|
|
|
|
|
|
Another major point is the inclusion of the HEVC (AKA H.265, the successor of |
|
|
|
|
H.264) decoder in the main codebase. It was started in 2012 as a Libav Google |
|
|
|
|
Summer of Code project by Guillaume Martres and subsequently completed with |
|
|
|
|
the assistance of the OpenHEVC project and several Libav developers. |
|
|
|
|
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. |
|
|
|
|
|
|
|
|
|
As usual, this release also contains support for other new formats, many smaller |
|
|
|
|
new features and countless bug fixes. We can highlight a native VP9 decoder, |
|
|
|
|
with encoding provided through libvpx, native decoders for WebP, JPEG 2000, and |
|
|
|
|
AIC, as well as improved WavPack support with encoding through libwavpack, |
|
|
|
|
support for more AAC flavors (LD - low delay, ELD - enhanced low delay), slice |
|
|
|
|
multithreading in libavfilter, or muxing chapters in ASF. Furthermore a few new |
|
|
|
|
filters have been introduced, namely compand, to change audio dynamics, framepack, |
|
|
|
|
to create stereoscopic videos, asetpts, to set audio pts, and interlace, to convert |
|
|
|
|
progressive video to interlaced. Finally there is more fine-grained detection of |
|
|
|
|
host and target libc, which should allow better portability to various cross |
|
|
|
|
compilation scenarios. |
|
|
|
|
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. |
|
|
|
|
|
|
|
|
|
See the Changelog file for a fuller list of significant changes. |
|
|
|
|
|
|
|
|
|
Please note that our policy on bug reports has not changed. We still only accept |
|
|
|
|
bug reports against HEAD of the Libav trunk repository. If you are experiencing |
|
|
|
|
issues with any formally released version of Libav, please try a current version |
|
|
|
|
of the development code to check if the issue still exists. If it does, make |
|
|
|
|
your report against the development code following the usual bug reporting |
|
|
|
|
guidelines. |
|
|
|
|
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. |
|
|
|
|
|
|
|
|
|
See the Changelog file for a more extensive list of significant changes. |
|
|
|
|
|
|
|
|
|
API changes |
|
|
|
|
----------- |
|
|
|
@ -54,31 +53,23 @@ 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: |
|
|
|
|
|
|
|
|
|
[libavutil] |
|
|
|
|
+ added the reference-counted buffers API (buffers.h) |
|
|
|
|
+ moved the AVFrame struct to libavutil and added a new API for working with |
|
|
|
|
reference-counted AVFrames (frame.h) |
|
|
|
|
|
|
|
|
|
[libavcodec] |
|
|
|
|
+ added an API for working with reference-counted AVPackets (av_packet_*) |
|
|
|
|
+- converted VDPAU to the hwaccel framework; the old way of using VDPAU is no |
|
|
|
|
longer supported |
|
|
|
|
- old audio encoding and decoding APIs removed |
|
|
|
|
- old video encoding API removed |
|
|
|
|
- deprecated enum CodecID removed (enum AVCodecID should be used instead) |
|
|
|
|
- deprecated audio resampling API removed (libavresample should be used |
|
|
|
|
instead) |
|
|
|
|
+ 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. |
|
|
|
|
|
|
|
|
|
[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. |
|
|
|
|
|
|
|
|
|
[libavfilter] |
|
|
|
|
+- replaced AVFilterBufferRef with AVFrame; AVFilterBufferRef and everything |
|
|
|
|
related to it still exists, but is deprecated |
|
|
|
|
+ converted all filters to use the AVOptions system for configuration, it is |
|
|
|
|
now possible to query the supported options, their values and set them |
|
|
|
|
directly with av_opt_* |
|
|
|
|
+ added a slice multithreading framework |
|
|
|
|
+- merged avfiltergraph.h to avfilter.h, using AVFilterGraph is now explicitly |
|
|
|
|
mandatory (it was implicitly required even before); added new API for |
|
|
|
|
allocating and initializing filters |
|
|
|
|
[libavresample] |
|
|
|
|
+ Added an API for working with AVFrames. |
|
|
|
|
|
|
|
|
|
Please see the file doc/APIchanges for details along with similar |
|
|
|
|
programmer-centric information. |
|
|
|
|