What are the default libaom settings out of the box?
The libaom reference encoder for the AV1 video format applies a specific set of stock configurations designed to prioritize maximum compression efficiency and quality metric optimization rather than processing speed. Out of the box, libaom operates under a strict, CPU-intensive baseline that utilizes cautious rate-control bounds and minimal multi-threading optimizations unless explicitly commanded otherwise. For developers and video engineers deploying libaom without custom parameters, understanding these defaults helps explain the encoder’s exceptionally slow native performance and strict output structures.
Rate Control and Quality Defaults
By default, libaom utilizes structural boundaries that skew toward a baseline Constant Quality or standard average bitrate mode depending on how the wrapper (such as FFmpeg) calls it, though its core internal engine defaults to optimizing for standard distortion metrics.
- Default CRF / Quantizer: When implemented via standard interfaces, the default Constant Rate Factor (CRF) or quantizer scale is usually set to 35 (on a scale of 0 to 63). This represents a conservative, middle-of-the-road quality baseline.
- Tuning Metric: The out-of-the-box tuning
configuration is
AOM_TUNE_PSNR. The encoder actively optimizes structural choices to score well on Peak Signal-to-Noise Ratio tests rather than tuning for subjective human vision (AOM_TUNE_SSIM) or perceptual frameworks like VMAF.
Speed and Efficiency Presets
The speed parameter dictates how deeply the encoder searches for spatial and temporal redundancies.
- CPU Used Preset: The
--cpu-usedparameter defaults to 1. On a scale from 0 (slowest, highest quality) to 8 or 9 (fastest), a default of 1 forces the encoder to process data with extreme thoroughness. This explains why an unconfigured libaom deployment operates significantly slower than real-time speed.
Threading and Partitioning Architecture
Libaom does not automatically parallelize workloads aggressively out of the box.
- Multi-threading: The default thread allocation is
typically set to 1 thread, or it restricts tile-based
multi-threading. Features like row-based multi-threading
(
-row-mt) are turned off by default, meaning the encoder will underutilize modern multi-core processors unless explicit parallel tiles and thread parameters are supplied. - Partition Sizes: The internal framework defaults to a maximum partition size of 128×128 pixels down to a minimum of 4×4 pixels, scanning the structural tree in a top-down manner.
Group of Pictures (GOP) and Keyframes
Keyframe intervals manage stream seekability and recovery points.
- Maximum Keyframe Distance: Out of the box, libaom defaults to an exceptionally high maximum keyframe interval, often up to 9999 frames. Without a tighter maximum interval boundary, scene change detection is heavily relied upon, which can lead to sparse keyframe distribution and slow seeking behaviors in players.