AV1 Video

AV1 royalty-free video codec for next-generation streaming.

Overview

AV1 is a modern, open-source video codec offering:

  • Better compression than H.265
  • Royalty-free licensing
  • Growing hardware support
  • HDR and wide color gamut support

Trade-offs

Aspect H.264 H.265 AV1
Compression Good Better Best
Encoding Speed Fast Medium Slow
Royalties Yes Yes No
Hardware Support Universal Common Emerging

GStreamer Backend

MediaX uses GStreamer for AV1 encoding and decoding:

  • Software: SVT-AV1, dav1d
  • Hardware: Intel AV1 (12th gen+), AMD (RDNA3+)

Transmitting AV1 Video

#include "av1/gst/rtp_av1_payloader.h"

mediax::rtp::av1::gst::RtpAv1GstPayloader payloader;

mediax::rtp::StreamInformation stream_info;
stream_info.session_name = "av1-stream";
stream_info.hostname = "239.192.1.1";
stream_info.port = 5004;
stream_info.width = 3840;
stream_info.height = 2160;
stream_info.framerate = 30;
stream_info.encoding = mediax::rtp::ColourspaceType::kColourspaceAv1;

payloader.SetStreamInfo(stream_info);
payloader.Open();

// Send RGB24 frames - encoder handles conversion and compression
std::vector<uint8_t> rgb_buffer(3840 * 2160 * 3);
// Fill buffer with video frame...
payloader.Transmit(rgb_buffer.data(), true);

payloader.Close();

Receiving AV1 Video

#include "av1/gst/rtp_av1_depayloader.h"

mediax::rtp::av1::gst::RtpAv1GstDepayloader depayloader;

mediax::rtp::StreamInformation stream_info;
stream_info.hostname = "239.192.1.1";
stream_info.port = 5004;
stream_info.width = 3840;
stream_info.height = 2160;
stream_info.encoding = mediax::rtp::ColourspaceType::kColourspaceAv1;

depayloader.SetStreamInfo(stream_info);
depayloader.Open();
depayloader.Start();

// Receive decoded RGB frames
std::vector<uint8_t> rgb_buffer(3840 * 2160 * 3);
depayloader.Receive(rgb_buffer.data(), 1000);

depayloader.Stop();
depayloader.Close();

Bandwidth Requirements

AV1 provides excellent compression:

Resolution Quality H.265 Bitrate AV1 Bitrate
1920x1080 Good 4 Mbps 2-3 Mbps
1920x1080 High 10 Mbps 6-8 Mbps
3840x2160 Good 15 Mbps 10-12 Mbps
3840x2160 High 30 Mbps 20-25 Mbps

Software Encoder Setup

SVT-AV1

# Ubuntu 24.04+
sudo apt install gstreamer1.0-plugins-bad svt-av1

# Verify
gst-inspect-1.0 svtav1enc

dav1d Decoder

# Fast AV1 decoder
sudo apt install gstreamer1.0-plugins-bad libdav1d-dev

# Verify
gst-inspect-1.0 dav1ddec

Hardware Acceleration

Intel Arc (12th gen+)

# Intel media drivers with AV1 support
sudo apt install intel-media-va-driver-non-free

# Verify AV1 support
vainfo 2>&1 | grep -i av1

AMD RDNA3+

AMD Radeon RX 7000 series supports AV1 encoding:

# AMD drivers
sudo apt install mesa-va-drivers

# Verify
vainfo 2>&1 | grep -i av1

Use Cases

AV1 is ideal for:

  • 4K/8K streaming: Best compression for ultra-high resolution
  • Cloud gaming: Low bandwidth, high quality
  • Archival: Royalty-free long-term storage
  • WebRTC: Browser-native support

Limitations

  • Encoding is computationally intensive
  • Hardware support is limited to newer devices
  • Higher latency than H.264/H.265

For real-time, low-latency applications, consider H.264 or uncompressed video.

Support