{
  "schemaVersion": 1,
  "contentVersion": "ca42e61ede0a24f789d7287a0001244ad22f4abf",
  "id": "docs/tools/software-encoders/aom-av1-lavish",
  "collection": "docs",
  "title": "aom-av1-lavish",
  "description": "aom-av1-lavish is Clybius's unmaintained fork of aomenc, based on libaom 3.6.0, that added perceptual tunes and many fine-tuning controls.",
  "canonicalUrl": "https://encode.wiki/tools/software-encoders/aom-av1-lavish/",
  "apiUrl": "https://encode.wiki/api/v1/documents/docs/tools/software-encoders/aom-av1-lavish.json",
  "markdownUrl": "https://encode.wiki/api/v1/markdown/docs/tools/software-encoders/aom-av1-lavish.md",
  "status": "current",
  "tags": [
    "migrated"
  ],
  "license": "CC BY-SA 4.0",
  "dates": {
    "lastVerified": "2026-10-08T00:00:00.000Z"
  },
  "authors": [],
  "sources": [
    {
      "title": "aom-av1-lavish repository",
      "url": "https://github.com/Clybius/aom-av1-lavish",
      "accessedAt": "2026-10-08T00:00:00.000Z"
    },
    {
      "title": "aom-av1-lavish README (branch descriptions)",
      "url": "https://github.com/Clybius/aom-av1-lavish/blob/83500ccf39c98e4688acda163f87c12d8b1a854a/README.md",
      "accessedAt": "2026-10-08T00:00:00.000Z"
    },
    {
      "title": "Endless_Merging option definitions and help text",
      "url": "https://github.com/Clybius/aom-av1-lavish/blob/83500ccf39c98e4688acda163f87c12d8b1a854a/av1/arg_defs.c",
      "accessedAt": "2026-10-08T00:00:00.000Z"
    },
    {
      "title": "Endless_Merging encoder defaults and tune build requirements",
      "url": "https://github.com/Clybius/aom-av1-lavish/blob/83500ccf39c98e4688acda163f87c12d8b1a854a/av1/av1_cx_iface.c",
      "accessedAt": "2026-10-08T00:00:00.000Z"
    },
    {
      "title": "Pull request 1 (missing aq_variance.h include)",
      "url": "https://github.com/Clybius/aom-av1-lavish/pull/1",
      "accessedAt": "2026-10-08T00:00:00.000Z"
    },
    {
      "title": "libaom fix for NASM 3.0 detection (commit 6d2b7f71b)",
      "url": "https://aomedia.googlesource.com/aom/+/6d2b7f71b98bfa28e372b1f2d85f137280bdb3de",
      "accessedAt": "2026-10-08T00:00:00.000Z"
    }
  ],
  "provenance": {
    "originUrl": "https://github.com/av1-community-contributors/codec-wiki/blob/37c3317fd058b23c71a87679bed5619a98f77752/docs/encoders/aom-av1-lavish.mdx",
    "originCommit": "37c3317fd058b23c71a87679bed5619a98f77752",
    "migratedAt": "2026-08-21T00:00:00.000Z",
    "modified": true,
    "originPath": "docs/encoders/aom-av1-lavish.mdx"
  },
  "headings": [
    {
      "depth": 2,
      "text": "Branches",
      "anchor": "branches"
    },
    {
      "depth": 2,
      "text": "Building",
      "anchor": "building"
    },
    {
      "depth": 2,
      "text": "Community settings",
      "anchor": "community-settings"
    },
    {
      "depth": 2,
      "text": "Fork-specific options",
      "anchor": "fork-specific-options"
    },
    {
      "depth": 2,
      "text": "Complete native parameter reference",
      "anchor": "complete-native-parameter-reference"
    }
  ],
  "sections": [
    {
      "id": "_preamble",
      "title": "Page introduction",
      "depth": 0,
      "canonicalUrl": "https://encode.wiki/tools/software-encoders/aom-av1-lavish/",
      "apiUrl": "https://encode.wiki/api/v1/sections/docs/tools/software-encoders/aom-av1-lavish/_preamble.json",
      "markdownUrl": "https://encode.wiki/api/v1/sections/docs/tools/software-encoders/aom-av1-lavish/_preamble.md",
      "checksum": "ba84fca849857d0a44e751addb8d57c4eba2fbeadcba7f31c8e9cd8711801eae",
      "bytes": 1114
    },
    {
      "id": "branches",
      "title": "Branches",
      "depth": 2,
      "anchor": "branches",
      "canonicalUrl": "https://encode.wiki/tools/software-encoders/aom-av1-lavish/#branches",
      "apiUrl": "https://encode.wiki/api/v1/sections/docs/tools/software-encoders/aom-av1-lavish/branches.json",
      "markdownUrl": "https://encode.wiki/api/v1/sections/docs/tools/software-encoders/aom-av1-lavish/branches.md",
      "checksum": "ff87f53170716d24908546ef38039098ded1fa1e05b8845def35ee10eda51af4",
      "bytes": 1420
    },
    {
      "id": "building",
      "title": "Building",
      "depth": 2,
      "anchor": "building",
      "canonicalUrl": "https://encode.wiki/tools/software-encoders/aom-av1-lavish/#building",
      "apiUrl": "https://encode.wiki/api/v1/sections/docs/tools/software-encoders/aom-av1-lavish/building.json",
      "markdownUrl": "https://encode.wiki/api/v1/sections/docs/tools/software-encoders/aom-av1-lavish/building.md",
      "checksum": "392d1a167c2b2fcf63dd9bde52cafd6013f0f7faa03b1b6f44468555d4534bf8",
      "bytes": 1077
    },
    {
      "id": "community-settings",
      "title": "Community settings",
      "depth": 2,
      "anchor": "community-settings",
      "canonicalUrl": "https://encode.wiki/tools/software-encoders/aom-av1-lavish/#community-settings",
      "apiUrl": "https://encode.wiki/api/v1/sections/docs/tools/software-encoders/aom-av1-lavish/community-settings.json",
      "markdownUrl": "https://encode.wiki/api/v1/sections/docs/tools/software-encoders/aom-av1-lavish/community-settings.md",
      "checksum": "7cf9cafa24ff2f8e3f7702414fa774aa74e2980aa8dd7cd151031fe269cdc5a3",
      "bytes": 1065
    },
    {
      "id": "fork-specific-options",
      "title": "Fork-specific options",
      "depth": 2,
      "anchor": "fork-specific-options",
      "canonicalUrl": "https://encode.wiki/tools/software-encoders/aom-av1-lavish/#fork-specific-options",
      "apiUrl": "https://encode.wiki/api/v1/sections/docs/tools/software-encoders/aom-av1-lavish/fork-specific-options.json",
      "markdownUrl": "https://encode.wiki/api/v1/sections/docs/tools/software-encoders/aom-av1-lavish/fork-specific-options.md",
      "checksum": "18f6fed2218232d2701aaf4066e8d8eb35e8c76ed6e925a26eb52f165622c3d7",
      "bytes": 5505
    },
    {
      "id": "complete-native-parameter-reference",
      "title": "Complete native parameter reference",
      "depth": 2,
      "anchor": "complete-native-parameter-reference",
      "canonicalUrl": "https://encode.wiki/tools/software-encoders/aom-av1-lavish/#complete-native-parameter-reference",
      "apiUrl": "https://encode.wiki/api/v1/sections/docs/tools/software-encoders/aom-av1-lavish/complete-native-parameter-reference.json",
      "markdownUrl": "https://encode.wiki/api/v1/sections/docs/tools/software-encoders/aom-av1-lavish/complete-native-parameter-reference.md",
      "checksum": "e1a77c3e769f24595139e5946a37e893b525a9ef01b28f49481c37b559cfdabf",
      "bytes": 34177
    }
  ],
  "outboundReferences": [
    "/tools/software-encoders/aom-psy101/",
    "/tools/software-encoders/aomenc/",
    "/tools/software-encoders/aomenc/#film-grain-synthesis",
    "/tools/software-encoders/aomenc/#options-that-matter-for-quality",
    "https://github.com/Clybius/aom-av1-lavish"
  ],
  "checksum": "656b638088afb0ea128575f334aa7327fa042e8f3d32a915fa103ffdcbe99c4f",
  "contentFormat": "markdown",
  "markdown": "> **Repository:** [Clybius/aom-av1-lavish](https://github.com/Clybius/aom-av1-lavish) (No commits since Nov 2022). A fork of aom-av1-psy, which is a fork of aomenc. Designed to open up the encoder for hyper-tuning and fidelity. Last commit: Nov 20, 2022. License: BSD-2-Clause. Stars: 59.\n\naom-av1-lavish is a fork of [aomenc](/tools/software-encoders/aomenc/) by Clybius. It builds on BlueSwordM's aom-av1-psy and was \"designed to open up the encoder for hyper-tuning and fidelity\". It was popular for high-fidelity Av1an encodes in 2022–2023.\n\n> **Caution — Unmaintained.**\n>\n> Development has stopped. The default branch was last changed on 20 November 2022, `Endless_Merging` on 4 March 2023, and the repository as a whole on 14 November 2023. `Endless_Merging` is based on libaom 3.6.0 (February 2023) and the default branch on 3.4.0, so both lack later libaom work such as `--tune=iq`, Variance Boost and three years of speed and efficiency improvements. For new encodes, use [aom-psy101](/tools/software-encoders/aom-psy101/), which carries several lavish patches on current libaom, or mainline aomenc.\n## Branches\n\n| Branch                          | Contents                                                                                                                                                           |\n| ------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n| `Endless_Possibility` (default) | The main psy and configuration changes.                                                                                                                            |\n| `Endless_Instability`           | Unstable and public-testing changes.                                                                                                                               |\n| `Endless_Merging`               | `Endless_Instability` merged with libaom updates up to 3.6.0. This is the branch community guides and builds used.                                                 |\n| `Endless_Butter`                | Temporary experimental Butteraugli fixes.                                                                                                                          |\n| `opmox/mainline-merge`          | `Endless_Merging` plus seven experimental commits from November 2023, including the fork's own `--deltaq-mode=6`, which is unrelated to mainline's Variance Boost. |\n\n## Building\n\n`Endless_Merging` no longer builds with current toolchains as is. Its CMake check rejects NASM 3.x (libaom fixed this upstream in 2025), and GCC 14 and later stop on a missing include (the fix is in the repository's unmerged pull request 1). Patch both and build:\n\n```sh\ngit clone -b Endless_Merging https://github.com/Clybius/aom-av1-lavish\ncd aom-av1-lavish\nsed -i 's/if(NOT \"${nasm_helptext}\" MATCHES \"-Ox\")/if(FALSE)/' build/cmake/aom_optimization.cmake\nsed -i '/#include \"av1\\/encoder\\/encodeframe_utils.h\"/a #include \"av1/encoder/aq_variance.h\"' av1/encoder/encodeframe_utils.c\ncmake -S . -B aom_build -DCMAKE_BUILD_TYPE=Release -DENABLE_TESTS=0 -DENABLE_DOCS=0\ncmake --build aom_build -j\"$(nproc)\"\n```\n\n`aom_build/aomenc --help` should report `AOMedia Project AV1 Encoder Psy v3.6.0`. The `lavish` and `butteraugli` tunes also need `-DCONFIG_TUNE_BUTTERAUGLI=1` and libjxl. The VMAF-based tunes need `-DCONFIG_TUNE_VMAF=1` and libvmaf. Keep the binary out of your system paths if you also use mainline libaom, and put it first in `PATH` when running Av1an.\n\n## Community settings\n\nThis is the Av1an parameter set from community guides, without options that restate defaults or that Av1an adds itself:\n\n```sh\n--end-usage=q --cq-level=24 --cpu-used=4 --threads=2 --lag-in-frames=64 --tune-content=psy --tune=ssim --enable-qm=1 --deltaq-mode=0 --quant-b-adapt=1 --arnr-strength=1\n```\n\nMost options mean the same as in [mainline aomenc](/tools/software-encoders/aomenc/#options-that-matter-for-quality). The differences:\n\n- Lavish allows `--lag-in-frames` up to 128; mainline caps it at 48.\n- `--tune-content=psy` enables the fork's perceptual adjustments to adaptive quantisation and mode decisions. Community guides advise against it for live action above about `--cq-level=30`.\n- `--arnr-strength=1` suits animation and clean CGI. Use the default (5) or higher for noisy live action.\n- The default `--cpu-used` is 3 instead of mainline's 0.\n\nThe same guides add film-grain synthesis with `--denoise-noise-level=8 --enable-dnl-denoising=0` (see [film grain synthesis](/tools/software-encoders/aomenc/#film-grain-synthesis)).\n\n## Fork-specific options\n\n| Option                                                                       | Default     | What it does                                                                                                                                                                                                                                                                            |\n| ---------------------------------------------------------------------------- | ----------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n| `--tune`                                                                     | `psnr`      | Adds `lavish` (Butteraugli-driven RD with SSIM-style scaling; needs a Butteraugli build), `lavish_fast` (the same curve adjustment without Butteraugli), `lavish_vmaf_rd`, `omni`, `ipq`, `ipq_vmaf_psy`, `vmaf_psy_qp` and `experimental`. `psnr`, `ssim`, `lavish_fast`, `omni` and `ipq` work in any build. |\n| `--tune-content`                                                             | `default`   | Adds `psy`, `animation` and `default_no_screen`.                                                                                                                                                                                                                                        |\n| `--quant-sharpness`                                                          | 0           | −7 to 7. Non-zero values narrow the quantiser's dead zone so that more small coefficients (fine detail) survive, at some bitrate cost.                                                                                                                                                  |\n| `--loopfilter-sharpness`                                                     | 0           | 0–7. Sets loop-filter sharpness. Higher values reduce deblocking blur but allow more artefacts.                                                                                                                                                                                         |\n| `--luma-bias`                                                                | 1           | −5 to 5. Scales each block's RD multiplier by brightness, so positive values give brighter blocks relatively more bits and negative values favour dark blocks. Upstream recommends leaving it at the default.                                                                                                                                                                        |\n| `--chroma-q-offset-u`, `--chroma-q-offset-v`                                 | 0           | −63 to 63. Adjusts the automatic chroma quantiser offsets.                                                                                                                                                                                                                              |\n| `--dq-modulate`                                                              | 1           | Selects the perceptual modulation used by `--deltaq-mode=2` (1 = wavelet). It is marked work in progress.                                                                                                                                                                               |\n| `--delta-qindex-mult`, `--delta-qindex-pos`, `--delta-qindex-neg`            | 100, −1, −1 | Scale how strongly delta-q (the TPL model) changes the quantiser, overall or separately for positive and negative changes.                                                                                                                                                              |\n| `--ssim-rd-mult`, `--tpl-rd-mult`, `--vmaf-rd-mult`, `--butteraugli-rd-mult` | 100         | RD multipliers for hyper-tuning the corresponding tunes.                                                                                                                                                                                                                                |\n| `--butteraugli-resize-factor`                                                | 1           | 0 = full resolution, 1 = half, 2 = quarter. Community guides use 2 to speed up the Butteraugli tunes with little loss.                                                                                                                                                                  |\n| `--butteraugli-intensity-target`                                             | 100         | Display brightness in nits that Butteraugli assumes. Match it to your viewing brightness (guides used 250).                                                                                                                                                                             |\n| `--enable-experimental-psy`                                                  | 0           | Experimental changes (VP9-style film modifications). Upstream warns that it may hurt quality.                                                                                                                                                                                           |\n\nVMAF tunes also need `--vmaf-model-path` pointing to a VMAF model file.\n\n## Complete native parameter reference\n\nEvery option aomenc accepts on the default `Endless_Possibility` branch (commit `52f6a00b`, based on libaom 3.4.0), including those that need optional build features. Defaults are for good-quality mode in a normal (not realtime-only) build. Rows note where the fork changes a default or where its `--help` text is wrong. `Endless_Merging` (commit `83500ccf`) adds `--butteraugli-loop-count`, `--butteraugli-quant-mult`, `--butteraugli-quant-pos`, `--butteraugli-quant-neg`, `--global-motion-method`, `--sb-qp-sweep`, `--enable-rate-guide-deltaq` and `--rate-distribution-info`.\n\n<details>\n<summary>Application and output (19 options)</summary>\n\n| Option | Default | Description |\n| --- | --- | --- |\n| `--help` | — | Print the full option list and exit. |\n| `--cfg`, `-c` | unset | Read low-level tool settings from a key–value file in the format of libaom's `Sample.cfg`. Only the first `--cfg` is used. |\n| `--debug`, `-D` | off | Leave the application version out of the WebM tags so that repeated encodes are byte-identical. |\n| `--output`, `-o` | required | Output file. A `.ivf` or `.obu` extension selects that format unless `--webm` is given; any other name gets WebM. |\n| `--codec` | `av1` | Encoder to use. libaom builds contain only `av1`. |\n| `--limit` | 0 (all frames) | Stop after this many input frames. |\n| `--skip` | 0 | Skip this many input frames before encoding. |\n| `--quiet`, `-q` | off | Do not print progress. |\n| `--verbose`, `-v` | off | Print the encoder configuration before encoding. |\n| `--psnr` | 0 (off) | Report PSNR: 1 at the input bit depth, 2 at the stream bit depth. `--psnr` without a value means 1. |\n| `--test-decode` | off | Decode every frame while encoding and compare it with the encoder's reconstruction: `warn` reports a mismatch, `fatal` stops the encode. |\n| `--webm` | on | WebM output. Requires a build with WebM I/O (`CONFIG_WEBM_IO`, on by default); without it the default output is raw OBU. |\n| `--ivf` | off | IVF output, the minimal frame container used by libaom's own tools and test vectors. |\n| `--obu` | off | Raw low-overhead OBU stream (AV1 Section 5) with no container. |\n| `--annexb` | 0 (off) | Write the length-delimited Annex B bitstream format instead of Section 5 OBUs. Range 0–1. |\n| `--q-hist` | 0 (off) | After encoding, print a histogram of frame quantisers with this many buckets. |\n| `--rate-hist` | 0 (off) | After encoding, print a histogram of frame bitrates with this many buckets. |\n| `--disable-warnings` | off | Suppress the warnings about questionable settings. |\n| `--disable-warning-prompt`, `-y` | off | Print those warnings but do not stop to ask whether to continue. |\n\n</details>\n\n<details>\n<summary>Usage modes and passes (12 options)</summary>\n\n| Option | Default | Description |\n| --- | --- | --- |\n| `--good` | selected | Good-quality mode (`--usage=0`), the normal mode for offline video. |\n| `--rt` | off | Realtime mode (`--usage=1`): one pass, no lookahead, speeds 5–12, for low-latency streaming and conferencing. |\n| `--allintra` | off | All-intra mode (`--usage=2`): every frame is a keyframe, no lookahead, speeds 0–9. Meant for still images and image sequences; it also turns CDEF off and changes the QM range and screen-content detection defaults. |\n| `--usage`, `-u` | 0 (good) | Usage mode by number: 0 good quality, 1 realtime, 2 all-intra. Same as `--good`, `--rt` and `--allintra`. |\n| `--passes`, `-p` | 2 (1 in realtime and all-intra) | Number of passes, 1–3. Two-pass good-quality encodes use the first-pass statistics even in `q` mode; realtime and all-intra always run one pass. Three passes add a half-resolution second pass whose decisions guide the final pass. |\n| `--pass` | all passes | Run only pass 1, 2 or 3 of a multi-pass encode, so that the passes can run as separate processes (each needs the same `--fpf`). |\n| `--fpf` | in memory | First-pass statistics file. Needed when passes run as separate processes; otherwise the statistics stay in memory. |\n| `--two-pass-output` | `<output>_pass2_<n>.ivf` | Three-pass encoding: IVF file that receives the second (downscaled) pass. |\n| `--second-pass-log`, `-spf` | unset | Three-pass encoding: file in which the second pass stores its GOP and TPL decisions for the third pass. |\n| `--two-pass-input` | unset | Three-pass encoding: an already-downscaled source to read in the second pass instead of scaling the input to half size. |\n| `--two-pass-width` | 0 (half the input) | Three-pass encoding: frame width of the second pass (and of raw `--two-pass-input`). |\n| `--two-pass-height` | 0 (half the input) | Three-pass encoding: frame height of the second pass (and of raw `--two-pass-input`). |\n\n</details>\n\n<details>\n<summary>Input format (19 options)</summary>\n\n| Option | Default | Description |\n| --- | --- | --- |\n| `--i420` | on for raw input | Raw input is 4:2:0 planar (I420). Y4M input takes its format from the header. |\n| `--yv12` | off | Raw input is YV12 (4:2:0 planar with V before U). |\n| `--nv12` | off | Raw input is NV12 (4:2:0 with interleaved U and V). |\n| `--i422` | off | Raw input is 4:2:2 planar. |\n| `--i444` | off | Raw input is 4:4:4 planar. |\n| `--width`, `-w` | from Y4M | Frame width in pixels. Required for raw input. |\n| `--height`, `-h` | from Y4M | Frame height in pixels. Required for raw input. |\n| `--fps` | from Y4M (raw: 30/1) | Frame rate as a fraction, e.g. `24000/1001`. |\n| `--timebase` | 1/fps | Timestamp precision in fractional seconds. aomenc overwrites it with the inverse frame rate before encoding, so setting it has no effect. |\n| `--bit-depth`, `-b` | 8 (or the input's, if higher) | Bit depth of the encoded stream: 8, 10 or 12. Encoding 8-bit sources at 10 bits reduces banding and usually improves efficiency. `--help` claims a 10-bit default, but the code default is 8. |\n| `--input-bit-depth` | from Y4M (raw: `--bit-depth`) | Bit depth of raw input when it differs from the stream bit depth. |\n| `--input-chroma-subsampling-x` | 0 | Horizontal chroma subsampling (0 or 1) of 12-bit raw input in profile 2. Y4M input supplies it from the header. |\n| `--input-chroma-subsampling-y` | 0 | Vertical chroma subsampling (0 or 1) of 12-bit raw input in profile 2. |\n| `--profile` | 0 (Main) | AV1 profile: 0 Main (4:2:0 and monochrome, 8–10 bit), 1 High (adds 4:4:4), 2 Professional (adds 4:2:2 and 12 bit). aomenc raises it when the input needs a higher profile. |\n| `--monochrome` | off | Encode luma only, with no chroma planes. |\n| `--use-16bit-internal` | off (on above 8 bit) | Use the high-bit-depth (16-bit) pipeline for an 8-bit encode. |\n| `--stereo-mode` | `mono` | Stereo 3D layout written to the WebM header: `mono`, `left-right`, `bottom-top`, `top-bottom` or `right-left`. Requires a build with WebM I/O. |\n| `--forced_max_frame_width` | 0 (first frame) | Maximum frame width written to the sequence header, so that later frames (for example after a resize) may be wider than the first. |\n| `--forced_max_frame_height` | 0 (first frame) | Maximum frame height written to the sequence header. |\n\n</details>\n\n<details>\n<summary>Rate control (23 options)</summary>\n\n| Option | Default | Description |\n| --- | --- | --- |\n| `--end-usage` | vbr (q in all-intra, cbr in realtime) | Rate-control mode: `vbr`, `cbr`, `cq` (constrained quality: `--cq-level` capped by `--target-bitrate`) or `q` (constant quality at `--cq-level`). Quality-targeted encodes use `q`. |\n| `--target-bitrate` | 256 | Target bitrate in kbit/s for `vbr` and `cbr`, and the bitrate cap in `cq` mode. |\n| `--cq-level` | 10 | Quality level for `q` and `cq` modes, 0–63; lower is better. It maps to qindex 4×N (255 at 63). The scale does not match x264, x265 or SVT-AV1 CRF values. |\n| `--min-q` | 0 | Best (lowest) quantiser rate control may use, 0–63. In `q` mode `--cq-level` must not be below it. |\n| `--max-q` | 63 | Worst (highest) quantiser rate control may use, 0–63. |\n| `--lossless` | 0 (off) | Mathematically lossless coding (qindex 0 with the lossless transform). Range 0–1. |\n| `--undershoot-pct` | 25 | How far below the target bitrate a GOP may fall, in percent (0–100), before rate control compensates. |\n| `--overshoot-pct` | 25 | How far above the target bitrate a GOP may go, in percent (0–100), before rate control compensates. |\n| `--buf-sz` | 6000 | Decoder buffer size in milliseconds at the target bitrate, for the rate-control buffer model. |\n| `--buf-initial-sz` | 4000 | Initial decoder buffer fill in milliseconds. |\n| `--buf-optimal-sz` | 5000 | Target decoder buffer fill in milliseconds. |\n| `--bias-pct` | 50 | Two-pass VBR bit distribution, 0–100: 0 spreads bits evenly like CBR, 100 follows frame complexity fully. Ignored in one pass. |\n| `--minsection-pct` | 0 | Lowest bitrate a GOP may get in two-pass VBR, as a percentage of the target. Ignored in one pass. |\n| `--maxsection-pct` | 2000 | Highest bitrate a GOP may get in two-pass VBR, as a percentage of the target. Ignored in one pass. |\n| `--drop-frame` | 0 (off) | Drop frames when the rate buffer falls below this fill level (percent, 0–100). Used with CBR. |\n| `--max-intra-rate` | 0 (unlimited) | Cap on keyframe size as a percentage of the average frame size (450 allows 4.5 frames' worth). |\n| `--max-inter-rate` | 0 (unlimited) | Cap on inter-frame size as a percentage of the average frame size. |\n| `--gf-cbr-boost` | 0 (off) | Extra bits for golden frames in CBR mode, as a percentage of the average frame bitrate. |\n| `--frame-boost` | 0 (off) | Periodic quantiser boost (0–1). The setting is accepted but the AV1 encoder does not use it. |\n| `--vbr-corpus-complexity-lap` | 0 (off) | One-pass VBR with lookahead only: average complexity per macroblock of the content corpus (0–10000), used to distribute bits. |\n| `--min-cr` | 0 (off) | Minimum compression ratio per frame ×100 (850 means 8.5:1), used to stay within level limits. |\n| `--use-fixed-qp-offsets` | 0 (adaptive) | `q` mode only: 1 uses fixed per-layer quantiser offsets derived from `--cq-level` instead of adaptive ones. Range 0–1. |\n| `--fixed-qp-offsets` | unset | Meant to give five offsets (keyframe, ALTREF and three internal alt-ref levels). aomenc only uses it to switch on `--use-fixed-qp-offsets=1` and ignores the values. |\n\n</details>\n\n<details>\n<summary>Keyframes and GOP structure (12 options)</summary>\n\n| Option | Default | Description |\n| --- | --- | --- |\n| `--kf-min-dist` | 12 | Minimum keyframe interval in frames. Set it equal to `--kf-max-dist` for a fixed interval. Mainline defaults to 0. |\n| `--kf-max-dist` | 240 (0 in all-intra) | Maximum keyframe interval in frames; scene-cut keyframes can come sooner. For standalone encodes set it to the seek granularity you want, e.g. ten seconds of frames. Mainline defaults to 9999. |\n| `--disable-kf` | off | Place no keyframes after the first frame. Av1an sets this for each chunk. |\n| `--enable-fwd-kf` | 0 (off) | Forward keyframes (open GOP): the keyframe is coded early as an alt-ref, so frames shown before it can reference it. Range 0–1. |\n| `--fwd-kf-dist` | -1 (off) | Distance in frames between repeated forward keyframes. |\n| `--sframe-dist` | 0 (off) | Insert a switch frame (S-frame, a point where a player can switch between streams) every N frames. |\n| `--sframe-mode` | 1 | S-frame placement, 1–2: 1 turns the frame into an S-frame only if it is an alt-ref, 2 uses the next alt-ref. |\n| `--min-gf-interval` | 0 (auto) | Shortest golden-frame group (distance between alt-refs) in frames, up to 127. |\n| `--max-gf-interval` | 0 (auto) | Longest golden-frame group in frames, 2–127. |\n| `--gf-min-pyr-height` | 0 | Minimum depth of the hierarchical reference pyramid in a GF group, 0–5. |\n| `--gf-max-pyr-height` | 4 | Maximum depth of the hierarchical reference pyramid in a GF group, 0–5. Lower values mean fewer reference layers and less temporal quality variation. `--help` still says 5, the mainline default. |\n| `--kf-max-pyr-height` | -1 (off) | Maximum pyramid depth for the GF group that starts at a keyframe, −1–5; the smaller of this and `--gf-max-pyr-height` applies. |\n\n</details>\n\n<details>\n<summary>Lookahead, alt-refs and temporal filtering (7 options)</summary>\n\n| Option | Default | Description |\n| --- | --- | --- |\n| `--lag-in-frames` | 35 (0 in realtime and all-intra) | Lookahead in frames for frame-type, alt-ref and rate-control decisions, 0–128 (mainline allows 48). Larger values use more memory. |\n| `--auto-alt-ref` | 1 (on) | Use alternate reference frames: hidden, temporally filtered frames that the frames around them predict from. Values above 1 are treated as 1. |\n| `--enable-overlay` | 1 (on) | Code an overlay frame where a filtered alt-ref is displayed. With 0 the filtered alt-ref is shown as it is. |\n| `--enable-tpl-model` | 1 (on) | Temporal dependency model (TPL): estimates how much later frames reference each block and spends bits accordingly. Required by `--deltaq-mode=1` and `2`. |\n| `--enable-keyframe-filtering` | 1 | Temporal filtering of keyframes: 0 off, 1 on, 2 on with an overlay frame (experimental; can break seeking in players). |\n| `--arnr-maxframes` | 7 | Number of frames, 0–15, that the alt-ref temporal filter averages; 0 or 1 disables filtering. |\n| `--arnr-strength` | 5 | Alt-ref temporal filter strength, 0–6. Lower values keep more fine detail; community guides use 1–2 for animation and clean CGI. |\n\n</details>\n\n<details>\n<summary>Speed and tuning (8 options)</summary>\n\n| Option | Default | Description |\n| --- | --- | --- |\n| `--cpu-used` | 3 | Speed preset; lower is slower and more efficient. Good-quality mode uses 0–6 (the library accepts up to 9, but nothing changes beyond 6), realtime 5–10, all-intra 0–9. Mainline defaults to 0; a realtime-only build of the fork (`CONFIG_REALTIME_ONLY`) defaults to 7. |\n| `--tune` | `psnr` | Metric that RD decisions optimise: `psnr`, `ssim`, `lavish_fast`, `omni` and `ipq` work in any build; `butteraugli`, `lavish` (Butteraugli RD with SSIM-style scaling) and `experimental` need `-DCONFIG_TUNE_BUTTERAUGLI=1`; `lavish_vmaf_rd`, `ipq_vmaf_psy`, `vmaf_psy_qp`, `experimental` and the `vmaf*` tunes need `-DCONFIG_TUNE_VMAF=1` and `--vmaf-model-path`. The fork predates `iq` and `ssimulacra2`. |\n| `--tune-content` | `default` | Content type: `screen` (screen-content tools), `default_no_screen` (never uses screen-content tools), `film` (synthesised grain with a fixed pattern), `animation` (full CDEF search at speeds up to 5 and all-intra-style intra RD) and `psy` (no screen-content tools, 64×64 superblocks at `--cq-level` 30 or lower up to 4K, self-guided restoration only and all-intra-style intra and partition decisions). Community guides advise against `psy` for live action above about `--cq-level=30`. |\n| `--dist-metric` | `psnr` | Distortion measure inside block decisions: `psnr`, or `qm-psnr`, which weights errors by the quantisation matrices. |\n| `--sharpness` | 0 | Bias, 0–7, of coefficient RD decisions towards keeping block detail. Loop-filter sharpness is the separate `--loopfilter-sharpness`. |\n| `--static-thresh` | 0 | Motion threshold inherited from VP8/VP9. The setting is accepted but the AV1 encoder does not use it. |\n| `--noise-sensitivity` | 0 (off) | Temporal denoiser strength, 0–6, for realtime encodes. Requires a build with `-DCONFIG_AV1_TEMPORAL_DENOISING=1` and only acts on 8-bit encodes at speed 8 and above. |\n| `--vmaf-model-path` | `/usr/local/share/model/vmaf_v0.6.1.json` | VMAF model file used by the `vmaf*` tunes. Requires a build with `-DCONFIG_TUNE_VMAF=1`. |\n\n</details>\n\n<details>\n<summary>Adaptive quantisation and delta-q (6 options)</summary>\n\n| Option | Default | Description |\n| --- | --- | --- |\n| `--deltaq-mode` | 1 (objective) | Per-superblock quantiser modulation: 0 off; 1 objective, from the TPL model; 2 perceptual (see `--dq-modulate`); 3 perceptual for all-intra; 4 user-rating-based (all-intra); 5 HDR (only for 10-bit BT.2020 input). Modes 1 and 2 need `--enable-tpl-model=1`. The fork predates Variance Boost (mode 6). |\n| `--deltaq-strength` | 100 | Strength of `--deltaq-mode=4`, in percent (0–1000). |\n| `--delta-lf-mode` | 0 (off) | Also vary the loop-filter level per superblock. Only works with a non-zero `--deltaq-mode`. Range 0–1. |\n| `--aq-mode` | 0 (off) | Segment-based adaptive quantisation, separate from delta-q: 0 off, 1 variance, 2 complexity, 3 cyclic refresh (realtime). |\n| `--enable-chroma-deltaq` | 1 (on) | Automatic chroma quantiser offsets (4:2:0 −2, 4:2:2 −1, 4:4:4 +2 qindex). The fork applies them only when `--chroma-q-offset-u` and `--chroma-q-offset-v` are both non-zero, so the default changes nothing on its own. |\n| `--auto-intra-tools-off` | 0 (off) | All-intra with `--deltaq-mode=3`: let the encoder switch off intra tools that rarely pay off. |\n\n</details>\n\n<details>\n<summary>Quantisation (5 options)</summary>\n\n| Option | Default | Description |\n| --- | --- | --- |\n| `--enable-qm` | 0 (off) | Quantisation matrices: quantise high frequencies more coarsely than low ones. Commonly enabled for perceptual encodes. |\n| `--qm-min` | 5 | Lowest QM level, 0–15 (15 is flat, lower levels weight frequencies more strongly). The level used rises with the quantiser from `--qm-min` to `--qm-max`. `--help` claims 8, but the code default is 5. |\n| `--qm-max` | 9 | Highest QM level, 0–15. `--help` claims 15, but the code default is 9. |\n| `--quant-b-adapt` | 0 (off) | Adaptive quantiser: a wider dead zone for the trailing (highest-frequency) coefficients of each block, and a lone ±1 coefficient is dropped. Saves bits on fine noise. `--help` claims 1, but the code default is 0. |\n| `--disable-trellis-quant` | 3 | Trellis (RD-optimised) coefficient quantisation: 0 always, 1 never, 2 not during the RD search, 3 not in the fast luma RD estimate. |\n\n</details>\n\n<details>\n<summary>Threads and tiles (10 options)</summary>\n\n| Option | Default | Description |\n| --- | --- | --- |\n| `--threads`, `-t` | 0 (one thread) | Maximum number of worker threads. aomenc stays single-threaded unless this is set. |\n| `--row-mt` | 1 (on) | Row-based multithreading inside tiles; needs `--threads` above 1. Range 0–1. |\n| `--fp-mt` | 0 (off) | Frame-parallel multithreading: encode several frames at once for more speed with many threads, at a small efficiency cost. Range 0–1. |\n| `--tile-columns` | 0 | Number of tile columns as log2, 0–6 (2 means four columns). Tiles let encoder and decoder work in parallel but cost some efficiency; the frame width limits how many are possible. |\n| `--tile-rows` | 0 | Number of tile rows as log2, 0–6. |\n| `--tile-width` | unset (uniform) | Non-uniform tile widths in superblocks, comma-separated; the list repeats across the frame. Needs `--tile-height` as well. |\n| `--tile-height` | unset (uniform) | Non-uniform tile heights in superblocks, comma-separated; the list repeats down the frame. |\n| `--large-scale-tile` | 0 (off) | Large-scale tile coding for random access to individual tiles (light-field and VR use). IVF output only. Range 0–1. |\n| `--num-tile-groups` | 1 | Maximum number of tile groups (OBUs) per frame. `--mtu-size` overrides it. |\n| `--mtu-size` | 0 (off) | Maximum bytes per tile group, for packetised transport. A single tile larger than this still goes in one group. |\n\n</details>\n\n<details>\n<summary>Partitioning and superblocks (7 options)</summary>\n\n| Option | Default | Description |\n| --- | --- | --- |\n| `--sb-size` | `dynamic` | Superblock size: `dynamic` (the encoder picks 64×64 or 128×128 from resolution and speed), `64` or `128`. |\n| `--enable-rect-partitions` | 1 (on) | Rectangular partitions (horizontal and vertical halves). |\n| `--enable-ab-partitions` | 1 (on) | AB partitions: a split into one half and two quarters. |\n| `--enable-1to4-partitions` | 1 (on) | 1:4 and 4:1 partitions (four horizontal or vertical strips). |\n| `--min-partition-size` | 4 | Smallest block size searched: 4, 8, 16, 32, 64 or 128. At 4K and above, or at faster speeds, it is at least 8. |\n| `--max-partition-size` | 128 | Largest block size searched: 4, 8, 16, 32, 64 or 128. |\n| `--partition-info-path` | `.` | Directory for partition statistics read and written by libaom's partition experiments. |\n\n</details>\n\n<details>\n<summary>Intra prediction (11 options)</summary>\n\n| Option | Default | Description |\n| --- | --- | --- |\n| `--enable-directional-intra` | 1 (on) | Directional (angular) intra modes. |\n| `--enable-diagonal-intra` | 1 (on) | The diagonal subset of directional modes (D45 to D203). No effect when directional modes are off. |\n| `--enable-angle-delta` | 1 (on) | Fine angle offsets (up to ±3 steps of 3°) on directional modes. |\n| `--enable-intra-edge-filter` | 1 (on) | Smoothing and upsampling of the reference edge used for directional prediction. |\n| `--enable-smooth-intra` | 1 (on) | Smooth, smooth-horizontal and smooth-vertical intra modes, which interpolate between edges. |\n| `--enable-paeth-intra` | 1 (on) | Paeth intra predictor, which picks the left, top or top-left neighbour per pixel. |\n| `--enable-filter-intra` | 1 (on) | Filter-intra modes: recursive filtered prediction in 4×2 cells, for smooth texture. |\n| `--enable-cfl-intra` | 1 (on) | Chroma from luma: chroma predicted from the reconstructed luma. |\n| `--enable-palette` | 1 (on) | Palette mode, which codes a block as up to eight colours. Used only when screen-content tools are active. |\n| `--enable-intrabc` | 1 (on) | Intra block copy from an already coded area of the same frame. Used only in intra frames with screen-content tools. |\n| `--force-video-mode` | 0 (off) | Use video coding settings even when only one frame is encoded, instead of still-picture settings. `--help` claims 1, but the code default is 0. |\n\n</details>\n\n<details>\n<summary>Inter prediction (16 options)</summary>\n\n| Option | Default | Description |\n| --- | --- | --- |\n| `--max-reference-frames` | 7 | Maximum number of reference frames searched per frame, 3–7. |\n| `--reduced-reference-set` | 0 (off) | Search a reduced set of single and compound references, which is faster. |\n| `--enable-order-hint` | 1 (on) | Frame order hints. Distance-weighted compound, temporal motion-vector projection and reference sign bias depend on them. |\n| `--enable-ref-frame-mvs` | 1 (on) | Temporal motion-vector prediction from the motion fields of reference frames. |\n| `--enable-dual-filter` | 1 (on) | Separate interpolation filters for horizontal and vertical sub-pixel motion. |\n| `--enable-global-motion` | 1 (on) | Frame-level global motion models for camera pans, zooms and rotation. |\n| `--enable-warped-motion` | 1 (on) | Local warped motion: a per-block affine model derived from neighbouring motion vectors. |\n| `--enable-obmc` | 1 (on) | Overlapped block motion compensation: blends in predictions made with neighbouring blocks' motion to soften block edges. |\n| `--enable-dist-wtd-comp` | 1 (on) | Distance-weighted compound prediction, weighting two references by their temporal distance. Off when order hints are off. |\n| `--enable-onesided-comp` | 1 (on) | Compound prediction from two references on the same side (both past or both future). |\n| `--enable-masked-comp` | 1 (on) | Masked compound prediction (wedge and difference-weighted); 0 turns both off. |\n| `--enable-diff-wtd-comp` | 1 (on) | Difference-weighted compound, with a mask derived from the difference between the two predictions. |\n| `--enable-interinter-wedge` | 1 (on) | Wedge-shaped masks for compound prediction from two references. |\n| `--enable-interintra-comp` | 1 (on) | Inter-intra prediction: an inter prediction blended with an intra prediction. |\n| `--enable-smooth-interintra` | 1 (on) | Smooth (gradual) blending for inter-intra prediction. |\n| `--enable-interintra-wedge` | 1 (on) | Wedge-shaped masks for inter-intra prediction. |\n\n</details>\n\n<details>\n<summary>Transforms (8 options)</summary>\n\n| Option | Default | Description |\n| --- | --- | --- |\n| `--enable-tx64` | 1 (on) | 64-point transforms for blocks of 64 pixels and larger. |\n| `--enable-flip-idtx` | 1 (on) | Extended transform types: flipped ADST, identity and one-dimensional (horizontal or vertical) transforms. |\n| `--enable-rect-tx` | 1 (on) | Rectangular transforms. They need rectangular partitions. |\n| `--enable-tx-size-search` | 1 (on) | Search the transform size per block. With 0 each block uses its largest possible transform. |\n| `--reduced-tx-type-set` | 0 (off) | Search a reduced set of transform types, which is faster. |\n| `--use-intra-dct-only` | 0 (off) | Use only the DCT for intra blocks. |\n| `--use-inter-dct-only` | 0 (off) | Use only the DCT for inter blocks. |\n| `--use-intra-default-tx-only` | 0 (off) | Use only the default transform type of each intra mode. |\n\n</details>\n\n<details>\n<summary>Loop filters (3 options)</summary>\n\n| Option | Default | Description |\n| --- | --- | --- |\n| `--loopfilter-control` | 1 (all frames) | Deblocking filter: 0 off, 1 all frames, 2 skip non-reference frames, 3 skip low-motion frames. |\n| `--enable-cdef` | 1 (0 in all-intra) | CDEF, the constrained directional enhancement (deringing) filter: 0 off, 1 all frames, 2 reference frames only. |\n| `--enable-restoration` | 1 (0 in realtime) | Loop restoration (Wiener and self-guided filters). It is slow to search and is always off in realtime mode. |\n\n</details>\n\n<details>\n<summary>Resize and super-resolution (8 options)</summary>\n\n| Option | Default | Description |\n| --- | --- | --- |\n| `--resize-mode` | 0 (off) | Code frames at a lower resolution while the render size keeps the original: 0 off, 1 fixed (`--resize-denominator`), 2 random (testing), 3 dynamic (realtime CBR). |\n| `--resize-denominator` | 8 | Resize factor 8/N for non-key frames, N = 8–16 (16 halves both dimensions). |\n| `--resize-kf-denominator` | 8 | Resize factor 8/N for keyframes, N = 8–16. |\n| `--superres-mode` | 0 (off) | Super-resolution: code frames at reduced width and let the decoder upscale them in-loop: 0 off, 1 fixed, 2 random, 3 above a quantiser threshold, 4 automatic. |\n| `--superres-denominator` | 8 | Horizontal super-resolution factor 8/N for non-key frames, N = 8–16. |\n| `--superres-kf-denominator` | 8 | Horizontal super-resolution factor 8/N for keyframes, N = 8–16. |\n| `--superres-qthresh` | 63 | Mode 3: use super-resolution on non-key frames whose quantiser (1–63) exceeds this. |\n| `--superres-kf-qthresh` | 32 | Mode 3: the same threshold for keyframes. |\n\n</details>\n\n<details>\n<summary>Film grain and denoising (5 options)</summary>\n\n| Option | Default | Description |\n| --- | --- | --- |\n| `--denoise-noise-level` | 0 (off) | Film-grain synthesis: estimate the source grain, denoise before encoding and signal grain for the decoder to add back. 0–50; keep it low (single digits to about 10) to avoid patterned grain. |\n| `--denoise-block-size` | 32 | Block size in pixels for the grain estimator. |\n| `--enable-dnl-denoising` | 0 (off) | Encode the denoised frame. With the fork's default 0 the original frame is encoded and only the estimated grain parameters are added, which avoids the denoiser's smearing. Mainline defaults to 1. |\n| `--film-grain-table` | unset | Read film-grain parameters from a table file, such as a photon-noise table from Av1an or grav1synth, instead of estimating them. |\n| `--film-grain-test` | 0 (off) | Use one of libaom's 16 built-in film-grain test parameter sets (1–16). |\n\n</details>\n\n<details>\n<summary>Entropy coding and cost updates (5 options)</summary>\n\n| Option | Default | Description |\n| --- | --- | --- |\n| `--cdf-update-mode` | 1 | Adaptation of the entropy-coding probabilities (CDFs): 0 never, 1 every frame, 2 selectively. |\n| `--coeff-cost-upd-freq` | 0 (superblock) | How often the encoder refreshes its coefficient rate estimates: 0 each superblock, 1 each superblock row, 2 each tile, 3 never. Higher values are faster. |\n| `--mode-cost-upd-freq` | 0 (superblock) | Refresh interval for mode rate estimates, with the same values. |\n| `--mv-cost-upd-freq` | 0 (superblock) | Refresh interval for motion-vector rate estimates, with the same values. |\n| `--dv-cost-upd-freq` | 0 (superblock) | Refresh interval for intra-block-copy vector rate estimates, with the same values. |\n\n</details>\n\n<details>\n<summary>Signalling, levels and error resilience (12 options)</summary>\n\n| Option | Default | Description |\n| --- | --- | --- |\n| `--color-primaries` | `unspecified` | Colour primaries (CICP) written to the sequence header; signalling only, no conversion. Values: `bt709`, `unspecified`, `bt601`, `bt470m`, `bt470bg`, `smpte240`, `film`, `bt2020`, `xyz`, `smpte431`, `smpte432`, `ebu3213`. |\n| `--transfer-characteristics` | `unspecified` | Transfer characteristics (CICP), e.g. `bt709`, `smpte2084` (PQ) or `hlg`. Values: `unspecified`, `bt709`, `bt470m`, `bt470bg`, `bt601`, `smpte240`, `lin`, `log100`, `log100sq10`, `iec61966`, `bt1361`, `srgb`, `bt2020-10bit`, `bt2020-12bit`, `smpte2084`, `hlg`, `smpte428`. |\n| `--matrix-coefficients` | `unspecified` | Matrix coefficients (CICP). Values: `identity`, `bt709`, `unspecified`, `fcc73`, `bt470bg`, `bt601`, `smpte240`, `ycgco`, `bt2020ncl`, `bt2020cl`, `smpte2085`, `chromncl`, `chromcl`, `ictcp`. |\n| `--chroma-sample-position` | `unknown` | 4:2:0 chroma siting: `unknown`, `vertical` (left, as MPEG-2) or `colocated` (top-left, as BT.2020). |\n| `--timing-info` | `unspecified` | Timing information in the sequence header: `unspecified`, `constant` (fixed frame rate) or `model` (decoder model; not with hidden frames or super-resolution). |\n| `--target-seq-level-idx` | 31 (unconstrained) | Target level per operating point, written `ABxy`: operating point AB, level index xy, where index = (major − 2) × 4 + minor (8 is level 4.0, 19 is 6.3). The encoder limits its decisions to meet it. |\n| `--strict-level-conformance` | 0 (off) | Stop with an error if the stream cannot meet `--target-seq-level-idx`. |\n| `--set-tier-mask` | 0 (Main) | Bit mask of operating points that use the High tier instead of Main (bit n is point n). |\n| `--full-still-picture-hdr` | off | For single-frame encodes, write the full sequence header instead of the reduced still-picture header. |\n| `--error-resilient` | 0 (off) | Error-resilient frames, which stay decodable when references are lost. Range 0–1. |\n| `--global-error-resilient` | 0 (off) | Same effect as `--error-resilient`, set through the generic encoder configuration (the two are combined). |\n| `--frame-parallel` | 0 (off) | Disable backward probability adaptation so that a decoder can decode frames in parallel. Range 0–1. |\n\n</details>\n\n<details>\n<summary>Options added by aom-av1-lavish (21 options)</summary>\n\n| Option | Default | Description |\n| --- | --- | --- |\n| `--quant-sharpness` | 0 | −7–7. Any non-zero value narrows the quantiser dead zone and raises rounding so that more small coefficients (fine detail) survive, more so at larger magnitudes; the sign makes no difference in the code. Costs bitrate. |\n| `--loopfilter-sharpness` | 0 | Deblocking-filter sharpness, 0–7. Higher values filter block edges less, keeping detail but leaving more blocking. |\n| `--luma-bias` | 1 | −5–5. Scales each block's RD multiplier by 1 − brightness × bias / 5100 (brightness 0–255), so positive values give brighter blocks relatively more bits and negative values favour dark blocks. Upstream recommends leaving it alone. |\n| `--chroma-q-offset-u` | 0 | Chroma qindex offset for the U plane, −63–63 (positive is coarser). |\n| `--chroma-q-offset-v` | 0 | Chroma qindex offset for the V plane, −63–63. |\n| `--dq-modulate` | 1 (wavelet) | Activity measure for `--deltaq-mode=2`: 1 block wavelet energy, 0 block variance. Marked work in progress. |\n| `--delta-qindex-mult` | 100 | 0–1000 (%). Scales the TPL-based superblock quantiser offsets of `--deltaq-mode=1` and the matching RD multipliers; 100 is mainline behaviour. |\n| `--delta-qindex-pos` | -1 (use `--delta-qindex-mult`) | −1–1000 (%). Separate RD-multiplier scaling for superblocks whose delta-q is positive. |\n| `--delta-qindex-neg` | -1 (use `--delta-qindex-mult`) | −1–1000 (%). Separate RD-multiplier scaling for superblocks whose delta-q is negative. |\n| `--ssim-rd-mult` | 100 | 1–1000 (%). Scales the SSIM-based RD multiplier of `--tune=ssim` and the `ipq` tunes. |\n| `--tpl-rd-mult` | 100 | 1–1000 (%). Scales the RD-multiplier factors derived from the TPL model. |\n| `--vmaf-motion-mult` | 100 | 1–1000 (%). Scales the motion term of the VMAF tunes' quantiser adjustment; only active with those tunes. |\n| `--vmaf-rd-mult` | 100 | 1–1000 (%). Scales the RD multiplier of tunes that use VMAF RD. Requires a build with `-DCONFIG_TUNE_VMAF=1`. |\n| `--vmaf-resize-factor` | 0 (half) | Downscale for VMAF calculations in the VMAF tunes: 0 half resolution, 1 quarter. Requires a build with `-DCONFIG_TUNE_VMAF=1`. |\n| `--vmaf-preprocessing` | 0 (off) | Force libaom's VMAF preprocessing (sharpening) whatever the tune: 0 off, 1 VMAF-NEG, 2 block-based, 3 frame-based. Requires a build with `-DCONFIG_TUNE_VMAF=1`. |\n| `--vmaf-quantization` | 0 (off) | Force the VMAF tunes' quantiser adjustment whatever the tune. Range 0–1. Requires a build with `-DCONFIG_TUNE_VMAF=1`. |\n| `--butteraugli-intensity-target` | 100 | Display brightness in nits (0–2000) that Butteraugli assumes. Requires a build with `-DCONFIG_TUNE_BUTTERAUGLI=1`. |\n| `--butteraugli-hf-asymmetry` | 5 | Butteraugli's high-frequency asymmetry parameter ×10, 0–100 (5 means 0.5). Requires a build with `-DCONFIG_TUNE_BUTTERAUGLI=1`. |\n| `--butteraugli-rd-mult` | 100 | 1–1000 (%). Scales the RD multiplier of the Butteraugli-based tunes. Requires a build with `-DCONFIG_TUNE_BUTTERAUGLI=1`. |\n| `--butteraugli-resize-factor` | 1 (half) | Downscale for Butteraugli calculations: 0 full resolution, 1 half, 2 quarter. Community guides use 2 to speed up the Butteraugli tunes. Requires a build with `-DCONFIG_TUNE_BUTTERAUGLI=1`. |\n| `--enable-experimental-psy` | 0 (off) | Experimental changes, currently VP9-style film tuning and RD tweaks. Upstream warns that they may hurt quality. Range 0–1. |\n\n</details>\n"
}
