• EVX3: Advanced Video Coding

  • Completed 2014

The Chicago video codec builds upon the foundation of Cairo with several improvements to increase coding efficiency for high resolution content. While Cairo was modelled after h.264 AVC, Chicago is modelled after h.265 HEVC. Similar to Cairo, Chicago was also designed to serve as a testbed for further experimentation and research.



Chicago Design

Similar to most modern codecs, Chicago uses a block based encoding scheme to transform, quantize, and entropy encode the video data. Chicago supports self referencing intra frames as well as neighbor referencing inter frames .

The design of this codec borrows heavily from my previous codecs, Cairo, and P.264, but with several notable improvements. The basic flow of P.264 and Chicago is depicted in the following image.
For a complete walkthrough of this diagram, check out my P.264 overview paper.



Improvements

Chicago features several improvements tailored to high resolution content:

  1. Large Transforms: Chicago supports block sizes up to 64x64 with transform sizes up to 32x32. These larger transforms are primarily responsible for the efficiency improvements of Chicago over Cairo.

  2. Macroblock Quadtree: For increased efficiency, Chicago breaks images down into regions with a quadtree based on complexity (similar to H.265's CTUs). This allows the codec to encode portions of the image with different block sizes (ranging from 4x4, 8x8, 8x4, 4x8, 16x8, 8x16, 16x16, 32x16, 16x32, 32x32).

  3. Subrect Support: When the codec detects that only a central subset of the image has changed per-frame, it will compress and transmit only this subregion of the image. This provides a significant efficiency improvement for videos with UI or HUDs.

  4. Improved Deblocking: The use of larger transforms in Chicago's pipeline necessitated the need for improvements in the Cairo deblocking filter. Large transforms produce greater visible discontinuities at block boundaries, so this filter performs a more exhaustive kernel to compensate for it, taking into account quadtree node size and image resolution.



Experimental Video Codecs

EVX is a collection of five evolutionary codecs that are used for experimentation and education. They are not designed for productization and lack many important features and optimizations. Nonetheless, they are an extremely useful tool for testing out new compression theories and formats. The following diagram illustrates the high level progression of each codec in the family.



  year version name features
  2016 EVX-5 Capri artificial intelligence
targeted compression
  2015 EVX-4 Cannes virtual & augmented reality
3D video format support
  2014 EVX-3 Chicago advanced transforms
large macroblock support
  2011 EVX-2 Chennai lossless compression
full rate YCbCr 4:4:4 mode
  2011 EVX-1 Cairo experimental pipeline
video analysis & debugging tool




Source code

The source code to Chicago is not yet available. In the meantime you can check out the source code for Cairo, which serves as the basic framework for Chicago.



More Information

For more information about Chicago, please feel free to drop me a line. I plan on eventually posting the full source code to all EVX models and the Codec Tool, but other priorities are blocking this work for the moment. In the meantime, check out my blog for articles related to this codec and video compression in general.