Which GStreamer Plugins Rely on Libaom?

The Alliance for Open Media’s reference software library, libaom, is vital for encoding and decoding AV1 video streams within the GStreamer multimedia framework. GStreamer integrates this library through a dedicated extension plugin block contained within its “Bad” plugins package (gst-plugins-bad). Specifically, two fundamental media processing elements, av1enc and av1dec, directly rely on libaom to achieve software-based AV1 processing.

The AOM Plugin Submodule

In GStreamer, dependencies on external libraries are organized into submodules under specific package groups. Because AV1 development and its early implementations were evolving rapidly, the integration wrappers for libaom were placed in the gst-plugins-bad repository under the ext/aom/ directory. Despite the “bad” naming convention—which only reflects a historic lack of a long-term API guarantee or rigorous code review relative to the “base” package—the submodule is fully functional and widely used for software-defined AV1 video processing.

Primary Elements Utilizing Libaom

The wrapper module exposes two key operational elements to GStreamer media pipelines:

1. av1enc (AV1 Video Encoder)

The av1enc element is a video encoder that compresses raw, uncompressed video frames into an AV1-compliant elementary stream. It maps GStreamer properties directly to the underlying libaom configuration structures.

2. av1dec (AV1 Video Decoder)

The av1dec element acts as the corresponding video decoder. It accepts compressed AV1 data blocks and utilizes libaom’s decoding architecture to reconstruct the original frames.

Distinguishing Libaom from Alternative AV1 Plugins

When building GStreamer pipelines for AV1, it is worth noting that libaom is not the only option available. GStreamer includes alternative elements for AV1 that rely on completely separate libraries: