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.
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.
Chicago features several improvements tailored to high resolution content:
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.
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).
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.
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.
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 |
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.
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.