VP8 is an open and royalty free video compression format created by On2 Technologies as a successor to VP7 and owned by Google from 2010.
In May 2010, after the purchase of On2 Technologies, Google provided an irrevocable patent promise on its patents for implementing the VP8 format, and released a specification of the format under the Creative Commons Attribution 3.0 license. That same year, Google also released libvpx, the reference implementation of VP8, under the revised BSD license.
Opera, Firefox, Chrome, and Chromium support playing VP8 video in HTML5 video tag. Internet Explorer officially supports VP8 with a separate codec. According to Google VP8 is mainly used in connection with WebRTC and as a format for short looped animations, as a replacement for the Graphics Interchange Format (GIF).
VP8 can be multiplexed into the Matroska-based container format WebM along with Vorbis and Opus audio. The image format WebP is based on VP8's intra-frame coding. VP8's direct successor, VP9, and the emerging royalty-free internet video format AV1 from the Alliance for Open Media (AOMedia) are based on VP8.
VP8 only supports progressive scan video signals with 4:2:0 chroma subsampling and 8 bits per sample. In its first public version, On2's VP8 implementation supports multi-core processors with up to 64 cores simultaneously. At least in the implementation (from August 2011), VP8 is comparatively badly adapted to high resolutions (HD). With only three reference frame buffers needed, VP8 enables for decoder implementations with a relatively small memory footprint. The format features a pure intra mode, i.e. using only independently coded frames without temporal prediction, to enable random access in applications like video editing.
VP8 is a traditional block-based transform coding format. It has much in common with H.264, e.g. some prediction modes. At the time of first presentation of VP8, according to On2 the in-loop filter and the Golden Frames were among the novelties of this iteration. The first definition of such a filter is already found in the H.263 standard, though, and Golden Frames were already in use in VP5 and VP7.
The discrete cosine transform (DCT) on 4×4 blocks and the Hadamard transform (WHT) serve as basic frequency transforms. A maximum of three frames can be referenced for temporal prediction: the last Golden Frame (may be an intra frame), alternate reference frame, and the directly preceding frame. The so-called alternate reference frames (altref) can serve as reference-only frames for displaying them can be deactivated. In this case the encoder can fill them with arbitrary useful image data, even from future frames, and thereby serve the same purpose as the b-frames of the MPEG formats. Similar macroblocks can be assigned to one of up to four (even spatially disjoint) segments and thereby share parameters like the reference frame used, quantizer step size, or filter settings. VP8 offers two different adjustable deblocking filters that are integrated into the codec loops (in-loop filtering). Many coding tools use probabilities that are calculated continuously from recent context, starting at each intra frames. Macro blocks can comprise 4×4, 8×8, or 16×16 samples. Motion vectors have quarter-pixel precision.
VP8 was first released by On2 Technologies on September 13, 2008, as On2 TrueMotion VP8, replacing its predecessor, VP7.
After Google acquired On2 in February 2010, calls for Google to release the VP8 source code were made. Most notably, the Free Software Foundation issued an open letter on March 12, 2010, asking Google to gradually replace the usage of Adobe Flash Player and H.264 on YouTube with a mixture of HTML5 and a freed VP8.
On May 19, 2010, at its Google I/O conference, Google released the VP8 codec software under a BSD-like license and the VP8 bitstream format specification under an irrevocable free patent license. This made VP8 the second product from On2 Technologies to be opened, following their donation of the VP3 codec in 2002 to the Xiph.Org Foundation, from which they derived the Theora codec.
In February 2011, MPEG LA invited patent holders to identify patents that may be essential to VP8 in order to form a joint VP8 patent pool. As a result, in March the United States Department of Justice (DoJ) started an investigation into MPEG LA for its role in possibly attempting to stifle competition. In July 2011, MPEG LA announced that 12 patent holders had responded to its call to form a VP8 patent pool, without revealing the patents in question, and despite On2 having gone to great lengths to avoid such patents.
In November 2011, the Internet Engineering Task Force published the informational RFC 6386, VP8 Data Format and Decoding Guide.
In March 2013, MPEG LA announced that it had dropped its effort to form a VP8 patent pool after reaching an agreement with Google to license the patents that it alleges "may be essential" for VP8 implementation, and granted Google the right to sub-license these patents to any third-party user of VP8 or VP9. This deal has cleared the way for possible MPEG standardisation as its royalty-free internet video codec, after Google submitted VP8 to the MPEG committee in January 2013.
In March 2013, Nokia asserted a patent claim against HTC and Google for the use of VP8 in Android in a German court; however, on August 5, 2013 the webm project announced that the German court has ruled that VP8 does not infringe Nokia's patent.
Nokia has made an official intellectual property rights (IPR) declaration to the IETF with respect to the VP8 Data Format and Decoding Guide listing 64 granted patents and 22 pending patent applications.
The reference implementation of a VP8 (and VP9) codec is found in the programming library libvpx which is released as free software. It has a mode for one-pass and two-pass encoding, respectively, while the one-pass mode is known as being broken and not offering effective control over the target bitrate.
Currently, libvpx is the only software library capable of encoding VP8 video streams. An encoder based on the x264 framework called xvp8 is under development by the x264 team.
A Video for Windows wrapper of the VP8 codec based on the Google VP8 library (FourCC: VP80) is available.
The WebM Project hardware team in Finland released an RTL hardware encoder for VP8 that is available at no cost for semiconductor manufacturers.
The Nvidia Tegra mobile chipsets have full VP8 hardware encoding and decoding (since Tegra 4).
Nexus 5 could use hardware encoding
libvpx is capable of decoding VP8 video streams.
On July 23, 2010, Fiona Glaser, Ronald Bultje, and David Conrad of the FFmpeg Team announced the ffvp8 decoder. Through testing, they determined that ffvp8 was faster than Google's own libvpx decoder. The WebM Project hardware team released an RTL hardware decoder for VP8, that is releasable to semiconductor companies at zero cost. TATVIK Technologies announced a VP8 decoder that is optimized for the ARM Cortex-A8 processor. Marvell's ARMADA 1500-mini chipset has VP8 SD and HD hardware decoding support (used in Chromecast). Intel has full VP8 decoding support built into their Bay Trail chipsets. Intel Broadwell also adds VP8 hardware decoding support.