Developer(s) | |
---|---|
Initial release | May 18, 2010 |
Stable release |
1.6.1 / January 9, 2017
|
Repository | chromium |
Development status | Active |
Written in | C, assembly |
Operating system | Unix-like (including Linux, FreeBSD and Mac OS X), Windows |
Type | Video codec |
License | New BSD license |
Website | webmproject.org |
libvpx is a free software video codec library from Google and the Alliance for Open Media (AOMedia). It serves as the reference software implementation for the video coding formats VP8 and VP9, and for AV1 a special fork named libaom that was stripped of backwards compatibility.
As free software it is published also in source code under the terms of the revised BSD license. It ships with the commandline tools vpxenc
/aomenc
and vpxdec
/aomdec
that build on its functionality.
It has a single-pass and a two-pass encoding mode, whereas the single-pass mode is considered broken and doesn't offer effective control over the target bitrate.
libvpx offers an asymmetric codec with encoding taking much longer than decoding and options for configuring encoding expense independently from decoding complexity. A lookahead of up to 25 frames can be configured which improves compression efficiency but introduces latency and thereby hurts real-time performance.
libvpx includes a mode where the maximum CPU resources possible will be used while still keeping the encoding speed almost exactly equivalent to the playback speed (realtime), keeping the quality as high as possible without lag.
libvpx supports Rec. 601, Rec. 709, Rec. 2020, SMPTE-170, SMPTE-240, and sRGB color spaces.
Bitrate control is known to be bad when encoding in single-pass mode, even for the constant quality mode. Google itself uses scripts to bypass rate control for YouTube encoding. libvpx is seen as being neglected for the sake of fast release cycle with new iterations of the VPx formats. It is said to deliver blurry output, even at higher bitrates. Decoding performance is relatively slow, partially in order to keep the code base easier to maintain. Compared to the initial release of libvpx, ffvp8 from the FFmpeg project improved performance by 22 to over 66%. In 2016, alternative VP9 decoders still achieve 25 to 50% faster decoding.