Having enhanced the speed of libvpx, we are now addressing improvements in quality.
VP9 video encoding algorithms, as implemented in libvpx – the open source software video codec library from Google – offer a BD rate improvement of 35-40% over H.264/AVC encoders. The bandwidth gains it enables, combined with its royalty free distribution model, make VP9 an attractive candidate for usage in a number of applications, increasingly driving leading companies to adopt the format. Against this backdrop, we at Ittiam are working on getting more out of the new format. (Learn more about Ittiam’s VP9 encoder)
Growing VP9 support
Two key factors in the deployment of a new video coding standard or codec implementation are the computational speed of encoding, and video quality or compression efficiency. And very often, we see a trade-off between the two. At Ittiam, our constant focus is on striking the best balance between the two aspects. So in partnership with Google and Netflix, we first accelerated libvpx encoding by 50-70% ‘with minimal loss in quality’. (Find more details on the effort in our earlier blog.) Now, our goal is to deliver additional compression gains, ‘with minimal loss in computational speed’.
Take a look at some of the key algorithmic enhancements we are driving to improve the quality of libvpx encoding:
1. Temporal complexity based enhanced quantization decisions
libvpx reuses information from inter frames to encode key frames and Alternate Reference Frames (ARFs). This often leads to inefficient spatial and temporal coding. Our algorithm enhancements exploit similarities in various regions across frames, thereby increasing coding efficiency of key frames and ARFs. We will extend this approach further to improve the video quality of inter frames.
2. Improved spatial adaptive quantization
Ittiam is enhancing the spatial modulation technique used for quantization in libvpx. The current implementation is based on heuristic decisions that lack accuracy and can affect the overall perceived quality. Our team is developing an innovative algorithm to address this and improve the subjective quality through the following methods:
- Intelligent utilization of statistics, while selecting modulated quantization index values
- Improved rate control design
3. Scene based modelling
libvpx can be further tuned to effectively handle scene transitions within its rate control algorithm. The present implementation affects usage of the encoder in ABR scenarios that require key frame insertion at strict intervals. libvpx can be enhanced to support scene based modelling that in turn boosts the quality of video frames at scene transitions. We are working to support iterative coding and using the context of the current frame to make more effective decisions. To facilitate this, we are also implementing key changes to the rate control model.
4. Support for cinematic effects
Effective handling of cinematic effects in movie content is important to preserve quality and maintain coding efficiency. We are adding algorithms in libvpx to improve detection of cinematic effects such as flash frames and frames following a flash sequence, along with corresponding improvements to the rate control model.
With the combination of these algorithmic enhancements, we can look forward to achieving multiple benefits:
- Improved compression for a given quality
- Enhanced subjective quality
- Effective support for handling cinematic effects
Delivering on the Promise of VP9
Apart from comparisons against H.264/AVC, VP9 and libvpx are often compared against H.265/HEVC and its implementations, with respect to video quality and compression efficiency. On the one hand, studies published by Streaming Media and Netflix find the two standards to be comparable in their bit rate savings. On the other hand, these studies also indicate that popular implementations of HEVC show some advantage in compression over libvpx VP9 encoding, depending upon the content type, resolution and quality metric. Ittiam’s quality improvement efforts will help address these concerns, and enable libvpx implementation to better deliver on the true promise of the VP9 standard.
Stay tuned for updates on the results from our efforts.