Thursday, October 28, 2010

VP8 Codec SDK "Aylesbury" Release

Today we're making available "Aylesbury," our first named release of libvpx, the VP8 codec SDK. VP8 is the video codec used in WebM. Note that the VP8 specification has not changed, only the SDK.

What's an Aylesbury? It's a breed of duck. We like ducks, so we plan to use duck-related names for each major libvpx release, in alphabetical order. Our goal is to have one named release of libvpx per calendar quarter, each with a theme.

You can download the Aylesbury libvpx release from our Downloads page or check it out of our Git repository and build it yourself. In the coming days Aylesbury will be integrated into all of the WebM project components (DirectShow filters, QuickTime plugins, etc.). We encourage anyone using our components to upgrade to the Aylesbury releases.

For Aylesbury the theme was faster decoder, better encoder. We used our May 19, 2010 launch release of libvpx as the benchmark. We're very happy with the results (see graphs below):
  • 20-40% (average 28%) improvement in libvpx decoder speed
  • Over 7% overall PSNR improvement (6.3% SSIM) in VP8 "best" quality encoding mode, and up to 60% improvement on very noisy, still or slow moving source video.

The main improvements to the decoder are:
  • Single-core assembly "hot spot" optimizations, including improved vp8_sixtap_predict() and SSE2 loopfilter functions
  • Threading improvements for more efficient use of multiple processor cores
  • Improved memory handling and reduced footprint
  • Combining IDCT and reconstruction steps
  • SSSE3 usage in functions where appropriate
On the encoder front, we concentrated on clips in the 30-45 dB range and saw the biggest gains in higher-quality source clips (greater that 38 dB), low to medium-motion clips, and clips with noisy source material. Many code contributions made this possible, but a few of the highlights were:
  • Adaptive width and strength alternate reference frame noise suppression filter with optional motion compensation.
  • Transform improvements (improved accuracy and reduction in round trip error)
  • Trellis-based quantized coefficient optimization
  • Two-pass rate control and quantizer changes
  • Rate distortion changes
  • Zero bin and rounding changes
  • Work on MB-level quality control and bit allocation
We're targeting Q1 2011 for the next named libvpx release, which we're calling Bali. The theme for that release will be faster encoder. We are constantly working on improvements to video quality in the encoder, so after Aylesbury we won't tie that work to specific named releases.

WebM at Streaming Media West

Members of the WebM project will discuss Aylesbury during a session at the Streaming Media West conference on November 3rd (session C203: WebM Open Video Project Update). For more information, visit

John Luther is Product Manager of the WebM Project.

Wednesday, October 20, 2010

Flumotion Wins Streaming Media Europe Awards for WebM Streaming

Congratulations to our friends at Flumotion! They picked up two Reader's Choice Awards at the Streaming Media Europe 2010 conference in London. The company took prizes for Best Live Webcast of 2010 (for their streaming of GUADEC 2010 in WebM), and Best Webcast Platform. In addition, the Flumotion WebM Live Streaming solution was nominated for Best Streaming Innovation of 2010.

You can read more about the awards in the Streaming Media announcement.

Friday, October 15, 2010

Demo of WebM Running on TI OMAP 4 Processor

Texas Instruments has made a video of HD-resolution (1080p) VP8 (WebM) video playing on their new TI OMAP™ 4 processor, in both Android and Ubuntu.

(If you have a WebM-enabled browser and are enrolled in the YouTube HTML5 beta the video will play in WebM HTML5, otherwise it will play in Flash Player.)

For more info about the OMAP 4 and the IVA 3 video accelerator that enables low-power HD playback of VP8 on the chip, see the TI web site.

Thursday, October 14, 2010

VP8 Documentation and Test Vector Contributions

Janne Salonen of the WebM team in Oulu, Finland (formerly On2 Finland) has added a tabular description of the VP8 syntax to the VP8 Bitstream Guide. The new annex provides a concise reference of the elements in the bitstream and we hope will make implementing and testing VP8 decoders easier. The updated document and source can be downloaded from our documentation page.

We're working on more improvements to the bitstream guide and invite other community members to help. As with the VP8 code, we gladly give attribution credit to documentation contributors and have added an AUTHORS file to the bitstream-guide Git repository.

New VP8 Test Vectors

The Oulu team has also produced some new VP8 test vectors. We analyzed a large set of WebM videos and produced two important corner use cases. The first produces the worst-case memory bandwidth (i.e., lots of global motion, all fractional motion vectors). The second produces the worst-case boolean decoder bin rate over dozens of consecutive frames. These vectors have been added to the VP8 test repository. Our team will consider other corner cases in the next batch of streams we add to the repository.

Aki Kuusela is Hantro Embedded Engineering Manager at Google.