Jump to content

libvpx

From Wikipedia, the free encyclopedia

This is an old revision of this page, as edited by Sagecandor (talk | contribs) at 01:04, 27 November 2016 (Added {{refimprove}} tag to article (TW)). The present address (URL) is a permanent link to this revision, which may differ significantly from the current revision.

libvpx
Developer(s)Google
Initial releaseMay 18, 2010
Stable release
1.6.0[1] / July 20, 2016; 8 years ago (2016-07-20)
Repository
Written inC, assembly
Operating systemUnix-like (including Linux, FreeBSD and Mac OS X), Windows
TypeVideo codec
LicenseNew BSD license
Websitewebmproject.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.

Features

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.[2][3]

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.

Performance

Bitrate control is known to be bad when encoding in single-pass mode,[2] even for the constant quality mode.[4] 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.[5] Compared to the initial release of libvpx, ffvp8 from the FFmpeg project improved performance by 22 to over 66%.[6] In 2016, alternative VP9 decoders still achieve 25 to 50% faster decoding.[2][7]

Technology

libvpx is written in C and assembly language. It does not have complete SIMD coverage as of 2015.[5]

Usage

libvpx is used by major OTT video services including YouTube, Netflix, Amazon, JW Player, Brightcove, and Telestream among which are the biggest sources of internet traffic with Netflix alone accounting for nearly a third of all internet traffic in the United States in 2013.[8][9]

There is alternatives for decoding VP8 and VP9, both commercial and closed source as well as open source. For encoding there is only commercial alternatives and some unfinished experimental software for VP8 including xvp8 so far (2016).

History

It originates from the video codec company On2 Technologies that sold its first software codec in mid-90s.

libvpx was released as free software by Google in 2010 after the acquisition of On2 Technologies for an estimate of over 120 million US dollars.[10]

In June 2010, Google amended the VP8 codec software license to the 3-clause BSD license[11][12][13] after some contention over whether the original license was actually open source.[14][15][16]

Google was criticised for dumping untidy code with bad documentation for the initial release of libvpx and developing behind closed doors without involving the community in the process.[6] The development process was opened after the release of VP9.

Preliminary support for VP9 is found in libvpx since June 17, 2013. It was officially introduced with the release of version 1.3 on December 2 which also supports lossless compression.[17]

In April 2015 Google released a significant update to its libvpx library, with version 1.4.0 adding support for encoding VP9 with 10-bit and 12-bit bit depth, 4:2:2 and 4:4:4 chroma subsampling (VP9 profiles 1, 2, and 3), and VP9 multithreaded decoding/encoding.[18]

Versions 1.5 (November 2015) and 1.6 (July 2016) delivered significant speedups, both for encoding and decoding.

References

  1. ^ https://chromium.googlesource.com/webm/libvpx/+/master/CHANGELOG
  2. ^ a b c Jan Ozer, Juni 2016: VP9 Finally Comes of Age, But Is it Right for Everyone?
  3. ^ Dan Grois, Detlev Marpe, Tung Nguyen, Ofer Hadar, "Comparative assessment of H.265/MPEG-HEVC, VP9, and H.264/MPEG-AVC encoders for low-delay video applications", Proceedings of SPIE – Applications of Digital Image Processing XXXVII (San Diego, California) 9217, doi:10.1117/12.2073323, http://proceedings.spiedigitallibrary.org/proceeding.aspx?articleid=1910369 
  4. ^ http://wiki.webmproject.org/ffmpeg/vp9-encoding-guide
  5. ^ a b Ronald Bultje (FFmpeg): VP9 encoding/decoding performance vs. H.264/HEVC, presentation from the VideoLAN Dev Days 2015 in Paris, France
  6. ^ a b Fiona Glaser, 23 July 2010: Announcing the world's fastest VP8 decoder: ffvp8
  7. ^ https://blogs.gnome.org/rbultje/2014/02/22/the-worlds-fastest-vp9-decoder-ffvp9/
  8. ^ Jan Ozer (May 24, 2016): Netflix Discusses VP9-Related Development Efforts
  9. ^ Sandvine: The Global Internet Phenomena Report: 1H 2013
  10. ^ http://investor.google.com/releases/2010/0219.html
  11. ^ "Changes to the WebM Open Source License". Retrieved 2010-06-04.
  12. ^ "Software License". Retrieved 2010-06-04.
  13. ^ Koleszar, John (2010-06-04). "LICENSE: update with latest text". WebM VCS repository.
  14. ^ Kerner, Sean Michael (2010-05-25), Is VP8 open source?, InternetNews
  15. ^ Metz, Cade (2010-05-24), Google open codec 'not open,' says OSI man, The Register
  16. ^ Phipps, Simon (2010-05-24), WebM: Missing The Assurances Open Source Needs?, ComputerworldUK
  17. ^ Michael Larabel (Phoronix), 28. November 2013: Libvpx 1.3.0 "Forest" Supports VP9. New Enhancements
  18. ^ Michael Larabel (2015-04-03). "libvpx 1.4.0 Brings Faster VP9 Encode/Decode". Phoronix. Retrieved 2015-04-03.