Skip to main content

aom-psy101

Under Maintenance

The content in this entry is incomplete & is in the process of being completed.

Community Fork

This entry is about a fork of aomenc called aom-psy101. If you'd like to learn about the mainline aomenc encoder before reading, visit our aomenc wiki entry.

Mainline aomenc is unfortunately not perfect. It suffers from bad defaults, a heavy focus on the perceptually flawed PSNR metric, misleading settings, and other issues. Fortunately, there are a couple of forks developed by the encoding community that were created to combat aomenc's underlying issues.

These forks fix up the poor decisions made by the original AOM devs and most importantly introduce new parameters and tunes to help fine-tune the encoder even more.

aom-psy101 is a fork of aomenc that aims to improve the encoding quality and speed of AV1. It is developed by damian101, a talented AV1 community developer.

FFmpeg​

aomenc is available in FFmpeg via libaom-av1, check if you have it by running ffmpeg -h encoder=libaom-av1. You can input non-FFmpeg standard aomenc parameters via -aom-params.

Mainline aomenc

Unless you compile FFmpeg yourself with aom-psy101, you will be using the mainline aomenc. Compiling from source yourself with the aomenc libraries provided by aom-psy101 is the only way to use it with FFmpeg.

Installation​

  1. Clone the psy101 repo:
Clone the psy101 repo
git clone https://gitlab.com/damian101/aom-psy101
cd aom-psy101 && mkdir aom_build && cd aom_build
  1. Configure compilation. The following flags are set to ensure the aomenc binary is build for optimal performance:
Set CMake flags
cmake .. -DBUILD_SHARED_LIBS=0 -DENABLE_DOCS=0 -DCONFIG_TUNE_BUTTERAUGLI=0 -DCONFIG_TUNE_VMAF=0 -DCONFIG_AV1_DECODER=0 -DENABLE_TESTS=0 -DCMAKE_BUILD_TYPE=Release -DCMAKE_CXX_FLAGS="-flto -pipe -march=native" -DCMAKE_C_FLAGS="-flto -pipe -march=native"
  1. Compile:
Compile
make -j$(nproc)
  1. Install to your system. This may require elevated privileges:
Install
make install