Encode AV1 for Mobile Hardware Decoders with rav1e
This article explains how to use the rav1e (librav1e)
encoder to generate AV1 video files that are fully compatible with the
hardware decoders found in modern mobile devices. It covers the specific
hardware limitations of mobile chipsets, the required encoding profiles,
and the exact configuration settings needed to ensure seamless
hardware-accelerated playback on iOS and Android.
Mobile Hardware Decoder Requirements
Mobile system-on-chips (SoCs)—such as the Apple A17 Pro/A18, Qualcomm Snapdragon 8 Gen 2/3, and MediaTek Dimensity 9200/9300—feature dedicated AV1 hardware decoding blocks to preserve battery life. Unlike software decoders, which are highly flexible, hardware decoders are rigid and only support specific subsets of the AV1 specification.
To target these hardware decoders, your encoded video must adhere to the following constraints: * Profile: Must be the AV1 Main Profile. Hardware decoders on mobile devices do not support the High or Professional profiles. * Chroma Subsampling: Must be YUV 4:2:0. Subsampling formats like 4:2:2 or 4:4:4 will trigger software fallback or fail to play. * Bit Depth: Must be 8-bit or 10-bit. Most modern mobile AV1 hardware decoders support both 8-bit and 10-bit Main Profile video, but 8-bit offers the widest legacy compatibility. * Levels and Operating Points: The video must not exceed the maximum level supported by the chip (typically Level 5.1, which supports up to 4K at 60 frames per second).
Configuring rav1e for Mobile Compatibility
The rav1e encoder can strictly target these hardware
decoders if you pass the correct parameters during the encoding
process.
1. Set the Correct Color Format and Bit Depth
To ensure the video matches the Main Profile, you must configure the
pixel format to YUV 4:2:0. In rav1e, this is done by
specifying the chroma sampling. * For 8-bit
compatibility, use rav1e’s 8-bit 4:2:0 configuration. * For
10-bit compatibility (highly recommended for HDR), use
the 10-bit 4:2:0 configuration.
2. Limit the Resolution and Frame Rate (Levels)
Mobile hardware decoders have strict pixel-per-second processing limits. When encoding, ensure your source resolution and frame rate fit into standard AV1 levels: * 1080p at 30fps / 60fps: Fits Level 4.0 / 4.1. Supported by all mobile AV1 decoders. * 4K at 30fps / 60fps: Fits Level 5.0 / 5.1. Supported by high-end modern mobile SoCs.
3. Manage Tile Configurations
Hardware decoders use “tiles” to split the video frame and decode
sections in parallel. While rav1e allows you to customize
tile rows and columns, setting too many tiles can exceed the hardware’s
capabilities. It is best to stick to standard tiling configurations: *
For 1080p: Use 1 or 2 tile columns. * For 4K: Use 2 or 4 tile
columns.
4. Handle Film Grain Synthesis Carefully
AV1 supports Film Grain Synthesis (FGS), which allows the encoder to
strip film grain and have the decoder re-synthesize it. While the AV1
specification requires hardware decoders to support this, some early or
budget mobile implementations have performance issues when FGS is
enabled. If compatibility is your absolute priority, consider disabling
film grain exporting in your rav1e settings.
By restricting rav1e to the Main Profile, YUV 4:2:0
chroma subsampling, and standard mobile-friendly resolutions, the
resulting AV1 bitstream will successfully trigger hardware-accelerated
decoding on compatible mobile devices.