What AV1 Transform Types Does Libaom Support?

The AV1 video coding format utilizes a highly flexible set of transform blocks to efficiently compress residual data by converting spatial pixels into frequency coefficients. During the encoding process, the reference encoder, libaom, supports and evaluates multiple transform types across various block sizes. This article provides an overview of the specific primary and secondary transform types implemented in libaom, including Discrete Cosine Transforms (DCT), Asymmetric Discrete Sine Transforms (ADST), and Identity transforms, alongside an explanation of how the encoder evaluates them using rate-distortion optimization (RDO).

Supported Primary Transform Types

Unlike older video codecs that relied almost exclusively on standard DCT, AV1 introduces a combination of different transform types that can be applied independently to the horizontal and vertical axes of a block. Libaom supports four primary transform variants:

By combining these 1D transforms vertically and horizontally, libaom evaluates up to 16 distinct 2D transform combinations (such as DCT_DCT, DCT_ADST, ADST_DCT, IDTX_IDTX, etc.) depending on the block size and prediction mode.

Block Sizes and Transform Unit Hierarchy

Libaom implements these transforms across a wide range of square and rectangular Block Sizes, ranging from 4x4 up to 64x64 pixels.

How Libaom Evaluates Transforms

Evaluating all 16 transform combinations for every single block would drastically slow down encoding. To balance compression efficiency and encoding speed, libaom utilizes several optimization strategies during the evaluation phase: