Implementing Tile Encoding in Rav1e

Implementing Tile Encoding in Rav1e

Tile encoding consists in splitting video frames into tiles that can be encoded and decoded independently in parallel (to use several CPUs), at the cost of a small loss in compression efficiency. In practice, more structures related to the encoding state are split into tiles, provided both in const and mut versions, so there is a whole hierarchy of tiling structures:

The split is done by a separate component (see ), which yields a tile context containing an instance of the hierarchy of tiling views for each tile. For example, it would be confusing if a bounded region could not be indexed from 0:

Worse, this would not be possible at all for the second dimension:

Therefore, offsets used in tiling views are relative to the tile (contrary to libaom and AV1 specification).

Source: blog.rom1v.com