What AV1 Hardware Decoding APIs Are Supported by libaom?
This article provides an overview of how the Alliance for Open Media’s reference software, libaom, handles AV1 video decoding. While libaom itself is primarily a CPU-based software codec implementation, it does not directly implement hardware acceleration APIs. Instead, hardware decoding of AV1 is handled by system-level media frameworks, graphics drivers, and multimedia libraries like FFmpeg, which integrate libaom for software fallback. Below, we explore how hardware decoding interfaces interact with the AV1 ecosystem and the role libaom plays.
The Role of libaom in AV1 Decoding
The libaom library is the official reference
implementation for the AV1 video coding format, developed by the
Alliance for Open Media (AOMedia). Its primary purpose is to provide a
highly accurate, compliant, and optimized software
encoder and decoder (aomdec). Because it is designed as a
software reference, libaom’s source code does not natively embed
hardware acceleration APIs like DXVA2, NVDEC, or VA-API. Instead, it
serves as the baseline standard that hardware manufacturers use to
verify that their dedicated hardware decoders produce identical,
compliant output.
Native Hardware Decoding APIs for AV1
When applications require hardware-accelerated AV1 decoding to reduce CPU usage and power consumption, they bypass libaom’s software decoding routines and communicate directly with the operating system’s multimedia or GPU acceleration APIs. The primary APIs capable of driving AV1 hardware decoding chips include:
- VA-API (Video Acceleration API): Commonly used on Linux and BSD operating systems for Intel, AMD, and fallback graphics architectures.
- VDPAU (Video Decode and Presentation API for Unix): An alternative Linux/UNIX interface primarily historically utilized by NVIDIA hardware.
- DirectX Video Acceleration (DXVA2 / Direct3D 11 & 12 Video): The standard hardware acceleration APIs on Microsoft Windows, supported by modern Intel, AMD, and NVIDIA GPUs.
- NVDEC (NVIDIA Video Decoder): NVIDIA’s proprietary hardware decoding API available on GeForce, Quadro, and Tesla GPUs supporting AV1 hardware decoding (Ampere architecture and newer).
- MediaCodec: The native Android framework API used to interface with mobile System-on-Chips (SoCs) that feature hardware AV1 decoders.
How Applications Bridge libaom and Hardware APIs
Multimedia frameworks like FFmpeg or
VLC bridge the gap for developers. In an application
utilizing FFmpeg, for example, the framework can be configured to check
for the presence of a hardware-accelerated decoder pipeline (such as
using av1_nvdec or av1_vaapi). If compatible
hardware components or driver APIs are missing on the host system, the
framework automatically falls back to utilizing software decoding
libraries like libaom or the highly optimized
dav1d library to ensure the video can still be played back
successfully.