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 video codecs that focus on targeted solutions for specific use cases. The following diagram illustrates the high level progression of each codec in the family.



  Release Version Codename Target Features
  TBD EVX-5 Capri Massive media library compression Artificial intelligence, targeted compression
  2016 EVX-4 Cannes Mixed reality immersive content Virtual & augmented reality, 3D video format support
  2014 EVX-3 Chicago Ultra HD content Advanced transforms, large macroblock support
  2011 EVX-2 Chennai Medical and archival content Lossless compression, full rate YCbCr 4:4:4 mode
  2011 EVX-1 Cairo Low latency video streaming 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.