an open web media project
The latest news and updates from the WebM project

VP8 Codec SDK "Aylesbury" Release

Thursday, October 28, 2010 | 2:50 PM

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 www.streamingmedia.com/west.

John Luther is Product Manager of the WebM Project.


9 comments:

ArkBlitz said...

When will it be available for FFMPEG?

Nintendo Maniac 64 said...

Great to see that you're showing BOTH the PSNR and SSIM results.

Though ignoring PSNR entirely would be even better (see: Theora Ptalarbvorm)

KSeggie said...

Will you be looking at improving real time encoding speed so that VP8 is better suited for video conferencing?

MMMMMM said...

Hopefully Opera/GStreamer will pickup these changes soon.

kidjan said...

Nice results. And I agree with Nintendo Maniac, might as well ditch PSNR entirely. It's not going to help you.

Spudd86 said...

@MMMMMM Gstreamer will pick this up as soon as you install a new libvpx if you're on Linux...

Omega X said...

Just in case someone wanted to see that HTML5 presentation even though its not linked, The PDF is here:
http://www.streamingmedia.com/conferences/west2010/presentations/SMWest-2010-HTML5-Workshop.pdf

For some reason they added the h.264 presentation twice.

vijay said...

Just wanted to know new release has improvement(20-40%) for which platform. Because I have compared libvpx0.9.5 for decoding with previous release libvpx0.9.2 on CA9+neon and my gains are in the range of 5-6%. This comparision I have done for single thread. Can you please share the some encoded stream so that can also compare same streams.

Thanks,
Vijay.

vijay said...

Its OK comparision is done with very 1st release.