{{Short description|Codec library implementing VP8 and VP9 encoders and decoders}} {{Lowercase title}} {{Use mdy dates|date=September 2020}} {{Infobox software | name = libvpx | screenshot = vpxenc --verbose.svg | caption = | screenshot alt = | collapsible = yes | author = On2 Technologies / Google | developer = Alliance for Open Media | released = {{Start date and age|2010|05|19}}<ref name="first-release" /><ref name="webm-announcement" /><!-- NOTE: While the changelog dates the release as May 18, it's not known if the repository was actually public at that time. Therefore the release date is set as May 19, the date of the WebM release announcement blog post. --> | latest_release_version = {{wikidata|property|reference|edit|P348}} | latest_release_date = {{Release date and age|{{wikidata|qualifier|P348|P577}}}} | programming language = C, assembly | operating_system = Unix-like (including Linux, FreeBSD and Mac OS X), Windows | genre = Video encoder and decoder | license = New BSD license | website = {{URL|https://www.webmproject.org/tools/}} }}

'''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 VP8 and VP9 video coding formats, 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 <code>vpxenc</code>/<code>aomenc</code> and <code>vpxdec</code>/<code>aomdec</code> that build on its functionality.

== History == libvpx 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 on May 19, 2010, after the acquisition of On2 Technologies for an estimate of over 120 million US dollars.<ref name="webm-announcement" /><ref name="On2" />

In June 2010, Google amended the VP8 codec software license to the 3-clause BSD license<ref name="changes-to-webm-open-source-license" /><ref name="libvpx-license" /><ref name="license update" /> after some contention over whether the original license was actually open source.<ref name="FLOSS VP8" /><ref name="OSI" /><ref name="ComputerworldUK" />

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.<ref name="ffvp8" /> The development process was opened after the release of VP9.

Preliminary support for VP9 was added to libvpx on June 17, 2013. It was officially introduced with the release of version 1.3 on December 2, which also supports lossless compression.<ref name="libvpx1.3" />

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.<ref name="libvpx140April2015Phoronix" />

Versions 1.5 (November 2015), 1.6 (July 2016), 1.7<ref>{{Cite web |title=V1.7.0 - webm/Libvpx - Git at Google |url=https://chromium.googlesource.com/webm/libvpx/+/v1.7.0 |url-status=live |archive-url=https://web.archive.org/web/20200629083620/https://chromium.googlesource.com/webm/libvpx/+/v1.7.0 |archive-date=June 29, 2020 |access-date=June 29, 2020}}</ref> (January 2018), and 1.8<ref>{{Cite web |title=Refs/Tags/V1.8.0 - webm/Libvpx - Git at Google |url=https://chromium.googlesource.com/webm/libvpx/+/refs/tags/v1.8.0 |url-status=live |archive-url=https://web.archive.org/web/20200630011649/https://chromium.googlesource.com/webm/libvpx/+/refs/tags/v1.8.0 |archive-date=June 30, 2020 |access-date=June 29, 2020}}</ref> (February 2019) delivered significant speedups, both for encoding and decoding.

== Features == libvpx implements single-pass and two-pass encoding modes, with either bitrate or quality target settings.

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 == At high resolutions (e.g., UHD) VP9 encoded by libvpx for VOD applications provides a significant improvement over H.264 encoded by x264.<ref name=":0">{{Cite journal |last1=Cock |first1=Jan De |last2=Mavlankar |first2=Aditya |last3=Moorthy |first3=Anush |last4=Aaron |first4=Anne |editor-first1=Andrew G |editor-last1=Tescher |date=September 27, 2016 |title=A large-scale video codec comparison of x264, x265 and libvpx for practical VOD applications |journal=SPIE Digital Library |series=Applications of Digital Image Processing XXXIX |url=https://www.spiedigitallibrary.org/conference-proceedings-of-spie/9971/997116/A-large-scale-video-codec-comparison-of-x264-x265-and/10.1117/12.2238495.short |url-status=live |publisher=International Society for Optics and Photonics |volume=9971 |pages=997116 |doi=10.1117/12.2238495 |bibcode=2016SPIE.9971E..16D |s2cid=63431190 |archive-url=https://web.archive.org/web/20171222104827/https://www.spiedigitallibrary.org/conference-proceedings-of-spie/9971/997116/A-large-scale-video-codec-comparison-of-x264-x265-and/10.1117/12.2238495.short |archive-date=December 22, 2017 |access-date=December 20, 2017|url-access=subscription }}</ref> HEVC encoded by x265 may achieve even better quality,<ref name=":0" /> but the royalty-free nature of VP9 makes it a compelling option for delivering high resolution video on supported platforms.

Decoding performance is relatively slow, partially in order to keep the code base easier to maintain.<ref name="performance" /> Compared to the initial release of libvpx, ffvp8 from the FFmpeg project improved performance by 22 to over 66%.<ref name="ffvp8" /> In 2016, alternative VP9 decoders still achieved 25–50% faster decoding.<ref name="Age" /><ref name="ffvp9" />

== Technology == libvpx is written in C and assembly language. It does not have complete SIMD coverage as of 2015.<ref name="performance" />

== 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 as of 2017.<ref name="usage" /><ref>{{Cite news |last=Spangler |first=Todd |date=June 22, 2016 |title=Netflix Chews Up Less Bandwidth, as Amazon Video Streaming Surges |language=en-US |work=Variety |url=https://variety.com/2016/digital/news/netflix-bandwidth-share-2016-1201801064/ |url-status=live |access-date=December 20, 2017 |archive-url=https://web.archive.org/web/20171222051630/http://variety.com/2016/digital/news/netflix-bandwidth-share-2016-1201801064/ |archive-date=December 22, 2017}}</ref>

There are alternatives for decoding VP8 and VP9, both commercial and closed source as well as open source. For encoding there are only commercial alternatives and some unfinished experimental software for VP8 including xvp8 as of 2016.

== References == {{Reflist|refs=

<ref name="first-release">{{Cite web |title=CHANGELOG - webm/libvpx - Git at Google |url=https://chromium.googlesource.com/webm/libvpx/+/master/CHANGELOG#734 |url-status=live |archive-url=https://web.archive.org/web/20161026173534/https://chromium.googlesource.com/webm/libvpx/+/master/CHANGELOG#734 |archive-date=October 26, 2016 |access-date=March 14, 2019 |website=chromium.googlesource.com }}</ref>

<ref name="webm-announcement">{{Cite web |date=May 19, 2010 |title=Introducing WebM, an open web media project |url=http://blog.webmproject.org/2010/05/introducing-webm-open-web-media-project.html |url-status=live |archive-url=https://web.archive.org/web/20190321035855/http://blog.webmproject.org/2010/05/introducing-webm-open-web-media-project.html |archive-date=March 21, 2019 |access-date=March 14, 2019 |website=blog.webmproject.org}}</ref>

<ref name="Age">Jan Ozer, Juni 2016: [http://www.streamingmedia.com/Articles/Editorial/-111550.aspx VP9 Finally Comes of Age, But Is it Right for Everyone?] {{Webarchive|url=https://web.archive.org/web/20160811173458/http://www.streamingmedia.com/Articles/Editorial/-111550.aspx |date=August 11, 2016 }}</ref>

<ref name="performance">Ronald Bultje (FFmpeg): [https://www.youtube.com/watch?v=_Q6J2_nvLSI VP9 encoding/decoding performance vs. H.264/HEVC] {{Webarchive|url=https://web.archive.org/web/20160607104433/https://www.youtube.com/watch?v=_Q6J2_nvLSI |date=June 7, 2016 }}, presentation from the VideoLAN Dev Days 2015 in Paris, France</ref>

<ref name="ffvp8">Fiona Glaser, July 23, 2010: [//x264dev.multimedia.cx/archives/499 Announcing the world's fastest VP8 decoder: ffvp8]</ref>

<ref name="ffvp9">{{Cite web |title=The world's fastest VP9 decoder: ffvp9 - Ronald S. Bultje |url=https://blogs.gnome.org/rbultje/2014/02/22/the-worlds-fastest-vp9-decoder-ffvp9/ |url-status=live |archive-url=https://web.archive.org/web/20161026175723/https://blogs.gnome.org/rbultje/2014/02/22/the-worlds-fastest-vp9-decoder-ffvp9/ |archive-date=October 26, 2016 |access-date=August 11, 2016 |website=blogs.gnome.org |date=February 22, 2014 }}</ref>

<ref name="usage">Jan Ozer (May 24, 2016): [http://streamingmedia.com/?ArticleID=111296 Netflix Discusses VP9-Related Development Efforts] {{Webarchive|url=https://web.archive.org/web/20201001000102/https://www.streamingmedia.com/?ArticleID=111296 |date=October 1, 2020 }}</ref>

<ref name="On2">{{Cite web |title=Google Closes On2 Technologies Acquisition |url=http://investor.google.com/releases/2010/0219.html |archive-url=https://web.archive.org/web/20100605164108/http://investor.google.com/releases/2010/0219.html |archive-date=June 5, 2010 |access-date=July 24, 2017 |website=investor.google.com}}</ref>

<ref name="changes-to-webm-open-source-license">{{Cite web |title=Changes to the WebM Open Source License |url=http://blog.webmproject.org/2010/06/changes-to-webm-open-source-license.html |url-status=live |archive-url=https://web.archive.org/web/20101004180038/http://blog.webmproject.org/2010/06/changes-to-webm-open-source-license.html |archive-date=October 4, 2010 |access-date=June 4, 2010}}</ref>

<ref name="libvpx-license">{{Cite web |title=Software License |url=https://www.webmproject.org/license/software/ |url-status=live |archive-url=https://web.archive.org/web/20100611042422/http://www.webmproject.org/license/software/ |archive-date=June 11, 2010 |access-date=June 4, 2010}}</ref>

<ref name="license update">{{Cite web |last=Koleszar |first=John |date=June 4, 2010 |title=LICENSE: update with latest text |url=https://git.chromium.org/gitweb/?p=webm/libvpx.git;a=commit;h=09202d80716ef7e2931de60c66b6fb2383f52613 |url-status=live |archive-url=https://web.archive.org/web/20120629002235/http://git.chromium.org/gitweb/?p=webm%2Flibvpx.git%3Ba%3Dcommit%3Bh%3D09202d80716ef7e2931de60c66b6fb2383f52613 |archive-date=June 29, 2012 |access-date=October 1, 2020 |website=WebM VCS repository}}</ref>

<ref name="FLOSS VP8">{{Citation |last=Kerner |first=Sean Michael |title=Is VP8 open source? |date=May 25, 2010 |url=http://blog.internetnews.com/skerner/2010/05/is-vp8-open-source.html |archive-url=https://web.archive.org/web/20100528171252/http://blog.internetnews.com/skerner/2010/05/is-vp8-open-source.html |publisher=InternetNews |access-date=August 11, 2016 |archive-date=May 28, 2010 |url-status=live}}</ref>

<ref name="OSI">{{Citation |last=Metz |first=Cade |title=Google open codec 'not open,' says OSI man |date=May 24, 2010 |url=https://www.theregister.co.uk/2010/05/24/osi_board_member_on_google_webm/ |archive-url=https://web.archive.org/web/20170707165058/https://www.theregister.co.uk/2010/05/24/osi_board_member_on_google_webm/ |publisher=The Register |access-date=August 10, 2017 |archive-date=July 7, 2017 |url-status=live}}</ref>

<ref name="ComputerworldUK">{{Citation |last=Phipps |first=Simon |title=WebM: Missing The Assurances Open Source Needs? |date=May 24, 2010 |url=http://www.computerworlduk.com/community/blogs/index.cfm?entryid=2973 |publisher=ComputerworldUK}}{{dead link|date=December 2017 |bot=InternetArchiveBot |fix-attempted=yes }}</ref>

<ref name="libvpx1.3">Michael Larabel (Phoronix), 28. November 2013: [//phoronix.com/scan.php?page=news_item&px=MTUyOTE Libvpx 1.3.0 "Forest" Supports VP9. New Enhancements]</ref>

<ref name="libvpx140April2015Phoronix">{{Cite news |last=Michael Larabel |date=April 3, 2015 |title=libvpx 1.4.0 Brings Faster VP9 Encode/Decode |publisher=Phoronix |url=https://www.phoronix.com/scan.php?page=news_item&px=libvpx-1.4.0-Released |url-status=live |access-date=April 3, 2015 |archive-url=https://web.archive.org/web/20150407002029/http://www.phoronix.com/scan.php?page=news_item&px=libvpx-1.4.0-Released |archive-date=April 7, 2015}}</ref>

}}

== External links == * {{Official website|https://www.webmproject.org/tools/}}

{{Compression software}} {{Google FOSS}}

Category:Free video codecs Category:C (programming language) libraries Category:Free software programmed in C Category:Free computer libraries Category:Google software